xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/i2c/snps,designware-i2c.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/i2c/snps,designware-i2c.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Synopsys DesignWare APB I2C Controller
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Jarkko Nikula <jarkko.nikula@linux.intel.com>
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunallOf:
13*4882a593Smuzhiyun  - $ref: /schemas/i2c/i2c-controller.yaml#
14*4882a593Smuzhiyun  - if:
15*4882a593Smuzhiyun      properties:
16*4882a593Smuzhiyun        compatible:
17*4882a593Smuzhiyun          not:
18*4882a593Smuzhiyun            contains:
19*4882a593Smuzhiyun              const: mscc,ocelot-i2c
20*4882a593Smuzhiyun    then:
21*4882a593Smuzhiyun      properties:
22*4882a593Smuzhiyun        reg:
23*4882a593Smuzhiyun          maxItems: 1
24*4882a593Smuzhiyun
25*4882a593Smuzhiyunproperties:
26*4882a593Smuzhiyun  compatible:
27*4882a593Smuzhiyun    oneOf:
28*4882a593Smuzhiyun      - description: Generic Synopsys DesignWare I2C controller
29*4882a593Smuzhiyun        const: snps,designware-i2c
30*4882a593Smuzhiyun      - description: Microsemi Ocelot SoCs I2C controller
31*4882a593Smuzhiyun        items:
32*4882a593Smuzhiyun          - const: mscc,ocelot-i2c
33*4882a593Smuzhiyun          - const: snps,designware-i2c
34*4882a593Smuzhiyun      - description: Baikal-T1 SoC System I2C controller
35*4882a593Smuzhiyun        const: baikal,bt1-sys-i2c
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun  reg:
38*4882a593Smuzhiyun    minItems: 1
39*4882a593Smuzhiyun    items:
40*4882a593Smuzhiyun      - description: DW APB I2C controller memory mapped registers
41*4882a593Smuzhiyun      - description: |
42*4882a593Smuzhiyun          ICPU_CFG:TWI_DELAY registers to setup the SDA hold time.
43*4882a593Smuzhiyun          This registers are specific to the Ocelot I2C-controller.
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun  interrupts:
46*4882a593Smuzhiyun    maxItems: 1
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  clocks:
49*4882a593Smuzhiyun    minItems: 1
50*4882a593Smuzhiyun    items:
51*4882a593Smuzhiyun      - description: I2C controller reference clock source
52*4882a593Smuzhiyun      - description: APB interface clock source
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun  clock-names:
55*4882a593Smuzhiyun    minItems: 1
56*4882a593Smuzhiyun    items:
57*4882a593Smuzhiyun      - const: ref
58*4882a593Smuzhiyun      - const: pclk
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun  resets:
61*4882a593Smuzhiyun    maxItems: 1
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun  clock-frequency:
64*4882a593Smuzhiyun    description: Desired I2C bus clock frequency in Hz
65*4882a593Smuzhiyun    enum: [100000, 400000, 1000000, 3400000]
66*4882a593Smuzhiyun    default: 400000
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun  i2c-sda-hold-time-ns:
69*4882a593Smuzhiyun    maxItems: 1
70*4882a593Smuzhiyun    description: |
71*4882a593Smuzhiyun      The property should contain the SDA hold time in nanoseconds. This option
72*4882a593Smuzhiyun      is only supported in hardware blocks version 1.11a or newer or on
73*4882a593Smuzhiyun      Microsemi SoCs.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun  i2c-scl-falling-time-ns:
76*4882a593Smuzhiyun    maxItems: 1
77*4882a593Smuzhiyun    description: |
78*4882a593Smuzhiyun      The property should contain the SCL falling time in nanoseconds.
79*4882a593Smuzhiyun      This value is used to compute the tLOW period.
80*4882a593Smuzhiyun    default: 300
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun  i2c-sda-falling-time-ns:
83*4882a593Smuzhiyun    maxItems: 1
84*4882a593Smuzhiyun    description: |
85*4882a593Smuzhiyun      The property should contain the SDA falling time in nanoseconds.
86*4882a593Smuzhiyun      This value is used to compute the tHIGH period.
87*4882a593Smuzhiyun    default: 300
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun  dmas:
90*4882a593Smuzhiyun    items:
91*4882a593Smuzhiyun      - description: TX DMA Channel
92*4882a593Smuzhiyun      - description: RX DMA Channel
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun  dma-names:
95*4882a593Smuzhiyun    items:
96*4882a593Smuzhiyun      - const: tx
97*4882a593Smuzhiyun      - const: rx
98*4882a593Smuzhiyun
99*4882a593SmuzhiyununevaluatedProperties: false
100*4882a593Smuzhiyun
101*4882a593Smuzhiyunrequired:
102*4882a593Smuzhiyun  - compatible
103*4882a593Smuzhiyun  - reg
104*4882a593Smuzhiyun  - "#address-cells"
105*4882a593Smuzhiyun  - "#size-cells"
106*4882a593Smuzhiyun  - interrupts
107*4882a593Smuzhiyun
108*4882a593Smuzhiyunexamples:
109*4882a593Smuzhiyun  - |
110*4882a593Smuzhiyun    i2c@f0000 {
111*4882a593Smuzhiyun      compatible = "snps,designware-i2c";
112*4882a593Smuzhiyun      reg = <0xf0000 0x1000>;
113*4882a593Smuzhiyun      #address-cells = <1>;
114*4882a593Smuzhiyun      #size-cells = <0>;
115*4882a593Smuzhiyun      interrupts = <11>;
116*4882a593Smuzhiyun      clock-frequency = <400000>;
117*4882a593Smuzhiyun    };
118*4882a593Smuzhiyun  - |
119*4882a593Smuzhiyun    i2c@1120000 {
120*4882a593Smuzhiyun      compatible = "snps,designware-i2c";
121*4882a593Smuzhiyun      reg = <0x1120000 0x1000>;
122*4882a593Smuzhiyun      #address-cells = <1>;
123*4882a593Smuzhiyun      #size-cells = <0>;
124*4882a593Smuzhiyun      interrupts = <12 1>;
125*4882a593Smuzhiyun      clock-frequency = <400000>;
126*4882a593Smuzhiyun      i2c-sda-hold-time-ns = <300>;
127*4882a593Smuzhiyun      i2c-sda-falling-time-ns = <300>;
128*4882a593Smuzhiyun      i2c-scl-falling-time-ns = <300>;
129*4882a593Smuzhiyun    };
130*4882a593Smuzhiyun  - |
131*4882a593Smuzhiyun    i2c@2000 {
132*4882a593Smuzhiyun      compatible = "snps,designware-i2c";
133*4882a593Smuzhiyun      reg = <0x2000 0x100>;
134*4882a593Smuzhiyun      #address-cells = <1>;
135*4882a593Smuzhiyun      #size-cells = <0>;
136*4882a593Smuzhiyun      clock-frequency = <400000>;
137*4882a593Smuzhiyun      clocks = <&i2cclk>;
138*4882a593Smuzhiyun      interrupts = <0>;
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun      eeprom@64 {
141*4882a593Smuzhiyun        compatible = "atmel,24c02";
142*4882a593Smuzhiyun        reg = <0x64>;
143*4882a593Smuzhiyun      };
144*4882a593Smuzhiyun    };
145*4882a593Smuzhiyun  - |
146*4882a593Smuzhiyun    i2c@100400 {
147*4882a593Smuzhiyun      compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
148*4882a593Smuzhiyun      reg = <0x100400 0x100>, <0x198 0x8>;
149*4882a593Smuzhiyun      pinctrl-0 = <&i2c_pins>;
150*4882a593Smuzhiyun      pinctrl-names = "default";
151*4882a593Smuzhiyun      #address-cells = <1>;
152*4882a593Smuzhiyun      #size-cells = <0>;
153*4882a593Smuzhiyun      interrupts = <8>;
154*4882a593Smuzhiyun      clocks = <&ahb_clk>;
155*4882a593Smuzhiyun    };
156*4882a593Smuzhiyun...
157