net: dsa: change FDB routines prototypes
[firefly-linux-kernel-4.4.55.git] / drivers / net / dsa / mv88e6352.c
index 632815c10a401f7bd873e077a262528b73ceed7d..a18f7c83d4cb25ca45f1b5878804e54fe87c7dc6 100644 (file)
@@ -36,6 +36,18 @@ static char *mv88e6352_probe(struct device *host_dev, int sw_addr)
                        return "Marvell 88E6172";
                if ((ret & 0xfff0) == PORT_SWITCH_ID_6176)
                        return "Marvell 88E6176";
+               if (ret == PORT_SWITCH_ID_6320_A1)
+                       return "Marvell 88E6320 (A1)";
+               if (ret == PORT_SWITCH_ID_6320_A2)
+                       return "Marvell 88e6320 (A2)";
+               if ((ret & 0xfff0) == PORT_SWITCH_ID_6320)
+                       return "Marvell 88E6320";
+               if (ret == PORT_SWITCH_ID_6321_A1)
+                       return "Marvell 88E6321 (A1)";
+               if (ret == PORT_SWITCH_ID_6321_A2)
+                       return "Marvell 88e6321 (A2)";
+               if ((ret & 0xfff0) == PORT_SWITCH_ID_6321)
+                       return "Marvell 88E6321";
                if (ret == PORT_SWITCH_ID_6352_A0)
                        return "Marvell 88E6352 (A0)";
                if (ret == PORT_SWITCH_ID_6352_A1)
@@ -80,66 +92,6 @@ static int mv88e6352_setup_global(struct dsa_switch *ds)
        return 0;
 }
 
-#ifdef CONFIG_NET_DSA_HWMON
-
-static int mv88e6352_get_temp(struct dsa_switch *ds, int *temp)
-{
-       int ret;
-
-       *temp = 0;
-
-       ret = mv88e6xxx_phy_page_read(ds, 0, 6, 27);
-       if (ret < 0)
-               return ret;
-
-       *temp = (ret & 0xff) - 25;
-
-       return 0;
-}
-
-static int mv88e6352_get_temp_limit(struct dsa_switch *ds, int *temp)
-{
-       int ret;
-
-       *temp = 0;
-
-       ret = mv88e6xxx_phy_page_read(ds, 0, 6, 26);
-       if (ret < 0)
-               return ret;
-
-       *temp = (((ret >> 8) & 0x1f) * 5) - 25;
-
-       return 0;
-}
-
-static int mv88e6352_set_temp_limit(struct dsa_switch *ds, int temp)
-{
-       int ret;
-
-       ret = mv88e6xxx_phy_page_read(ds, 0, 6, 26);
-       if (ret < 0)
-               return ret;
-       temp = clamp_val(DIV_ROUND_CLOSEST(temp, 5) + 5, 0, 0x1f);
-       return mv88e6xxx_phy_page_write(ds, 0, 6, 26,
-                                       (ret & 0xe0ff) | (temp << 8));
-}
-
-static int mv88e6352_get_temp_alarm(struct dsa_switch *ds, bool *alarm)
-{
-       int ret;
-
-       *alarm = false;
-
-       ret = mv88e6xxx_phy_page_read(ds, 0, 6, 26);
-       if (ret < 0)
-               return ret;
-
-       *alarm = !!(ret & 0x40);
-
-       return 0;
-}
-#endif /* CONFIG_NET_DSA_HWMON */
-
 static int mv88e6352_setup(struct dsa_switch *ds)
 {
        struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
@@ -171,8 +123,9 @@ static int mv88e6352_read_eeprom_word(struct dsa_switch *ds, int addr)
 
        mutex_lock(&ps->eeprom_mutex);
 
-       ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, 0x14,
-                                 0xc000 | (addr & 0xff));
+       ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_EEPROM_OP,
+                                 GLOBAL2_EEPROM_OP_READ |
+                                 (addr & GLOBAL2_EEPROM_OP_ADDR_MASK));
        if (ret < 0)
                goto error;
 
