Some LRADC channels have a fixed pre-divider, and all can have enabled
an optional divisor by two which allows a maximum input voltage of
VDDIO - 50mV.
This patch
- adds the scaling info flag to all channels
- adds a lookup table with max reference voltage per channel
(where the fixed pre-dividers apply)
- allows to read the scaling attribute (computed from the Vref)
Signed-off-by: Hector Palacios <hector.palacios@xxxxxxxx>
---
drivers/staging/iio/adc/mxs-lradc.c | 122
+++++++++++++++++++++++++++--------- 1 file changed, 93 insertions(+), 29
deletions(-)
diff --git a/drivers/staging/iio/adc/mxs-lradc.c
b/drivers/staging/iio/adc/mxs-lradc.c index d65a594..012c42e 100644
--- a/drivers/staging/iio/adc/mxs-lradc.c
+++ b/drivers/staging/iio/adc/mxs-lradc.c
@@ -107,19 +107,63 @@ static const char * const mx28_lradc_irq_names[] = {
"mxs-lradc-button1",
};
+/*
+ * Max reference voltage (mV) for each channel
+ */
+static const int mx23_vref_mv[LRADC_MAX_TOTAL_CHANS] = {
+ 1850, /* CH0 */
+ 1850, /* CH1 */
+ 1850, /* CH2 */
+ 1850, /* CH3 */
+ 1850, /* CH4 */
+ 1850, /* CH5 */
+ 1850 * 2, /* CH6 VDDIO */
+ 1850 * 4, /* CH7 VBATT */
+ 1850, /* CH8 Temp sense 0 */
+ 1850, /* CH9 Temp sense 1 */
+ 1850, /* CH10 */
+ 1850, /* CH11 */
+ 1850, /* CH12 USB_DP */
+ 1850, /* CH13 USB_DN */
+ 1850, /* CH14 VBG */
+ 1850 * 4, /* CH15 VDD5V */
+};
+
+static const int mx28_vref_mv[LRADC_MAX_TOTAL_CHANS] = {
+ 1850, /* CH0 */
+ 1850, /* CH1 */
+ 1850, /* CH2 */
+ 1850, /* CH3 */
+ 1850, /* CH4 */
+ 1850, /* CH5 */
+ 1850, /* CH6 */
+ 1850 * 4, /* CH7 VBATT */
+ 1850, /* CH8 Temp sense 0 */
+ 1850, /* CH9 Temp sense 1 */
+ 1850 * 2, /* CH10 VDDIO */
+ 1850, /* CH11 VTH */
+ 1850 * 2, /* CH12 VDDA */
+ 1850, /* CH13 VDDD */
+ 1850, /* CH14 VBG */
+ 1850 * 4, /* CH15 VDD5V */
+};