How to support an Ethernet PHY without ID registers?
Bruce M. Simpson
bms at FreeBSD.org
Sat Oct 11 08:46:41 UTC 2008
Sepherosa Ziehau wrote:
> Are you sure you could read from BMSR? Return invalid value from BMSR
> is the usual cause of miibus attaching/probing failure. For ID1/ID2
> reading, you could just fake some values in npe(4)'s miibus_readreg
> implementation.
>
Thanks for the tip (from you and Pyun). I had to spoof the BMSR read to
get npe(4) to attach just to begin with. For whatever reason the chip
doesn't seem to respond on any of the PHY IDs which the Linux folk are
using (5 and 4 for npe0 (-B) and npe1 (-C) respectively).
I noticed the ucLinux folk needed a similar patch to force driver attach
under Linux w/the IXP:
http://mailman.uclinux.org/pipermail/uclinux-dev/2005-March/031419.html
The switch pretty much disappears after npe(4) attaches, I don't see any
activity lights or link lights at that point. This seems to happen after
any mii register access.
If I frob things to allow rlswitch to attach, by using hints and hacking
if_npe.c, I can get dumps of the PHY register space, but it's all ones,
suggesting that it failed at xScale register level -- that would suggest
the PHY IDs are *wrong*, or something else isn't right.
Pyun also suggested trying to manually take the PHYs out of power-down
mode. I tried that with a code snippet I sent him, but still no dice. I
can't even be sure that the PHYs are being addressed right.
At this point I kind of have to go, whoah, wish I had a logic analyzer
and grabbers! I believe the firmware configures the switch chip in a
certain VLAN configuration which isn't meant to be disrupted, although
Freecom's own SnapGear-based distro apparently does the right thing.
I've looked through all of their GPL materials and cannot find the
driver for the switch.
I suppose one thing I could try is re-flashing the box with the official
Freecom firmware, and using mii-diag to dump out what Linux thinks the
registers are.
thanks
BMS
More information about the freebsd-net
mailing list