@@ -180,7 +133,7 @@ static int mv88e6352_read_eeprom_word(struct dsa_switch *ds, int addr)
        if (ret < 0)
                goto error;
 
-       ret = mv88e6xxx_reg_read(ds, REG_GLOBAL2, 0x15);
+       ret = mv88e6xxx_reg_read(ds, REG_GLOBAL2, GLOBAL2_EEPROM_DATA);
 error:
        mutex_unlock(&ps->eeprom_mutex);
        return ret;
@@ -253,11 +206,11 @@ static int mv88e6352_eeprom_is_readonly(struct dsa_switch *ds)
 {
        int ret;
 
-       ret = mv88e6xxx_reg_read(ds, REG_GLOBAL2, 0x14);
+       ret = mv88e6xxx_reg_read(ds, REG_GLOBAL2, GLOBAL2_EEPROM_OP);
        if (ret < 0)
                return ret;
 
-       if (!(ret & 0x0400))
+       if (!(ret & GLOBAL2_EEPROM_OP_WRITE_EN))
                return -EROFS;
 
        return 0;
@@ -271,12 +224,13 @@ static int mv88e6352_write_eeprom_word(struct dsa_switch *ds, int addr,
 
        mutex_lock(&ps->eeprom_mutex);
 
-       ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, 0x15, data);
+       ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_EEPROM_DATA, data);
        if (ret < 0)
                goto error;
 
-       ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, 0x14,
-                                 0xb000 | (addr & 0xff));
+       ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_EEPROM_OP,
+                                 GLOBAL2_EEPROM_OP_WRITE |
+                                 (addr & GLOBAL2_EEPROM_OP_ADDR_MASK));
        if (ret < 0)
                goto error;
 
@@ -377,10 +331,10 @@ struct dsa_switch_driver mv88e6352_switch_driver = {
        .set_eee                = mv88e6xxx_set_eee,
        .get_eee                = mv88e6xxx_get_eee,
 #ifdef CONFIG_NET_DSA_HWMON
-       .get_temp               = mv88e6352_get_temp,
-       .get_temp_limit         = mv88e6352_get_temp_limit,
-       .set_temp_limit         = mv88e6352_set_temp_limit,
-       .get_temp_alarm         = mv88e6352_get_temp_alarm,
+       .get_temp               = mv88e6xxx_get_temp,
+       .get_temp_limit         = mv88e6xxx_get_temp_limit,
+       .set_temp_limit         = mv88e6xxx_set_temp_limit,
+       .get_temp_alarm         = mv88e6xxx_get_temp_alarm,
 #endif
        .get_eeprom             = mv88e6352_get_eeprom,
        .set_eeprom             = mv88e6352_set_eeprom,
@@ -389,10 +343,13 @@ struct dsa_switch_driver mv88e6352_switch_driver = {
        .port_join_bridge       = mv88e6xxx_join_bridge,
        .port_leave_bridge      = mv88e6xxx_leave_bridge,
        .port_stp_update        = mv88e6xxx_port_stp_update,
-       .fdb_add                = mv88e6xxx_port_fdb_add,
-       .fdb_del                = mv88e6xxx_port_fdb_del,
-       .fdb_getnext            = mv88e6xxx_port_fdb_getnext,
+       .port_fdb_add           = mv88e6xxx_port_fdb_add,
+       .port_fdb_del           = mv88e6xxx_port_fdb_del,
+       .port_fdb_getnext       = mv88e6xxx_port_fdb_getnext,
 };
 
-MODULE_ALIAS("platform:mv88e6352");
 MODULE_ALIAS("platform:mv88e6172");
+MODULE_ALIAS("platform:mv88e6176");
+MODULE_ALIAS("platform:mv88e6320");
+MODULE_ALIAS("platform:mv88e6321");
+MODULE_ALIAS("platform:mv88e6352");