diff options
author | Jason Gunthorpe <jgunthorpe@obsidianresearch.com> | 2010-03-09 04:17:42 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-17 00:23:42 -0400 |
commit | abf35df21513c51d7761c41fa6d3b819cdf4103e (patch) | |
tree | 3152b04190035149aba67936ef0cff81cc6af3a0 /drivers/net/phy/mdio_bus.c | |
parent | 23606cf5d1192c2b17912cb2ef6e62f9b11de133 (diff) |
NET: Support clause 45 MDIO commands at the MDIO bus level
IEEE 802.3ae clause 45 specifies a somewhat modified MDIO protocol
for use by 10GIGE phys. The main change is a 21 bit address split into
a 5 bit device ID and a 16 bit register offset. The definition is designed
so that normal and extended devices can run on the same MDIO bus.
Extend mdio-bitbang to do the new protocol. At the MDIO bus level the
protocol is requested by or'ing MII_ADDR_C45 into the register offset.
Make phy_read/phy_write/etc pass a full 32 bit register offset.
This does not attempt to make the phy layer support C45 style PHYs, just
to provide the MDIO bus support.
Tested against a Broadcom 10GE phy with ID 0x206034, and several
Broadcom 10/100/1000 Phys in normal mode.
Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/mdio_bus.c')
-rw-r--r-- | drivers/net/phy/mdio_bus.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index e17b70291bbc..6a6b8199a0d6 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c | |||
@@ -208,7 +208,7 @@ EXPORT_SYMBOL(mdiobus_scan); | |||
208 | * because the bus read/write functions may wait for an interrupt | 208 | * because the bus read/write functions may wait for an interrupt |
209 | * to conclude the operation. | 209 | * to conclude the operation. |
210 | */ | 210 | */ |
211 | int mdiobus_read(struct mii_bus *bus, int addr, u16 regnum) | 211 | int mdiobus_read(struct mii_bus *bus, int addr, u32 regnum) |
212 | { | 212 | { |
213 | int retval; | 213 | int retval; |
214 | 214 | ||
@@ -233,7 +233,7 @@ EXPORT_SYMBOL(mdiobus_read); | |||
233 | * because the bus read/write functions may wait for an interrupt | 233 | * because the bus read/write functions may wait for an interrupt |
234 | * to conclude the operation. | 234 | * to conclude the operation. |
235 | */ | 235 | */ |
236 | int mdiobus_write(struct mii_bus *bus, int addr, u16 regnum, u16 val) | 236 | int mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val) |
237 | { | 237 | { |
238 | int err; | 238 | int err; |
239 | 239 | ||