1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2c66ec88fSEmmanuel Vadot%YAML 1.2 3c66ec88fSEmmanuel Vadot--- 4*cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/iio/adc/st,stm32-adc.yaml# 5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6c66ec88fSEmmanuel Vadot 78bab661aSEmmanuel Vadottitle: STMicroelectronics STM32 ADC 8c66ec88fSEmmanuel Vadot 9c66ec88fSEmmanuel Vadotdescription: | 10c66ec88fSEmmanuel Vadot STM32 ADC is a successive approximation analog-to-digital converter. 11c66ec88fSEmmanuel Vadot It has several multiplexed input channels. Conversions can be performed 12c66ec88fSEmmanuel Vadot in single, continuous, scan or discontinuous mode. Result of the ADC is 13c66ec88fSEmmanuel Vadot stored in a left-aligned or right-aligned 32-bit data register. 14c66ec88fSEmmanuel Vadot Conversions can be launched in software or using hardware triggers. 15c66ec88fSEmmanuel Vadot 16c66ec88fSEmmanuel Vadot The analog watchdog feature allows the application to detect if the input 17c66ec88fSEmmanuel Vadot voltage goes beyond the user-defined, higher or lower thresholds. 18c66ec88fSEmmanuel Vadot 19c66ec88fSEmmanuel Vadot Each STM32 ADC block can have up to 3 ADC instances. 20c66ec88fSEmmanuel Vadot 21c66ec88fSEmmanuel Vadotmaintainers: 228cc087a1SEmmanuel Vadot - Fabrice Gasnier <fabrice.gasnier@foss.st.com> 23c66ec88fSEmmanuel Vadot 24c66ec88fSEmmanuel Vadotproperties: 25c66ec88fSEmmanuel Vadot compatible: 26c66ec88fSEmmanuel Vadot enum: 27c66ec88fSEmmanuel Vadot - st,stm32f4-adc-core 28c66ec88fSEmmanuel Vadot - st,stm32h7-adc-core 29c66ec88fSEmmanuel Vadot - st,stm32mp1-adc-core 308bab661aSEmmanuel Vadot - st,stm32mp13-adc-core 31c66ec88fSEmmanuel Vadot 32c66ec88fSEmmanuel Vadot reg: 33c66ec88fSEmmanuel Vadot maxItems: 1 34c66ec88fSEmmanuel Vadot 35c66ec88fSEmmanuel Vadot interrupts: 36c66ec88fSEmmanuel Vadot description: | 37c66ec88fSEmmanuel Vadot One or more interrupts for ADC block, depending on part used: 38c66ec88fSEmmanuel Vadot - stm32f4 and stm32h7 share a common ADC interrupt line. 39c66ec88fSEmmanuel Vadot - stm32mp1 has two separate interrupt lines, one for each ADC within 40c66ec88fSEmmanuel Vadot ADC block. 418bab661aSEmmanuel Vadot - stm32mp13 has an interrupt line per ADC block. 42c66ec88fSEmmanuel Vadot minItems: 1 43c66ec88fSEmmanuel Vadot maxItems: 2 44c66ec88fSEmmanuel Vadot 45c66ec88fSEmmanuel Vadot clocks: 465def4c47SEmmanuel Vadot minItems: 1 475def4c47SEmmanuel Vadot maxItems: 2 48c66ec88fSEmmanuel Vadot description: | 49c66ec88fSEmmanuel Vadot Core can use up to two clocks, depending on part used: 50c66ec88fSEmmanuel Vadot - "adc" clock: for the analog circuitry, common to all ADCs. 51c66ec88fSEmmanuel Vadot It's required on stm32f4. 52c66ec88fSEmmanuel Vadot It's optional on stm32h7 and stm32mp1. 53c66ec88fSEmmanuel Vadot - "bus" clock: for registers access, common to all ADCs. 54c66ec88fSEmmanuel Vadot It's not present on stm32f4. 55c66ec88fSEmmanuel Vadot It's required on stm32h7 and stm32mp1. 56c66ec88fSEmmanuel Vadot 57c66ec88fSEmmanuel Vadot clock-names: true 58c66ec88fSEmmanuel Vadot 59c66ec88fSEmmanuel Vadot st,max-clk-rate-hz: 60c66ec88fSEmmanuel Vadot description: 61c66ec88fSEmmanuel Vadot Allow to specify desired max clock rate used by analog circuitry. 62c66ec88fSEmmanuel Vadot 63c66ec88fSEmmanuel Vadot vdda-supply: 64c66ec88fSEmmanuel Vadot description: Phandle to the vdda input analog voltage. 65c66ec88fSEmmanuel Vadot 66c66ec88fSEmmanuel Vadot vref-supply: 67c66ec88fSEmmanuel Vadot description: Phandle to the vref input analog reference voltage. 68c66ec88fSEmmanuel Vadot 69c66ec88fSEmmanuel Vadot booster-supply: 70c66ec88fSEmmanuel Vadot description: 71c66ec88fSEmmanuel Vadot Phandle to the embedded booster regulator that can be used to supply ADC 72c66ec88fSEmmanuel Vadot analog input switches on stm32h7 and stm32mp1. 73c66ec88fSEmmanuel Vadot 74c66ec88fSEmmanuel Vadot vdd-supply: 75c66ec88fSEmmanuel Vadot description: 76c66ec88fSEmmanuel Vadot Phandle to the vdd input voltage. It can be used to supply ADC analog 77c66ec88fSEmmanuel Vadot input switches on stm32mp1. 78c66ec88fSEmmanuel Vadot 79c66ec88fSEmmanuel Vadot st,syscfg: 80c66ec88fSEmmanuel Vadot description: 81c66ec88fSEmmanuel Vadot Phandle to system configuration controller. It can be used to control the 82c66ec88fSEmmanuel Vadot analog circuitry on stm32mp1. 83*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 84c66ec88fSEmmanuel Vadot 85c66ec88fSEmmanuel Vadot interrupt-controller: true 86c66ec88fSEmmanuel Vadot 87c66ec88fSEmmanuel Vadot '#interrupt-cells': 88c66ec88fSEmmanuel Vadot const: 1 89c66ec88fSEmmanuel Vadot 90c66ec88fSEmmanuel Vadot '#address-cells': 91c66ec88fSEmmanuel Vadot const: 1 92c66ec88fSEmmanuel Vadot 93c66ec88fSEmmanuel Vadot '#size-cells': 94c66ec88fSEmmanuel Vadot const: 0 95c66ec88fSEmmanuel Vadot 96c66ec88fSEmmanuel VadotallOf: 97c66ec88fSEmmanuel Vadot - if: 98c66ec88fSEmmanuel Vadot properties: 99c66ec88fSEmmanuel Vadot compatible: 100c66ec88fSEmmanuel Vadot contains: 101c66ec88fSEmmanuel Vadot const: st,stm32f4-adc-core 102c66ec88fSEmmanuel Vadot 103c66ec88fSEmmanuel Vadot then: 104c66ec88fSEmmanuel Vadot properties: 105c66ec88fSEmmanuel Vadot clocks: 106c66ec88fSEmmanuel Vadot maxItems: 1 107c66ec88fSEmmanuel Vadot 108c66ec88fSEmmanuel Vadot clock-names: 109c66ec88fSEmmanuel Vadot const: adc 110c66ec88fSEmmanuel Vadot 111c66ec88fSEmmanuel Vadot interrupts: 112c66ec88fSEmmanuel Vadot items: 113c66ec88fSEmmanuel Vadot - description: interrupt line common for all ADCs 114c66ec88fSEmmanuel Vadot 115c66ec88fSEmmanuel Vadot st,max-clk-rate-hz: 116c66ec88fSEmmanuel Vadot minimum: 600000 117c66ec88fSEmmanuel Vadot maximum: 36000000 118c66ec88fSEmmanuel Vadot default: 36000000 119c66ec88fSEmmanuel Vadot 120c66ec88fSEmmanuel Vadot booster-supply: false 121c66ec88fSEmmanuel Vadot 122c66ec88fSEmmanuel Vadot vdd-supply: false 123c66ec88fSEmmanuel Vadot 124c66ec88fSEmmanuel Vadot st,syscfg: false 125c66ec88fSEmmanuel Vadot 126c66ec88fSEmmanuel Vadot - if: 127c66ec88fSEmmanuel Vadot properties: 128c66ec88fSEmmanuel Vadot compatible: 129c66ec88fSEmmanuel Vadot contains: 130c66ec88fSEmmanuel Vadot const: st,stm32h7-adc-core 131c66ec88fSEmmanuel Vadot 132c66ec88fSEmmanuel Vadot then: 133c66ec88fSEmmanuel Vadot properties: 134c66ec88fSEmmanuel Vadot clocks: 135c66ec88fSEmmanuel Vadot minItems: 1 136c66ec88fSEmmanuel Vadot maxItems: 2 137c66ec88fSEmmanuel Vadot 138c66ec88fSEmmanuel Vadot clock-names: 139c66ec88fSEmmanuel Vadot items: 140c66ec88fSEmmanuel Vadot - const: bus 141c66ec88fSEmmanuel Vadot - const: adc 142c66ec88fSEmmanuel Vadot minItems: 1 143c66ec88fSEmmanuel Vadot 144c66ec88fSEmmanuel Vadot interrupts: 145c66ec88fSEmmanuel Vadot items: 146c66ec88fSEmmanuel Vadot - description: interrupt line common for all ADCs 147c66ec88fSEmmanuel Vadot 148c66ec88fSEmmanuel Vadot st,max-clk-rate-hz: 149c66ec88fSEmmanuel Vadot minimum: 120000 150c66ec88fSEmmanuel Vadot maximum: 36000000 151c66ec88fSEmmanuel Vadot default: 36000000 152c66ec88fSEmmanuel Vadot 153c66ec88fSEmmanuel Vadot vdd-supply: false 154c66ec88fSEmmanuel Vadot 155c66ec88fSEmmanuel Vadot st,syscfg: false 156c66ec88fSEmmanuel Vadot 157c66ec88fSEmmanuel Vadot - if: 158c66ec88fSEmmanuel Vadot properties: 159c66ec88fSEmmanuel Vadot compatible: 160c66ec88fSEmmanuel Vadot contains: 161c66ec88fSEmmanuel Vadot const: st,stm32mp1-adc-core 162c66ec88fSEmmanuel Vadot 163c66ec88fSEmmanuel Vadot then: 164c66ec88fSEmmanuel Vadot properties: 165c66ec88fSEmmanuel Vadot clocks: 166c66ec88fSEmmanuel Vadot minItems: 1 167c66ec88fSEmmanuel Vadot maxItems: 2 168c66ec88fSEmmanuel Vadot 169c66ec88fSEmmanuel Vadot clock-names: 170c66ec88fSEmmanuel Vadot items: 171c66ec88fSEmmanuel Vadot - const: bus 172c66ec88fSEmmanuel Vadot - const: adc 173c66ec88fSEmmanuel Vadot minItems: 1 174c66ec88fSEmmanuel Vadot 175c66ec88fSEmmanuel Vadot interrupts: 176c66ec88fSEmmanuel Vadot items: 177c66ec88fSEmmanuel Vadot - description: interrupt line for ADC1 178c66ec88fSEmmanuel Vadot - description: interrupt line for ADC2 179c66ec88fSEmmanuel Vadot 180c66ec88fSEmmanuel Vadot st,max-clk-rate-hz: 181c66ec88fSEmmanuel Vadot minimum: 120000 182c66ec88fSEmmanuel Vadot maximum: 36000000 183c66ec88fSEmmanuel Vadot default: 36000000 184c66ec88fSEmmanuel Vadot 1858bab661aSEmmanuel Vadot - if: 1868bab661aSEmmanuel Vadot properties: 1878bab661aSEmmanuel Vadot compatible: 1888bab661aSEmmanuel Vadot contains: 1898bab661aSEmmanuel Vadot const: st,stm32mp13-adc-core 1908bab661aSEmmanuel Vadot 1918bab661aSEmmanuel Vadot then: 1928bab661aSEmmanuel Vadot properties: 1938bab661aSEmmanuel Vadot clocks: 1948bab661aSEmmanuel Vadot minItems: 1 1958bab661aSEmmanuel Vadot maxItems: 2 1968bab661aSEmmanuel Vadot 1978bab661aSEmmanuel Vadot clock-names: 1988bab661aSEmmanuel Vadot items: 1998bab661aSEmmanuel Vadot - const: bus 2008bab661aSEmmanuel Vadot - const: adc 2018bab661aSEmmanuel Vadot minItems: 1 2028bab661aSEmmanuel Vadot 2038bab661aSEmmanuel Vadot interrupts: 2048bab661aSEmmanuel Vadot items: 2058bab661aSEmmanuel Vadot - description: ADC interrupt line 2068bab661aSEmmanuel Vadot 2078bab661aSEmmanuel Vadot st,max-clk-rate-hz: 2088bab661aSEmmanuel Vadot minimum: 150000 2098bab661aSEmmanuel Vadot maximum: 75000000 2108bab661aSEmmanuel Vadot default: 75000000 2118bab661aSEmmanuel Vadot 212c66ec88fSEmmanuel VadotadditionalProperties: false 213c66ec88fSEmmanuel Vadot 214c66ec88fSEmmanuel Vadotrequired: 215c66ec88fSEmmanuel Vadot - compatible 216c66ec88fSEmmanuel Vadot - reg 217c66ec88fSEmmanuel Vadot - interrupts 218c66ec88fSEmmanuel Vadot - clocks 219c66ec88fSEmmanuel Vadot - clock-names 220c66ec88fSEmmanuel Vadot - vdda-supply 221c66ec88fSEmmanuel Vadot - vref-supply 222c66ec88fSEmmanuel Vadot - interrupt-controller 223c66ec88fSEmmanuel Vadot - '#interrupt-cells' 224c66ec88fSEmmanuel Vadot - '#address-cells' 225c66ec88fSEmmanuel Vadot - '#size-cells' 226c66ec88fSEmmanuel Vadot 227c66ec88fSEmmanuel VadotpatternProperties: 228c66ec88fSEmmanuel Vadot "^adc@[0-9]+$": 229c66ec88fSEmmanuel Vadot type: object 230c66ec88fSEmmanuel Vadot description: 231c66ec88fSEmmanuel Vadot An ADC block node should contain at least one subnode, representing an 232c66ec88fSEmmanuel Vadot ADC instance available on the machine. 233c66ec88fSEmmanuel Vadot 234c66ec88fSEmmanuel Vadot properties: 235c66ec88fSEmmanuel Vadot compatible: 236c66ec88fSEmmanuel Vadot enum: 237c66ec88fSEmmanuel Vadot - st,stm32f4-adc 238c66ec88fSEmmanuel Vadot - st,stm32h7-adc 239c66ec88fSEmmanuel Vadot - st,stm32mp1-adc 2408bab661aSEmmanuel Vadot - st,stm32mp13-adc 241c66ec88fSEmmanuel Vadot 242c66ec88fSEmmanuel Vadot reg: 243c66ec88fSEmmanuel Vadot description: | 244c66ec88fSEmmanuel Vadot Offset of ADC instance in ADC block. Valid values are: 245c66ec88fSEmmanuel Vadot - 0x0: ADC1 246c66ec88fSEmmanuel Vadot - 0x100: ADC2 247c66ec88fSEmmanuel Vadot - 0x200: ADC3 (stm32f4 only) 248c66ec88fSEmmanuel Vadot maxItems: 1 249c66ec88fSEmmanuel Vadot 250c66ec88fSEmmanuel Vadot '#io-channel-cells': 251c66ec88fSEmmanuel Vadot const: 1 252c66ec88fSEmmanuel Vadot 2538cc087a1SEmmanuel Vadot '#address-cells': 2548cc087a1SEmmanuel Vadot const: 1 2558cc087a1SEmmanuel Vadot 2568cc087a1SEmmanuel Vadot '#size-cells': 2578cc087a1SEmmanuel Vadot const: 0 2588cc087a1SEmmanuel Vadot 259c66ec88fSEmmanuel Vadot interrupts: 260c66ec88fSEmmanuel Vadot description: | 261c66ec88fSEmmanuel Vadot IRQ Line for the ADC instance. Valid values are: 2628bab661aSEmmanuel Vadot - 0 for adc@0 (single adc for stm32mp13) 263c66ec88fSEmmanuel Vadot - 1 for adc@100 264c66ec88fSEmmanuel Vadot - 2 for adc@200 (stm32f4 only) 265c66ec88fSEmmanuel Vadot maxItems: 1 266c66ec88fSEmmanuel Vadot 267c66ec88fSEmmanuel Vadot clocks: 268c66ec88fSEmmanuel Vadot description: 269c66ec88fSEmmanuel Vadot Input clock private to this ADC instance. It's required only on 270c66ec88fSEmmanuel Vadot stm32f4, that has per instance clock input for registers access. 271c66ec88fSEmmanuel Vadot maxItems: 1 272c66ec88fSEmmanuel Vadot 273c66ec88fSEmmanuel Vadot dmas: 274c66ec88fSEmmanuel Vadot description: RX DMA Channel 275c66ec88fSEmmanuel Vadot maxItems: 1 276c66ec88fSEmmanuel Vadot 277c66ec88fSEmmanuel Vadot dma-names: 278c66ec88fSEmmanuel Vadot const: rx 279c66ec88fSEmmanuel Vadot 280c66ec88fSEmmanuel Vadot assigned-resolution-bits: 281c66ec88fSEmmanuel Vadot description: | 282c66ec88fSEmmanuel Vadot Resolution (bits) to use for conversions: 2838bab661aSEmmanuel Vadot - can be 6, 8, 10 or 12 on stm32f4 and stm32mp13 284c66ec88fSEmmanuel Vadot - can be 8, 10, 12, 14 or 16 on stm32h7 and stm32mp1 285c66ec88fSEmmanuel Vadot 286c66ec88fSEmmanuel Vadot st,adc-channels: 287c66ec88fSEmmanuel Vadot description: | 288c66ec88fSEmmanuel Vadot List of single-ended channels muxed for this ADC. It can have up to: 289c66ec88fSEmmanuel Vadot - 16 channels, numbered from 0 to 15 (for in0..in15) on stm32f4 2908bab661aSEmmanuel Vadot - 19 channels, numbered from 0 to 18 (for in0..in18) on stm32mp13. 291c66ec88fSEmmanuel Vadot - 20 channels, numbered from 0 to 19 (for in0..in19) on stm32h7 and 292c66ec88fSEmmanuel Vadot stm32mp1. 293c66ec88fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32-array 2948cc087a1SEmmanuel Vadot deprecated: true 295c66ec88fSEmmanuel Vadot 296c66ec88fSEmmanuel Vadot st,adc-diff-channels: 297c66ec88fSEmmanuel Vadot description: | 298c66ec88fSEmmanuel Vadot List of differential channels muxed for this ADC. Some channels can 299c66ec88fSEmmanuel Vadot be configured as differential instead of single-ended on stm32h7 and 300c66ec88fSEmmanuel Vadot on stm32mp1. Positive and negative inputs pairs are listed: 301c66ec88fSEmmanuel Vadot <vinp vinn>, <vinp vinn>,... vinp and vinn are numbered from 0 to 19. 302c66ec88fSEmmanuel Vadot 303c66ec88fSEmmanuel Vadot Note: At least one of "st,adc-channels" or "st,adc-diff-channels" is 3048cc087a1SEmmanuel Vadot required if no adc generic channel is defined. These legacy channel 3058cc087a1SEmmanuel Vadot properties are exclusive with adc generic channel bindings. 3068cc087a1SEmmanuel Vadot Both properties can be used together. Some channels can be 307c66ec88fSEmmanuel Vadot used as single-ended and some other ones as differential (mixed). But 308c66ec88fSEmmanuel Vadot channels can't be configured both as single-ended and differential. 309c66ec88fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32-matrix 310c66ec88fSEmmanuel Vadot items: 311c66ec88fSEmmanuel Vadot items: 312c66ec88fSEmmanuel Vadot - description: | 313c66ec88fSEmmanuel Vadot "vinp" indicates positive input number 314c66ec88fSEmmanuel Vadot minimum: 0 315c66ec88fSEmmanuel Vadot maximum: 19 316c66ec88fSEmmanuel Vadot - description: | 317c66ec88fSEmmanuel Vadot "vinn" indicates negative input number 318c66ec88fSEmmanuel Vadot minimum: 0 319c66ec88fSEmmanuel Vadot maximum: 19 3208cc087a1SEmmanuel Vadot deprecated: true 321c66ec88fSEmmanuel Vadot 322c66ec88fSEmmanuel Vadot st,min-sample-time-nsecs: 323c66ec88fSEmmanuel Vadot description: 324c66ec88fSEmmanuel Vadot Minimum sampling time in nanoseconds. Depending on hardware (board) 325c66ec88fSEmmanuel Vadot e.g. high/low analog input source impedance, fine tune of ADC 326c66ec88fSEmmanuel Vadot sampling time may be recommended. This can be either one value or an 327c66ec88fSEmmanuel Vadot array that matches "st,adc-channels" and/or "st,adc-diff-channels" 328c66ec88fSEmmanuel Vadot list, to set sample time resp. for all channels, or independently for 329c66ec88fSEmmanuel Vadot each channel. 330c66ec88fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32-array 3318cc087a1SEmmanuel Vadot deprecated: true 3328cc087a1SEmmanuel Vadot 3338cc087a1SEmmanuel Vadot nvmem-cells: 3348cc087a1SEmmanuel Vadot items: 3358cc087a1SEmmanuel Vadot - description: Phandle to the calibration vrefint data provided by otp 3368cc087a1SEmmanuel Vadot 3378cc087a1SEmmanuel Vadot nvmem-cell-names: 3388cc087a1SEmmanuel Vadot items: 3398cc087a1SEmmanuel Vadot - const: vrefint 3408cc087a1SEmmanuel Vadot 3418cc087a1SEmmanuel Vadot patternProperties: 3428cc087a1SEmmanuel Vadot "^channel@([0-9]|1[0-9])$": 3438cc087a1SEmmanuel Vadot type: object 344*cb7aa33aSEmmanuel Vadot $ref: adc.yaml 3458cc087a1SEmmanuel Vadot description: Represents the external channels which are connected to the ADC. 3468cc087a1SEmmanuel Vadot 3478cc087a1SEmmanuel Vadot properties: 3488cc087a1SEmmanuel Vadot reg: 3498cc087a1SEmmanuel Vadot items: 3508cc087a1SEmmanuel Vadot minimum: 0 3518cc087a1SEmmanuel Vadot maximum: 19 3528cc087a1SEmmanuel Vadot 3538cc087a1SEmmanuel Vadot label: 3548cc087a1SEmmanuel Vadot description: | 3558cc087a1SEmmanuel Vadot Unique name to identify which channel this is. 3568bab661aSEmmanuel Vadot Reserved label names "vddcore", "vddcpu", "vddq_ddr", "vrefint" and "vbat" 3578cc087a1SEmmanuel Vadot are used to identify internal channels with matching names. 3588cc087a1SEmmanuel Vadot 3598cc087a1SEmmanuel Vadot diff-channels: 3608cc087a1SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32-array 3618cc087a1SEmmanuel Vadot items: 3628cc087a1SEmmanuel Vadot minimum: 0 3638cc087a1SEmmanuel Vadot maximum: 19 3648cc087a1SEmmanuel Vadot 3658cc087a1SEmmanuel Vadot st,min-sample-time-ns: 3668cc087a1SEmmanuel Vadot description: | 3678cc087a1SEmmanuel Vadot Minimum sampling time in nanoseconds. Depending on hardware (board) 3688cc087a1SEmmanuel Vadot e.g. high/low analog input source impedance, fine tune of ADC 3698cc087a1SEmmanuel Vadot sampling time may be recommended. 3708cc087a1SEmmanuel Vadot 3718cc087a1SEmmanuel Vadot required: 3728cc087a1SEmmanuel Vadot - reg 3738cc087a1SEmmanuel Vadot 3748cc087a1SEmmanuel Vadot additionalProperties: false 375c66ec88fSEmmanuel Vadot 376c66ec88fSEmmanuel Vadot allOf: 377c66ec88fSEmmanuel Vadot - if: 378c66ec88fSEmmanuel Vadot properties: 379c66ec88fSEmmanuel Vadot compatible: 380c66ec88fSEmmanuel Vadot contains: 381c66ec88fSEmmanuel Vadot const: st,stm32f4-adc 382c66ec88fSEmmanuel Vadot 383c66ec88fSEmmanuel Vadot then: 384c66ec88fSEmmanuel Vadot properties: 385c66ec88fSEmmanuel Vadot reg: 386c66ec88fSEmmanuel Vadot enum: 387c66ec88fSEmmanuel Vadot - 0x0 388c66ec88fSEmmanuel Vadot - 0x100 389c66ec88fSEmmanuel Vadot - 0x200 390c66ec88fSEmmanuel Vadot 391c66ec88fSEmmanuel Vadot interrupts: 392c66ec88fSEmmanuel Vadot minimum: 0 393c66ec88fSEmmanuel Vadot maximum: 2 394c66ec88fSEmmanuel Vadot 395c66ec88fSEmmanuel Vadot assigned-resolution-bits: 396c66ec88fSEmmanuel Vadot enum: [6, 8, 10, 12] 397c66ec88fSEmmanuel Vadot default: 12 398c66ec88fSEmmanuel Vadot 399c66ec88fSEmmanuel Vadot st,adc-channels: 400c66ec88fSEmmanuel Vadot minItems: 1 401c66ec88fSEmmanuel Vadot maxItems: 16 402c66ec88fSEmmanuel Vadot items: 403c66ec88fSEmmanuel Vadot minimum: 0 404c66ec88fSEmmanuel Vadot maximum: 15 405c66ec88fSEmmanuel Vadot 406c66ec88fSEmmanuel Vadot st,adc-diff-channels: false 407c66ec88fSEmmanuel Vadot 408c66ec88fSEmmanuel Vadot st,min-sample-time-nsecs: 409c66ec88fSEmmanuel Vadot minItems: 1 410c66ec88fSEmmanuel Vadot maxItems: 16 411c66ec88fSEmmanuel Vadot items: 412c66ec88fSEmmanuel Vadot minimum: 80 413c66ec88fSEmmanuel Vadot 414c66ec88fSEmmanuel Vadot required: 415c66ec88fSEmmanuel Vadot - clocks 416c66ec88fSEmmanuel Vadot 417c66ec88fSEmmanuel Vadot - if: 418c66ec88fSEmmanuel Vadot properties: 419c66ec88fSEmmanuel Vadot compatible: 420c66ec88fSEmmanuel Vadot contains: 421c66ec88fSEmmanuel Vadot enum: 422c66ec88fSEmmanuel Vadot - st,stm32h7-adc 423c66ec88fSEmmanuel Vadot - st,stm32mp1-adc 424c66ec88fSEmmanuel Vadot 425c66ec88fSEmmanuel Vadot then: 426c66ec88fSEmmanuel Vadot properties: 427c66ec88fSEmmanuel Vadot reg: 428c66ec88fSEmmanuel Vadot enum: 429c66ec88fSEmmanuel Vadot - 0x0 430c66ec88fSEmmanuel Vadot - 0x100 431c66ec88fSEmmanuel Vadot 432c66ec88fSEmmanuel Vadot interrupts: 433c66ec88fSEmmanuel Vadot minimum: 0 434c66ec88fSEmmanuel Vadot maximum: 1 435c66ec88fSEmmanuel Vadot 436c66ec88fSEmmanuel Vadot assigned-resolution-bits: 437c66ec88fSEmmanuel Vadot enum: [8, 10, 12, 14, 16] 438c66ec88fSEmmanuel Vadot default: 16 439c66ec88fSEmmanuel Vadot 440c66ec88fSEmmanuel Vadot st,adc-channels: 441c66ec88fSEmmanuel Vadot minItems: 1 442c66ec88fSEmmanuel Vadot maxItems: 20 443c66ec88fSEmmanuel Vadot items: 444c66ec88fSEmmanuel Vadot minimum: 0 445c66ec88fSEmmanuel Vadot maximum: 19 446c66ec88fSEmmanuel Vadot 447c66ec88fSEmmanuel Vadot st,min-sample-time-nsecs: 448c66ec88fSEmmanuel Vadot minItems: 1 449c66ec88fSEmmanuel Vadot maxItems: 20 450c66ec88fSEmmanuel Vadot items: 451c66ec88fSEmmanuel Vadot minimum: 40 452c66ec88fSEmmanuel Vadot 4538bab661aSEmmanuel Vadot 4548bab661aSEmmanuel Vadot - if: 4558bab661aSEmmanuel Vadot properties: 4568bab661aSEmmanuel Vadot compatible: 4578bab661aSEmmanuel Vadot contains: 4588bab661aSEmmanuel Vadot const: st,stm32mp13-adc 4598bab661aSEmmanuel Vadot 4608bab661aSEmmanuel Vadot then: 4618bab661aSEmmanuel Vadot properties: 4628bab661aSEmmanuel Vadot reg: 4638bab661aSEmmanuel Vadot const: 0x0 4648bab661aSEmmanuel Vadot 4658bab661aSEmmanuel Vadot interrupts: 4668bab661aSEmmanuel Vadot const: 0 4678bab661aSEmmanuel Vadot 4688bab661aSEmmanuel Vadot assigned-resolution-bits: 4698bab661aSEmmanuel Vadot enum: [6, 8, 10, 12] 4708bab661aSEmmanuel Vadot default: 12 4718bab661aSEmmanuel Vadot 4728bab661aSEmmanuel Vadot st,adc-channels: 4738bab661aSEmmanuel Vadot minItems: 1 4748bab661aSEmmanuel Vadot maxItems: 19 4758bab661aSEmmanuel Vadot items: 4768bab661aSEmmanuel Vadot minimum: 0 4778bab661aSEmmanuel Vadot maximum: 18 4788bab661aSEmmanuel Vadot 4798bab661aSEmmanuel Vadot st,min-sample-time-nsecs: 4808bab661aSEmmanuel Vadot minItems: 1 4818bab661aSEmmanuel Vadot maxItems: 19 4828bab661aSEmmanuel Vadot items: 4838bab661aSEmmanuel Vadot minimum: 40 484c66ec88fSEmmanuel Vadot additionalProperties: false 485c66ec88fSEmmanuel Vadot 486c66ec88fSEmmanuel Vadot required: 487c66ec88fSEmmanuel Vadot - compatible 488c66ec88fSEmmanuel Vadot - reg 489c66ec88fSEmmanuel Vadot - interrupts 490c66ec88fSEmmanuel Vadot - '#io-channel-cells' 491c66ec88fSEmmanuel Vadot 492c66ec88fSEmmanuel Vadotexamples: 493c66ec88fSEmmanuel Vadot - | 494c66ec88fSEmmanuel Vadot // Example 1: with stm32f429, ADC1, single-ended channel 8 495c66ec88fSEmmanuel Vadot adc123: adc@40012000 { 496c66ec88fSEmmanuel Vadot compatible = "st,stm32f4-adc-core"; 497c66ec88fSEmmanuel Vadot reg = <0x40012000 0x400>; 498c66ec88fSEmmanuel Vadot interrupts = <18>; 499c66ec88fSEmmanuel Vadot clocks = <&rcc 0 168>; 500c66ec88fSEmmanuel Vadot clock-names = "adc"; 501c66ec88fSEmmanuel Vadot st,max-clk-rate-hz = <36000000>; 502c66ec88fSEmmanuel Vadot vdda-supply = <&vdda>; 503c66ec88fSEmmanuel Vadot vref-supply = <&vref>; 504c66ec88fSEmmanuel Vadot interrupt-controller; 505c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 506c66ec88fSEmmanuel Vadot #address-cells = <1>; 507c66ec88fSEmmanuel Vadot #size-cells = <0>; 508c66ec88fSEmmanuel Vadot adc@0 { 509c66ec88fSEmmanuel Vadot compatible = "st,stm32f4-adc"; 510c66ec88fSEmmanuel Vadot #io-channel-cells = <1>; 511c66ec88fSEmmanuel Vadot reg = <0x0>; 512c66ec88fSEmmanuel Vadot clocks = <&rcc 0 168>; 513c66ec88fSEmmanuel Vadot interrupt-parent = <&adc123>; 514c66ec88fSEmmanuel Vadot interrupts = <0>; 515c66ec88fSEmmanuel Vadot st,adc-channels = <8>; 516c66ec88fSEmmanuel Vadot dmas = <&dma2 0 0 0x400 0x0>; 517c66ec88fSEmmanuel Vadot dma-names = "rx"; 518c66ec88fSEmmanuel Vadot assigned-resolution-bits = <8>; 519c66ec88fSEmmanuel Vadot }; 520c66ec88fSEmmanuel Vadot // ... 521c66ec88fSEmmanuel Vadot // other adc child nodes follow... 522c66ec88fSEmmanuel Vadot }; 523c66ec88fSEmmanuel Vadot 524c66ec88fSEmmanuel Vadot - | 525c66ec88fSEmmanuel Vadot // Example 2: with stm32mp157c to setup ADC1 with: 526c66ec88fSEmmanuel Vadot // - channels 0 & 1 as single-ended 527c66ec88fSEmmanuel Vadot // - channels 2 & 3 as differential (with resp. 6 & 7 negative inputs) 528c66ec88fSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 529c66ec88fSEmmanuel Vadot #include <dt-bindings/clock/stm32mp1-clks.h> 530c66ec88fSEmmanuel Vadot adc12: adc@48003000 { 531c66ec88fSEmmanuel Vadot compatible = "st,stm32mp1-adc-core"; 532c66ec88fSEmmanuel Vadot reg = <0x48003000 0x400>; 533c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 534c66ec88fSEmmanuel Vadot <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; 535c66ec88fSEmmanuel Vadot clocks = <&rcc ADC12>, <&rcc ADC12_K>; 536c66ec88fSEmmanuel Vadot clock-names = "bus", "adc"; 537c66ec88fSEmmanuel Vadot booster-supply = <&booster>; 538c66ec88fSEmmanuel Vadot vdd-supply = <&vdd>; 539c66ec88fSEmmanuel Vadot vdda-supply = <&vdda>; 540c66ec88fSEmmanuel Vadot vref-supply = <&vref>; 541c66ec88fSEmmanuel Vadot st,syscfg = <&syscfg>; 542c66ec88fSEmmanuel Vadot interrupt-controller; 543c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 544c66ec88fSEmmanuel Vadot #address-cells = <1>; 545c66ec88fSEmmanuel Vadot #size-cells = <0>; 546c66ec88fSEmmanuel Vadot adc@0 { 547c66ec88fSEmmanuel Vadot compatible = "st,stm32mp1-adc"; 548c66ec88fSEmmanuel Vadot #io-channel-cells = <1>; 549c66ec88fSEmmanuel Vadot reg = <0x0>; 550c66ec88fSEmmanuel Vadot interrupt-parent = <&adc12>; 551c66ec88fSEmmanuel Vadot interrupts = <0>; 552c66ec88fSEmmanuel Vadot st,adc-channels = <0 1>; 553c66ec88fSEmmanuel Vadot st,adc-diff-channels = <2 6>, <3 7>; 554c66ec88fSEmmanuel Vadot st,min-sample-time-nsecs = <5000>; 555c66ec88fSEmmanuel Vadot dmas = <&dmamux1 9 0x400 0x05>; 556c66ec88fSEmmanuel Vadot dma-names = "rx"; 557c66ec88fSEmmanuel Vadot }; 558c66ec88fSEmmanuel Vadot // ... 559c66ec88fSEmmanuel Vadot // other adc child node follow... 560c66ec88fSEmmanuel Vadot }; 561c66ec88fSEmmanuel Vadot 5628cc087a1SEmmanuel Vadot - | 5638cc087a1SEmmanuel Vadot // Example 3: with stm32mp157c to setup ADC2 with: 5648cc087a1SEmmanuel Vadot // - internal channels 13, 14, 15. 5658cc087a1SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 5668cc087a1SEmmanuel Vadot #include <dt-bindings/clock/stm32mp1-clks.h> 5678cc087a1SEmmanuel Vadot adc122: adc@48003000 { 5688cc087a1SEmmanuel Vadot compatible = "st,stm32mp1-adc-core"; 5698cc087a1SEmmanuel Vadot reg = <0x48003000 0x400>; 5708cc087a1SEmmanuel Vadot interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 5718cc087a1SEmmanuel Vadot <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; 5728cc087a1SEmmanuel Vadot clocks = <&rcc ADC12>, <&rcc ADC12_K>; 5738cc087a1SEmmanuel Vadot clock-names = "bus", "adc"; 5748cc087a1SEmmanuel Vadot booster-supply = <&booster>; 5758cc087a1SEmmanuel Vadot vdd-supply = <&vdd>; 5768cc087a1SEmmanuel Vadot vdda-supply = <&vdda>; 5778cc087a1SEmmanuel Vadot vref-supply = <&vref>; 5788cc087a1SEmmanuel Vadot st,syscfg = <&syscfg>; 5798cc087a1SEmmanuel Vadot interrupt-controller; 5808cc087a1SEmmanuel Vadot #interrupt-cells = <1>; 5818cc087a1SEmmanuel Vadot #address-cells = <1>; 5828cc087a1SEmmanuel Vadot #size-cells = <0>; 5838cc087a1SEmmanuel Vadot adc@100 { 5848cc087a1SEmmanuel Vadot compatible = "st,stm32mp1-adc"; 5858cc087a1SEmmanuel Vadot #io-channel-cells = <1>; 5868cc087a1SEmmanuel Vadot reg = <0x100>; 5878cc087a1SEmmanuel Vadot interrupts = <1>; 5888cc087a1SEmmanuel Vadot #address-cells = <1>; 5898cc087a1SEmmanuel Vadot #size-cells = <0>; 5908cc087a1SEmmanuel Vadot channel@13 { 5918cc087a1SEmmanuel Vadot reg = <13>; 5928cc087a1SEmmanuel Vadot label = "vrefint"; 5938cc087a1SEmmanuel Vadot st,min-sample-time-ns = <9000>; 5948cc087a1SEmmanuel Vadot }; 5958cc087a1SEmmanuel Vadot channel@14 { 5968cc087a1SEmmanuel Vadot reg = <14>; 5978cc087a1SEmmanuel Vadot label = "vddcore"; 5988cc087a1SEmmanuel Vadot st,min-sample-time-ns = <9000>; 5998cc087a1SEmmanuel Vadot }; 6008cc087a1SEmmanuel Vadot channel@15 { 6018cc087a1SEmmanuel Vadot reg = <15>; 6028cc087a1SEmmanuel Vadot label = "vbat"; 6038cc087a1SEmmanuel Vadot st,min-sample-time-ns = <9000>; 6048cc087a1SEmmanuel Vadot }; 6058cc087a1SEmmanuel Vadot }; 6068cc087a1SEmmanuel Vadot }; 6078cc087a1SEmmanuel Vadot 608c66ec88fSEmmanuel Vadot... 609