166 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 | 
						|
 | 
						|
  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.
 |