
I'm using a 440EP with MII mode selected, and a Broadcom AC101L phy. Autonegotiation was failing, so as an experiment, I tried replacing the start of autonegotiation in 440gx_enet.c, with setting the speed manually. I did a miiphy_write to PHY_BMCR (the control register) with 0x8100 (which should specify 10mbps, full duplex). The miiphy_write returns 0 which means it doesn't think it failed, but when I look at the value in the control register as spit out by miiphy_dump, it is still 0x3000 (which is 100mbps and half-duplex), which is the same value I always see there.
I don't think this is just a U-boot problem because I can duplicate what's happening using just a Abatron BDI2000. When I write a 0x81002400 into the EMAC_STACR register (which should set the control register of the phy to 0x8100), and then write a 0x00001400 into EMAC_STACR (which should request a read of the same register), and then look at the EMAC_STACR register in the debugger, it has the same 0x3000 as I see in U-Boot. It seems likely to me though that if anyone has gotten the 440EP to work with MII in U-Boot, then they might be able to shed some light on what is going wrong for me.
Any advice is appreciated, Miles