mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-17 07:54:54 +08:00
3adbf34273
This adds support for the SAR (Successive Approximation Register) ADC on the Amlogic Meson SoCs. The code is based on the public S805 (Meson8b) and S905 (GXBB) datasheets (see [0] and [1]), as well as by reading (various versions of) the vendor driver and by inspecting the registers on the vendor kernels of my testing-hardware. Currently the GXBB, GXL and GXM SoCs are supported. GXBB hardware has 10-bit ADC resolution, while GXL and GXM have 12-bit ADC resolution. The code was written to support older SoCs (Meson8 and Meson8b) as well, but due to lack of actual testing-hardware no of_device_id was added for these. Two "features" from the vendor driver are currently missing: - the vendor driver uses channel #7 for calibration (this improves the accuracy of the results - in my tests the results were less than 3% off without calibration compared to the vendor driver). Adding support for this should be easy, but is not required for most applications. - channel #6 is connected to the SoCs internal temperature sensor. Adding support for this is probably not so easy since (based on the u-boot sources) most SoC versions are using different registers and algorithms for the conversion from "ADC value" to temperature. Supported by the hardware but currently not supported by the driver: - reading multiple channels at the same time (the hardware has a FIFO buffer which stores multiple results) - continuous sampling (this would require a way to enable this individually because otherwise the ADC would be drawing power constantly) - interrupt support (similar to the vendor driver this new driver is polling the results. It is unclear if the IRQ-mode is supported on older (Meson6 or Meson8) hardware as well or if there are any errata) [0] http://dn.odroid.com/S805/Datasheet/S805_Datasheet%20V0.8%2020150126.pdf [1] http://dn.odroid.com/S905/DataSheet/S905_Public_Datasheet_V1.1.4.pdf Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Tested-by: Neil Armstrong <narmstrong@baylibre.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
68 lines
2.6 KiB
Makefile
68 lines
2.6 KiB
Makefile
#
|
|
# Makefile for IIO ADC drivers
|
|
#
|
|
|
|
# When adding new entries keep the list in alphabetical order
|
|
obj-$(CONFIG_AD_SIGMA_DELTA) += ad_sigma_delta.o
|
|
obj-$(CONFIG_AD7266) += ad7266.o
|
|
obj-$(CONFIG_AD7291) += ad7291.o
|
|
obj-$(CONFIG_AD7298) += ad7298.o
|
|
obj-$(CONFIG_AD7923) += ad7923.o
|
|
obj-$(CONFIG_AD7476) += ad7476.o
|
|
obj-$(CONFIG_AD7766) += ad7766.o
|
|
obj-$(CONFIG_AD7791) += ad7791.o
|
|
obj-$(CONFIG_AD7793) += ad7793.o
|
|
obj-$(CONFIG_AD7887) += ad7887.o
|
|
obj-$(CONFIG_AD799X) += ad799x.o
|
|
obj-$(CONFIG_AT91_ADC) += at91_adc.o
|
|
obj-$(CONFIG_AT91_SAMA5D2_ADC) += at91-sama5d2_adc.o
|
|
obj-$(CONFIG_AXP288_ADC) += axp288_adc.o
|
|
obj-$(CONFIG_BCM_IPROC_ADC) += bcm_iproc_adc.o
|
|
obj-$(CONFIG_BERLIN2_ADC) += berlin2-adc.o
|
|
obj-$(CONFIG_CC10001_ADC) += cc10001_adc.o
|
|
obj-$(CONFIG_DA9150_GPADC) += da9150-gpadc.o
|
|
obj-$(CONFIG_ENVELOPE_DETECTOR) += envelope-detector.o
|
|
obj-$(CONFIG_EXYNOS_ADC) += exynos_adc.o
|
|
obj-$(CONFIG_FSL_MX25_ADC) += fsl-imx25-gcq.o
|
|
obj-$(CONFIG_HI8435) += hi8435.o
|
|
obj-$(CONFIG_HX711) += hx711.o
|
|
obj-$(CONFIG_IMX7D_ADC) += imx7d_adc.o
|
|
obj-$(CONFIG_INA2XX_ADC) += ina2xx-adc.o
|
|
obj-$(CONFIG_LP8788_ADC) += lp8788_adc.o
|
|
obj-$(CONFIG_LPC18XX_ADC) += lpc18xx_adc.o
|
|
obj-$(CONFIG_LTC2485) += ltc2485.o
|
|
obj-$(CONFIG_MAX1027) += max1027.o
|
|
obj-$(CONFIG_MAX11100) += max11100.o
|
|
obj-$(CONFIG_MAX1363) += max1363.o
|
|
obj-$(CONFIG_MCP320X) += mcp320x.o
|
|
obj-$(CONFIG_MCP3422) += mcp3422.o
|
|
obj-$(CONFIG_MEDIATEK_MT6577_AUXADC) += mt6577_auxadc.o
|
|
obj-$(CONFIG_MEN_Z188_ADC) += men_z188_adc.o
|
|
obj-$(CONFIG_MESON_SARADC) += meson_saradc.o
|
|
obj-$(CONFIG_MXS_LRADC) += mxs-lradc.o
|
|
obj-$(CONFIG_NAU7802) += nau7802.o
|
|
obj-$(CONFIG_PALMAS_GPADC) += palmas_gpadc.o
|
|
obj-$(CONFIG_QCOM_SPMI_IADC) += qcom-spmi-iadc.o
|
|
obj-$(CONFIG_QCOM_SPMI_VADC) += qcom-spmi-vadc.o
|
|
obj-$(CONFIG_RCAR_GYRO_ADC) += rcar-gyroadc.o
|
|
obj-$(CONFIG_ROCKCHIP_SARADC) += rockchip_saradc.o
|
|
obj-$(CONFIG_STX104) += stx104.o
|
|
obj-$(CONFIG_STM32_ADC_CORE) += stm32-adc-core.o
|
|
obj-$(CONFIG_STM32_ADC) += stm32-adc.o
|
|
obj-$(CONFIG_TI_ADC081C) += ti-adc081c.o
|
|
obj-$(CONFIG_TI_ADC0832) += ti-adc0832.o
|
|
obj-$(CONFIG_TI_ADC12138) += ti-adc12138.o
|
|
obj-$(CONFIG_TI_ADC128S052) += ti-adc128s052.o
|
|
obj-$(CONFIG_TI_ADC161S626) += ti-adc161s626.o
|
|
obj-$(CONFIG_TI_ADS1015) += ti-ads1015.o
|
|
obj-$(CONFIG_TI_ADS7950) += ti-ads7950.o
|
|
obj-$(CONFIG_TI_ADS8688) += ti-ads8688.o
|
|
obj-$(CONFIG_TI_AM335X_ADC) += ti_am335x_adc.o
|
|
obj-$(CONFIG_TI_TLC4541) += ti-tlc4541.o
|
|
obj-$(CONFIG_TWL4030_MADC) += twl4030-madc.o
|
|
obj-$(CONFIG_TWL6030_GPADC) += twl6030-gpadc.o
|
|
obj-$(CONFIG_VF610_ADC) += vf610_adc.o
|
|
obj-$(CONFIG_VIPERBOARD_ADC) += viperboard_adc.o
|
|
xilinx-xadc-y := xilinx-xadc-core.o xilinx-xadc-events.o
|
|
obj-$(CONFIG_XILINX_XADC) += xilinx-xadc.o
|