From: "Phani A, Rama Krishna" <rphani-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
To: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
cdevired-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
smohanad-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
mgautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
sivaa-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
knaack.h-Mmb7MZpHnFY@public.gmane.org,
lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org,
pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org,
Julia.Lawall-L2FTfq7BK8M@public.gmane.org
Subject: Re: [PATCH V4 2/2] iio: adc: spmi-vadc: Changes to support different scaling
Date: Mon, 14 Nov 2016 17:08:55 +0530 [thread overview]
Message-ID: <03b97c38-02fb-a727-28a5-298bb240a312@codeaurora.org> (raw)
In-Reply-To: <bc8b56e3-e1bf-3e92-bdca-cf7b0a13dca1-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Hi Jonathan,
On 12-Nov-16 8:32 PM, Jonathan Cameron wrote:
> On 08/11/16 11:58, Rama Krishna Phani A wrote:
>> Several ADC channels are supported in PMIC which can be used to
>> measure voltage, temperature, current etc. Different scaling can be
>> applied on the obtained voltage to report in physical units. Scaling
>> functionality can be different per channel. Add scaling support per
>> channel. Every channel present in adc has an unique conversion formula
>> for obtained voltage. Add support to report in Raw as well as in
>> processed format. Scaling is applied when processed read is requested
>> and is not applied when a Raw read is requested.
>>
>> Signed-off-by: Rama Krishna Phani A <rphani-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
>
> This looks good except for one thing. If we can't provide a scale,
> we shouldn't try to provide processed output so it shouldn't be in the
> info_mask. Shouldn't take a huge amount of work to tidy this up.
>
> I'm backing out patch 1 for now though as if this takes a while we
> could end up with an intermediate interface actually getting to users
> which would be even worse than changing once as we are!
>
> Thanks,
>
> Jonathan
Sure ., will include scale support as well in the "info_mask".
>> ---
>> drivers/iio/adc/qcom-spmi-vadc.c | 436 +++++++++++++++++++++++++++++----------
>> 1 file changed, 326 insertions(+), 110 deletions(-)
>>
>> diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c
>> index 93c0639..d36ba49 100644
>> --- a/drivers/iio/adc/qcom-spmi-vadc.c
>> +++ b/drivers/iio/adc/qcom-spmi-vadc.c
>> @@ -84,7 +84,7 @@
>> #define VADC_MAX_ADC_CODE 0xa800
>>
>> #define VADC_ABSOLUTE_RANGE_UV 625000
>> -#define VADC_RATIOMETRIC_RANGE_UV 1800000
>> +#define VADC_RATIOMETRIC_RANGE 1800
>>
>> #define VADC_DEF_PRESCALING 0 /* 1:1 */
>> #define VADC_DEF_DECIMATION 0 /* 512 */
>> @@ -100,9 +100,23 @@
>>
>> #define KELVINMIL_CELSIUSMIL 273150
>>
>> +#define PMI_CHG_SCALE_1 -138890
>> +#define PMI_CHG_SCALE_2 391750000000
>> +
>> #define VADC_CHAN_MIN VADC_USBIN
>> #define VADC_CHAN_MAX VADC_LR_MUX3_BUF_PU1_PU2_XO_THERM
>>
>> +/**
>> + * struct vadc_map_pt - Map the graph representation for ADC channel
>> + * @x: Represent the ADC digitized code.
>> + * @y: Represent the physical data which can be temperature, voltage,
>> + * resistance.
>> + */
>> +struct vadc_map_pt {
>> + s32 x;
>> + s32 y;
>> +};
>> +
>> /*
>> * VADC_CALIB_ABSOLUTE: uses the 625mV and 1.25V as reference channels.
>> * VADC_CALIB_RATIOMETRIC: uses the reference voltage (1.8V) and GND for
>> @@ -148,6 +162,9 @@ struct vadc_prescale_ratio {
>> * start of conversion.
>> * @avg_samples: ability to provide single result from the ADC
>> * that is an average of multiple measurements.
>> + * @scale_fn: Represents the scaling function to convert voltage
>> + * physical units desired by the client for the channel.
>> + * Referenced from enum vadc_scale_fn_type.
>> */
>> struct vadc_channel_prop {
>> unsigned int channel;
>> @@ -156,6 +173,7 @@ struct vadc_channel_prop {
>> unsigned int prescale;
>> unsigned int hw_settle_time;
>> unsigned int avg_samples;
>> + unsigned int scale_fn;
>> };
>>
>> /**
>> @@ -186,6 +204,37 @@ struct vadc_priv {
>> struct mutex lock;
>> };
>>
>> +/**
>> + * struct vadc_scale_fn - Scaling function prototype
>> + * @scale: Function pointer to one of the scaling functions
>> + * which takes the adc properties, channel properties,
>> + * and returns the physical result.
>> + */
>> +struct vadc_scale_fn {
>> + int (*scale)(struct vadc_priv *, const struct vadc_channel_prop *,
>> + u16, int *);
>> +};
>> +
>> +/**
>> + * enum vadc_scale_fn_type - Scaling function to convert ADC code to
>> + * physical scaled units for the channel.
>> + * SCALE_DEFAULT: Default scaling to convert raw adc code to voltage (uV).
>> + * SCALE_THERM_100K_PULLUP: Returns temperature in millidegC.
>> + * Uses a mapping table with 100K pullup.
>> + * SCALE_PMIC_THERM: Returns result in milli degree's Centigrade.
>> + * SCALE_XOTHERM: Returns XO thermistor voltage in millidegC.
>> + * SCALE_PMI_CHG_TEMP: Conversion for PMI CHG temp
>> + * SCALE_NONE: Do not use this scaling type.
>> + */
>> +enum vadc_scale_fn_type {
>> + SCALE_DEFAULT = 0,
>> + SCALE_THERM_100K_PULLUP,
>> + SCALE_PMIC_THERM,
>> + SCALE_XOTHERM,
>> + SCALE_PMI_CHG_TEMP,
>> + SCALE_NONE,
>> +};
>> +
>> static const struct vadc_prescale_ratio vadc_prescale_ratios[] = {
>> {.num = 1, .den = 1},
>> {.num = 1, .den = 3},
>> @@ -197,6 +246,44 @@ struct vadc_priv {
>> {.num = 1, .den = 10}
>> };
>>
>> +/* Voltage to temperature */
>> +static const struct vadc_map_pt adcmap_100k_104ef_104fb[] = {
>> + {1758, -40},
>> + {1742, -35},
>> + {1719, -30},
>> + {1691, -25},
>> + {1654, -20},
>> + {1608, -15},
>> + {1551, -10},
>> + {1483, -5},
>> + {1404, 0},
>> + {1315, 5},
>> + {1218, 10},
>> + {1114, 15},
>> + {1007, 20},
>> + {900, 25},
>> + {795, 30},
>> + {696, 35},
>> + {605, 40},
>> + {522, 45},
>> + {448, 50},
>> + {383, 55},
>> + {327, 60},
>> + {278, 65},
>> + {237, 70},
>> + {202, 75},
>> + {172, 80},
>> + {146, 85},
>> + {125, 90},
>> + {107, 95},
>> + {92, 100},
>> + {79, 105},
>> + {68, 110},
>> + {59, 115},
>> + {51, 120},
>> + {44, 125}
>> +};
>> +
>> static int vadc_read(struct vadc_priv *vadc, u16 offset, u8 *data)
>> {
>> return regmap_bulk_read(vadc->regmap, vadc->base + offset, data, 1);
>> @@ -418,7 +505,7 @@ static int vadc_measure_ref_points(struct vadc_priv *vadc)
>> u16 read_1, read_2;
>> int ret;
>>
>> - vadc->graph[VADC_CALIB_RATIOMETRIC].dx = VADC_RATIOMETRIC_RANGE_UV;
>> + vadc->graph[VADC_CALIB_RATIOMETRIC].dx = VADC_RATIOMETRIC_RANGE;
>> vadc->graph[VADC_CALIB_ABSOLUTE].dx = VADC_ABSOLUTE_RANGE_UV;
>>
>> prop = vadc_get_channel(vadc, VADC_REF_1250MV);
>> @@ -468,6 +555,51 @@ static int vadc_measure_ref_points(struct vadc_priv *vadc)
>> return ret;
>> }
>>
>> +static int vadc_map_voltage_temp(const struct vadc_map_pt *pts,
>> + u32 tablesize, s32 input, s64 *output)
>> +{
>> + bool descending = 1;
>> + u32 i = 0;
>> +
>> + if (!pts)
>> + return -EINVAL;
>> +
>> + /* Check if table is descending or ascending */
>> + if (tablesize > 1) {
>> + if (pts[0].x < pts[1].x)
>> + descending = 0;
>> + }
>> +
>> + while (i < tablesize) {
>> + if ((descending) && (pts[i].x < input)) {
>> + /* table entry is less than measured*/
>> + /* value and table is descending, stop */
>> + break;
>> + } else if ((!descending) &&
>> + (pts[i].x > input)) {
>> + /* table entry is greater than measured*/
>> + /*value and table is ascending, stop */
>> + break;
>> + }
>> + i++;
>> + }
>> +
>> + if (i == 0) {
>> + *output = pts[0].y;
>> + } else if (i == tablesize) {
>> + *output = pts[tablesize - 1].y;
>> + } else {
>> + /* result is between search_index and search_index-1 */
>> + /* interpolate linearly */
>> + *output = (((s32)((pts[i].y - pts[i - 1].y) *
>> + (input - pts[i - 1].x)) /
>> + (pts[i].x - pts[i - 1].x)) +
>> + pts[i - 1].y);
>> + }
>> +
>> + return 0;
>> +}
>> +
>> static void vadc_scale_calib(struct vadc_priv *vadc, u16 adc_code,
>> const struct vadc_channel_prop *prop,
>> s64 *scale_voltage)
>> @@ -502,6 +634,77 @@ static int vadc_scale_volt(struct vadc_priv *vadc,
>> return 0;
>> }
>>
>> +static int vadc_scale_therm(struct vadc_priv *vadc,
>> + const struct vadc_channel_prop *prop, u16 adc_code,
>> + int *result_mdec)
>> +{
>> + s64 voltage = 0, result = 0;
>> +
>> + vadc_scale_calib(vadc, adc_code, prop, &voltage);
>> +
>> + if (prop->calibration == VADC_CALIB_ABSOLUTE)
>> + voltage /= 1000;
>> +
>> + vadc_map_voltage_temp(adcmap_100k_104ef_104fb,
>> + ARRAY_SIZE(adcmap_100k_104ef_104fb),
>> + voltage, &result);
>> + result *= 1000;
>> + *result_mdec = result;
>> +
>> + return 0;
>> +}
>> +
>> +static int vadc_scale_die_temp(struct vadc_priv *vadc,
>> + const struct vadc_channel_prop *prop,
>> + u16 adc_code, int *result_mdec)
>> +{
>> + const struct vadc_prescale_ratio *prescale;
>> + s64 voltage = 0;
>> +
>> + vadc_scale_calib(vadc, adc_code, prop, &voltage);
>> +
>> + if (voltage > 0) {
>> + prescale = &vadc_prescale_ratios[prop->prescale];
>> + voltage = voltage * prescale->den;
>> + voltage /= (prescale->num * 2);
>> + } else {
>> + voltage = 0;
>> + }
>> +
>> + voltage -= KELVINMIL_CELSIUSMIL;
>> + *result_mdec = voltage;
>> +
>> + return 0;
>> +}
>> +
>> +static int vadc_scale_chg_temp(struct vadc_priv *vadc,
>> + const struct vadc_channel_prop *prop,
>> + u16 adc_code, int *result_mdec)
>> +{
>> + const struct vadc_prescale_ratio *prescale;
>> + s64 voltage = 0, result = 0;
>> +
>> + vadc_scale_calib(vadc, adc_code, prop, &voltage);
>> +
>> + prescale = &vadc_prescale_ratios[prop->prescale];
>> + voltage = voltage * prescale->den;
>> + voltage = div64_s64(voltage, prescale->num);
>> + voltage = ((PMI_CHG_SCALE_1) * (voltage * 2));
>> + voltage = (voltage + PMI_CHG_SCALE_2);
>> + result = div64_s64(voltage, 1000000);
>> + *result_mdec = result;
>> +
>> + return 0;
>> +}
>> +
>> +static int vadc_scale(struct vadc_priv *vadc,
>> + const struct vadc_channel_prop *prop, u16 adc_code,
>> + int *scale)
>> +{
>> + dev_err(vadc->dev, "Need a scale function\n");
>> + return 0;
>> +}
>> +
>> static int vadc_decimation_from_dt(u32 value)
>> {
>> if (!is_power_of_2(value) || value < VADC_DECIMATION_MIN ||
>> @@ -547,6 +750,15 @@ static int vadc_avg_samples_from_dt(u32 value)
>> return __ffs64(value);
>> }
>>
>> +static struct vadc_scale_fn scale_fn[] = {
>> + [SCALE_DEFAULT] = {vadc_scale_volt},
>> + [SCALE_THERM_100K_PULLUP] = {vadc_scale_therm},
>> + [SCALE_PMIC_THERM] = {vadc_scale_die_temp},
>> + [SCALE_XOTHERM] = {vadc_scale_therm},
>> + [SCALE_PMI_CHG_TEMP] = {vadc_scale_chg_temp},
>> + [SCALE_NONE] = {vadc_scale},
>> +};
>> +
>> static int vadc_read_raw(struct iio_dev *indio_dev,
>> struct iio_chan_spec const *chan, int *val, int *val2,
>> long mask)
>> @@ -563,7 +775,7 @@ static int vadc_read_raw(struct iio_dev *indio_dev,
>> if (ret)
>> break;
>>
>> - vadc_scale_volt(vadc, prop, adc_code, val);
>> + scale_fn[prop->scale_fn].scale(vadc, prop, adc_code, val);
>>
>> return IIO_VAL_INT;
>> case IIO_CHAN_INFO_RAW:
>> @@ -606,23 +818,27 @@ struct vadc_channels {
>> unsigned int prescale_index;
>> enum iio_chan_type type;
>> long info_mask;
>> + unsigned int scale_fn;
>> };
>>
>> -#define VADC_CHAN(_dname, _type, _mask, _pre) \
>> +#define VADC_CHAN(_dname, _type, _mask, _pre, _scale) \
>> [VADC_##_dname] = { \
>> .datasheet_name = __stringify(_dname), \
>> .prescale_index = _pre, \
>> .type = _type, \
>> - .info_mask = _mask \
>> + .info_mask = _mask, \
>> + .scale_fn = _scale \
>> }, \
>>
>> -#define VADC_CHAN_TEMP(_dname, _pre) \
>> - VADC_CHAN(_dname, IIO_TEMP, BIT(IIO_CHAN_INFO_PROCESSED), _pre) \
>> +#define VADC_CHAN_TEMP(_dname, _pre, _scale) \
>> + VADC_CHAN(_dname, IIO_TEMP, \
>> + BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_PROCESSED), \
>> + _pre, _scale) \
>>
>> -#define VADC_CHAN_VOLT(_dname, _pre) \
>> +#define VADC_CHAN_VOLT(_dname, _pre, _scale) \
>> VADC_CHAN(_dname, IIO_VOLTAGE, \
>> BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_PROCESSED),\
>> - _pre) \
>> + _pre, _scale) \
>>
So here., Need to include support for "IIO_CHAN_INFO_SCALE" for
"VADC_CHAN_VOLT" to provide backward compatibility and same support for
"VADC_CHAN_TEMP" as well. Please correct me otherwise.
>> /*
>> * The array represents all possible ADC channels found in the supported PMICs.
>> @@ -630,106 +846,106 @@ struct vadc_channels {
>> * gaps in the array should be treated as reserved channels.
>> */
>> static const struct vadc_channels vadc_chans[] = {
>> - VADC_CHAN_VOLT(USBIN, 4)
>> - VADC_CHAN_VOLT(DCIN, 4)
>> - VADC_CHAN_VOLT(VCHG_SNS, 3)
>> - VADC_CHAN_VOLT(SPARE1_03, 1)
>> - VADC_CHAN_VOLT(USB_ID_MV, 1)
>> - VADC_CHAN_VOLT(VCOIN, 1)
>> - VADC_CHAN_VOLT(VBAT_SNS, 1)
>> - VADC_CHAN_VOLT(VSYS, 1)
>> - VADC_CHAN_TEMP(DIE_TEMP, 0)
>> - VADC_CHAN_VOLT(REF_625MV, 0)
>> - VADC_CHAN_VOLT(REF_1250MV, 0)
>> - VADC_CHAN_VOLT(CHG_TEMP, 0)
>> - VADC_CHAN_VOLT(SPARE1, 0)
>> - VADC_CHAN_VOLT(SPARE2, 0)
>> - VADC_CHAN_VOLT(GND_REF, 0)
>> - VADC_CHAN_VOLT(VDD_VADC, 0)
>> -
>> - VADC_CHAN_VOLT(P_MUX1_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX2_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX3_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX4_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX5_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX6_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX7_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX8_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX9_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX10_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX11_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX12_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX13_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX14_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX15_1_1, 0)
>> - VADC_CHAN_VOLT(P_MUX16_1_1, 0)
>> -
>> - VADC_CHAN_VOLT(P_MUX1_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX2_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX3_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX4_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX5_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX6_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX7_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX8_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX9_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX10_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX11_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX12_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX13_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX14_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX15_1_3, 1)
>> - VADC_CHAN_VOLT(P_MUX16_1_3, 1)
>> -
>> - VADC_CHAN_VOLT(LR_MUX1_BAT_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX2_BAT_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_XO_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX4_AMUX_THM1, 0)
>> - VADC_CHAN_VOLT(LR_MUX5_AMUX_THM2, 0)
>> - VADC_CHAN_VOLT(LR_MUX6_AMUX_THM3, 0)
>> - VADC_CHAN_VOLT(LR_MUX7_HW_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX8_AMUX_THM4, 0)
>> - VADC_CHAN_VOLT(LR_MUX9_AMUX_THM5, 0)
>> - VADC_CHAN_VOLT(LR_MUX10_USB_ID, 0)
>> - VADC_CHAN_VOLT(AMUX_PU1, 0)
>> - VADC_CHAN_VOLT(AMUX_PU2, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_BUF_XO_THERM, 0)
>> -
>> - VADC_CHAN_VOLT(LR_MUX1_PU1_BAT_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX2_PU1_BAT_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_PU1_XO_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX4_PU1_AMUX_THM1, 0)
>> - VADC_CHAN_VOLT(LR_MUX5_PU1_AMUX_THM2, 0)
>> - VADC_CHAN_VOLT(LR_MUX6_PU1_AMUX_THM3, 0)
>> - VADC_CHAN_VOLT(LR_MUX7_PU1_AMUX_HW_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX8_PU1_AMUX_THM4, 0)
>> - VADC_CHAN_VOLT(LR_MUX9_PU1_AMUX_THM5, 0)
>> - VADC_CHAN_VOLT(LR_MUX10_PU1_AMUX_USB_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_BUF_PU1_XO_THERM, 0)
>> -
>> - VADC_CHAN_VOLT(LR_MUX1_PU2_BAT_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX2_PU2_BAT_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_PU2_XO_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX4_PU2_AMUX_THM1, 0)
>> - VADC_CHAN_VOLT(LR_MUX5_PU2_AMUX_THM2, 0)
>> - VADC_CHAN_VOLT(LR_MUX6_PU2_AMUX_THM3, 0)
>> - VADC_CHAN_VOLT(LR_MUX7_PU2_AMUX_HW_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX8_PU2_AMUX_THM4, 0)
>> - VADC_CHAN_VOLT(LR_MUX9_PU2_AMUX_THM5, 0)
>> - VADC_CHAN_VOLT(LR_MUX10_PU2_AMUX_USB_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_BUF_PU2_XO_THERM, 0)
>> -
>> - VADC_CHAN_VOLT(LR_MUX1_PU1_PU2_BAT_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX2_PU1_PU2_BAT_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_PU1_PU2_XO_THERM, 0)
>> - VADC_CHAN_VOLT(LR_MUX4_PU1_PU2_AMUX_THM1, 0)
>> - VADC_CHAN_VOLT(LR_MUX5_PU1_PU2_AMUX_THM2, 0)
>> - VADC_CHAN_VOLT(LR_MUX6_PU1_PU2_AMUX_THM3, 0)
>> - VADC_CHAN_VOLT(LR_MUX7_PU1_PU2_AMUX_HW_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX8_PU1_PU2_AMUX_THM4, 0)
>> - VADC_CHAN_VOLT(LR_MUX9_PU1_PU2_AMUX_THM5, 0)
>> - VADC_CHAN_VOLT(LR_MUX10_PU1_PU2_AMUX_USB_ID, 0)
>> - VADC_CHAN_VOLT(LR_MUX3_BUF_PU1_PU2_XO_THERM, 0)
>> + VADC_CHAN_VOLT(USBIN, 4, SCALE_DEFAULT)
>> + VADC_CHAN_VOLT(DCIN, 4, SCALE_DEFAULT)
>> + VADC_CHAN_VOLT(VCHG_SNS, 3, SCALE_NONE)
>> + VADC_CHAN_VOLT(SPARE1_03, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(USB_ID_MV, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(VCOIN, 1, SCALE_DEFAULT)
>> + VADC_CHAN_VOLT(VBAT_SNS, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(VSYS, 1, SCALE_DEFAULT)
>> + VADC_CHAN_TEMP(DIE_TEMP, 0, SCALE_PMIC_THERM)
>> + VADC_CHAN_VOLT(REF_625MV, 0, SCALE_DEFAULT)
>> + VADC_CHAN_VOLT(REF_1250MV, 0, SCALE_DEFAULT)
>> + VADC_CHAN_VOLT(CHG_TEMP, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(SPARE1, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(SPARE2, 0, SCALE_PMI_CHG_TEMP)
>> + VADC_CHAN_VOLT(GND_REF, 0, SCALE_DEFAULT)
>> + VADC_CHAN_VOLT(VDD_VADC, 0, SCALE_DEFAULT)
>> +
>> + VADC_CHAN_VOLT(P_MUX1_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX2_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX3_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX4_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX5_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX6_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX7_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX8_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX9_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX10_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX11_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX12_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX13_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX14_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX15_1_1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX16_1_1, 0, SCALE_NONE)
>> +
>> + VADC_CHAN_VOLT(P_MUX1_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX2_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX3_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX4_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX5_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX6_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX7_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX8_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX9_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX10_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX11_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX12_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX13_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX14_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX15_1_3, 1, SCALE_NONE)
>> + VADC_CHAN_VOLT(P_MUX16_1_3, 1, SCALE_NONE)
>> +
>> + VADC_CHAN_VOLT(LR_MUX1_BAT_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX2_BAT_ID, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX3_XO_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX4_AMUX_THM1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX5_AMUX_THM2, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX6_AMUX_THM3, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX7_HW_ID, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX8_AMUX_THM4, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX9_AMUX_THM5, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX10_USB_ID, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(AMUX_PU1, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(AMUX_PU2, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX3_BUF_XO_THERM, 0, SCALE_NONE)
>> +
>> + VADC_CHAN_TEMP(LR_MUX1_PU1_BAT_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX2_PU1_BAT_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX3_PU1_XO_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX4_PU1_AMUX_THM1, 0, SCALE_THERM_100K_PULLUP)
>> + VADC_CHAN_TEMP(LR_MUX5_PU1_AMUX_THM2, 0, SCALE_THERM_100K_PULLUP)
>> + VADC_CHAN_TEMP(LR_MUX6_PU1_AMUX_THM3, 0, SCALE_THERM_100K_PULLUP)
>> + VADC_CHAN_VOLT(LR_MUX7_PU1_AMUX_HW_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX8_PU1_AMUX_THM4, 0, SCALE_THERM_100K_PULLUP)
>> + VADC_CHAN_TEMP(LR_MUX9_PU1_AMUX_THM5, 0, SCALE_THERM_100K_PULLUP)
>> + VADC_CHAN_VOLT(LR_MUX10_PU1_AMUX_USB_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX3_BUF_PU1_XO_THERM, 0, SCALE_XOTHERM)
>> +
>> + VADC_CHAN_TEMP(LR_MUX1_PU2_BAT_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX2_PU2_BAT_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX3_PU2_XO_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX4_PU2_AMUX_THM1, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX5_PU2_AMUX_THM2, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX6_PU2_AMUX_THM3, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX7_PU2_AMUX_HW_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX8_PU2_AMUX_THM4, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX9_PU2_AMUX_THM5, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX10_PU2_AMUX_USB_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX3_BUF_PU2_XO_THERM, 0, SCALE_NONE)
>> +
>> + VADC_CHAN_TEMP(LR_MUX1_PU1_PU2_BAT_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX2_PU1_PU2_BAT_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX3_PU1_PU2_XO_THERM, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX4_PU1_PU2_AMUX_THM1, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX5_PU1_PU2_AMUX_THM2, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX6_PU1_PU2_AMUX_THM3, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX7_PU1_PU2_AMUX_HW_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX8_PU1_PU2_AMUX_THM4, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX9_PU1_PU2_AMUX_THM5, 0, SCALE_NONE)
>> + VADC_CHAN_VOLT(LR_MUX10_PU1_PU2_AMUX_USB_ID, 0, SCALE_NONE)
>> + VADC_CHAN_TEMP(LR_MUX3_BUF_PU1_PU2_XO_THERM, 0, SCALE_NONE)
>> };
>>
>> static int vadc_get_dt_channel_data(struct device *dev,
>> @@ -847,7 +1063,7 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
>> of_node_put(child);
>> return ret;
>> }
>> -
> If I was being really fussy... This white space is as valid as it was before this
> addition so shouldn't really have been removed ;)
Sure., Will retain this new line in the next patch.
>> + prop.scale_fn = vadc_chans[prop.channel].scale_fn;
>> vadc->chan_props[index] = prop;
>>
>> vadc_chan = &vadc_chans[prop.channel];
>>
>
Thanks,
Ramakrishna
next prev parent reply other threads:[~2016-11-14 11:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-08 11:58 [PATCH V4 0/2] Changes to support different VADC scaling Rama Krishna Phani A
[not found] ` <1478606334-12394-1-git-send-email-rphani-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-11-08 11:58 ` [PATCH V4 1/2] iio: adc: spmi-vadc: Update function for generic voltage conversion Rama Krishna Phani A
2016-11-12 15:13 ` Jonathan Cameron
[not found] ` <38428ee7-5d1b-2b36-99a9-988e0e7d29b5-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-14 11:47 ` Phani A, Rama Krishna
2016-11-08 11:58 ` [PATCH V4 2/2] iio: adc: spmi-vadc: Changes to support different scaling Rama Krishna Phani A
[not found] ` <1478606334-12394-3-git-send-email-rphani-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-11-12 15:02 ` Jonathan Cameron
[not found] ` <bc8b56e3-e1bf-3e92-bdca-cf7b0a13dca1-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-14 11:38 ` Phani A, Rama Krishna [this message]
[not found] ` <03b97c38-02fb-a727-28a5-298bb240a312-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-11-19 12:38 ` Jonathan Cameron
[not found] ` <33f02a43-0542-bad1-8c9a-1aa5cb1cef9f-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-19 13:36 ` Rama Krishna Phani A
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=03b97c38-02fb-a727-28a5-298bb240a312@codeaurora.org \
--to=rphani-sgv2jx0feol9jmxxk+q4oq@public.gmane.org \
--cc=Julia.Lawall-L2FTfq7BK8M@public.gmane.org \
--cc=cdevired-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=knaack.h-Mmb7MZpHnFY@public.gmane.org \
--cc=lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org \
--cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mgautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org \
--cc=sivaa-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=smohanad-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).