lkml.org 
[lkml]   [2021]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 1/7] dt-bindings: iio: stm32-adc: add generic channel binding
    Date
    Add ADC generic channel binding. This binding should
    be used as an alternate to legacy channel properties
    whenever possible.
    ADC generic channel binding allows to identify supported
    internal channels through the following reserved label names:
    "vddcore", "vrefint" and "vbat".
    This binding also allows to set a different sampling time
    for each channel.

    Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Reviewed-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
    ---
    .../bindings/iio/adc/st,stm32-adc.yaml | 100 ++++++++++++++++--
    1 file changed, 93 insertions(+), 7 deletions(-)

    diff --git a/Documentation/devicetree/bindings/iio/adc/st,stm32-adc.yaml b/Documentation/devicetree/bindings/iio/adc/st,stm32-adc.yaml
    index a58334c3bb76..2083e1723970 100644
    --- a/Documentation/devicetree/bindings/iio/adc/st,stm32-adc.yaml
    +++ b/Documentation/devicetree/bindings/iio/adc/st,stm32-adc.yaml
    @@ -222,6 +222,12 @@ patternProperties:
    '#io-channel-cells':
    const: 1

    + '#address-cells':
    + const: 1
    +
    + '#size-cells':
    + const: 0
    +
    interrupts:
    description: |
    IRQ Line for the ADC instance. Valid values are:
    @@ -256,6 +262,7 @@ patternProperties:
    - 20 channels, numbered from 0 to 19 (for in0..in19) on stm32h7 and
    stm32mp1.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    + deprecated: true

    st,adc-diff-channels:
    description: |
    @@ -265,7 +272,9 @@ patternProperties:
    <vinp vinn>, <vinp vinn>,... vinp and vinn are numbered from 0 to 19.

    Note: At least one of "st,adc-channels" or "st,adc-diff-channels" is
    - required. Both properties can be used together. Some channels can be
    + required if no adc generic channel is defined. These legacy channel
    + properties are exclusive with adc generic channel bindings.
    + Both properties can be used together. Some channels can be
    used as single-ended and some other ones as differential (mixed). But
    channels can't be configured both as single-ended and differential.
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    @@ -279,6 +288,7 @@ patternProperties:
    "vinn" indicates negative input number
    minimum: 0
    maximum: 19
    + deprecated: true

    st,min-sample-time-nsecs:
    description:
    @@ -289,6 +299,42 @@ patternProperties:
    list, to set sample time resp. for all channels, or independently for
    each channel.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    + deprecated: true
    +
    + patternProperties:
    + "^channel@([0-9]|1[0-9])$":
    + type: object
    + $ref: "adc.yaml"
    + description: Represents the external channels which are connected to the ADC.
    +
    + properties:
    + reg:
    + items:
    + minimum: 0
    + maximum: 19
    +
    + label:
    + description: |
    + Unique name to identify which channel this is.
    + Reserved label names "vddcore", "vrefint" and "vbat"
    + are used to identify internal channels with matching names.
    +
    + diff-channels:
    + $ref: /schemas/types.yaml#/definitions/uint32-array
    + items:
    + minimum: 0
    + maximum: 19
    +
    + st,min-sample-time-ns:
    + description: |
    + Minimum sampling time in nanoseconds. Depending on hardware (board)
    + e.g. high/low analog input source impedance, fine tune of ADC
    + sampling time may be recommended.
    +
    + required:
    + - reg
    +
    + additionalProperties: false

    allOf:
    - if:
    @@ -369,12 +415,6 @@ patternProperties:

    additionalProperties: false

    - anyOf:
    - - required:
    - - st,adc-channels
    - - required:
    - - st,adc-diff-channels
    -
    required:
    - compatible
    - reg
    @@ -451,4 +491,50 @@ examples:
    // other adc child node follow...
    };

    + - |
    + // Example 3: with stm32mp157c to setup ADC2 with:
    + // - internal channels 13, 14, 15.
    + #include <dt-bindings/interrupt-controller/arm-gic.h>
    + #include <dt-bindings/clock/stm32mp1-clks.h>
    + adc122: adc@48003000 {
    + compatible = "st,stm32mp1-adc-core";
    + reg = <0x48003000 0x400>;
    + interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
    + <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
    + clocks = <&rcc ADC12>, <&rcc ADC12_K>;
    + clock-names = "bus", "adc";
    + booster-supply = <&booster>;
    + vdd-supply = <&vdd>;
    + vdda-supply = <&vdda>;
    + vref-supply = <&vref>;
    + st,syscfg = <&syscfg>;
    + interrupt-controller;
    + #interrupt-cells = <1>;
    + #address-cells = <1>;
    + #size-cells = <0>;
    + adc@100 {
    + compatible = "st,stm32mp1-adc";
    + #io-channel-cells = <1>;
    + reg = <0x100>;
    + interrupts = <1>;
    + #address-cells = <1>;
    + #size-cells = <0>;
    + channel@13 {
    + reg = <13>;
    + label = "vrefint";
    + st,min-sample-time-ns = <9000>;
    + };
    + channel@14 {
    + reg = <14>;
    + label = "vddcore";
    + st,min-sample-time-ns = <9000>;
    + };
    + channel@15 {
    + reg = <15>;
    + label = "vbat";
    + st,min-sample-time-ns = <9000>;
    + };
    + };
    + };
    +
    ...
    --
    2.17.1
    \
     
     \ /
      Last update: 2021-10-14 15:14    [W:3.442 / U:0.488 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site