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