xref: /freebsd/sys/contrib/device-tree/Bindings/net/mctp-i2c-controller.yaml (revision 81ad626541db97eb356e2c1d4a20eb2a26a766ab)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/mctp-i2c-controller.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MCTP I2C transport binding
8
9maintainers:
10  - Matt Johnston <matt@codeconstruct.com.au>
11
12description: |
13  An mctp-i2c-controller defines a local MCTP endpoint on an I2C controller.
14  MCTP I2C is specified by DMTF DSP0237.
15
16  An mctp-i2c-controller must be attached to an I2C adapter which supports
17  slave functionality. I2C busses (either directly or as subordinate mux
18  busses) are attached to the mctp-i2c-controller with a 'mctp-controller'
19  property on each used bus. Each mctp-controller I2C bus will be presented
20  to the host system as a separate MCTP I2C instance.
21
22properties:
23  compatible:
24    const: mctp-i2c-controller
25
26  reg:
27    minimum: 0x40000000
28    maximum: 0x4000007f
29    description: |
30      7 bit I2C address of the local endpoint.
31      I2C_OWN_SLAVE_ADDRESS (1<<30) flag must be set.
32
33additionalProperties: false
34
35required:
36  - compatible
37  - reg
38
39examples:
40  - |
41    // Basic case of a single I2C bus
42    #include <dt-bindings/i2c/i2c.h>
43
44    i2c {
45      #address-cells = <1>;
46      #size-cells = <0>;
47      mctp-controller;
48
49      mctp@30 {
50        compatible = "mctp-i2c-controller";
51        reg = <(0x30 | I2C_OWN_SLAVE_ADDRESS)>;
52      };
53    };
54
55  - |
56    // Mux topology with multiple MCTP-handling busses under
57    // a single mctp-i2c-controller.
58    // i2c1 and i2c6 can have MCTP devices, i2c5 does not.
59    #include <dt-bindings/i2c/i2c.h>
60
61    i2c1: i2c {
62      #address-cells = <1>;
63      #size-cells = <0>;
64      mctp-controller;
65
66      mctp@50 {
67        compatible = "mctp-i2c-controller";
68        reg = <(0x50 | I2C_OWN_SLAVE_ADDRESS)>;
69      };
70    };
71
72    i2c-mux {
73      #address-cells = <1>;
74      #size-cells = <0>;
75      i2c-parent = <&i2c1>;
76
77      i2c5: i2c@0 {
78        #address-cells = <1>;
79        #size-cells = <0>;
80        reg = <0>;
81        eeprom@33 {
82          reg = <0x33>;
83        };
84      };
85
86      i2c6: i2c@1 {
87        #address-cells = <1>;
88        #size-cells = <0>;
89        reg = <1>;
90        mctp-controller;
91      };
92    };
93