1Micrel 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. 166