xref: /rk3399_rockchip-uboot/doc/device-tree-bindings/net/micrel-ksz90x1.txt (revision 82d72a1b9967cff4908f22c57536c3660f794401)
1*c16e69f7SDinh NguyenMicrel KSZ9021/KSZ9031 Gigabit Ethernet PHY
2*c16e69f7SDinh Nguyen
3*c16e69f7SDinh NguyenSome boards require special tuning values, particularly when it comes to
4*c16e69f7SDinh Nguyenclock delays. You can specify clock delay values by adding
5*c16e69f7SDinh Nguyenmicrel-specific properties to an Ethernet OF device node.
6*c16e69f7SDinh Nguyen
7*c16e69f7SDinh NguyenNote that these settings are applied after any phy-specific fixup from
8*c16e69f7SDinh Nguyenphy_fixup_list (see phy_init_hw() from drivers/net/phy/phy_device.c),
9*c16e69f7SDinh Nguyenand therefore may overwrite them.
10*c16e69f7SDinh Nguyen
11*c16e69f7SDinh NguyenKSZ9021:
12*c16e69f7SDinh Nguyen
13*c16e69f7SDinh Nguyen  All skew control options are specified in picoseconds. The minimum
14*c16e69f7SDinh Nguyen  value is 0, the maximum value is 1800, and it is incremented by 120ps
15*c16e69f7SDinh Nguyen  steps.
16*c16e69f7SDinh Nguyen
17*c16e69f7SDinh Nguyen  Optional properties:
18*c16e69f7SDinh Nguyen
19*c16e69f7SDinh Nguyen    - rxc-skew-ps : Skew control of RXC pad
20*c16e69f7SDinh Nguyen    - rxdv-skew-ps : Skew control of RX CTL pad
21*c16e69f7SDinh Nguyen    - txc-skew-ps : Skew control of TXC pad
22*c16e69f7SDinh Nguyen    - txen-skew-ps : Skew control of TX CTL pad
23*c16e69f7SDinh Nguyen    - rxd0-skew-ps : Skew control of RX data 0 pad
24*c16e69f7SDinh Nguyen    - rxd1-skew-ps : Skew control of RX data 1 pad
25*c16e69f7SDinh Nguyen    - rxd2-skew-ps : Skew control of RX data 2 pad
26*c16e69f7SDinh Nguyen    - rxd3-skew-ps : Skew control of RX data 3 pad
27*c16e69f7SDinh Nguyen    - txd0-skew-ps : Skew control of TX data 0 pad
28*c16e69f7SDinh Nguyen    - txd1-skew-ps : Skew control of TX data 1 pad
29*c16e69f7SDinh Nguyen    - txd2-skew-ps : Skew control of TX data 2 pad
30*c16e69f7SDinh Nguyen    - txd3-skew-ps : Skew control of TX data 3 pad
31*c16e69f7SDinh Nguyen
32*c16e69f7SDinh NguyenKSZ9031:
33*c16e69f7SDinh Nguyen
34*c16e69f7SDinh Nguyen  All skew control options are specified in picoseconds. The minimum
35*c16e69f7SDinh Nguyen  value is 0, and the maximum is property-dependent. The increment
36*c16e69f7SDinh Nguyen  step is 60ps.
37*c16e69f7SDinh Nguyen
38*c16e69f7SDinh Nguyen  The KSZ9031 hardware supports a range of skew values from negative to
39*c16e69f7SDinh Nguyen  positive, where the specific range is property dependent. All values
40*c16e69f7SDinh Nguyen  specified in the devicetree are offset by the minimum value so they
41*c16e69f7SDinh Nguyen  can be represented as positive integers in the devicetree since it's
42*c16e69f7SDinh Nguyen  difficult to represent a negative number in the devictree.
43*c16e69f7SDinh Nguyen
44*c16e69f7SDinh Nguyen  The following 5-bit values table apply to rxc-skew-ps and txc-skew-ps.
45*c16e69f7SDinh Nguyen
46*c16e69f7SDinh Nguyen  Pad Skew Value	Delay (ps)	Devicetree Value
47*c16e69f7SDinh Nguyen  ------------------------------------------------------
48*c16e69f7SDinh Nguyen  0_0000		-900ps		0
49*c16e69f7SDinh Nguyen  0_0001		-840ps		60
50*c16e69f7SDinh Nguyen  0_0010		-780ps		120
51*c16e69f7SDinh Nguyen  0_0011		-720ps		180
52*c16e69f7SDinh Nguyen  0_0100		-660ps		240
53*c16e69f7SDinh Nguyen  0_0101		-600ps		300
54*c16e69f7SDinh Nguyen  0_0110		-540ps		360
55*c16e69f7SDinh Nguyen  0_0111		-480ps		420
56*c16e69f7SDinh Nguyen  0_1000		-420ps		480
57*c16e69f7SDinh Nguyen  0_1001		-360ps		540
58*c16e69f7SDinh Nguyen  0_1010		-300ps		600
59*c16e69f7SDinh Nguyen  0_1011		-240ps		660
60*c16e69f7SDinh Nguyen  0_1100		-180ps		720
61*c16e69f7SDinh Nguyen  0_1101		-120ps		780
62*c16e69f7SDinh Nguyen  0_1110		-60ps		840
63*c16e69f7SDinh Nguyen  0_1111		0ps		900
64*c16e69f7SDinh Nguyen  1_0000		60ps		960
65*c16e69f7SDinh Nguyen  1_0001		120ps		1020
66*c16e69f7SDinh Nguyen  1_0010		180ps		1080
67*c16e69f7SDinh Nguyen  1_0011		240ps		1140
68*c16e69f7SDinh Nguyen  1_0100		300ps		1200
69*c16e69f7SDinh Nguyen  1_0101		360ps		1260
70*c16e69f7SDinh Nguyen  1_0110		420ps		1320
71*c16e69f7SDinh Nguyen  1_0111		480ps		1380
72*c16e69f7SDinh Nguyen  1_1000		540ps		1440
73*c16e69f7SDinh Nguyen  1_1001		600ps		1500
74*c16e69f7SDinh Nguyen  1_1010		660ps		1560
75*c16e69f7SDinh Nguyen  1_1011		720ps		1620
76*c16e69f7SDinh Nguyen  1_1100		780ps		1680
77*c16e69f7SDinh Nguyen  1_1101		840ps		1740
78*c16e69f7SDinh Nguyen  1_1110		900ps		1800
79*c16e69f7SDinh Nguyen  1_1111		960ps		1860
80*c16e69f7SDinh Nguyen
81*c16e69f7SDinh Nguyen  The following 4-bit values table apply to the txdX-skew-ps, rxdX-skew-ps
82*c16e69f7SDinh Nguyen  data pads, and the rxdv-skew-ps, txen-skew-ps control pads.
83*c16e69f7SDinh Nguyen
84*c16e69f7SDinh Nguyen  Pad Skew Value	Delay (ps)	Devicetree Value
85*c16e69f7SDinh Nguyen  ------------------------------------------------------
86*c16e69f7SDinh Nguyen  0000			-420ps		0
87*c16e69f7SDinh Nguyen  0001			-360ps		60
88*c16e69f7SDinh Nguyen  0010			-300ps		120
89*c16e69f7SDinh Nguyen  0011			-240ps		180
90*c16e69f7SDinh Nguyen  0100			-180ps		240
91*c16e69f7SDinh Nguyen  0101			-120ps		300
92*c16e69f7SDinh Nguyen  0110			-60ps		360
93*c16e69f7SDinh Nguyen  0111			0ps		420
94*c16e69f7SDinh Nguyen  1000			60ps		480
95*c16e69f7SDinh Nguyen  1001			120ps		540
96*c16e69f7SDinh Nguyen  1010			180ps		600
97*c16e69f7SDinh Nguyen  1011			240ps		660
98*c16e69f7SDinh Nguyen  1100			300ps		720
99*c16e69f7SDinh Nguyen  1101			360ps		780
100*c16e69f7SDinh Nguyen  1110			420ps		840
101*c16e69f7SDinh Nguyen  1111			480ps		900
102*c16e69f7SDinh Nguyen
103*c16e69f7SDinh Nguyen  Optional properties:
104*c16e69f7SDinh Nguyen
105*c16e69f7SDinh Nguyen    Maximum value of 1860:
106*c16e69f7SDinh Nguyen
107*c16e69f7SDinh Nguyen      - rxc-skew-ps : Skew control of RX clock pad
108*c16e69f7SDinh Nguyen      - txc-skew-ps : Skew control of TX clock pad
109*c16e69f7SDinh Nguyen
110*c16e69f7SDinh Nguyen    Maximum value of 900:
111*c16e69f7SDinh Nguyen
112*c16e69f7SDinh Nguyen      - rxdv-skew-ps : Skew control of RX CTL pad
113*c16e69f7SDinh Nguyen      - txen-skew-ps : Skew control of TX CTL pad
114*c16e69f7SDinh Nguyen      - rxd0-skew-ps : Skew control of RX data 0 pad
115*c16e69f7SDinh Nguyen      - rxd1-skew-ps : Skew control of RX data 1 pad
116*c16e69f7SDinh Nguyen      - rxd2-skew-ps : Skew control of RX data 2 pad
117*c16e69f7SDinh Nguyen      - rxd3-skew-ps : Skew control of RX data 3 pad
118*c16e69f7SDinh Nguyen      - txd0-skew-ps : Skew control of TX data 0 pad
119*c16e69f7SDinh Nguyen      - txd1-skew-ps : Skew control of TX data 1 pad
120*c16e69f7SDinh Nguyen      - txd2-skew-ps : Skew control of TX data 2 pad
121*c16e69f7SDinh Nguyen      - txd3-skew-ps : Skew control of TX data 3 pad
122*c16e69f7SDinh Nguyen
123*c16e69f7SDinh NguyenExamples:
124*c16e69f7SDinh Nguyen
125*c16e69f7SDinh Nguyen	/* Attach to an Ethernet device with autodetected PHY */
126*c16e69f7SDinh Nguyen	&enet {
127*c16e69f7SDinh Nguyen		rxc-skew-ps = <1800>;
128*c16e69f7SDinh Nguyen		rxdv-skew-ps = <0>;
129*c16e69f7SDinh Nguyen		txc-skew-ps = <1800>;
130*c16e69f7SDinh Nguyen		txen-skew-ps = <0>;
131*c16e69f7SDinh Nguyen		status = "okay";
132*c16e69f7SDinh Nguyen	};
133*c16e69f7SDinh Nguyen
134*c16e69f7SDinh Nguyen	/* Attach to an explicitly-specified PHY */
135*c16e69f7SDinh Nguyen	mdio {
136*c16e69f7SDinh Nguyen		phy0: ethernet-phy@0 {
137*c16e69f7SDinh Nguyen			rxc-skew-ps = <1800>;
138*c16e69f7SDinh Nguyen			rxdv-skew-ps = <0>;
139*c16e69f7SDinh Nguyen			txc-skew-ps = <1800>;
140*c16e69f7SDinh Nguyen			txen-skew-ps = <0>;
141*c16e69f7SDinh Nguyen			reg = <0>;
142*c16e69f7SDinh Nguyen		};
143*c16e69f7SDinh Nguyen	};
144*c16e69f7SDinh Nguyen	ethernet@70000 {
145*c16e69f7SDinh Nguyen		status = "okay";
146*c16e69f7SDinh Nguyen		phy = <&phy0>;
147*c16e69f7SDinh Nguyen		phy-mode = "rgmii-id";
148*c16e69f7SDinh Nguyen	};
149*c16e69f7SDinh Nguyen
150*c16e69f7SDinh NguyenReferences
151*c16e69f7SDinh Nguyen
152*c16e69f7SDinh Nguyen  Micrel ksz9021rl/rn Data Sheet, Revision 1.2. Dated 2/13/2014.
153*c16e69f7SDinh Nguyen  http://www.micrel.com/_PDF/Ethernet/datasheets/ksz9021rl-rn_ds.pdf
154*c16e69f7SDinh Nguyen
155*c16e69f7SDinh Nguyen  Micrel ksz9031rnx Data Sheet, Revision 2.1. Dated 11/20/2014.
156*c16e69f7SDinh Nguyen  http://www.micrel.com/_PDF/Ethernet/datasheets/KSZ9031RNX.pdf
157*c16e69f7SDinh Nguyen
158*c16e69f7SDinh NguyenNotes:
159*c16e69f7SDinh Nguyen
160*c16e69f7SDinh Nguyen  Note that a previous version of the Micrel ksz9021rl/rn Data Sheet
161*c16e69f7SDinh Nguyen  was missing extended register 106 (transmit data pad skews), and
162*c16e69f7SDinh Nguyen  incorrectly specified the ps per step as 200ps/step instead of
163*c16e69f7SDinh Nguyen  120ps/step. The latest update to this document reflects the latest
164*c16e69f7SDinh Nguyen  revision of the Micrel specification even though usage in the kernel
165*c16e69f7SDinh Nguyen  still reflects that incorrect document.
166