blob: 2681168777a1ed01bcc6fa06284ec442afe61818 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001Micrel KSZ9021/KSZ9031/KSZ9131 Gigabit Ethernet PHY
2
3Some boards require special tuning values, particularly when it comes
4to clock delays. You can specify clock delay values in the PHY OF
5device node. Deprecated, but still supported, these properties can
6also be added to an Ethernet OF device node.
7
8Note that these settings are applied after any phy-specific fixup from
9phy_fixup_list (see phy_init_hw() from drivers/net/phy/phy_device.c),
10and therefore may overwrite them.
11
12KSZ9021:
13
14 All skew control options are specified in picoseconds. The minimum
15 value is 0, the maximum value is 3000, and it can be specified in 200ps
16 steps, *but* these values are in not fact what you get because this chip's
17 skew values actually increase in 120ps steps, starting from -840ps. The
18 incorrect values came from an error in the original KSZ9021 datasheet
19 before it was corrected in revision 1.2 (Feb 2014), but it is too late to
20 change the driver now because of the many existing device trees that have
21 been created using values that go up in increments of 200.
22
23 The following table shows the actual skew delay you will get for each of the
24 possible devicetree values, and the number that will be programmed into the
25 corresponding pad skew register:
26
27 Device Tree Value Delay Pad Skew Register Value
28 -----------------------------------------------------
29 0 -840ps 0000
30 200 -720ps 0001
31 400 -600ps 0010
32 600 -480ps 0011
33 800 -360ps 0100
34 1000 -240ps 0101
35 1200 -120ps 0110
36 1400 0ps 0111
37 1600 120ps 1000
38 1800 240ps 1001
39 2000 360ps 1010
40 2200 480ps 1011
41 2400 600ps 1100
42 2600 720ps 1101
43 2800 840ps 1110
44 3000 960ps 1111
45
46 Optional properties:
47
48 - rxc-skew-ps : Skew control of RXC pad
49 - rxdv-skew-ps : Skew control of RX CTL pad
50 - txc-skew-ps : Skew control of TXC pad
51 - txen-skew-ps : Skew control of TX CTL pad
52 - rxd0-skew-ps : Skew control of RX data 0 pad
53 - rxd1-skew-ps : Skew control of RX data 1 pad
54 - rxd2-skew-ps : Skew control of RX data 2 pad
55 - rxd3-skew-ps : Skew control of RX data 3 pad
56 - txd0-skew-ps : Skew control of TX data 0 pad
57 - txd1-skew-ps : Skew control of TX data 1 pad
58 - txd2-skew-ps : Skew control of TX data 2 pad
59 - txd3-skew-ps : Skew control of TX data 3 pad
60
61KSZ9031:
62
63 All skew control options are specified in picoseconds. The minimum
64 value is 0, and the maximum is property-dependent. The increment
65 step is 60ps. The default value is the neutral setting, so setting
66 rxc-skew-ps=<0> actually results in -900 picoseconds adjustment.
67
68 The KSZ9031 hardware supports a range of skew values from negative to
69 positive, where the specific range is property dependent. All values
70 specified in the devicetree are offset by the minimum value so they
71 can be represented as positive integers in the devicetree since it's
72 difficult to represent a negative number in the devictree.
73
74 The following 5-bit values table apply to rxc-skew-ps and txc-skew-ps.
75
76 Pad Skew Value Delay (ps) Devicetree Value
77 ------------------------------------------------------
78 0_0000 -900ps 0
79 0_0001 -840ps 60
80 0_0010 -780ps 120
81 0_0011 -720ps 180
82 0_0100 -660ps 240
83 0_0101 -600ps 300
84 0_0110 -540ps 360
85 0_0111 -480ps 420
86 0_1000 -420ps 480
87 0_1001 -360ps 540
88 0_1010 -300ps 600
89 0_1011 -240ps 660
90 0_1100 -180ps 720
91 0_1101 -120ps 780
92 0_1110 -60ps 840
93 0_1111 0ps 900
94 1_0000 60ps 960
95 1_0001 120ps 1020
96 1_0010 180ps 1080
97 1_0011 240ps 1140
98 1_0100 300ps 1200
99 1_0101 360ps 1260
100 1_0110 420ps 1320
101 1_0111 480ps 1380
102 1_1000 540ps 1440
103 1_1001 600ps 1500
104 1_1010 660ps 1560
105 1_1011 720ps 1620
106 1_1100 780ps 1680
107 1_1101 840ps 1740
108 1_1110 900ps 1800
109 1_1111 960ps 1860
110
111 The following 4-bit values table apply to the txdX-skew-ps, rxdX-skew-ps
112 data pads, and the rxdv-skew-ps, txen-skew-ps control pads.
113
114 Pad Skew Value Delay (ps) Devicetree Value
115 ------------------------------------------------------
116 0000 -420ps 0
117 0001 -360ps 60
118 0010 -300ps 120
119 0011 -240ps 180
120 0100 -180ps 240
121 0101 -120ps 300
122 0110 -60ps 360
123 0111 0ps 420
124 1000 60ps 480
125 1001 120ps 540
126 1010 180ps 600
127 1011 240ps 660
128 1100 300ps 720
129 1101 360ps 780
130 1110 420ps 840
131 1111 480ps 900
132
133 Optional properties:
134
135 Maximum value of 1860, default value 900:
136
137 - rxc-skew-ps : Skew control of RX clock pad
138 - txc-skew-ps : Skew control of TX clock pad
139
140 Maximum value of 900, default value 420:
141
142 - rxdv-skew-ps : Skew control of RX CTL pad
143 - txen-skew-ps : Skew control of TX CTL pad
144 - rxd0-skew-ps : Skew control of RX data 0 pad
145 - rxd1-skew-ps : Skew control of RX data 1 pad
146 - rxd2-skew-ps : Skew control of RX data 2 pad
147 - rxd3-skew-ps : Skew control of RX data 3 pad
148 - txd0-skew-ps : Skew control of TX data 0 pad
149 - txd1-skew-ps : Skew control of TX data 1 pad
150 - txd2-skew-ps : Skew control of TX data 2 pad
151 - txd3-skew-ps : Skew control of TX data 3 pad
152
153 - micrel,force-master:
154 Boolean, force phy to master mode. Only set this option if the phy
155 reference clock provided at CLK125_NDO pin is used as MAC reference
156 clock because the clock jitter in slave mode is to high (errata#2).
157 Attention: The link partner must be configurable as slave otherwise
158 no link will be established.
159
160KSZ9131:
161LAN8841:
162
163 All skew control options are specified in picoseconds. The increment
164 step is 100ps. Unlike KSZ9031, the values represent picoseccond delays.
165 A negative value can be assigned as rxc-skew-psec = <(-100)>;.
166
167 Optional properties:
168
169 Range of the value -700 to 2400, default value 0:
170
171 - rxc-skew-psec : Skew control of RX clock pad
172 - txc-skew-psec : Skew control of TX clock pad
173
174 Range of the value -700 to 800, default value 0:
175
176 - rxdv-skew-psec : Skew control of RX CTL pad
177 - txen-skew-psec : Skew control of TX CTL pad
178 - rxd0-skew-psec : Skew control of RX data 0 pad
179 - rxd1-skew-psec : Skew control of RX data 1 pad
180 - rxd2-skew-psec : Skew control of RX data 2 pad
181 - rxd3-skew-psec : Skew control of RX data 3 pad
182 - txd0-skew-psec : Skew control of TX data 0 pad
183 - txd1-skew-psec : Skew control of TX data 1 pad
184 - txd2-skew-psec : Skew control of TX data 2 pad
185 - txd3-skew-psec : Skew control of TX data 3 pad
186
187Examples:
188
189 /* Attach to an Ethernet device with autodetected PHY */
190 &enet {
191 rxc-skew-ps = <1800>;
192 rxdv-skew-ps = <0>;
193 txc-skew-ps = <1800>;
194 txen-skew-ps = <0>;
195 status = "okay";
196 };
197
198 /* Attach to an explicitly-specified PHY */
199 mdio {
200 phy0: ethernet-phy@0 {
201 rxc-skew-ps = <1800>;
202 rxdv-skew-ps = <0>;
203 txc-skew-ps = <1800>;
204 txen-skew-ps = <0>;
205 reg = <0>;
206 };
207 };
208 ethernet@70000 {
209 phy = <&phy0>;
210 phy-mode = "rgmii-id";
211 };
212
213References
214
215 Micrel ksz9021rl/rn Data Sheet, Revision 1.2. Dated 2/13/2014.
216 http://www.micrel.com/_PDF/Ethernet/datasheets/ksz9021rl-rn_ds.pdf
217
218 Micrel ksz9031rnx Data Sheet, Revision 2.1. Dated 11/20/2014.
219 http://www.micrel.com/_PDF/Ethernet/datasheets/KSZ9031RNX.pdf
220
221Notes:
222
223 Note that a previous version of the Micrel ksz9021rl/rn Data Sheet
224 was missing extended register 106 (transmit data pad skews), and
225 incorrectly specified the ps per step as 200ps/step instead of
226 120ps/step. The latest update to this document reflects the latest
227 revision of the Micrel specification even though usage in the kernel
228 still reflects that incorrect document.