18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/i2c/st,stm32-i2c.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: I2C controller embedded in STMicroelectronics STM32 I2C platform
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Pierre-Yves MORDRET <pierre-yves.mordret@st.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciallOf:
138c2ecf20Sopenharmony_ci  - $ref: /schemas/i2c/i2c-controller.yaml#
148c2ecf20Sopenharmony_ci  - if:
158c2ecf20Sopenharmony_ci      properties:
168c2ecf20Sopenharmony_ci        compatible:
178c2ecf20Sopenharmony_ci          contains:
188c2ecf20Sopenharmony_ci            enum:
198c2ecf20Sopenharmony_ci              - st,stm32f7-i2c
208c2ecf20Sopenharmony_ci              - st,stm32mp15-i2c
218c2ecf20Sopenharmony_ci    then:
228c2ecf20Sopenharmony_ci      properties:
238c2ecf20Sopenharmony_ci        i2c-scl-rising-time-ns:
248c2ecf20Sopenharmony_ci          default: 25
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci        i2c-scl-falling-time-ns:
278c2ecf20Sopenharmony_ci          default: 10
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci        st,syscfg-fmp:
308c2ecf20Sopenharmony_ci          description: Use to set Fast Mode Plus bit within SYSCFG when
318c2ecf20Sopenharmony_ci                       Fast Mode Plus speed is selected by slave.
328c2ecf20Sopenharmony_ci                       Format is phandle to syscfg / register offset within
338c2ecf20Sopenharmony_ci                       syscfg / register bitmask for FMP bit.
348c2ecf20Sopenharmony_ci          $ref: "/schemas/types.yaml#/definitions/phandle-array"
358c2ecf20Sopenharmony_ci          items:
368c2ecf20Sopenharmony_ci            minItems: 3
378c2ecf20Sopenharmony_ci            maxItems: 3
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  - if:
408c2ecf20Sopenharmony_ci      properties:
418c2ecf20Sopenharmony_ci        compatible:
428c2ecf20Sopenharmony_ci          contains:
438c2ecf20Sopenharmony_ci            enum:
448c2ecf20Sopenharmony_ci              - st,stm32f4-i2c
458c2ecf20Sopenharmony_ci    then:
468c2ecf20Sopenharmony_ci      properties:
478c2ecf20Sopenharmony_ci        clock-frequency:
488c2ecf20Sopenharmony_ci          enum: [100000, 400000]
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ciproperties:
518c2ecf20Sopenharmony_ci  compatible:
528c2ecf20Sopenharmony_ci    enum:
538c2ecf20Sopenharmony_ci      - st,stm32f4-i2c
548c2ecf20Sopenharmony_ci      - st,stm32f7-i2c
558c2ecf20Sopenharmony_ci      - st,stm32mp15-i2c
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci  reg:
588c2ecf20Sopenharmony_ci    maxItems: 1
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  interrupts:
618c2ecf20Sopenharmony_ci    items:
628c2ecf20Sopenharmony_ci      - description: interrupt ID for I2C event
638c2ecf20Sopenharmony_ci      - description: interrupt ID for I2C error
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci  resets:
668c2ecf20Sopenharmony_ci    maxItems: 1
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  clocks:
698c2ecf20Sopenharmony_ci    maxItems: 1
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci  dmas:
728c2ecf20Sopenharmony_ci    items:
738c2ecf20Sopenharmony_ci      - description: RX DMA Channel phandle
748c2ecf20Sopenharmony_ci      - description: TX DMA Channel phandle
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci  dma-names:
778c2ecf20Sopenharmony_ci    items:
788c2ecf20Sopenharmony_ci      - const: rx
798c2ecf20Sopenharmony_ci      - const: tx
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci  clock-frequency:
828c2ecf20Sopenharmony_ci    description: Desired I2C bus clock frequency in Hz. If not specified,
838c2ecf20Sopenharmony_ci                 the default 100 kHz frequency will be used.
848c2ecf20Sopenharmony_ci                 For STM32F7, STM32H7 and STM32MP1 SoCs, if timing parameters
858c2ecf20Sopenharmony_ci                 match, the bus clock frequency can be from 1Hz to 1MHz.
868c2ecf20Sopenharmony_ci    default: 100000
878c2ecf20Sopenharmony_ci    minimum: 1
888c2ecf20Sopenharmony_ci    maximum: 1000000
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_cirequired:
918c2ecf20Sopenharmony_ci  - compatible
928c2ecf20Sopenharmony_ci  - reg
938c2ecf20Sopenharmony_ci  - interrupts
948c2ecf20Sopenharmony_ci  - resets
958c2ecf20Sopenharmony_ci  - clocks
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ciunevaluatedProperties: false
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ciexamples:
1008c2ecf20Sopenharmony_ci  - |
1018c2ecf20Sopenharmony_ci    #include <dt-bindings/mfd/stm32f7-rcc.h>
1028c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/stm32fx-clock.h>
1038c2ecf20Sopenharmony_ci    //Example 1 (with st,stm32f4-i2c compatible)
1048c2ecf20Sopenharmony_ci      i2c@40005400 {
1058c2ecf20Sopenharmony_ci          compatible = "st,stm32f4-i2c";
1068c2ecf20Sopenharmony_ci          #address-cells = <1>;
1078c2ecf20Sopenharmony_ci          #size-cells = <0>;
1088c2ecf20Sopenharmony_ci          reg = <0x40005400 0x400>;
1098c2ecf20Sopenharmony_ci          interrupts = <31>,
1108c2ecf20Sopenharmony_ci                       <32>;
1118c2ecf20Sopenharmony_ci          resets = <&rcc 277>;
1128c2ecf20Sopenharmony_ci          clocks = <&rcc 0 149>;
1138c2ecf20Sopenharmony_ci      };
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci    //Example 2 (with st,stm32f7-i2c compatible)
1168c2ecf20Sopenharmony_ci      i2c@40005800 {
1178c2ecf20Sopenharmony_ci          compatible = "st,stm32f7-i2c";
1188c2ecf20Sopenharmony_ci          #address-cells = <1>;
1198c2ecf20Sopenharmony_ci          #size-cells = <0>;
1208c2ecf20Sopenharmony_ci          reg = <0x40005800 0x400>;
1218c2ecf20Sopenharmony_ci          interrupts = <31>,
1228c2ecf20Sopenharmony_ci                       <32>;
1238c2ecf20Sopenharmony_ci          resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
1248c2ecf20Sopenharmony_ci          clocks = <&rcc 1 CLK_I2C1>;
1258c2ecf20Sopenharmony_ci      };
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci    //Example 3 (with st,stm32mp15-i2c compatible on stm32mp)
1288c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
1298c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/stm32mp1-clks.h>
1308c2ecf20Sopenharmony_ci    #include <dt-bindings/reset/stm32mp1-resets.h>
1318c2ecf20Sopenharmony_ci      i2c@40013000 {
1328c2ecf20Sopenharmony_ci          compatible = "st,stm32mp15-i2c";
1338c2ecf20Sopenharmony_ci          #address-cells = <1>;
1348c2ecf20Sopenharmony_ci          #size-cells = <0>;
1358c2ecf20Sopenharmony_ci          reg = <0x40013000 0x400>;
1368c2ecf20Sopenharmony_ci          interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
1378c2ecf20Sopenharmony_ci                       <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1388c2ecf20Sopenharmony_ci          clocks = <&rcc I2C2_K>;
1398c2ecf20Sopenharmony_ci          resets = <&rcc I2C2_R>;
1408c2ecf20Sopenharmony_ci          i2c-scl-rising-time-ns = <185>;
1418c2ecf20Sopenharmony_ci          i2c-scl-falling-time-ns = <20>;
1428c2ecf20Sopenharmony_ci          st,syscfg-fmp = <&syscfg 0x4 0x2>;
1438c2ecf20Sopenharmony_ci      };
1448c2ecf20Sopenharmony_ci...
145