net: dsa: mv88e6131: add registers access
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Mon, 9 May 2016 17:22:45 +0000 (13:22 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 May 2016 18:26:10 +0000 (14:26 -0400)
Only 6131 was not supporting the port registers access yet. Assume such
support and use the unlock access routines in the meantime.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6131.c
drivers/net/dsa/mv88e6xxx.c

index 432d3c4..3fb06af 100644 (file)
@@ -157,6 +157,8 @@ struct dsa_switch_driver mv88e6131_switch_driver = {
        .get_sset_count         = mv88e6xxx_get_sset_count,
        .get_eeprom             = mv88e6xxx_get_eeprom,
        .set_eeprom             = mv88e6xxx_set_eeprom,
+       .get_regs_len           = mv88e6xxx_get_regs_len,
+       .get_regs               = mv88e6xxx_get_regs,
 #ifdef CONFIG_NET_DSA_HWMON
        .get_temp               = mv88e6xxx_get_temp,
        .get_temp_limit         = mv88e6xxx_get_temp_limit,
index 6aac58b..c28ad83 100644 (file)
@@ -787,13 +787,17 @@ void mv88e6xxx_get_regs(struct dsa_switch *ds, int port,
 
        memset(p, 0xff, 32 * sizeof(u16));
 
+       mutex_lock(&ps->smi_mutex);
+
        for (i = 0; i < 32; i++) {
                int ret;
 
-               ret = mv88e6xxx_reg_read(ps, REG_PORT(port), i);
+               ret = _mv88e6xxx_reg_read(ps, REG_PORT(port), i);
                if (ret >= 0)
                        p[i] = ret;
        }
+
+       mutex_unlock(&ps->smi_mutex);
 }
 
 static int _mv88e6xxx_wait(struct mv88e6xxx_priv_state *ps, int reg, int offset,