[U-Boot-Users] PATCH: add support for MII-connected ethernet switch for IPX42x
bwarren at qstreams.com
Sun Dec 9 01:44:05 CET 2007
Michael Schwingen wrote:
> Jean-Christophe PLAGNIOL-VILLARD wrote:
>> If you have a switch between your phy and your cpu the speed and
>> the duplex must be specified by the phy driver.
> Which PHY driver? The NPE code directly calls miiphy_read to acces
> standard PHY registers, so where does a PHY driver come into play here?
The way that you're doing it is correct - there is no PHY driver, only
access methods. Hopefully this will change soon, but I'm unfortunately
>> 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
> I do not really see how that should work, for multiple reasons:
> - speed/duplex on the MII bus depend on the attached switch and may be
> different from the speed/duplex on any of the PHYs that are attached to
> the switch.
The only thing that matters is the speed/duplexity of the MII bus, which
is fixed. When connected to a switch the link is always up, and the
state of the network port needs to be determined by higher layers, most
likely be a timeout.
> - most switches (Marvell 88E6060 or similar) have multiple downstream
> ports with PHYs - which one should I poll to get useful information?
> Simply waiting for a link on any port will not guarantee that this is
> the port via which the server is connected, so polling anything is
> pretty useless IMHO.
> - there are switches (Marvell 88E6050) that have no MDIO interface -
> they have a fixed MII speed/duplex, and the CPU has no way to know about
> the status of any of the PHYs.
There are others (Broadcom, anyway) that use SPI as control plane. The
bottom line is that for fixed interfaces like this, software needs to
hard-wire the link state, as you've done.
> I am a bit confused - could you please clarify in what direction the
> code should evolve to solve these problems better than my patch does?
Change the CONFIG_MII_ETHSWITCH to CONFIG_FIXED_PHY (as done in Linux)
and I'll be happy. Later on we need to change things to have port-wise
granularity, but we're not there yet.
More information about the U-Boot