Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] PPC 4xx EMAC driver: fix VSC8201 PHY initialization

* MII registers must override strap pins
* disable "echo" mode to make 10/HDX work (Franz Sirl)

Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

authored by

Eugene Surovegin and committed by
Jeff Garzik
86e7fe70 1b195916

+12
+12
drivers/net/ibm_emac/ibm_emac_phy.c
··· 236 236 }; 237 237 238 238 /* CIS8201 */ 239 + #define MII_CIS8201_10BTCSR 0x16 240 + #define TENBTCSR_ECHO_DISABLE 0x2000 239 241 #define MII_CIS8201_EPCR 0x17 240 242 #define EPCR_MODE_MASK 0x3000 241 243 #define EPCR_GMII_MODE 0x0000 242 244 #define EPCR_RGMII_MODE 0x1000 243 245 #define EPCR_TBI_MODE 0x2000 244 246 #define EPCR_RTBI_MODE 0x3000 247 + #define MII_CIS8201_ACSR 0x1c 248 + #define ACSR_PIN_PRIO_SELECT 0x0004 245 249 246 250 static int cis8201_init(struct mii_phy *phy) 247 251 { ··· 273 269 } 274 270 275 271 phy_write(phy, MII_CIS8201_EPCR, epcr); 272 + 273 + /* MII regs override strap pins */ 274 + phy_write(phy, MII_CIS8201_ACSR, 275 + phy_read(phy, MII_CIS8201_ACSR) | ACSR_PIN_PRIO_SELECT); 276 + 277 + /* Disable TX_EN -> CRS echo mode, otherwise 10/HDX doesn't work */ 278 + phy_write(phy, MII_CIS8201_10BTCSR, 279 + phy_read(phy, MII_CIS8201_10BTCSR) | TENBTCSR_ECHO_DISABLE); 276 280 277 281 return 0; 278 282 }