xref: /linux/Documentation/devicetree/bindings/i2c/snps,designware-i2c.yaml (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
13264d9e5SSerge Semin# SPDX-License-Identifier: GPL-2.0-only
23264d9e5SSerge Semin%YAML 1.2
33264d9e5SSerge Semin---
43264d9e5SSerge Semin$id: http://devicetree.org/schemas/i2c/snps,designware-i2c.yaml#
53264d9e5SSerge Semin$schema: http://devicetree.org/meta-schemas/core.yaml#
63264d9e5SSerge Semin
73264d9e5SSerge Semintitle: Synopsys DesignWare APB I2C Controller
83264d9e5SSerge Semin
93264d9e5SSerge Seminmaintainers:
103264d9e5SSerge Semin  - Jarkko Nikula <jarkko.nikula@linux.intel.com>
113264d9e5SSerge Semin
123264d9e5SSerge SeminallOf:
133264d9e5SSerge Semin  - $ref: /schemas/i2c/i2c-controller.yaml#
143264d9e5SSerge Semin  - if:
153264d9e5SSerge Semin      properties:
163264d9e5SSerge Semin        compatible:
173264d9e5SSerge Semin          not:
183264d9e5SSerge Semin            contains:
193264d9e5SSerge Semin              const: mscc,ocelot-i2c
203264d9e5SSerge Semin    then:
213264d9e5SSerge Semin      properties:
223264d9e5SSerge Semin        reg:
233264d9e5SSerge Semin          maxItems: 1
243264d9e5SSerge Semin
253264d9e5SSerge Seminproperties:
263264d9e5SSerge Semin  compatible:
273264d9e5SSerge Semin    oneOf:
283264d9e5SSerge Semin      - description: Generic Synopsys DesignWare I2C controller
293264d9e5SSerge Semin        const: snps,designware-i2c
3031396626SWolfram Sang      - description: Renesas RZ/N1D I2C controller
3131396626SWolfram Sang        items:
3231396626SWolfram Sang          - const: renesas,r9a06g032-i2c  # RZ/N1D
3331396626SWolfram Sang          - const: renesas,rzn1-i2c       # RZ/N1
3431396626SWolfram Sang          - const: snps,designware-i2c
350029d097SSerge Semin      - description: Baikal-T1 SoC System I2C controller
360029d097SSerge Semin        const: baikal,bt1-sys-i2c
37b6c540d7SInochi Amaoto      - items:
38b6c540d7SInochi Amaoto          - enum:
39b6c540d7SInochi Amaoto              - mscc,ocelot-i2c
40*218d2318SInochi Amaoto              - sophgo,sg2044-i2c
41b6c540d7SInochi Amaoto              - thead,th1520-i2c
4200fa2450SThomas Bonnefille          - const: snps,designware-i2c
433264d9e5SSerge Semin
443264d9e5SSerge Semin  reg:
453264d9e5SSerge Semin    minItems: 1
463264d9e5SSerge Semin    items:
473264d9e5SSerge Semin      - description: DW APB I2C controller memory mapped registers
483264d9e5SSerge Semin      - description: |
493264d9e5SSerge Semin          ICPU_CFG:TWI_DELAY registers to setup the SDA hold time.
503264d9e5SSerge Semin          This registers are specific to the Ocelot I2C-controller.
513264d9e5SSerge Semin
523264d9e5SSerge Semin  interrupts:
533264d9e5SSerge Semin    maxItems: 1
543264d9e5SSerge Semin
553264d9e5SSerge Semin  clocks:
563264d9e5SSerge Semin    minItems: 1
573264d9e5SSerge Semin    items:
583264d9e5SSerge Semin      - description: I2C controller reference clock source
593264d9e5SSerge Semin      - description: APB interface clock source
603264d9e5SSerge Semin
613264d9e5SSerge Semin  clock-names:
623264d9e5SSerge Semin    minItems: 1
633264d9e5SSerge Semin    items:
643264d9e5SSerge Semin      - const: ref
653264d9e5SSerge Semin      - const: pclk
663264d9e5SSerge Semin
673264d9e5SSerge Semin  resets:
683264d9e5SSerge Semin    maxItems: 1
693264d9e5SSerge Semin
703264d9e5SSerge Semin  clock-frequency:
713264d9e5SSerge Semin    description: Desired I2C bus clock frequency in Hz
723264d9e5SSerge Semin    enum: [100000, 400000, 1000000, 3400000]
733264d9e5SSerge Semin    default: 400000
743264d9e5SSerge Semin
753264d9e5SSerge Semin  i2c-sda-hold-time-ns:
763264d9e5SSerge Semin    description: |
773264d9e5SSerge Semin      The property should contain the SDA hold time in nanoseconds. This option
783264d9e5SSerge Semin      is only supported in hardware blocks version 1.11a or newer or on
793264d9e5SSerge Semin      Microsemi SoCs.
803264d9e5SSerge Semin
813264d9e5SSerge Semin  i2c-scl-falling-time-ns:
823264d9e5SSerge Semin    description: |
833264d9e5SSerge Semin      The property should contain the SCL falling time in nanoseconds.
843264d9e5SSerge Semin      This value is used to compute the tLOW period.
853264d9e5SSerge Semin    default: 300
863264d9e5SSerge Semin
873264d9e5SSerge Semin  i2c-sda-falling-time-ns:
883264d9e5SSerge Semin    description: |
893264d9e5SSerge Semin      The property should contain the SDA falling time in nanoseconds.
903264d9e5SSerge Semin      This value is used to compute the tHIGH period.
913264d9e5SSerge Semin    default: 300
923264d9e5SSerge Semin
933264d9e5SSerge Semin  dmas:
943264d9e5SSerge Semin    items:
953264d9e5SSerge Semin      - description: TX DMA Channel
963264d9e5SSerge Semin      - description: RX DMA Channel
973264d9e5SSerge Semin
983264d9e5SSerge Semin  dma-names:
993264d9e5SSerge Semin    items:
1003264d9e5SSerge Semin      - const: tx
1013264d9e5SSerge Semin      - const: rx
1023264d9e5SSerge Semin
103bbc89a6eSMichael Wu  snps,bus-capacitance-pf:
104bbc89a6eSMichael Wu    $ref: /schemas/types.yaml#/definitions/uint32
105bbc89a6eSMichael Wu    description:
106bbc89a6eSMichael Wu      This property indicates the bus capacitance in picofarads (pF).
107bbc89a6eSMichael Wu      This value is used to compute the tHIGH and tLOW periods for high speed
108bbc89a6eSMichael Wu      mode.
109bbc89a6eSMichael Wu    enum: [100, 400]
110bbc89a6eSMichael Wu    default: 100
111bbc89a6eSMichael Wu
112bbc89a6eSMichael Wu  snps,clk-freq-optimized:
113bbc89a6eSMichael Wu    description:
114bbc89a6eSMichael Wu      This property indicates whether the hardware reduce its clock frequency
115bbc89a6eSMichael Wu      by reducing the internal latency required to generate the high period and
116bbc89a6eSMichael Wu      low period of SCL line.
117bbc89a6eSMichael Wu    type: boolean
118bbc89a6eSMichael Wu
1193264d9e5SSerge SeminunevaluatedProperties: false
1203264d9e5SSerge Semin
1213264d9e5SSerge Seminrequired:
1223264d9e5SSerge Semin  - compatible
1233264d9e5SSerge Semin  - reg
1243264d9e5SSerge Semin  - interrupts
1253264d9e5SSerge Semin
1263264d9e5SSerge Seminexamples:
1273264d9e5SSerge Semin  - |
1283264d9e5SSerge Semin    i2c@f0000 {
1293264d9e5SSerge Semin      compatible = "snps,designware-i2c";
1303264d9e5SSerge Semin      reg = <0xf0000 0x1000>;
1313264d9e5SSerge Semin      interrupts = <11>;
1323264d9e5SSerge Semin      clock-frequency = <400000>;
1333264d9e5SSerge Semin    };
1343264d9e5SSerge Semin  - |
1353264d9e5SSerge Semin    i2c@1120000 {
1363264d9e5SSerge Semin      compatible = "snps,designware-i2c";
1373264d9e5SSerge Semin      reg = <0x1120000 0x1000>;
1383264d9e5SSerge Semin      interrupts = <12 1>;
1393264d9e5SSerge Semin      clock-frequency = <400000>;
1403264d9e5SSerge Semin      i2c-sda-hold-time-ns = <300>;
1413264d9e5SSerge Semin      i2c-sda-falling-time-ns = <300>;
1423264d9e5SSerge Semin      i2c-scl-falling-time-ns = <300>;
143bbc89a6eSMichael Wu      snps,bus-capacitance-pf = <400>;
144bbc89a6eSMichael Wu      snps,clk-freq-optimized;
1453264d9e5SSerge Semin    };
1463264d9e5SSerge Semin  - |
1473264d9e5SSerge Semin    i2c@2000 {
1483264d9e5SSerge Semin      compatible = "snps,designware-i2c";
1493264d9e5SSerge Semin      reg = <0x2000 0x100>;
1503264d9e5SSerge Semin      #address-cells = <1>;
1513264d9e5SSerge Semin      #size-cells = <0>;
1523264d9e5SSerge Semin      clock-frequency = <400000>;
1533264d9e5SSerge Semin      clocks = <&i2cclk>;
1543264d9e5SSerge Semin      interrupts = <0>;
1553264d9e5SSerge Semin
1563264d9e5SSerge Semin      eeprom@64 {
15725d11e9eSSerge Semin        compatible = "atmel,24c02";
15825d11e9eSSerge Semin        reg = <0x64>;
1593264d9e5SSerge Semin      };
1603264d9e5SSerge Semin    };
1613264d9e5SSerge Semin  - |
1623264d9e5SSerge Semin    i2c@100400 {
1633264d9e5SSerge Semin      compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
1643264d9e5SSerge Semin      reg = <0x100400 0x100>, <0x198 0x8>;
1653264d9e5SSerge Semin      pinctrl-0 = <&i2c_pins>;
1663264d9e5SSerge Semin      pinctrl-names = "default";
1673264d9e5SSerge Semin      interrupts = <8>;
1683264d9e5SSerge Semin      clocks = <&ahb_clk>;
1693264d9e5SSerge Semin    };
1703264d9e5SSerge Semin...
171