The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/iio/adc/st,stm32-adc.yaml

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
    2 %YAML 1.2
    3 ---
    4 $id: "http://devicetree.org/schemas/iio/adc/st,stm32-adc.yaml#"
    5 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
    6 
    7 title: STMicroelectronics STM32 ADC bindings
    8 
    9 description: |
   10   STM32 ADC is a successive approximation analog-to-digital converter.
   11   It has several multiplexed input channels. Conversions can be performed
   12   in single, continuous, scan or discontinuous mode. Result of the ADC is
   13   stored in a left-aligned or right-aligned 32-bit data register.
   14   Conversions can be launched in software or using hardware triggers.
   15 
   16   The analog watchdog feature allows the application to detect if the input
   17   voltage goes beyond the user-defined, higher or lower thresholds.
   18 
   19   Each STM32 ADC block can have up to 3 ADC instances.
   20 
   21 maintainers:
   22   - Fabrice Gasnier <fabrice.gasnier@foss.st.com>
   23 
   24 properties:
   25   compatible:
   26     enum:
   27       - st,stm32f4-adc-core
   28       - st,stm32h7-adc-core
   29       - st,stm32mp1-adc-core
   30 
   31   reg:
   32     maxItems: 1
   33 
   34   interrupts:
   35     description: |
   36       One or more interrupts for ADC block, depending on part used:
   37         - stm32f4 and stm32h7 share a common ADC interrupt line.
   38         - stm32mp1 has two separate interrupt lines, one for each ADC within
   39           ADC block.
   40     minItems: 1
   41     maxItems: 2
   42 
   43   clocks:
   44     minItems: 1
   45     maxItems: 2
   46     description: |
   47       Core can use up to two clocks, depending on part used:
   48         - "adc" clock: for the analog circuitry, common to all ADCs.
   49           It's required on stm32f4.
   50           It's optional on stm32h7 and stm32mp1.
   51         - "bus" clock: for registers access, common to all ADCs.
   52           It's not present on stm32f4.
   53           It's required on stm32h7 and stm32mp1.
   54 
   55   clock-names: true
   56 
   57   st,max-clk-rate-hz:
   58     description:
   59       Allow to specify desired max clock rate used by analog circuitry.
   60 
   61   vdda-supply:
   62     description: Phandle to the vdda input analog voltage.
   63 
   64   vref-supply:
   65     description: Phandle to the vref input analog reference voltage.
   66 
   67   booster-supply:
   68     description:
   69       Phandle to the embedded booster regulator that can be used to supply ADC
   70       analog input switches on stm32h7 and stm32mp1.
   71 
   72   vdd-supply:
   73     description:
   74       Phandle to the vdd input voltage. It can be used to supply ADC analog
   75       input switches on stm32mp1.
   76 
   77   st,syscfg:
   78     description:
   79       Phandle to system configuration controller. It can be used to control the
   80       analog circuitry on stm32mp1.
   81     $ref: "/schemas/types.yaml#/definitions/phandle-array"
   82 
   83   interrupt-controller: true
   84 
   85   '#interrupt-cells':
   86     const: 1
   87 
   88   '#address-cells':
   89     const: 1
   90 
   91   '#size-cells':
   92     const: 0
   93 
   94 allOf:
   95   - if:
   96       properties:
   97         compatible:
   98           contains:
   99             const: st,stm32f4-adc-core
  100 
  101     then:
  102       properties:
  103         clocks:
  104           maxItems: 1
  105 
  106         clock-names:
  107           const: adc
  108 
  109         interrupts:
  110           items:
  111             - description: interrupt line common for all ADCs
  112 
  113         st,max-clk-rate-hz:
  114           minimum: 600000
  115           maximum: 36000000
  116           default: 36000000
  117 
  118         booster-supply: false
  119 
  120         vdd-supply: false
  121 
  122         st,syscfg: false
  123 
  124   - if:
  125       properties:
  126         compatible:
  127           contains:
  128             const: st,stm32h7-adc-core
  129 
  130     then:
  131       properties:
  132         clocks:
  133           minItems: 1
  134           maxItems: 2
  135 
  136         clock-names:
  137           items:
  138             - const: bus
  139             - const: adc
  140           minItems: 1
  141 
  142         interrupts:
  143           items:
  144             - description: interrupt line common for all ADCs
  145 
  146         st,max-clk-rate-hz:
  147           minimum: 120000
  148           maximum: 36000000
  149           default: 36000000
  150 
  151         vdd-supply: false
  152 
  153         st,syscfg: false
  154 
  155   - if:
  156       properties:
  157         compatible:
  158           contains:
  159             const: st,stm32mp1-adc-core
  160 
  161     then:
  162       properties:
  163         clocks:
  164           minItems: 1
  165           maxItems: 2
  166 
  167         clock-names:
  168           items:
  169             - const: bus
  170             - const: adc
  171           minItems: 1
  172 
  173         interrupts:
  174           items:
  175             - description: interrupt line for ADC1
  176             - description: interrupt line for ADC2
  177 
  178         st,max-clk-rate-hz:
  179           minimum: 120000
  180           maximum: 36000000
  181           default: 36000000
  182 
  183 additionalProperties: false
  184 
  185 required:
  186   - compatible
  187   - reg
  188   - interrupts
  189   - clocks
  190   - clock-names
  191   - vdda-supply
  192   - vref-supply
  193   - interrupt-controller
  194   - '#interrupt-cells'
  195   - '#address-cells'
  196   - '#size-cells'
  197 
  198 patternProperties:
  199   "^adc@[0-9]+$":
  200     type: object
  201     description:
  202       An ADC block node should contain at least one subnode, representing an
  203       ADC instance available on the machine.
  204 
  205     properties:
  206       compatible:
  207         enum:
  208           - st,stm32f4-adc
  209           - st,stm32h7-adc
  210           - st,stm32mp1-adc
  211 
  212       reg:
  213         description: |
  214           Offset of ADC instance in ADC block. Valid values are:
  215             - 0x0:   ADC1
  216             - 0x100: ADC2
  217             - 0x200: ADC3 (stm32f4 only)
  218         maxItems: 1
  219 
  220       '#io-channel-cells':
  221         const: 1
  222 
  223       '#address-cells':
  224         const: 1
  225 
  226       '#size-cells':
  227         const: 0
  228 
  229       interrupts:
  230         description: |
  231           IRQ Line for the ADC instance. Valid values are:
  232             - 0 for adc@0
  233             - 1 for adc@100
  234             - 2 for adc@200 (stm32f4 only)
  235         maxItems: 1
  236 
  237       clocks:
  238         description:
  239           Input clock private to this ADC instance. It's required only on
  240           stm32f4, that has per instance clock input for registers access.
  241         maxItems: 1
  242 
  243       dmas:
  244         description: RX DMA Channel
  245         maxItems: 1
  246 
  247       dma-names:
  248         const: rx
  249 
  250       assigned-resolution-bits:
  251         description: |
  252           Resolution (bits) to use for conversions:
  253             - can be 6, 8, 10 or 12 on stm32f4
  254             - can be 8, 10, 12, 14 or 16 on stm32h7 and stm32mp1
  255 
  256       st,adc-channels:
  257         description: |
  258           List of single-ended channels muxed for this ADC. It can have up to:
  259             - 16 channels, numbered from 0 to 15 (for in0..in15) on stm32f4
  260             - 20 channels, numbered from 0 to 19 (for in0..in19) on stm32h7 and
  261               stm32mp1.
  262         $ref: /schemas/types.yaml#/definitions/uint32-array
  263         deprecated: true
  264 
  265       st,adc-diff-channels:
  266         description: |
  267           List of differential channels muxed for this ADC. Some channels can
  268           be configured as differential instead of single-ended on stm32h7 and
  269           on stm32mp1. Positive and negative inputs pairs are listed:
  270           <vinp vinn>, <vinp vinn>,... vinp and vinn are numbered from 0 to 19.
  271 
  272           Note: At least one of "st,adc-channels" or "st,adc-diff-channels" is
  273           required if no adc generic channel is defined. These legacy channel
  274           properties are exclusive with adc generic channel bindings.
  275           Both properties can be used together. Some channels can be
  276           used as single-ended and some other ones as differential (mixed). But
  277           channels can't be configured both as single-ended and differential.
  278         $ref: /schemas/types.yaml#/definitions/uint32-matrix
  279         items:
  280           items:
  281             - description: |
  282                 "vinp" indicates positive input number
  283               minimum: 0
  284               maximum: 19
  285             - description: |
  286                 "vinn" indicates negative input number
  287               minimum: 0
  288               maximum: 19
  289         deprecated: true
  290 
  291       st,min-sample-time-nsecs:
  292         description:
  293           Minimum sampling time in nanoseconds. Depending on hardware (board)
  294           e.g. high/low analog input source impedance, fine tune of ADC
  295           sampling time may be recommended. This can be either one value or an
  296           array that matches "st,adc-channels" and/or "st,adc-diff-channels"
  297           list, to set sample time resp. for all channels, or independently for
  298           each channel.
  299         $ref: /schemas/types.yaml#/definitions/uint32-array
  300         deprecated: true
  301 
  302       nvmem-cells:
  303         items:
  304           - description: Phandle to the calibration vrefint data provided by otp
  305 
  306       nvmem-cell-names:
  307         items:
  308           - const: vrefint
  309 
  310     patternProperties:
  311       "^channel@([0-9]|1[0-9])$":
  312         type: object
  313         $ref: "adc.yaml"
  314         description: Represents the external channels which are connected to the ADC.
  315 
  316         properties:
  317           reg:
  318             items:
  319               minimum: 0
  320               maximum: 19
  321 
  322           label:
  323             description: |
  324               Unique name to identify which channel this is.
  325               Reserved label names "vddcore", "vrefint" and "vbat"
  326               are used to identify internal channels with matching names.
  327 
  328           diff-channels:
  329             $ref: /schemas/types.yaml#/definitions/uint32-array
  330             items:
  331               minimum: 0
  332               maximum: 19
  333 
  334           st,min-sample-time-ns:
  335             description: |
  336               Minimum sampling time in nanoseconds. Depending on hardware (board)
  337               e.g. high/low analog input source impedance, fine tune of ADC
  338               sampling time may be recommended.
  339 
  340         required:
  341           - reg
  342 
  343         additionalProperties: false
  344 
  345     allOf:
  346       - if:
  347           properties:
  348             compatible:
  349               contains:
  350                 const: st,stm32f4-adc
  351 
  352         then:
  353           properties:
  354             reg:
  355               enum:
  356                 - 0x0
  357                 - 0x100
  358                 - 0x200
  359 
  360             interrupts:
  361               minimum: 0
  362               maximum: 2
  363 
  364             assigned-resolution-bits:
  365               enum: [6, 8, 10, 12]
  366               default: 12
  367 
  368             st,adc-channels:
  369               minItems: 1
  370               maxItems: 16
  371               items:
  372                 minimum: 0
  373                 maximum: 15
  374 
  375             st,adc-diff-channels: false
  376 
  377             st,min-sample-time-nsecs:
  378               minItems: 1
  379               maxItems: 16
  380               items:
  381                 minimum: 80
  382 
  383           required:
  384             - clocks
  385 
  386       - if:
  387           properties:
  388             compatible:
  389               contains:
  390                 enum:
  391                   - st,stm32h7-adc
  392                   - st,stm32mp1-adc
  393 
  394         then:
  395           properties:
  396             reg:
  397               enum:
  398                 - 0x0
  399                 - 0x100
  400 
  401             interrupts:
  402               minimum: 0
  403               maximum: 1
  404 
  405             assigned-resolution-bits:
  406               enum: [8, 10, 12, 14, 16]
  407               default: 16
  408 
  409             st,adc-channels:
  410               minItems: 1
  411               maxItems: 20
  412               items:
  413                 minimum: 0
  414                 maximum: 19
  415 
  416             st,min-sample-time-nsecs:
  417               minItems: 1
  418               maxItems: 20
  419               items:
  420                 minimum: 40
  421 
  422     additionalProperties: false
  423 
  424     required:
  425       - compatible
  426       - reg
  427       - interrupts
  428       - '#io-channel-cells'
  429 
  430 examples:
  431   - |
  432     // Example 1: with stm32f429, ADC1, single-ended channel 8
  433       adc123: adc@40012000 {
  434         compatible = "st,stm32f4-adc-core";
  435         reg = <0x40012000 0x400>;
  436         interrupts = <18>;
  437         clocks = <&rcc 0 168>;
  438         clock-names = "adc";
  439         st,max-clk-rate-hz = <36000000>;
  440         vdda-supply = <&vdda>;
  441         vref-supply = <&vref>;
  442         interrupt-controller;
  443         #interrupt-cells = <1>;
  444         #address-cells = <1>;
  445         #size-cells = <0>;
  446         adc@0 {
  447           compatible = "st,stm32f4-adc";
  448           #io-channel-cells = <1>;
  449           reg = <0x0>;
  450           clocks = <&rcc 0 168>;
  451           interrupt-parent = <&adc123>;
  452           interrupts = <0>;
  453           st,adc-channels = <8>;
  454           dmas = <&dma2 0 0 0x400 0x0>;
  455           dma-names = "rx";
  456           assigned-resolution-bits = <8>;
  457         };
  458         // ...
  459         // other adc child nodes follow...
  460       };
  461 
  462   - |
  463     // Example 2: with stm32mp157c to setup ADC1 with:
  464     // - channels 0 & 1 as single-ended
  465     // - channels 2 & 3 as differential (with resp. 6 & 7 negative inputs)
  466       #include <dt-bindings/interrupt-controller/arm-gic.h>
  467       #include <dt-bindings/clock/stm32mp1-clks.h>
  468       adc12: adc@48003000 {
  469         compatible = "st,stm32mp1-adc-core";
  470         reg = <0x48003000 0x400>;
  471         interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  472                      <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  473         clocks = <&rcc ADC12>, <&rcc ADC12_K>;
  474         clock-names = "bus", "adc";
  475         booster-supply = <&booster>;
  476         vdd-supply = <&vdd>;
  477         vdda-supply = <&vdda>;
  478         vref-supply = <&vref>;
  479         st,syscfg = <&syscfg>;
  480         interrupt-controller;
  481         #interrupt-cells = <1>;
  482         #address-cells = <1>;
  483         #size-cells = <0>;
  484         adc@0 {
  485           compatible = "st,stm32mp1-adc";
  486           #io-channel-cells = <1>;
  487           reg = <0x0>;
  488           interrupt-parent = <&adc12>;
  489           interrupts = <0>;
  490           st,adc-channels = <0 1>;
  491           st,adc-diff-channels = <2 6>, <3 7>;
  492           st,min-sample-time-nsecs = <5000>;
  493           dmas = <&dmamux1 9 0x400 0x05>;
  494           dma-names = "rx";
  495         };
  496         // ...
  497         // other adc child node follow...
  498       };
  499 
  500   - |
  501     // Example 3: with stm32mp157c to setup ADC2 with:
  502     // - internal channels 13, 14, 15.
  503       #include <dt-bindings/interrupt-controller/arm-gic.h>
  504       #include <dt-bindings/clock/stm32mp1-clks.h>
  505       adc122: adc@48003000 {
  506         compatible = "st,stm32mp1-adc-core";
  507         reg = <0x48003000 0x400>;
  508         interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
  509                      <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  510         clocks = <&rcc ADC12>, <&rcc ADC12_K>;
  511         clock-names = "bus", "adc";
  512         booster-supply = <&booster>;
  513         vdd-supply = <&vdd>;
  514         vdda-supply = <&vdda>;
  515         vref-supply = <&vref>;
  516         st,syscfg = <&syscfg>;
  517         interrupt-controller;
  518         #interrupt-cells = <1>;
  519         #address-cells = <1>;
  520         #size-cells = <0>;
  521         adc@100 {
  522           compatible = "st,stm32mp1-adc";
  523           #io-channel-cells = <1>;
  524           reg = <0x100>;
  525           interrupts = <1>;
  526           #address-cells = <1>;
  527           #size-cells = <0>;
  528           channel@13 {
  529             reg = <13>;
  530             label = "vrefint";
  531             st,min-sample-time-ns = <9000>;
  532           };
  533           channel@14 {
  534             reg = <14>;
  535             label = "vddcore";
  536             st,min-sample-time-ns = <9000>;
  537           };
  538           channel@15 {
  539             reg = <15>;
  540             label = "vbat";
  541             st,min-sample-time-ns = <9000>;
  542           };
  543         };
  544       };
  545 
  546 ...

Cache object: cf5acc3ba0cde43d065af0e1be05fd20


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.