xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/net/dsa/qca8k.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun* Qualcomm Atheros QCA8xxx switch family
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunRequired properties:
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun- compatible: should be one of:
6*4882a593Smuzhiyun    "qca,qca8334"
7*4882a593Smuzhiyun    "qca,qca8337"
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun- #size-cells: must be 0
10*4882a593Smuzhiyun- #address-cells: must be 1
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunOptional properties:
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun- reset-gpios: GPIO to be used to reset the whole device
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunSubnodes:
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunThe integrated switch subnode should be specified according to the binding
19*4882a593Smuzhiyundescribed in dsa/dsa.txt. If the QCA8K switch is connect to a SoC's external
20*4882a593Smuzhiyunmdio-bus each subnode describing a port needs to have a valid phandle
21*4882a593Smuzhiyunreferencing the internal PHY it is connected to. This is because there's no
22*4882a593SmuzhiyunN:N mapping of port and PHY id.
23*4882a593Smuzhiyun
24*4882a593SmuzhiyunDon't use mixed external and internal mdio-bus configurations, as this is
25*4882a593Smuzhiyunnot supported by the hardware.
26*4882a593Smuzhiyun
27*4882a593SmuzhiyunThe CPU port of this switch is always port 0.
28*4882a593Smuzhiyun
29*4882a593SmuzhiyunA CPU port node has the following optional node:
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun- fixed-link            : Fixed-link subnode describing a link to a non-MDIO
32*4882a593Smuzhiyun                          managed entity. See
33*4882a593Smuzhiyun                          Documentation/devicetree/bindings/net/fixed-link.txt
34*4882a593Smuzhiyun                          for details.
35*4882a593Smuzhiyun
36*4882a593SmuzhiyunFor QCA8K the 'fixed-link' sub-node supports only the following properties:
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun- 'speed' (integer, mandatory), to indicate the link speed. Accepted
39*4882a593Smuzhiyun  values are 10, 100 and 1000
40*4882a593Smuzhiyun- 'full-duplex' (boolean, optional), to indicate that full duplex is
41*4882a593Smuzhiyun  used. When absent, half duplex is assumed.
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunExamples:
44*4882a593Smuzhiyun
45*4882a593Smuzhiyunfor the external mdio-bus configuration:
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun	&mdio0 {
48*4882a593Smuzhiyun		phy_port1: phy@0 {
49*4882a593Smuzhiyun			reg = <0>;
50*4882a593Smuzhiyun		};
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun		phy_port2: phy@1 {
53*4882a593Smuzhiyun			reg = <1>;
54*4882a593Smuzhiyun		};
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun		phy_port3: phy@2 {
57*4882a593Smuzhiyun			reg = <2>;
58*4882a593Smuzhiyun		};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun		phy_port4: phy@3 {
61*4882a593Smuzhiyun			reg = <3>;
62*4882a593Smuzhiyun		};
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun		phy_port5: phy@4 {
65*4882a593Smuzhiyun			reg = <4>;
66*4882a593Smuzhiyun		};
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun		switch@10 {
69*4882a593Smuzhiyun			compatible = "qca,qca8337";
70*4882a593Smuzhiyun			#address-cells = <1>;
71*4882a593Smuzhiyun			#size-cells = <0>;
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun			reset-gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
74*4882a593Smuzhiyun			reg = <0x10>;
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun			ports {
77*4882a593Smuzhiyun				#address-cells = <1>;
78*4882a593Smuzhiyun				#size-cells = <0>;
79*4882a593Smuzhiyun				port@0 {
80*4882a593Smuzhiyun					reg = <0>;
81*4882a593Smuzhiyun					label = "cpu";
82*4882a593Smuzhiyun					ethernet = <&gmac1>;
83*4882a593Smuzhiyun					phy-mode = "rgmii";
84*4882a593Smuzhiyun					fixed-link {
85*4882a593Smuzhiyun						speed = 1000;
86*4882a593Smuzhiyun						full-duplex;
87*4882a593Smuzhiyun					};
88*4882a593Smuzhiyun				};
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun				port@1 {
91*4882a593Smuzhiyun					reg = <1>;
92*4882a593Smuzhiyun					label = "lan1";
93*4882a593Smuzhiyun					phy-handle = <&phy_port1>;
94*4882a593Smuzhiyun				};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun				port@2 {
97*4882a593Smuzhiyun					reg = <2>;
98*4882a593Smuzhiyun					label = "lan2";
99*4882a593Smuzhiyun					phy-handle = <&phy_port2>;
100*4882a593Smuzhiyun				};
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun				port@3 {
103*4882a593Smuzhiyun					reg = <3>;
104*4882a593Smuzhiyun					label = "lan3";
105*4882a593Smuzhiyun					phy-handle = <&phy_port3>;
106*4882a593Smuzhiyun				};
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun				port@4 {
109*4882a593Smuzhiyun					reg = <4>;
110*4882a593Smuzhiyun					label = "lan4";
111*4882a593Smuzhiyun					phy-handle = <&phy_port4>;
112*4882a593Smuzhiyun				};
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun				port@5 {
115*4882a593Smuzhiyun					reg = <5>;
116*4882a593Smuzhiyun					label = "wan";
117*4882a593Smuzhiyun					phy-handle = <&phy_port5>;
118*4882a593Smuzhiyun				};
119*4882a593Smuzhiyun			};
120*4882a593Smuzhiyun		};
121*4882a593Smuzhiyun	};
122*4882a593Smuzhiyun
123*4882a593Smuzhiyunfor the internal master mdio-bus configuration:
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun	&mdio0 {
126*4882a593Smuzhiyun		switch@10 {
127*4882a593Smuzhiyun			compatible = "qca,qca8337";
128*4882a593Smuzhiyun			#address-cells = <1>;
129*4882a593Smuzhiyun			#size-cells = <0>;
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun			reset-gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
132*4882a593Smuzhiyun			reg = <0x10>;
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun			ports {
135*4882a593Smuzhiyun				#address-cells = <1>;
136*4882a593Smuzhiyun				#size-cells = <0>;
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun				port@0 {
139*4882a593Smuzhiyun					reg = <0>;
140*4882a593Smuzhiyun					label = "cpu";
141*4882a593Smuzhiyun					ethernet = <&gmac1>;
142*4882a593Smuzhiyun					phy-mode = "rgmii";
143*4882a593Smuzhiyun					fixed-link {
144*4882a593Smuzhiyun						speed = 1000;
145*4882a593Smuzhiyun						full-duplex;
146*4882a593Smuzhiyun					};
147*4882a593Smuzhiyun				};
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun				port@1 {
150*4882a593Smuzhiyun					reg = <1>;
151*4882a593Smuzhiyun					label = "lan1";
152*4882a593Smuzhiyun				};
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun				port@2 {
155*4882a593Smuzhiyun					reg = <2>;
156*4882a593Smuzhiyun					label = "lan2";
157*4882a593Smuzhiyun				};
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun				port@3 {
160*4882a593Smuzhiyun					reg = <3>;
161*4882a593Smuzhiyun					label = "lan3";
162*4882a593Smuzhiyun				};
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun				port@4 {
165*4882a593Smuzhiyun					reg = <4>;
166*4882a593Smuzhiyun					label = "lan4";
167*4882a593Smuzhiyun				};
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun				port@5 {
170*4882a593Smuzhiyun					reg = <5>;
171*4882a593Smuzhiyun					label = "wan";
172*4882a593Smuzhiyun				};
173*4882a593Smuzhiyun			};
174*4882a593Smuzhiyun		};
175*4882a593Smuzhiyun	};
176