netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* net: micrel: confusion about phyids used in driver
@ 2019-05-09 20:29 Uwe Kleine-König
  2019-05-09 20:55 ` Heiner Kallweit
  0 siblings, 1 reply; 15+ messages in thread
From: Uwe Kleine-König @ 2019-05-09 20:29 UTC (permalink / raw)
  To: Andrew Lunn, Florian Fainelli, Heiner Kallweit, Yuiko Oshino
  Cc: netdev, kernel

Hello,

I have a board here that has a KSZ8051MLL (datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/ksz8051mll.pdf, phyid:
0x0022155x) assembled. The actual phyid is 0x00221556.

When enabling the micrel driver it successfully binds and claims to have
detected a "Micrel KSZ8031" because phyid & 0x00ffffff ==
PHY_ID_KSZ8031 (with PHY_ID_KSZ8031 = 0x00221556). I found a datasheet
for KSZ8021RNL and KSZ8031RNL in our collection, there the phyid is
documented as 0x0022155x, too. (So there is a deviation between driver
and data sheet.)

A difference between these two parts are register bits 0x16.9 and
0x1f.7. (I didn't check systematically and there are definitely more
differences, for example 0x16.7 which isn't handled at all in the
driver.)

The driver does the right thing with KSZ8051MLL for bit 0x16.9 (which is
setting a reserved bit on KSZ8021RNL/KSZ8031RNL) and for 0x1f.7 it's the
other way round.

To make the situation still more interesting there is another phy entry
"Micrel KSZ8051" that has .phy_id = 0x00221550 and .phy_id_mask =
0x00fffff0, which just judging from the name would be the better match.
(This isn't used however because even though it matches "Micrel KSZ8031"
is listed before and so is preferred.) With this the handling of the
register bit 0x16.9 isn't right for the KSZ8051MLL. (I think it would if
ksz8051_type had .has_broadcast_disable = true.)

I'm unclear what the right approach is to fix this muddle, maybe someone
with more insight in the driver and maybe also in possession of more
data sheets and hardware can tell?

My impression is that it is not possible to determine all features by
just using the phyid. Would it be sensible to not difference between
KSZ8031 and KSZ8051 and assume that writing to a reserved register bit
does nothing?

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2019-10-16 11:45 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-09 20:29 net: micrel: confusion about phyids used in driver Uwe Kleine-König
2019-05-09 20:55 ` Heiner Kallweit
2019-05-09 21:07   ` Andrew Lunn
2019-05-10  7:22     ` Uwe Kleine-König
2019-07-02 20:31       ` Uwe Kleine-König
2019-07-02 20:55         ` Yuiko.Oshino
2019-08-08  8:36           ` Uwe Kleine-König
2019-08-20 20:25             ` Uwe Kleine-König
2019-08-20 20:30               ` Heiner Kallweit
2019-08-21 17:24               ` Florian Fainelli
2019-08-21 18:49                 ` allan.nielsen
2019-08-21 19:53                   ` Woojung.Huh
2019-10-16  9:09                     ` Uwe Kleine-König
2019-10-16 11:45                       ` Yuiko.Oshino
2019-05-11 14:00     ` Heiner Kallweit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).