linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rama Krishna Phani A <rphani@codeaurora.org>
To: Jonathan Cameron <jic23@kernel.org>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org
Cc: robh@kernel.org, linux-arm-msm@vger.kernel.org,
	smohanad@codeaurora.org, mgautam@codeaurora.org,
	sivaa@codeaurora.org, knaack.h@gmx.de, lars@metafoo.de,
	pmeerw@pmeerw.net, Julia.Lawall@lip6.fr
Subject: Re: [PATCH V3 2/2] iio: adc: spmi-vadc: Changes to support different scaling
Date: Mon, 31 Oct 2016 13:15:56 +0530	[thread overview]
Message-ID: <6c3263b8-a0dd-8086-0404-54edbd155942@codeaurora.org> (raw)
In-Reply-To: <555edcae-23e1-ea96-551b-86cda4c489b3@kernel.org>

Hi Jonathan,

On 30-Oct-16 11:09 PM, Jonathan Cameron wrote:
> On 26/10/16 15:41, Rama Krishna Phani A wrote:
>> Polling can also be used for End of conversion completion. Implement logic
>> to choose either polling or interrupt for End of conversion completion.
> Why is this change in a patch with the title above?  Should be a separate patch.
>
Ok., Will split the patch.

>> Scaling can be done on the voltage to report adc code in physical units.
>> Add changes to support different scale functions to convert adc code to
>> physical units.
>>
>> Signed-off-by: Rama Krishna Phani A <rphani@codeaurora.org>
>> ---
>>  .../devicetree/bindings/iio/adc/qcom,spmi-vadc.txt |  14 ++
>>  drivers/iio/adc/qcom-spmi-vadc.c                   | 263 +++++++++++++++++----
>>  2 files changed, 236 insertions(+), 41 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt
>> index 0fb4613..39e31c0e 100644
>> --- a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt
>> +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt
>> @@ -37,6 +37,12 @@ VADC node:
>>      Value type: <prop-encoded-array>
>>      Definition: End of conversion interrupt.
>>
>> +- qcom,vadc-poll-eoc:
>> +    Usage: optional
>> +    Value type: <bool>
>> +    Definition: Use polling instead of interrupts for End of Conversion
>> +		completion.
>> +
>>  Channel node properties:
>>
>>  - reg:
>> @@ -92,6 +98,14 @@ Channel node properties:
>>              Valid values are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
>>              If property is not found, 1 sample will be used.
>>
>> +- qcom,scale-function:
>> +    Usage: optional
>> +    Value type: <u32>
>> +    Definition: Scaling function used to convert raw ADC code to
>> +	units specific to a given channel. Scaled units can be
>> +	microvolts, millidegC.Valid values are: 0, 1, 2, 3, 4.
>> +	If property is not found, 0 scaling will be used.
>> +
>>  NOTE:
>>
>>  Following channels, also known as reference point channels, are used for
>> diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c
>> index ff4d549..6e521a9 100644
>> --- a/drivers/iio/adc/qcom-spmi-vadc.c
>> +++ b/drivers/iio/adc/qcom-spmi-vadc.c
>> @@ -92,6 +92,8 @@
>>  #define VADC_DEF_AVG_SAMPLES			0 /* 1 sample */
>>  #define VADC_DEF_CALIB_TYPE			VADC_CALIB_ABSOLUTE
>>
>> +#define VADC_DEF_SCALE_FN			SCALE_DEFAULT
>> +
>>  #define VADC_DECIMATION_MIN			512
>>  #define VADC_DECIMATION_MAX			4096
>>
>> @@ -100,9 +102,43 @@
>>
>>  #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
>>
>> +/**
>> + * 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,
>> +};
>> +
>> +/**
>> + * 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 +184,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.
> Make sure your indentation matches the rest of the comment..
Sure ., Will check for indentation.

>> + *@scale_function: 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 +195,7 @@ struct vadc_channel_prop {
>>  	unsigned int prescale;
>>  	unsigned int hw_settle_time;
>>  	unsigned int avg_samples;
>> +	unsigned int scale_function;
>>  };
>>
>>  /**
>> @@ -197,6 +237,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);
>> @@ -468,6 +546,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)
>> @@ -489,15 +612,61 @@ static s64 vadc_scale_fn(struct vadc_priv *vadc,
>>  			 const struct vadc_channel_prop *prop, u16 adc_code)
>>  {
>>  	const struct vadc_prescale_ratio *prescale;
>> -	s64 voltage = 0;
>> +	s64 voltage = 0, result = 0;
>> +	int ret;
>> +
>> +	switch (prop->scale_function) {
>> +	case SCALE_DEFAULT:
>> +		vadc_scale_calib(vadc, adc_code, prop, &voltage);
>> +
>> +		prescale = &vadc_prescale_ratios[prop->prescale];
>> +		voltage = voltage * prescale->den;
>> +		return div64_s64(voltage, prescale->num);
>> +
>> +	case SCALE_THERM_100K_PULLUP:
>> +	case SCALE_XOTHERM:
>> +		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;
>> +		return result;
>> +
>> +	case SCALE_PMIC_THERM:
>> +		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;
>>
>> -	vadc_scale_calib(vadc, adc_code, prop, &voltage);
>> +		return voltage;
>>
>> -	prescale = &vadc_prescale_ratios[prop->prescale];
>> +	case SCALE_PMI_CHG_TEMP:
>> +		vadc_scale_calib(vadc, adc_code, prop, &voltage);
>> +		prescale = &vadc_prescale_ratios[prop->prescale];
>> +		voltage = voltage * prescale->den;
>>
>> -	voltage = voltage * prescale->den;
>> +		voltage = div64_s64(voltage, prescale->num);
>> +		voltage = ((PMI_CHG_SCALE_1) * (voltage * 2));
>> +		voltage = (voltage + PMI_CHG_SCALE_2);
>> +		return div64_s64(voltage, 1000000);
>>
>> -	return div64_s64(voltage, prescale->num);
>> +	default:
>> +		ret = -EINVAL;
>> +		break;
>> +	}
>> +
>> +	return ret;
>>  }
>>
>>  static int vadc_decimation_from_dt(u32 value)
>> @@ -615,7 +784,9 @@ struct vadc_channels {
>>  	},								\
>>
>>  #define VADC_CHAN_TEMP(_dname, _pre)					\
>> -	VADC_CHAN(_dname, IIO_TEMP, BIT(IIO_CHAN_INFO_PROCESSED), _pre)	\
>> +	VADC_CHAN(_dname, IIO_TEMP,	\
>> +		BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_PROCESSED), \
>> +		_pre)	\
>>
>>  #define VADC_CHAN_VOLT(_dname, _pre)					\
>>  	VADC_CHAN(_dname, IIO_VOLTAGE,				\
>> @@ -639,7 +810,7 @@ struct vadc_channels {
>>  	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_TEMP(CHG_TEMP, 0)
>>  	VADC_CHAN_VOLT(SPARE1, 0)
>>  	VADC_CHAN_VOLT(SPARE2, 0)
>>  	VADC_CHAN_VOLT(GND_REF, 0)
>> @@ -693,41 +864,41 @@ struct vadc_channels {
>>  	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_TEMP(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_TEMP(LR_MUX3_PU1_XO_THERM, 0)
>> +	VADC_CHAN_TEMP(LR_MUX4_PU1_AMUX_THM1, 0)
>> +	VADC_CHAN_TEMP(LR_MUX5_PU1_AMUX_THM2, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX8_PU1_AMUX_THM4, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX3_BUF_PU1_XO_THERM, 0)
>>
>> -	VADC_CHAN_VOLT(LR_MUX1_PU2_BAT_THERM, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX3_PU2_XO_THERM, 0)
>> +	VADC_CHAN_TEMP(LR_MUX4_PU2_AMUX_THM1, 0)
>> +	VADC_CHAN_TEMP(LR_MUX5_PU2_AMUX_THM2, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX8_PU2_AMUX_THM4, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX3_BUF_PU2_XO_THERM, 0)
>>
>> -	VADC_CHAN_VOLT(LR_MUX1_PU1_PU2_BAT_THERM, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX3_PU1_PU2_XO_THERM, 0)
>> +	VADC_CHAN_TEMP(LR_MUX4_PU1_PU2_AMUX_THM1, 0)
>> +	VADC_CHAN_TEMP(LR_MUX5_PU1_PU2_AMUX_THM2, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX8_PU1_PU2_AMUX_THM4, 0)
>> +	VADC_CHAN_TEMP(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_TEMP(LR_MUX3_BUF_PU1_PU2_XO_THERM, 0)
>>  };
>>
>>  static int vadc_get_dt_channel_data(struct device *dev,
>> @@ -804,6 +975,11 @@ static int vadc_get_dt_channel_data(struct device *dev,
>>  		prop->avg_samples = VADC_DEF_AVG_SAMPLES;
>>  	}
>>
>> +	ret = of_property_read_u32(node, "qcom,scale-function",
>> +				   &prop->scale_function);
>> +	if (ret)
>> +		prop->scale_function = SCALE_DEFAULT;
>> +
>>  	if (of_property_read_bool(node, "qcom,ratiometric"))
>>  		prop->calibration = VADC_CALIB_RATIOMETRIC;
>>  	else
>> @@ -966,16 +1142,21 @@ static int vadc_probe(struct platform_device *pdev)
>>  	if (ret)
>>  		return ret;
>>
>> -	irq_eoc = platform_get_irq(pdev, 0);
>> -	if (irq_eoc < 0) {
>> -		if (irq_eoc == -EPROBE_DEFER || irq_eoc == -EINVAL)
>> -			return irq_eoc;
>> -		vadc->poll_eoc = true;
>> -	} else {
>> -		ret = devm_request_irq(dev, irq_eoc, vadc_isr, 0,
>> -				       "spmi-vadc", vadc);
>> -		if (ret)
>> -			return ret;
>> +	vadc->poll_eoc = of_property_read_bool(node,
>> +						"qcom,vadc-poll-eoc");
> Should definitely be done on availability of the IRQ rather than a separate
> device tree element.
Will check the logic for implementation and will post next patch.

>> +
>> +	if (!vadc->poll_eoc) {
>> +		irq_eoc = platform_get_irq(pdev, 0);
>> +		if (irq_eoc < 0) {
>> +			if (irq_eoc == -EPROBE_DEFER || irq_eoc == -EINVAL)
>> +				return irq_eoc;
>> +			vadc->poll_eoc = true;
>> +		} else {
>> +			ret = devm_request_irq(dev, irq_eoc, vadc_isr, 0,
>> +					       "spmi-vadc", vadc);
>> +			if (ret)
>> +				return ret;
>> +		}
>>  	}
>>
>>  	ret = vadc_reset(vadc);
>>
>

Thanks,
Ramakrishna

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

      reply	other threads:[~2016-10-31  7:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-26 14:41 [PATCH V3 0/2] iio: adc: spmi-vadc: Changes to support different scaling Rama Krishna Phani A
     [not found] ` <1477492887-1663-1-git-send-email-rphani-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-10-26 14:41   ` [PATCH V3 1/2] iio: adc: spmi-vadc: Update changes to support reporting of Raw adc code Rama Krishna Phani A
2016-10-30 17:35     ` Jonathan Cameron
     [not found]       ` <ee44e76a-b7e1-63b2-2251-6247d9e6bb9d-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-10-31  8:48         ` Rama Krishna Phani A
     [not found]           ` <0beb28aa-1726-3046-1652-96f0029fa5dc-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-11-01 18:30             ` Jonathan Cameron
     [not found]               ` <de2a0283-201d-fdab-98d0-be45ca71f5ea-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-02 13:12                 ` Phani A, Rama Krishna
     [not found]                   ` <a36d7f9c-7716-19bb-2710-7af90f8e0787-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-11-05 15:59                     ` Jonathan Cameron
2016-11-07 15:07                       ` Phani A, Rama Krishna
2016-10-26 14:41   ` [PATCH V3 2/2] iio: adc: spmi-vadc: Changes to support different scaling Rama Krishna Phani A
     [not found]     ` <1477492887-1663-3-git-send-email-rphani-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-10-27 11:18       ` Stanimir Varbanov
     [not found]         ` <8418e7f1-55d9-2dfa-1dc7-5960f9da0305-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-27 17:37           ` Phani A, Rama Krishna
2016-10-30 17:13             ` Jonathan Cameron
     [not found]               ` <a96141dc-6ee5-2d7c-868c-7cb282002b89-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-10-31  7:12                 ` Rama Krishna Phani A
2016-10-31  9:26                   ` Stanimir Varbanov
2016-11-01  5:32                     ` Phani A, Rama Krishna
2016-10-30 17:39     ` Jonathan Cameron
2016-10-31  7:45       ` Rama Krishna Phani A [this message]

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=6c3263b8-a0dd-8086-0404-54edbd155942@codeaurora.org \
    --to=rphani@codeaurora.org \
    --cc=Julia.Lawall@lip6.fr \
    --cc=devicetree@vger.kernel.org \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=mgautam@codeaurora.org \
    --cc=pmeerw@pmeerw.net \
    --cc=robh@kernel.org \
    --cc=sivaa@codeaurora.org \
    --cc=smohanad@codeaurora.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).