Micrel KSZ9021/KSZ9031 Gigabit Ethernet PHY

Some boards require special tuning values, particularly when it comes to
clock delays. You can specify clock delay values by adding
micrel-specific properties to an Ethernet OF device node.

Note that these settings are applied after any phy-specific fixup from
phy_fixup_list (see phy_init_hw() from drivers/net/phy/phy_device.c),
and therefore may overwrite them.

KSZ9021:

  All skew control options are specified in picoseconds. The minimum
  value is 0, the maximum value is 1800, and it is incremented by 120ps
  steps.

  The KSZ9021 hardware supports a range of skew values from negative to
  positive, where the specific range is property dependent. All values
  specified in the devicetree are offset by the minimum value so they
  can be represented as positive integers in the devicetree since it's
  difficult to represent a negative number in the devictree.

  The following 4-bit values table applies to all the skew properties:

  Pad Skew Value	Delay (ps)	Devicetree Value
  ------------------------------------------------------
  0000			-840ps		0
  0001			-720ps		120
  0010			-600ps		240
  0011			-480ps		360
  0100			-360ps		480
  0101			-240ps		600
  0110			-120ps		720
  0111			0ps		840
  1000			120ps		960
  1001			240ps		1080
  1010			360ps		1200
  1011			480ps		1320
  1100			600ps		1440
  1101			720ps		1560
  1110			840ps		1680
  1111			960ps		1800

  Optional properties:

    - rxc-skew-ps : Skew control of RXC pad
    - rxdv-skew-ps : Skew control of RX CTL pad
    - txc-skew-ps : Skew control of TXC pad
    - txen-skew-ps : Skew control of TX CTL pad
    - rxd0-skew-ps : Skew control of RX data 0 pad
    - rxd1-skew-ps : Skew control of RX data 1 pad
    - rxd2-skew-ps : Skew control of RX data 2 pad
    - rxd3-skew-ps : Skew control of RX data 3 pad
    - txd0-skew-ps : Skew control of TX data 0 pad
    - txd1-skew-ps : Skew control of TX data 1 pad
    - txd2-skew-ps : Skew control of TX data 2 pad
    - txd3-skew-ps : Skew control of TX data 3 pad

KSZ9031:

  All skew control options are specified in picoseconds. The minimum
  value is 0, and the maximum is property-dependent. The increment
  step is 60ps.

  The KSZ9031 hardware supports a range of skew values from negative to
  positive, where the specific range is property dependent. All values
  specified in the devicetree are offset by the minimum value so they
  can be represented as positive integers in the devicetree since it's
  difficult to represent a negative number in the devictree.

  The following 5-bit values table apply to rxc-skew-ps and txc-skew-ps.

  Pad Skew Value	Delay (ps)	Devicetree Value
  ------------------------------------------------------
  0_0000		-900ps		0
  0_0001		-840ps		60
  0_0010		-780ps		120
  0_0011		-720ps		180
  0_0100		-660ps		240
  0_0101		-600ps		300
  0_0110		-540ps		360
  0_0111		-480ps		420
  0_1000		-420ps		480
  0_1001		-360ps		540
  0_1010		-300ps		600
  0_1011		-240ps		660
  0_1100		-180ps		720
  0_1101		-120ps		780
  0_1110		-60ps		840
  0_1111		0ps		900
  1_0000		60ps		960
  1_0001		120ps		1020
  1_0010		180ps		1080
  1_0011		240ps		1140
  1_0100		300ps		1200
  1_0101		360ps		1260
  1_0110		420ps		1320
  1_0111		480ps		1380
  1_1000		540ps		1440
  1_1001		600ps		1500
  1_1010		660ps		1560
  1_1011		720ps		1620
  1_1100		780ps		1680
  1_1101		840ps		1740
  1_1110		900ps		1800
  1_1111		960ps		1860

  The following 4-bit values table apply to the txdX-skew-ps, rxdX-skew-ps
  data pads, and the rxdv-skew-ps, txen-skew-ps control pads.

  Pad Skew Value	Delay (ps)	Devicetree Value
  ------------------------------------------------------
  0000			-420ps		0
  0001			-360ps		60
  0010			-300ps		120
  0011			-240ps		180
  0100			-180ps		240
  0101			-120ps		300
  0110			-60ps		360
  0111			0ps		420
  1000			60ps		480
  1001			120ps		540
  1010			180ps		600
  1011			240ps		660
  1100			300ps		720
  1101			360ps		780
  1110			420ps		840
  1111			480ps		900

  Optional properties:

    Maximum value of 1860:

      - rxc-skew-ps : Skew control of RX clock pad
      - txc-skew-ps : Skew control of TX clock pad

    Maximum value of 900:

      - rxdv-skew-ps : Skew control of RX CTL pad
      - txen-skew-ps : Skew control of TX CTL pad
      - rxd0-skew-ps : Skew control of RX data 0 pad
      - rxd1-skew-ps : Skew control of RX data 1 pad
      - rxd2-skew-ps : Skew control of RX data 2 pad
      - rxd3-skew-ps : Skew control of RX data 3 pad
      - txd0-skew-ps : Skew control of TX data 0 pad
      - txd1-skew-ps : Skew control of TX data 1 pad
      - txd2-skew-ps : Skew control of TX data 2 pad
      - txd3-skew-ps : Skew control of TX data 3 pad

Examples:

	/* Attach to an Ethernet device with autodetected PHY */
	&enet {
		rxc-skew-ps = <1800>;
		rxdv-skew-ps = <0>;
		txc-skew-ps = <1800>;
		txen-skew-ps = <0>;
		status = "okay";
	};

	/* Attach to an explicitly-specified PHY */
	mdio {
		phy0: ethernet-phy@0 {
			rxc-skew-ps = <1800>;
			rxdv-skew-ps = <0>;
			txc-skew-ps = <1800>;
			txen-skew-ps = <0>;
			reg = <0>;
		};
	};
	ethernet@70000 {
		status = "okay";
		phy = <&phy0>;
		phy-mode = "rgmii-id";
	};

References

  Micrel ksz9021rl/rn Data Sheet, Revision 1.2. Dated 2/13/2014.
  http://www.micrel.com/_PDF/Ethernet/datasheets/ksz9021rl-rn_ds.pdf

  Micrel ksz9031rnx Data Sheet, Revision 2.1. Dated 11/20/2014.
  http://www.micrel.com/_PDF/Ethernet/datasheets/KSZ9031RNX.pdf

Notes:

  Note that a previous version of the Micrel ksz9021rl/rn Data Sheet
  was missing extended register 106 (transmit data pad skews), and
  incorrectly specified the ps per step as 200ps/step instead of
  120ps/step. The latest update to this document reflects the latest
  revision of the Micrel specification even though usage in the kernel
  still reflects that incorrect document.
