
On 16:34 Sat 10 Nov , Michael Schwingen wrote:
Hi,
the following patch adds support for an ethernet switch that is connected to the MII port. In that case, there is no PHY with which auto-negotiation can be done, and the MII port always runs in full-duplex 100MBit/s mode.
Signed-off-by: Michael Schwingen michael@schwingen.org
diff --git a/cpu/ixp/npe/npe.c b/cpu/ixp/npe/npe.c index 7e4af44..88d0183 100644 --- a/cpu/ixp/npe/npe.c +++ b/cpu/ixp/npe/npe.c @@ -361,6 +361,10 @@ static int npe_init(struct eth_device *dev, bd_t * bis)
debug("%s: 1\n", __FUNCTION__);
+#ifdef CONFIG_MII_ETHSWITCH
- speed = _100BASET;
- duplex = FULL;
+#else miiphy_read (dev->name, p_npe->phy_no, PHY_BMSR, ®_short);
/* @@ -396,6 +400,7 @@ static int npe_init(struct eth_device *dev, bd_t * bis) printf ("ENET Speed is %d Mbps - %s duplex connection\n", (int) speed, (duplex == HALF) ? "HALF" : "FULL"); } +#endif
npe_alloc_end = npe_alloc_pool + sizeof(npe_alloc_pool); npe_alloc_free = (u8 *)(((unsigned)npe_alloc_pool +
Hi,
If you have a switch between your phy and your cpu the speed and the duplex must be specified by the phy driver.
The best way is to add a function that request the phy status and do not wait the phy autonegociation like done in the kernel by read_status callback and it's implementation genphy_read_status.
Best Regards, J.