diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-05-30 14:45:06 +0200 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-05-30 14:45:06 +0200 | 
| commit | a19b0dd62d7b8efc658fa1aa685ff5665878f3ee (patch) | |
| tree | 1fadf0fb3da83203ba28f209ec99e1b33e03f4d5 /drivers/net/phy/teranetics.c | |
| parent | 60985bba58e7695dac1fddae8cdbb62d8cfd1254 (diff) | |
| parent | a71d45d706a5b51c348160163b6c159632273fed (diff) | |
| download | olio-uboot-2014.01-a19b0dd62d7b8efc658fa1aa685ff5665878f3ee.tar.xz olio-uboot-2014.01-a19b0dd62d7b8efc658fa1aa685ff5665878f3ee.zip | |
Merge branch 'u-boot/master' into 'u-boot-arm/master'
Conflicts:
	common/cmd_fpga.c
	drivers/usb/host/ohci-at91.c
Diffstat (limited to 'drivers/net/phy/teranetics.c')
| -rw-r--r-- | drivers/net/phy/teranetics.c | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/drivers/net/phy/teranetics.c b/drivers/net/phy/teranetics.c index 78447b711..84ce7362f 100644 --- a/drivers/net/phy/teranetics.c +++ b/drivers/net/phy/teranetics.c @@ -34,9 +34,21 @@ int tn2020_config(struct phy_device *phydev)  		unsigned short restart_an = (MDIO_AN_CTRL1_RESTART |  						MDIO_AN_CTRL1_ENABLE |  						MDIO_AN_CTRL1_XNP); +		u8 phy_hwversion; -		phy_write(phydev, 30, 93, 2); -		phy_write(phydev, MDIO_MMD_AN, MDIO_CTRL1, restart_an); +		/* +		 * bit 15:12 of register 30.32 indicates PHY hardware +		 * version. It can be used to distinguish TN80xx from +		 * TN2020. TN2020 needs write 0x2 to 30.93, but TN80xx +		 * needs 0x1. +		 */ +		phy_hwversion = (phy_read(phydev, 30, 32) >> 12) & 0xf; +		if (phy_hwversion <= 3) { +			phy_write(phydev, 30, 93, 2); +			phy_write(phydev, MDIO_MMD_AN, MDIO_CTRL1, restart_an); +		} else { +			phy_write(phydev, 30, 93, 1); +		}  	}  	return 0; |