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