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