net: dsa: mv88e6xxx: add support for MV88E6220
authorHubert Feurstein <h.feurstein@gmail.com>
Wed, 31 Jul 2019 08:23:46 +0000 (10:23 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 3 Aug 2019 00:58:53 +0000 (17:58 -0700)
The MV88E6220 is almost the same as MV88E6250 except that the ports 2-4 are
not routed to pins. So the usable ports are 0, 1, 5 and 6.

Signed-off-by: Hubert Feurstein <h.feurstein@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c
drivers/net/dsa/mv88e6xxx/chip.h
drivers/net/dsa/mv88e6xxx/port.h

index b9dd5c4461b6ec3a5f08e9ccdb5b8c0625a54333..390b61651e10394e8be8e8fef6c8d8cf5e83868a 100644 (file)
@@ -4275,6 +4275,31 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
                .ops = &mv88e6191_ops,
        },
 
+       [MV88E6220] = {
+               .prod_num = MV88E6XXX_PORT_SWITCH_ID_PROD_6220,
+               .family = MV88E6XXX_FAMILY_6250,
+               .name = "Marvell 88E6220",
+               .num_databases = 64,
+
+               /* Ports 2-4 are not routed to pins
+                * => usable ports 0, 1, 5, 6
+                */
+               .num_ports = 7,
+               .num_internal_phys = 2,
+               .max_vid = 4095,
+               .port_base_addr = 0x08,
+               .phy_base_addr = 0x00,
+               .global1_addr = 0x0f,
+               .global2_addr = 0x07,
+               .age_time_coeff = 15000,
+               .g1_irqs = 9,
+               .g2_irqs = 10,
+               .atu_move_port_mask = 0xf,
+               .dual_chip = true,
+               .tag_protocol = DSA_TAG_PROTO_DSA,
+               .ops = &mv88e6250_ops,
+       },
+
        [MV88E6240] = {
                .prod_num = MV88E6XXX_PORT_SWITCH_ID_PROD_6240,
                .family = MV88E6XXX_FAMILY_6352,
index 4646e46d47f20288d9ba581b8f1c98274e5e78b2..2cc508a1cc32a987c46d6a096e032a4343825bc0 100644 (file)
@@ -57,6 +57,7 @@ enum mv88e6xxx_model {
        MV88E6190,
        MV88E6190X,
        MV88E6191,
+       MV88E6220,
        MV88E6240,
        MV88E6250,
        MV88E6290,
@@ -77,7 +78,7 @@ enum mv88e6xxx_family {
        MV88E6XXX_FAMILY_6097,  /* 6046 6085 6096 6097 */
        MV88E6XXX_FAMILY_6165,  /* 6123 6161 6165 */
        MV88E6XXX_FAMILY_6185,  /* 6108 6121 6122 6131 6152 6155 6182 6185 */
-       MV88E6XXX_FAMILY_6250,  /* 6250 */
+       MV88E6XXX_FAMILY_6250,  /* 6220 6250 */
        MV88E6XXX_FAMILY_6320,  /* 6320 6321 */
        MV88E6XXX_FAMILY_6341,  /* 6141 6341 */
        MV88E6XXX_FAMILY_6351,  /* 6171 6175 6350 6351 */
index 8d5a6cd6fb19b1a83fa34d4b59a5d979f5d2287c..ceec771f8bfcbeb7db9a99c91d60f8d95fb02e37 100644 (file)
 #define MV88E6XXX_PORT_SWITCH_ID_PROD_6190     0x1900
 #define MV88E6XXX_PORT_SWITCH_ID_PROD_6191     0x1910
 #define MV88E6XXX_PORT_SWITCH_ID_PROD_6185     0x1a70
+#define MV88E6XXX_PORT_SWITCH_ID_PROD_6220     0x2200
 #define MV88E6XXX_PORT_SWITCH_ID_PROD_6240     0x2400
 #define MV88E6XXX_PORT_SWITCH_ID_PROD_6250     0x2500
 #define MV88E6XXX_PORT_SWITCH_ID_PROD_6290     0x2900