Commit fdb838cd authored by Peter Korsgaard's avatar Peter Korsgaard Committed by David S. Miller

dsa/mv88e6060: support nonzero mii base address

The mv88e6060 uses either the lower 16 or upper 16 mii addresses,
depending on the value of the EE_CLK/ADDR4 pin. Support both
configurations by using the sw_addr setting as base address.
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
Acked-by: default avatarLennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c01c6af8
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
static int reg_read(struct dsa_switch *ds, int addr, int reg) static int reg_read(struct dsa_switch *ds, int addr, int reg)
{ {
return mdiobus_read(ds->master_mii_bus, addr, reg); return mdiobus_read(ds->master_mii_bus, ds->pd->sw_addr + addr, reg);
} }
#define REG_READ(addr, reg) \ #define REG_READ(addr, reg) \
...@@ -34,7 +34,8 @@ static int reg_read(struct dsa_switch *ds, int addr, int reg) ...@@ -34,7 +34,8 @@ static int reg_read(struct dsa_switch *ds, int addr, int reg)
static int reg_write(struct dsa_switch *ds, int addr, int reg, u16 val) static int reg_write(struct dsa_switch *ds, int addr, int reg, u16 val)
{ {
return mdiobus_write(ds->master_mii_bus, addr, reg, val); return mdiobus_write(ds->master_mii_bus, ds->pd->sw_addr + addr,
reg, val);
} }
#define REG_WRITE(addr, reg, val) \ #define REG_WRITE(addr, reg, val) \
...@@ -50,7 +51,7 @@ static char *mv88e6060_probe(struct mii_bus *bus, int sw_addr) ...@@ -50,7 +51,7 @@ static char *mv88e6060_probe(struct mii_bus *bus, int sw_addr)
{ {
int ret; int ret;
ret = mdiobus_read(bus, REG_PORT(0), 0x03); ret = mdiobus_read(bus, sw_addr + REG_PORT(0), 0x03);
if (ret >= 0) { if (ret >= 0) {
ret &= 0xfff0; ret &= 0xfff0;
if (ret == 0x0600) if (ret == 0x0600)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment