Commit a95691bc authored by Damien Thébault's avatar Damien Thébault Committed by David S. Miller

net: dsa: b53: Add BCM5389 support

This patch adds support for the BCM5389 switch connected through MDIO.
Signed-off-by: default avatarDamien Thébault <damien.thebault@vitec.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent eb7f54b9
...@@ -10,6 +10,7 @@ Required properties: ...@@ -10,6 +10,7 @@ Required properties:
"brcm,bcm53128" "brcm,bcm53128"
"brcm,bcm5365" "brcm,bcm5365"
"brcm,bcm5395" "brcm,bcm5395"
"brcm,bcm5389"
"brcm,bcm5397" "brcm,bcm5397"
"brcm,bcm5398" "brcm,bcm5398"
......
...@@ -1711,6 +1711,18 @@ static const struct b53_chip_data b53_switch_chips[] = { ...@@ -1711,6 +1711,18 @@ static const struct b53_chip_data b53_switch_chips[] = {
.cpu_port = B53_CPU_PORT_25, .cpu_port = B53_CPU_PORT_25,
.duplex_reg = B53_DUPLEX_STAT_FE, .duplex_reg = B53_DUPLEX_STAT_FE,
}, },
{
.chip_id = BCM5389_DEVICE_ID,
.dev_name = "BCM5389",
.vlans = 4096,
.enabled_ports = 0x1f,
.arl_entries = 4,
.cpu_port = B53_CPU_PORT,
.vta_regs = B53_VTA_REGS,
.duplex_reg = B53_DUPLEX_STAT_GE,
.jumbo_pm_reg = B53_JUMBO_PORT_MASK,
.jumbo_size_reg = B53_JUMBO_MAX_SIZE,
},
{ {
.chip_id = BCM5395_DEVICE_ID, .chip_id = BCM5395_DEVICE_ID,
.dev_name = "BCM5395", .dev_name = "BCM5395",
...@@ -2034,6 +2046,7 @@ int b53_switch_detect(struct b53_device *dev) ...@@ -2034,6 +2046,7 @@ int b53_switch_detect(struct b53_device *dev)
else else
dev->chip_id = BCM5365_DEVICE_ID; dev->chip_id = BCM5365_DEVICE_ID;
break; break;
case BCM5389_DEVICE_ID:
case BCM5395_DEVICE_ID: case BCM5395_DEVICE_ID:
case BCM5397_DEVICE_ID: case BCM5397_DEVICE_ID:
case BCM5398_DEVICE_ID: case BCM5398_DEVICE_ID:
......
...@@ -285,6 +285,7 @@ static const struct b53_io_ops b53_mdio_ops = { ...@@ -285,6 +285,7 @@ static const struct b53_io_ops b53_mdio_ops = {
#define B53_BRCM_OUI_1 0x0143bc00 #define B53_BRCM_OUI_1 0x0143bc00
#define B53_BRCM_OUI_2 0x03625c00 #define B53_BRCM_OUI_2 0x03625c00
#define B53_BRCM_OUI_3 0x00406000 #define B53_BRCM_OUI_3 0x00406000
#define B53_BRCM_OUI_4 0x01410c00
static int b53_mdio_probe(struct mdio_device *mdiodev) static int b53_mdio_probe(struct mdio_device *mdiodev)
{ {
...@@ -311,7 +312,8 @@ static int b53_mdio_probe(struct mdio_device *mdiodev) ...@@ -311,7 +312,8 @@ static int b53_mdio_probe(struct mdio_device *mdiodev)
*/ */
if ((phy_id & 0xfffffc00) != B53_BRCM_OUI_1 && if ((phy_id & 0xfffffc00) != B53_BRCM_OUI_1 &&
(phy_id & 0xfffffc00) != B53_BRCM_OUI_2 && (phy_id & 0xfffffc00) != B53_BRCM_OUI_2 &&
(phy_id & 0xfffffc00) != B53_BRCM_OUI_3) { (phy_id & 0xfffffc00) != B53_BRCM_OUI_3 &&
(phy_id & 0xfffffc00) != B53_BRCM_OUI_4) {
dev_err(&mdiodev->dev, "Unsupported device: 0x%08x\n", phy_id); dev_err(&mdiodev->dev, "Unsupported device: 0x%08x\n", phy_id);
return -ENODEV; return -ENODEV;
} }
...@@ -360,6 +362,7 @@ static const struct of_device_id b53_of_match[] = { ...@@ -360,6 +362,7 @@ static const struct of_device_id b53_of_match[] = {
{ .compatible = "brcm,bcm53125" }, { .compatible = "brcm,bcm53125" },
{ .compatible = "brcm,bcm53128" }, { .compatible = "brcm,bcm53128" },
{ .compatible = "brcm,bcm5365" }, { .compatible = "brcm,bcm5365" },
{ .compatible = "brcm,bcm5389" },
{ .compatible = "brcm,bcm5395" }, { .compatible = "brcm,bcm5395" },
{ .compatible = "brcm,bcm5397" }, { .compatible = "brcm,bcm5397" },
{ .compatible = "brcm,bcm5398" }, { .compatible = "brcm,bcm5398" },
......
...@@ -48,6 +48,7 @@ struct b53_io_ops { ...@@ -48,6 +48,7 @@ struct b53_io_ops {
enum { enum {
BCM5325_DEVICE_ID = 0x25, BCM5325_DEVICE_ID = 0x25,
BCM5365_DEVICE_ID = 0x65, BCM5365_DEVICE_ID = 0x65,
BCM5389_DEVICE_ID = 0x89,
BCM5395_DEVICE_ID = 0x95, BCM5395_DEVICE_ID = 0x95,
BCM5397_DEVICE_ID = 0x97, BCM5397_DEVICE_ID = 0x97,
BCM5398_DEVICE_ID = 0x98, BCM5398_DEVICE_ID = 0x98,
......
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