net: dsa: mv88e6xxx: Add the mv88e6390 family
With the devices added to the tables, the probe will recognize the switch. This however is not sufficient to make it work properly, other changes are needed because of incompatibilities. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
096eea0ff8
commit
1a3b39ecfe
@@ -3262,6 +3262,36 @@ static const struct mv88e6xxx_ops mv88e6185_ops = {
|
||||
.port_set_speed = mv88e6185_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6190_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6190x_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390x_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6191_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6240_ops = {
|
||||
.get_eeprom = mv88e6xxx_g2_get_eeprom16,
|
||||
.set_eeprom = mv88e6xxx_g2_set_eeprom16,
|
||||
@@ -3274,6 +3304,16 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
|
||||
.port_set_speed = mv88e6352_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6290_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6320_ops = {
|
||||
.get_eeprom = mv88e6xxx_g2_get_eeprom16,
|
||||
.set_eeprom = mv88e6xxx_g2_set_eeprom16,
|
||||
@@ -3328,6 +3368,36 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
|
||||
.port_set_speed = mv88e6352_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6390_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6390x_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390x_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_ops mv88e6391_ops = {
|
||||
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
|
||||
.phy_read = mv88e6xxx_g2_smi_phy_read,
|
||||
.phy_write = mv88e6xxx_g2_smi_phy_write,
|
||||
.port_set_link = mv88e6xxx_port_set_link,
|
||||
.port_set_duplex = mv88e6xxx_port_set_duplex,
|
||||
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
|
||||
.port_set_speed = mv88e6390_port_set_speed,
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
||||
[MV88E6085] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6085,
|
||||
@@ -3483,6 +3553,47 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
||||
.ops = &mv88e6185_ops,
|
||||
},
|
||||
|
||||
[MV88E6190] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6190,
|
||||
.family = MV88E6XXX_FAMILY_6390,
|
||||
.name = "Marvell 88E6190",
|
||||
.num_databases = 4096,
|
||||
.num_ports = 11, /* 10 + Z80 */
|
||||
.port_base_addr = 0x0,
|
||||
.global1_addr = 0x1b,
|
||||
.age_time_coeff = 15000,
|
||||
.g1_irqs = 9,
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6390,
|
||||
.ops = &mv88e6190_ops,
|
||||
},
|
||||
|
||||
[MV88E6190X] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6190X,
|
||||
.family = MV88E6XXX_FAMILY_6390,
|
||||
.name = "Marvell 88E6190X",
|
||||
.num_databases = 4096,
|
||||
.num_ports = 11, /* 10 + Z80 */
|
||||
.port_base_addr = 0x0,
|
||||
.global1_addr = 0x1b,
|
||||
.age_time_coeff = 15000,
|
||||
.g1_irqs = 9,
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6390,
|
||||
.ops = &mv88e6190x_ops,
|
||||
},
|
||||
|
||||
[MV88E6191] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6191,
|
||||
.family = MV88E6XXX_FAMILY_6390,
|
||||
.name = "Marvell 88E6191",
|
||||
.num_databases = 4096,
|
||||
.num_ports = 11, /* 10 + Z80 */
|
||||
.port_base_addr = 0x0,
|
||||
.global1_addr = 0x1b,
|
||||
.age_time_coeff = 15000,
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6390,
|
||||
.ops = &mv88e6391_ops,
|
||||
},
|
||||
|
||||
[MV88E6240] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6240,
|
||||
.family = MV88E6XXX_FAMILY_6352,
|
||||
@@ -3497,6 +3608,20 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
||||
.ops = &mv88e6240_ops,
|
||||
},
|
||||
|
||||
[MV88E6290] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6290,
|
||||
.family = MV88E6XXX_FAMILY_6390,
|
||||
.name = "Marvell 88E6290",
|
||||
.num_databases = 4096,
|
||||
.num_ports = 11, /* 10 + Z80 */
|
||||
.port_base_addr = 0x0,
|
||||
.global1_addr = 0x1b,
|
||||
.age_time_coeff = 15000,
|
||||
.g1_irqs = 9,
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6390,
|
||||
.ops = &mv88e6290_ops,
|
||||
},
|
||||
|
||||
[MV88E6320] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6320,
|
||||
.family = MV88E6XXX_FAMILY_6320,
|
||||
@@ -3566,6 +3691,32 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6352,
|
||||
.ops = &mv88e6352_ops,
|
||||
},
|
||||
[MV88E6390] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6390,
|
||||
.family = MV88E6XXX_FAMILY_6390,
|
||||
.name = "Marvell 88E6390",
|
||||
.num_databases = 4096,
|
||||
.num_ports = 11, /* 10 + Z80 */
|
||||
.port_base_addr = 0x0,
|
||||
.global1_addr = 0x1b,
|
||||
.age_time_coeff = 15000,
|
||||
.g1_irqs = 9,
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6390,
|
||||
.ops = &mv88e6390_ops,
|
||||
},
|
||||
[MV88E6390X] = {
|
||||
.prod_num = PORT_SWITCH_ID_PROD_NUM_6390X,
|
||||
.family = MV88E6XXX_FAMILY_6390,
|
||||
.name = "Marvell 88E6390X",
|
||||
.num_databases = 4096,
|
||||
.num_ports = 11, /* 10 + Z80 */
|
||||
.port_base_addr = 0x0,
|
||||
.global1_addr = 0x1b,
|
||||
.age_time_coeff = 15000,
|
||||
.g1_irqs = 9,
|
||||
.flags = MV88E6XXX_FLAGS_FAMILY_6390,
|
||||
.ops = &mv88e6390x_ops,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mv88e6xxx_info *mv88e6xxx_lookup_info(unsigned int prod_num)
|
||||
@@ -3949,6 +4100,10 @@ static const struct of_device_id mv88e6xxx_of_match[] = {
|
||||
.compatible = "marvell,mv88e6085",
|
||||
.data = &mv88e6xxx_table[MV88E6085],
|
||||
},
|
||||
{
|
||||
.compatible = "marvell,mv88e6190",
|
||||
.data = &mv88e6xxx_table[MV88E6190],
|
||||
},
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user