162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/i2c/snps,designware-i2c.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Synopsys DesignWare APB I2C Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Jarkko Nikula <jarkko.nikula@linux.intel.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: /schemas/i2c/i2c-controller.yaml#
1462306a36Sopenharmony_ci  - if:
1562306a36Sopenharmony_ci      properties:
1662306a36Sopenharmony_ci        compatible:
1762306a36Sopenharmony_ci          not:
1862306a36Sopenharmony_ci            contains:
1962306a36Sopenharmony_ci              const: mscc,ocelot-i2c
2062306a36Sopenharmony_ci    then:
2162306a36Sopenharmony_ci      properties:
2262306a36Sopenharmony_ci        reg:
2362306a36Sopenharmony_ci          maxItems: 1
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciproperties:
2662306a36Sopenharmony_ci  compatible:
2762306a36Sopenharmony_ci    oneOf:
2862306a36Sopenharmony_ci      - description: Generic Synopsys DesignWare I2C controller
2962306a36Sopenharmony_ci        const: snps,designware-i2c
3062306a36Sopenharmony_ci      - description: Microsemi Ocelot SoCs I2C controller
3162306a36Sopenharmony_ci        items:
3262306a36Sopenharmony_ci          - const: mscc,ocelot-i2c
3362306a36Sopenharmony_ci          - const: snps,designware-i2c
3462306a36Sopenharmony_ci      - description: Baikal-T1 SoC System I2C controller
3562306a36Sopenharmony_ci        const: baikal,bt1-sys-i2c
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  reg:
3862306a36Sopenharmony_ci    minItems: 1
3962306a36Sopenharmony_ci    items:
4062306a36Sopenharmony_ci      - description: DW APB I2C controller memory mapped registers
4162306a36Sopenharmony_ci      - description: |
4262306a36Sopenharmony_ci          ICPU_CFG:TWI_DELAY registers to setup the SDA hold time.
4362306a36Sopenharmony_ci          This registers are specific to the Ocelot I2C-controller.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  interrupts:
4662306a36Sopenharmony_ci    maxItems: 1
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  clocks:
4962306a36Sopenharmony_ci    minItems: 1
5062306a36Sopenharmony_ci    items:
5162306a36Sopenharmony_ci      - description: I2C controller reference clock source
5262306a36Sopenharmony_ci      - description: APB interface clock source
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  clock-names:
5562306a36Sopenharmony_ci    minItems: 1
5662306a36Sopenharmony_ci    items:
5762306a36Sopenharmony_ci      - const: ref
5862306a36Sopenharmony_ci      - const: pclk
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  resets:
6162306a36Sopenharmony_ci    maxItems: 1
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  clock-frequency:
6462306a36Sopenharmony_ci    description: Desired I2C bus clock frequency in Hz
6562306a36Sopenharmony_ci    enum: [100000, 400000, 1000000, 3400000]
6662306a36Sopenharmony_ci    default: 400000
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci  i2c-sda-hold-time-ns:
6962306a36Sopenharmony_ci    description: |
7062306a36Sopenharmony_ci      The property should contain the SDA hold time in nanoseconds. This option
7162306a36Sopenharmony_ci      is only supported in hardware blocks version 1.11a or newer or on
7262306a36Sopenharmony_ci      Microsemi SoCs.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  i2c-scl-falling-time-ns:
7562306a36Sopenharmony_ci    description: |
7662306a36Sopenharmony_ci      The property should contain the SCL falling time in nanoseconds.
7762306a36Sopenharmony_ci      This value is used to compute the tLOW period.
7862306a36Sopenharmony_ci    default: 300
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci  i2c-sda-falling-time-ns:
8162306a36Sopenharmony_ci    description: |
8262306a36Sopenharmony_ci      The property should contain the SDA falling time in nanoseconds.
8362306a36Sopenharmony_ci      This value is used to compute the tHIGH period.
8462306a36Sopenharmony_ci    default: 300
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  dmas:
8762306a36Sopenharmony_ci    items:
8862306a36Sopenharmony_ci      - description: TX DMA Channel
8962306a36Sopenharmony_ci      - description: RX DMA Channel
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci  dma-names:
9262306a36Sopenharmony_ci    items:
9362306a36Sopenharmony_ci      - const: tx
9462306a36Sopenharmony_ci      - const: rx
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciunevaluatedProperties: false
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_cirequired:
9962306a36Sopenharmony_ci  - compatible
10062306a36Sopenharmony_ci  - reg
10162306a36Sopenharmony_ci  - interrupts
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciexamples:
10462306a36Sopenharmony_ci  - |
10562306a36Sopenharmony_ci    i2c@f0000 {
10662306a36Sopenharmony_ci      compatible = "snps,designware-i2c";
10762306a36Sopenharmony_ci      reg = <0xf0000 0x1000>;
10862306a36Sopenharmony_ci      interrupts = <11>;
10962306a36Sopenharmony_ci      clock-frequency = <400000>;
11062306a36Sopenharmony_ci    };
11162306a36Sopenharmony_ci  - |
11262306a36Sopenharmony_ci    i2c@1120000 {
11362306a36Sopenharmony_ci      compatible = "snps,designware-i2c";
11462306a36Sopenharmony_ci      reg = <0x1120000 0x1000>;
11562306a36Sopenharmony_ci      interrupts = <12 1>;
11662306a36Sopenharmony_ci      clock-frequency = <400000>;
11762306a36Sopenharmony_ci      i2c-sda-hold-time-ns = <300>;
11862306a36Sopenharmony_ci      i2c-sda-falling-time-ns = <300>;
11962306a36Sopenharmony_ci      i2c-scl-falling-time-ns = <300>;
12062306a36Sopenharmony_ci    };
12162306a36Sopenharmony_ci  - |
12262306a36Sopenharmony_ci    i2c@2000 {
12362306a36Sopenharmony_ci      compatible = "snps,designware-i2c";
12462306a36Sopenharmony_ci      reg = <0x2000 0x100>;
12562306a36Sopenharmony_ci      #address-cells = <1>;
12662306a36Sopenharmony_ci      #size-cells = <0>;
12762306a36Sopenharmony_ci      clock-frequency = <400000>;
12862306a36Sopenharmony_ci      clocks = <&i2cclk>;
12962306a36Sopenharmony_ci      interrupts = <0>;
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci      eeprom@64 {
13262306a36Sopenharmony_ci        compatible = "atmel,24c02";
13362306a36Sopenharmony_ci        reg = <0x64>;
13462306a36Sopenharmony_ci      };
13562306a36Sopenharmony_ci    };
13662306a36Sopenharmony_ci  - |
13762306a36Sopenharmony_ci    i2c@100400 {
13862306a36Sopenharmony_ci      compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
13962306a36Sopenharmony_ci      reg = <0x100400 0x100>, <0x198 0x8>;
14062306a36Sopenharmony_ci      pinctrl-0 = <&i2c_pins>;
14162306a36Sopenharmony_ci      pinctrl-names = "default";
14262306a36Sopenharmony_ci      interrupts = <8>;
14362306a36Sopenharmony_ci      clocks = <&ahb_clk>;
14462306a36Sopenharmony_ci    };
14562306a36Sopenharmony_ci...
146