hc
2024-05-10 10ebd8556b7990499c896a550e3d416b444211e6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
SMSC/MicroChip LAN9303 three port ethernet switch
-------------------------------------------------
 
Required properties:
 
- compatible: should be
  - "smsc,lan9303-i2c" for I2C managed mode
    or
  - "smsc,lan9303-mdio" for mdio managed mode
 
Optional properties:
 
- reset-gpios: GPIO to be used to reset the whole device
- reset-duration: reset duration in milliseconds, defaults to 200 ms
 
Subnodes:
 
The integrated switch subnode should be specified according to the binding
described in dsa/dsa.txt. The CPU port of this switch is always port 0.
 
Note: always use 'reg = <0/1/2>;' for the three DSA ports, even if the device is
configured to use 1/2/3 instead. This hardware configuration will be
auto-detected and mapped accordingly.
 
Example:
 
I2C managed mode:
 
   master: masterdevice@X {
 
       fixed-link { /* RMII fixed link to LAN9303 */
           speed = <100>;
           full-duplex;
       };
   };
 
   switch: switch@a {
       compatible = "smsc,lan9303-i2c";
       reg = <0xa>;
       reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
       reset-duration = <200>;
 
       ports {
           #address-cells = <1>;
           #size-cells = <0>;
 
           port@0 { /* RMII fixed link to master */
               reg = <0>;
               label = "cpu";
               ethernet = <&master>;
           };
 
           port@1 { /* external port 1 */
               reg = <1>;
               label = "lan1";
           };
 
           port@2 { /* external port 2 */
               reg = <2>;
               label = "lan2";
           };
       };
   };
 
MDIO managed mode:
 
   master: masterdevice@X {
       phy-handle = <&switch>;
 
       mdio {
           #address-cells = <1>;
           #size-cells = <0>;
 
           switch: switch-phy@0 {
               compatible = "smsc,lan9303-mdio";
               reg = <0>;
               reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
               reset-duration = <100>;
 
               ports {
                   #address-cells = <1>;
                   #size-cells = <0>;
 
                   port@0 {
                       reg = <0>;
                       label = "cpu";
                       ethernet = <&master>;
                   };
 
                   port@1 { /* external port 1 */
                       reg = <1>;
                       label = "lan1";
                   };
 
                   port@2 { /* external port 2 */
                       reg = <2>;
                       label = "lan2";
                   };
               };
           };
       };
   };