xref: /linux/Documentation/devicetree/bindings/i2c/apple,i2c.yaml (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/i2c/apple,i2c.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Apple/PASemi I2C controller
8
9maintainers:
10  - Sven Peter <sven@svenpeter.dev>
11
12description: |
13  Apple SoCs such as the M1 come with a I2C controller based on the one found
14  in machines with P. A. Semi's PWRficient processors.
15  The bus is used to communicate with e.g. USB PD chips or the speaker
16  amp.
17
18allOf:
19  - $ref: /schemas/i2c/i2c-controller.yaml#
20
21properties:
22  compatible:
23    oneOf:
24      - items:
25          - enum:
26              - apple,t6020-i2c
27              - apple,t6030-i2c
28              - apple,t6031-i2c
29              - apple,t8122-i2c
30          - const: apple,t8103-i2c
31      - items:
32          - enum:
33              # Do not add additional SoC to this list.
34              - apple,s5l8960x-i2c
35              - apple,t7000-i2c
36              - apple,s8000-i2c
37              - apple,t8010-i2c
38              - apple,t8015-i2c
39              - apple,t8103-i2c
40              - apple,t8112-i2c
41              - apple,t6000-i2c
42          - const: apple,i2c
43
44  reg:
45    maxItems: 1
46
47  clocks:
48    items:
49      - description: I2C bus reference clock
50
51  interrupts:
52    maxItems: 1
53
54  clock-frequency:
55    description: |
56      Desired I2C bus clock frequency in Hz. If not specified, 100 kHz will be
57      used. This frequency is generated by dividing the reference clock.
58      Allowed values are between ref_clk/(16*4) and ref_clk/(16*255).
59
60  power-domains:
61    maxItems: 1
62
63required:
64  - compatible
65  - reg
66  - clocks
67  - interrupts
68
69unevaluatedProperties: false
70
71examples:
72  - |
73    i2c@35010000 {
74      compatible = "apple,t8103-i2c", "apple,i2c";
75      reg = <0x35010000 0x4000>;
76      interrupt-parent = <&aic>;
77      interrupts = <0 627 4>;
78      clocks = <&ref_clk>;
79      #address-cells = <1>;
80      #size-cells = <0>;
81    };
82