File Index
Files and directories
Sign in
FILE

st,stm32-i2c.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml YAML
  1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2%YAML 1.2
  3---
  4$id: http://devicetree.org/schemas/i2c/st,stm32-i2c.yaml#
  5$schema: http://devicetree.org/meta-schemas/core.yaml#
  6
  7title: I2C controller embedded in STMicroelectronics STM32 I2C platform
  8
  9maintainers:
 10  - Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
 11
 12allOf:
 13  - $ref: /schemas/i2c/i2c-controller.yaml#
 14  - if:
 15      properties:
 16        compatible:
 17          contains:
 18            enum:
 19              - st,stm32f7-i2c
 20              - st,stm32mp13-i2c
 21              - st,stm32mp15-i2c
 22              - st,stm32mp25-i2c
 23    then:
 24      properties:
 25        i2c-scl-rising-time-ns:
 26          default: 25
 27
 28        i2c-scl-falling-time-ns:
 29          default: 10
 30    else:
 31      properties:
 32        st,syscfg-fmp: false
 33
 34  - if:
 35      properties:
 36        compatible:
 37          contains:
 38            enum:
 39              - st,stm32f4-i2c
 40    then:
 41      properties:
 42        clock-frequency:
 43          enum: [100000, 400000]
 44
 45  - if:
 46      properties:
 47        compatible:
 48          contains:
 49            enum:
 50              - st,stm32f4-i2c
 51              - st,stm32f7-i2c
 52              - st,stm32mp13-i2c
 53              - st,stm32mp15-i2c
 54    then:
 55      properties:
 56        interrupts:
 57          minItems: 2
 58
 59        interrupt-names:
 60          minItems: 2
 61    else:
 62      properties:
 63        interrupts:
 64          maxItems: 1
 65
 66        interrupt-names:
 67          maxItems: 1
 68
 69properties:
 70  compatible:
 71    enum:
 72      - st,stm32f4-i2c
 73      - st,stm32f7-i2c
 74      - st,stm32mp13-i2c
 75      - st,stm32mp15-i2c
 76      - st,stm32mp25-i2c
 77
 78  reg:
 79    maxItems: 1
 80
 81  interrupts:
 82    items:
 83      - description: interrupt ID for I2C event
 84      - description: interrupt ID for I2C error
 85    minItems: 1
 86
 87  interrupt-names:
 88    items:
 89      - const: event
 90      - const: error
 91    minItems: 1
 92
 93  resets:
 94    maxItems: 1
 95
 96  clocks:
 97    maxItems: 1
 98
 99  dmas:
100    items:
101      - description: RX DMA Channel phandle
102      - description: TX DMA Channel phandle
103
104  dma-names:
105    items:
106      - const: rx
107      - const: tx
108
109  clock-frequency:
110    description: Desired I2C bus clock frequency in Hz. If not specified,
111                 the default 100 kHz frequency will be used.
112                 For STM32F7, STM32H7 and STM32MP1 SoCs, if timing parameters
113                 match, the bus clock frequency can be from 1Hz to 1MHz.
114    default: 100000
115    minimum: 1
116    maximum: 1000000
117
118  st,syscfg-fmp:
119    description: Use to set Fast Mode Plus bit within SYSCFG when Fast Mode
120      Plus speed is selected by slave.
121    $ref: /schemas/types.yaml#/definitions/phandle-array
122    items:
123      - items:
124          - description: phandle to syscfg
125          - description: register offset within syscfg
126          - description: register bitmask for FMP bit
127
128  wakeup-source: true
129
130  access-controllers:
131    minItems: 1
132    maxItems: 2
133
134required:
135  - compatible
136  - reg
137  - interrupts
138  - resets
139  - clocks
140
141unevaluatedProperties: false
142
143examples:
144  - |
145    #include <dt-bindings/mfd/stm32f7-rcc.h>
146    #include <dt-bindings/clock/stm32fx-clock.h>
147    //Example 1 (with st,stm32f4-i2c compatible)
148    i2c@40005400 {
149        compatible = "st,stm32f4-i2c";
150        reg = <0x40005400 0x400>;
151        interrupts = <31>,
152                     <32>;
153        resets = <&rcc 277>;
154        clocks = <&rcc 0 149>;
155        #address-cells = <1>;
156        #size-cells = <0>;
157    };
158
159  - |
160    #include <dt-bindings/mfd/stm32f7-rcc.h>
161    #include <dt-bindings/clock/stm32fx-clock.h>
162    //Example 2 (with st,stm32f7-i2c compatible)
163    i2c@40005800 {
164        compatible = "st,stm32f7-i2c";
165        reg = <0x40005800 0x400>;
166        interrupts = <31>,
167                     <32>;
168        resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
169        clocks = <&rcc 1 CLK_I2C1>;
170        #address-cells = <1>;
171        #size-cells = <0>;
172    };
173
174  - |
175    #include <dt-bindings/mfd/stm32f7-rcc.h>
176    #include <dt-bindings/clock/stm32fx-clock.h>
177    //Example 3 (with st,stm32mp15-i2c compatible on stm32mp)
178    #include <dt-bindings/interrupt-controller/arm-gic.h>
179    #include <dt-bindings/clock/stm32mp1-clks.h>
180    #include <dt-bindings/reset/stm32mp1-resets.h>
181    i2c@40013000 {
182        compatible = "st,stm32mp15-i2c";
183        reg = <0x40013000 0x400>;
184        interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
185                     <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
186        clocks = <&rcc I2C2_K>;
187        resets = <&rcc I2C2_R>;
188        i2c-scl-rising-time-ns = <185>;
189        i2c-scl-falling-time-ns = <20>;
190        st,syscfg-fmp = <&syscfg 0x4 0x2>;
191        #address-cells = <1>;
192        #size-cells = <0>;
193    };
~/ Read-only file preview.