1*7ea75dd3SSergiu Moga# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*7ea75dd3SSergiu Moga# Copyright (C) 2022 Microchip Technology, Inc. and its subsidiaries
3*7ea75dd3SSergiu Moga%YAML 1.2
4*7ea75dd3SSergiu Moga---
5*7ea75dd3SSergiu Moga$id: http://devicetree.org/schemas/i2c/atmel,at91sam-i2c.yaml#
6*7ea75dd3SSergiu Moga$schema: http://devicetree.org/meta-schemas/core.yaml#
7*7ea75dd3SSergiu Moga
8*7ea75dd3SSergiu Mogatitle: I2C for Atmel/Microchip platforms
9*7ea75dd3SSergiu Moga
10*7ea75dd3SSergiu Mogamaintainers:
11*7ea75dd3SSergiu Moga  - Alexandre Belloni <alexandre.belloni@bootlin.com>
12*7ea75dd3SSergiu Moga
13*7ea75dd3SSergiu Mogaproperties:
14*7ea75dd3SSergiu Moga  compatible:
15*7ea75dd3SSergiu Moga    enum:
16*7ea75dd3SSergiu Moga      - atmel,at91rm9200-i2c
17*7ea75dd3SSergiu Moga      - atmel,at91sam9261-i2c
18*7ea75dd3SSergiu Moga      - atmel,at91sam9260-i2c
19*7ea75dd3SSergiu Moga      - atmel,at91sam9g20-i2c
20*7ea75dd3SSergiu Moga      - atmel,at91sam9g10-i2c
21*7ea75dd3SSergiu Moga      - atmel,at91sam9x5-i2c
22*7ea75dd3SSergiu Moga      - atmel,sama5d4-i2c
23*7ea75dd3SSergiu Moga      - atmel,sama5d2-i2c
24*7ea75dd3SSergiu Moga      - microchip,sam9x60-i2c
25*7ea75dd3SSergiu Moga
26*7ea75dd3SSergiu Moga  reg:
27*7ea75dd3SSergiu Moga    maxItems: 1
28*7ea75dd3SSergiu Moga
29*7ea75dd3SSergiu Moga  interrupts:
30*7ea75dd3SSergiu Moga    maxItems: 1
31*7ea75dd3SSergiu Moga
32*7ea75dd3SSergiu Moga  "#address-cells":
33*7ea75dd3SSergiu Moga    const: 1
34*7ea75dd3SSergiu Moga
35*7ea75dd3SSergiu Moga  "#size-cells":
36*7ea75dd3SSergiu Moga    const: 0
37*7ea75dd3SSergiu Moga
38*7ea75dd3SSergiu Moga  clocks:
39*7ea75dd3SSergiu Moga    maxItems: 1
40*7ea75dd3SSergiu Moga
41*7ea75dd3SSergiu Moga  clock-frequency:
42*7ea75dd3SSergiu Moga    default: 100000
43*7ea75dd3SSergiu Moga
44*7ea75dd3SSergiu Moga  dmas:
45*7ea75dd3SSergiu Moga    items:
46*7ea75dd3SSergiu Moga      - description: TX DMA Channel Specifier
47*7ea75dd3SSergiu Moga      - description: RX DMA Channel Specifier
48*7ea75dd3SSergiu Moga
49*7ea75dd3SSergiu Moga  dma-names:
50*7ea75dd3SSergiu Moga    items:
51*7ea75dd3SSergiu Moga      - const: tx
52*7ea75dd3SSergiu Moga      - const: rx
53*7ea75dd3SSergiu Moga
54*7ea75dd3SSergiu Moga  atmel,fifo-size:
55*7ea75dd3SSergiu Moga    $ref: /schemas/types.yaml#/definitions/uint32
56*7ea75dd3SSergiu Moga    description: |
57*7ea75dd3SSergiu Moga      Maximum number of data the RX and TX FIFOs can store for
58*7ea75dd3SSergiu Moga      FIFO capable I2C controllers.
59*7ea75dd3SSergiu Moga
60*7ea75dd3SSergiu Moga  scl-gpios: true
61*7ea75dd3SSergiu Moga
62*7ea75dd3SSergiu Moga  sda-gpios: true
63*7ea75dd3SSergiu Moga
64*7ea75dd3SSergiu Mogarequired:
65*7ea75dd3SSergiu Moga  - compatible
66*7ea75dd3SSergiu Moga  - reg
67*7ea75dd3SSergiu Moga  - interrupts
68*7ea75dd3SSergiu Moga  - "#address-cells"
69*7ea75dd3SSergiu Moga  - "#size-cells"
70*7ea75dd3SSergiu Moga  - clocks
71*7ea75dd3SSergiu Moga
72*7ea75dd3SSergiu MogaallOf:
73*7ea75dd3SSergiu Moga  - $ref: "i2c-controller.yaml"
74*7ea75dd3SSergiu Moga  - if:
75*7ea75dd3SSergiu Moga      properties:
76*7ea75dd3SSergiu Moga        compatible:
77*7ea75dd3SSergiu Moga          contains:
78*7ea75dd3SSergiu Moga            enum:
79*7ea75dd3SSergiu Moga              - atmel,sama5d4-i2c
80*7ea75dd3SSergiu Moga              - atmel,sama5d2-i2c
81*7ea75dd3SSergiu Moga              - microchip,sam9x60-i2c
82*7ea75dd3SSergiu Moga    then:
83*7ea75dd3SSergiu Moga      properties:
84*7ea75dd3SSergiu Moga        i2c-sda-hold-time-ns:
85*7ea75dd3SSergiu Moga          description:
86*7ea75dd3SSergiu Moga            TWD hold time
87*7ea75dd3SSergiu Moga          maxItems: 1
88*7ea75dd3SSergiu Moga
89*7ea75dd3SSergiu MogaunevaluatedProperties: false
90*7ea75dd3SSergiu Moga
91*7ea75dd3SSergiu Mogaexamples:
92*7ea75dd3SSergiu Moga  - |
93*7ea75dd3SSergiu Moga    #include <dt-bindings/interrupt-controller/irq.h>
94*7ea75dd3SSergiu Moga    #include <dt-bindings/dma/at91.h>
95*7ea75dd3SSergiu Moga    #include <dt-bindings/gpio/gpio.h>
96*7ea75dd3SSergiu Moga
97*7ea75dd3SSergiu Moga    i2c0: i2c@fff84000 {
98*7ea75dd3SSergiu Moga        compatible = "atmel,at91sam9g20-i2c";
99*7ea75dd3SSergiu Moga        reg = <0xfff84000 0x100>;
100*7ea75dd3SSergiu Moga        interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>;
101*7ea75dd3SSergiu Moga        #address-cells = <1>;
102*7ea75dd3SSergiu Moga        #size-cells = <0>;
103*7ea75dd3SSergiu Moga        clocks = <&twi0_clk>;
104*7ea75dd3SSergiu Moga        clock-frequency = <400000>;
105*7ea75dd3SSergiu Moga
106*7ea75dd3SSergiu Moga        eeprom@50 {
107*7ea75dd3SSergiu Moga            compatible = "atmel,24c512";
108*7ea75dd3SSergiu Moga            reg = <0x50>;
109*7ea75dd3SSergiu Moga            pagesize = <128>;
110*7ea75dd3SSergiu Moga        };
111*7ea75dd3SSergiu Moga    };
112*7ea75dd3SSergiu Moga
113*7ea75dd3SSergiu Moga    i2c1: i2c@f8034600 {
114*7ea75dd3SSergiu Moga        compatible = "atmel,sama5d2-i2c";
115*7ea75dd3SSergiu Moga        reg = <0xf8034600 0x100>;
116*7ea75dd3SSergiu Moga        interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
117*7ea75dd3SSergiu Moga        dmas = <&dma0
118*7ea75dd3SSergiu Moga            (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
119*7ea75dd3SSergiu Moga            AT91_XDMAC_DT_PERID(11)>,
120*7ea75dd3SSergiu Moga               <&dma0
121*7ea75dd3SSergiu Moga            (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
122*7ea75dd3SSergiu Moga            AT91_XDMAC_DT_PERID(12)>;
123*7ea75dd3SSergiu Moga        dma-names = "tx", "rx";
124*7ea75dd3SSergiu Moga        #address-cells = <1>;
125*7ea75dd3SSergiu Moga        #size-cells = <0>;
126*7ea75dd3SSergiu Moga        clocks = <&flx0>;
127*7ea75dd3SSergiu Moga        atmel,fifo-size = <16>;
128*7ea75dd3SSergiu Moga        i2c-sda-hold-time-ns = <336>;
129*7ea75dd3SSergiu Moga        pinctrl-names = "default", "gpio";
130*7ea75dd3SSergiu Moga        pinctrl-0 = <&pinctrl_i2c0>;
131*7ea75dd3SSergiu Moga        pinctrl-1 = <&pinctrl_i2c0_gpio>;
132*7ea75dd3SSergiu Moga        sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>;
133*7ea75dd3SSergiu Moga        scl-gpios = <&pioA 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
134*7ea75dd3SSergiu Moga
135*7ea75dd3SSergiu Moga        eeprom@54 {
136*7ea75dd3SSergiu Moga            compatible = "atmel,24c02";
137*7ea75dd3SSergiu Moga            reg = <0x54>;
138*7ea75dd3SSergiu Moga            pagesize = <16>;
139*7ea75dd3SSergiu Moga        };
140*7ea75dd3SSergiu Moga    };
141