linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Siddartha Mohanadoss <smohanad@codeaurora.org>
To: Jonathan Cameron <jic23@kernel.org>
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
	Rob Herring <robh+dt@kernel.org>,
	cdevired@codeaurora.org, rphani@codeaurora.org,
	sivaa@codeaurora.org
Subject: Re: [PATCH 1/2] dt-bindings: iio: adc: Add DT binding document for PMIC5 ADC
Date: Tue, 15 May 2018 16:57:03 -0700	[thread overview]
Message-ID: <18857b67-0865-7794-d981-87beb3f9c22f@codeaurora.org> (raw)
In-Reply-To: <20180512111543.4f65dddd@archlinux>

Hi Jonathan,

Thanks for the comments.


On 05/12/2018 03:15 AM, Jonathan Cameron wrote:
> On Tue,  8 May 2018 14:38:21 -0700
> Siddartha Mohanadoss <smohanad@codeaurora.org> wrote:
>
>> PMIC5 ADC has support for clients to measure voltage and current
>> on inputs connected to the PMIC. Clients include reading voltage
>> phone power and on board system thermistors for thermal management.
>> ADC5 on certain PMIC has support to read battery current.
>>
>> This change adds documentation.
>>
>> Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
> Hi Siddartha,
>
> Some complexity in here!  Anyhow, a few comments inline and we will definitely
> be wanting guidance from the devicetree people for this one.
>
> Jonathan
>
>> ---
>>   .../devicetree/bindings/iio/adc/qcom,spmi-adc5.txt | 137 +++++++++++++++++++++
>>   1 file changed, 137 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,spmi-adc5.txt
>>
>> diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-adc5.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-adc5.txt
>> new file mode 100644
>> index 0000000..c9268ba
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-adc5.txt
>> @@ -0,0 +1,137 @@
>> +Qualcomm Technologies Inc. SPMI PMIC5 voltage and current ADC
>> +
>> +SPMI PMIC5 voltage ADC (ADC) provides interface to clients to read
>> +voltage. The VADC is a 16-bit sigma-delta ADC.
>> +
>> +ADC node:
>> +
>> +- compatible:
>> +    Usage: required
>> +    Value type: <string>
>> +    Definition: Should contain "qcom,spmi-adc5" for PMIC5 ADC driver.
>> +		Should contain "qcom,spmi-adc-rev2" for PMIC refresh ADC driver.
>> +
>> +- reg:
>> +    Usage: required
>> +    Value type: <prop-encoded-array>
>> +    Definition: VADC base address and length in the SPMI PMIC register map.
>> +
>> +- #address-cells:
>> +    Usage: required
>> +    Value type: <u32>
>> +    Definition: Must be one. Child node 'reg' property should define ADC
>> +            channel number.
>> +
>> +- #size-cells:
>> +    Usage: required
>> +    Value type: <u32>
>> +    Definition: Must be zero.
>> +
>> +- #io-channel-cells:
>> +    Usage: required
>> +    Value type: <u32>
>> +    Definition: Must be one. For details about IIO bindings see:
>> +            Documentation/devicetree/bindings/iio/iio-bindings.txt
>> +
>> +- interrupts:
>> +    Usage: optional
>> +    Value type: <prop-encoded-array>
>> +    Definition: End of conversion interrupt.
>> +
>> +Channel node properties:
>> +
>> +- reg:
>> +    Usage: required
>> +    Value type: <u32>
>> +    Definition: ADC channel number.
>> +            See include/dt-bindings/iio/qcom,spmi-vadc.h
>> +
>> +- label:
>> +    Usage: required
>> +    Value type: <empty>
>> +    Definition: ADC datasheet channel name.
>> +            For thermistor inputs connected to generic AMUX or GPIO inputs
>> +            these can vary across platform for the same pins. Hence select
>> +            the datasheet name for this channel.
>> +
>> +- qcom,pre-scaling:
>> +    Usage: required
>> +    Value type: <u32 array>
>> +    Definition: Used for scaling the channel input signal before the signal is
>> +            fed to VADC. The configuration for this node is to know the
>> +            pre-determined ratio and use it for post scaling. Select one from
>> +            the following options.
>> +            <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10>
>> +            If property is not found default value depending on chip will be used.
>> +
>> +- qcom,decimation:
>> +    Usage: optional
>> +    Value type: <u32>
>> +    Definition: This parameter is used to decrease ADC sampling rate.
>> +            Quicker measurements can be made by reducing decimation ratio.
>> +            For PMIC5 ADC, combined two step decimation values are 250, 420 and 840.
>> +            If property is not found, default value of 840 will be used.
> The odd indenting here needs sorting.  Mixture of spaces and tabs at the moment.
Ok, will take a look.
> Hmm. In someways this is a policy decision so should be pushed up to userspace,
> but given the 'right' value will be somewhat dependent on what you are doing
> with the channel and what is wired to it, it could arguably have a 'right' value
> for a given circuit.  This is really just the sampling frequency wrapped
> up in decimation of something, I'm guessing some input clock?
Yes. It's number of samples collected over a 4.8MHz clock.
The only reason to update this value would be if client wants to get
the conversion results back sooner. Hence left this as an optional property.
>
> Let's see what the Device-tree people think on this one!  Personally I have
> never really minded devicetree providing sensible defaults.  We can put
> control on these things later, if there is a usecase for changing them.
>
>> +	    For PMIC refresh ADC, supported decimation values are 256, 512, 1024.
>> +	    If property is not found, default value of 1024 will be used.
>> +
>> +- qcom,ratiometric:
>> +    Usage: optional
>> +    Value type: <empty>
>> +    Definition: Channel calibration type. If this property is specified
>> +            VADC will use the VDD reference (1.875V) and GND for channel
>> +            calibration. If property is not found, channel will be
>> +            calibrated with 0V and 1.25V reference channels, also
>> +            known as absolute calibration.
>> +
>> +- qcom,hw-settle-time:
>> +    Usage: optional
>> +    Value type: <u32>
>> +    Definition: Time between AMUX getting configured and the ADC starting
>> +            conversion.
>> +	    For PMIC5, delay = 15us for value 0,
>> +			100us * (value) for values 0 < value < 11, and
>> +            		2ms * (value - 10) otherwise.
>> +            Valid values are: 15, 100, 200, 300, 400, 500, 600, 700, 800,
> This description is very confusing given the different uses of 'value'
> None of the values you have allowed is less than 11 so the first condition
> doesn't apply.
The 'value' is an index programmed in the hardware to achieve the
hardware settling delay specified under valid values. I will update the
documentation here.
>
>> +            900 us and 1, 2, 4, 6, 8, 10 ms
>> +            If property is not found, channel will use 15us.
>> +	    For PMIC rev2, delay = 100us * (value) for values 0 < value < 11, and
>> +			2ms * (value - 10) otherwise.
>> +            Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800,
>> +            900 us and 1, 2, 4, 6, 8, 10 ms
>> +            If property is not found, channel will use 0 us.
>> +
>> +- qcom,avg-samples:
>> +    Usage: optional
>> +    Value type: <u32>
>> +    Definition: Number of samples to be used for measurement.
>> +            Averaging provides the option to obtain a single measurement
>> +            from the ADC that is an average of multiple samples. The value
>> +            selected is 2^(value).
>> +            Valid values are: 1, 2, 4, 8, 16
>> +            If property is not found, 1 sample will be used.
> As with decimation, this is arguably not a feature of the hardware, but
> a software decision...
>
>> +
>> +Example:
>> +
>> +        /* VADC node */
>> +        pmic_vadc: vadc@3100 {
>> +                compatible = "qcom,spmi-adc5";
>> +                reg = <0x3100 0x100>;
>> +                interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
>> +                #address-cells = <1>;
>> +                #size-cells = <0>;
>> +                #io-channel-cells = <1>;
>> +                io-channel-ranges;
>> +
>> +                /* Channel node */
>> +                vph_pwr {
>> +                        reg = <ADC_VPH_PWR>;
>> +                        label = "vph_pwr";
>> +                        qcom,pre-scaling = <1 3>;
>> +                };
>> +        };
>> +
>> +        /* IIO client node */
>> +        usb {
>> +                io-channels = <&pmic_vadc ADC_VPH_PWR>;
>> +                io-channel-names = "vadc";
>> +        };

  reply	other threads:[~2018-05-15 23:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-08 21:38 [PATCH 1/2] dt-bindings: iio: adc: Add DT binding document for PMIC5 ADC Siddartha Mohanadoss
2018-05-12 10:15 ` Jonathan Cameron
2018-05-15 23:57   ` Siddartha Mohanadoss [this message]
2018-05-22 20:54     ` Rob Herring
2018-05-25 18:18       ` Siddartha Mohanadoss

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=18857b67-0865-7794-d981-87beb3f9c22f@codeaurora.org \
    --to=smohanad@codeaurora.org \
    --cc=cdevired@codeaurora.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    --cc=robh+dt@kernel.org \
    --cc=rphani@codeaurora.org \
    --cc=sivaa@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).