18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/i2c/snps,designware-i2c.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Synopsys DesignWare APB I2C Controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Jarkko Nikula <jarkko.nikula@linux.intel.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciallOf:
138c2ecf20Sopenharmony_ci  - $ref: /schemas/i2c/i2c-controller.yaml#
148c2ecf20Sopenharmony_ci  - if:
158c2ecf20Sopenharmony_ci      properties:
168c2ecf20Sopenharmony_ci        compatible:
178c2ecf20Sopenharmony_ci          not:
188c2ecf20Sopenharmony_ci            contains:
198c2ecf20Sopenharmony_ci              const: mscc,ocelot-i2c
208c2ecf20Sopenharmony_ci    then:
218c2ecf20Sopenharmony_ci      properties:
228c2ecf20Sopenharmony_ci        reg:
238c2ecf20Sopenharmony_ci          maxItems: 1
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciproperties:
268c2ecf20Sopenharmony_ci  compatible:
278c2ecf20Sopenharmony_ci    oneOf:
288c2ecf20Sopenharmony_ci      - description: Generic Synopsys DesignWare I2C controller
298c2ecf20Sopenharmony_ci        const: snps,designware-i2c
308c2ecf20Sopenharmony_ci      - description: Microsemi Ocelot SoCs I2C controller
318c2ecf20Sopenharmony_ci        items:
328c2ecf20Sopenharmony_ci          - const: mscc,ocelot-i2c
338c2ecf20Sopenharmony_ci          - const: snps,designware-i2c
348c2ecf20Sopenharmony_ci      - description: Baikal-T1 SoC System I2C controller
358c2ecf20Sopenharmony_ci        const: baikal,bt1-sys-i2c
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci  reg:
388c2ecf20Sopenharmony_ci    minItems: 1
398c2ecf20Sopenharmony_ci    items:
408c2ecf20Sopenharmony_ci      - description: DW APB I2C controller memory mapped registers
418c2ecf20Sopenharmony_ci      - description: |
428c2ecf20Sopenharmony_ci          ICPU_CFG:TWI_DELAY registers to setup the SDA hold time.
438c2ecf20Sopenharmony_ci          This registers are specific to the Ocelot I2C-controller.
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci  interrupts:
468c2ecf20Sopenharmony_ci    maxItems: 1
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci  clocks:
498c2ecf20Sopenharmony_ci    minItems: 1
508c2ecf20Sopenharmony_ci    items:
518c2ecf20Sopenharmony_ci      - description: I2C controller reference clock source
528c2ecf20Sopenharmony_ci      - description: APB interface clock source
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci  clock-names:
558c2ecf20Sopenharmony_ci    minItems: 1
568c2ecf20Sopenharmony_ci    items:
578c2ecf20Sopenharmony_ci      - const: ref
588c2ecf20Sopenharmony_ci      - const: pclk
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  resets:
618c2ecf20Sopenharmony_ci    maxItems: 1
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci  clock-frequency:
648c2ecf20Sopenharmony_ci    description: Desired I2C bus clock frequency in Hz
658c2ecf20Sopenharmony_ci    enum: [100000, 400000, 1000000, 3400000]
668c2ecf20Sopenharmony_ci    default: 400000
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  i2c-sda-hold-time-ns:
698c2ecf20Sopenharmony_ci    maxItems: 1
708c2ecf20Sopenharmony_ci    description: |
718c2ecf20Sopenharmony_ci      The property should contain the SDA hold time in nanoseconds. This option
728c2ecf20Sopenharmony_ci      is only supported in hardware blocks version 1.11a or newer or on
738c2ecf20Sopenharmony_ci      Microsemi SoCs.
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci  i2c-scl-falling-time-ns:
768c2ecf20Sopenharmony_ci    maxItems: 1
778c2ecf20Sopenharmony_ci    description: |
788c2ecf20Sopenharmony_ci      The property should contain the SCL falling time in nanoseconds.
798c2ecf20Sopenharmony_ci      This value is used to compute the tLOW period.
808c2ecf20Sopenharmony_ci    default: 300
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci  i2c-sda-falling-time-ns:
838c2ecf20Sopenharmony_ci    maxItems: 1
848c2ecf20Sopenharmony_ci    description: |
858c2ecf20Sopenharmony_ci      The property should contain the SDA falling time in nanoseconds.
868c2ecf20Sopenharmony_ci      This value is used to compute the tHIGH period.
878c2ecf20Sopenharmony_ci    default: 300
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ci  dmas:
908c2ecf20Sopenharmony_ci    items:
918c2ecf20Sopenharmony_ci      - description: TX DMA Channel
928c2ecf20Sopenharmony_ci      - description: RX DMA Channel
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci  dma-names:
958c2ecf20Sopenharmony_ci    items:
968c2ecf20Sopenharmony_ci      - const: tx
978c2ecf20Sopenharmony_ci      - const: rx
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ciunevaluatedProperties: false
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_cirequired:
1028c2ecf20Sopenharmony_ci  - compatible
1038c2ecf20Sopenharmony_ci  - reg
1048c2ecf20Sopenharmony_ci  - "#address-cells"
1058c2ecf20Sopenharmony_ci  - "#size-cells"
1068c2ecf20Sopenharmony_ci  - interrupts
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ciexamples:
1098c2ecf20Sopenharmony_ci  - |
1108c2ecf20Sopenharmony_ci    i2c@f0000 {
1118c2ecf20Sopenharmony_ci      compatible = "snps,designware-i2c";
1128c2ecf20Sopenharmony_ci      reg = <0xf0000 0x1000>;
1138c2ecf20Sopenharmony_ci      #address-cells = <1>;
1148c2ecf20Sopenharmony_ci      #size-cells = <0>;
1158c2ecf20Sopenharmony_ci      interrupts = <11>;
1168c2ecf20Sopenharmony_ci      clock-frequency = <400000>;
1178c2ecf20Sopenharmony_ci    };
1188c2ecf20Sopenharmony_ci  - |
1198c2ecf20Sopenharmony_ci    i2c@1120000 {
1208c2ecf20Sopenharmony_ci      compatible = "snps,designware-i2c";
1218c2ecf20Sopenharmony_ci      reg = <0x1120000 0x1000>;
1228c2ecf20Sopenharmony_ci      #address-cells = <1>;
1238c2ecf20Sopenharmony_ci      #size-cells = <0>;
1248c2ecf20Sopenharmony_ci      interrupts = <12 1>;
1258c2ecf20Sopenharmony_ci      clock-frequency = <400000>;
1268c2ecf20Sopenharmony_ci      i2c-sda-hold-time-ns = <300>;
1278c2ecf20Sopenharmony_ci      i2c-sda-falling-time-ns = <300>;
1288c2ecf20Sopenharmony_ci      i2c-scl-falling-time-ns = <300>;
1298c2ecf20Sopenharmony_ci    };
1308c2ecf20Sopenharmony_ci  - |
1318c2ecf20Sopenharmony_ci    i2c@2000 {
1328c2ecf20Sopenharmony_ci      compatible = "snps,designware-i2c";
1338c2ecf20Sopenharmony_ci      reg = <0x2000 0x100>;
1348c2ecf20Sopenharmony_ci      #address-cells = <1>;
1358c2ecf20Sopenharmony_ci      #size-cells = <0>;
1368c2ecf20Sopenharmony_ci      clock-frequency = <400000>;
1378c2ecf20Sopenharmony_ci      clocks = <&i2cclk>;
1388c2ecf20Sopenharmony_ci      interrupts = <0>;
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci      eeprom@64 {
1418c2ecf20Sopenharmony_ci        compatible = "atmel,24c02";
1428c2ecf20Sopenharmony_ci        reg = <0x64>;
1438c2ecf20Sopenharmony_ci      };
1448c2ecf20Sopenharmony_ci    };
1458c2ecf20Sopenharmony_ci  - |
1468c2ecf20Sopenharmony_ci    i2c@100400 {
1478c2ecf20Sopenharmony_ci      compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
1488c2ecf20Sopenharmony_ci      reg = <0x100400 0x100>, <0x198 0x8>;
1498c2ecf20Sopenharmony_ci      pinctrl-0 = <&i2c_pins>;
1508c2ecf20Sopenharmony_ci      pinctrl-names = "default";
1518c2ecf20Sopenharmony_ci      #address-cells = <1>;
1528c2ecf20Sopenharmony_ci      #size-cells = <0>;
1538c2ecf20Sopenharmony_ci      interrupts = <8>;
1548c2ecf20Sopenharmony_ci      clocks = <&ahb_clk>;
1558c2ecf20Sopenharmony_ci    };
1568c2ecf20Sopenharmony_ci...
157