mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
Merge branch 'net-dsa-b53-configure-6318-and-63268-rgmii-ports'
Álvaro Fernández Rojas says: ==================== net: dsa: b53: configure 6318 and 63268 RGMII ports BCM6318 and BCM63268 need special configuration for their RGMII ports, so we need to be able to identify them as a special BCM63xx switch. In the meantime, let's add some missing BCM63xx SoCs to B53 MMAP device table. This should be applied after "net: dsa: b53: add support for BCM63xx RGMIIs": https://patchwork.kernel.org/project/netdevbpf/patch/20230319220805.124024-1-noltari@gmail.com/ Álvaro Fernández Rojas (4): dt-bindings: net: dsa: b53: add more 63xx SoCs net: dsa: b53: mmap: add more 63xx SoCs net: dsa: b53: mmap: allow passing a chip ID net: dsa: b53: add BCM63268 RGMII configuration .../devicetree/bindings/net/dsa/brcm,b53.yaml | 3 ++ drivers/net/dsa/b53/b53_common.c | 19 +++++++++++- drivers/net/dsa/b53/b53_mmap.c | 29 +++++++++++++++---- drivers/net/dsa/b53/b53_priv.h | 9 +++++- drivers/net/dsa/b53/b53_regs.h | 1 + 5 files changed, 53 insertions(+), 8 deletions(-) ==================== Link: https://lore.kernel.org/r/20230321173359.251778-1-noltari@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -57,8 +57,11 @@ properties:
|
||||
- items:
|
||||
- enum:
|
||||
- brcm,bcm3384-switch
|
||||
- brcm,bcm6318-switch
|
||||
- brcm,bcm6328-switch
|
||||
- brcm,bcm6362-switch
|
||||
- brcm,bcm6368-switch
|
||||
- brcm,bcm63268-switch
|
||||
- const: brcm,bcm63xx-switch
|
||||
|
||||
required:
|
||||
|
||||
@@ -1240,8 +1240,12 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
|
||||
break;
|
||||
}
|
||||
|
||||
if (port != dev->imp_port)
|
||||
if (port != dev->imp_port) {
|
||||
if (is63268(dev))
|
||||
rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
|
||||
|
||||
rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
|
||||
}
|
||||
|
||||
b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
|
||||
|
||||
@@ -2465,6 +2469,19 @@ static const struct b53_chip_data b53_switch_chips[] = {
|
||||
.jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX,
|
||||
.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
|
||||
},
|
||||
{
|
||||
.chip_id = BCM63268_DEVICE_ID,
|
||||
.dev_name = "BCM63268",
|
||||
.vlans = 4096,
|
||||
.enabled_ports = 0, /* pdata must provide them */
|
||||
.arl_bins = 4,
|
||||
.arl_buckets = 1024,
|
||||
.imp_port = 8,
|
||||
.vta_regs = B53_VTA_REGS_63XX,
|
||||
.duplex_reg = B53_DUPLEX_STAT_63XX,
|
||||
.jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX,
|
||||
.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
|
||||
},
|
||||
{
|
||||
.chip_id = BCM53010_DEVICE_ID,
|
||||
.dev_name = "BCM53010",
|
||||
|
||||
@@ -248,7 +248,7 @@ static int b53_mmap_probe_of(struct platform_device *pdev,
|
||||
return -ENOMEM;
|
||||
|
||||
pdata->regs = mem;
|
||||
pdata->chip_id = BCM63XX_DEVICE_ID;
|
||||
pdata->chip_id = (u32)(unsigned long)device_get_match_data(dev);
|
||||
pdata->big_endian = of_property_read_bool(np, "big-endian");
|
||||
|
||||
of_ports = of_get_child_by_name(np, "ports");
|
||||
@@ -330,11 +330,28 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
static const struct of_device_id b53_mmap_of_table[] = {
|
||||
{ .compatible = "brcm,bcm3384-switch" },
|
||||
{ .compatible = "brcm,bcm6328-switch" },
|
||||
{ .compatible = "brcm,bcm6368-switch" },
|
||||
{ .compatible = "brcm,bcm63xx-switch" },
|
||||
{ /* sentinel */ },
|
||||
{
|
||||
.compatible = "brcm,bcm3384-switch",
|
||||
.data = (void *)BCM63XX_DEVICE_ID,
|
||||
}, {
|
||||
.compatible = "brcm,bcm6318-switch",
|
||||
.data = (void *)BCM63268_DEVICE_ID,
|
||||
}, {
|
||||
.compatible = "brcm,bcm6328-switch",
|
||||
.data = (void *)BCM63XX_DEVICE_ID,
|
||||
}, {
|
||||
.compatible = "brcm,bcm6362-switch",
|
||||
.data = (void *)BCM63XX_DEVICE_ID,
|
||||
}, {
|
||||
.compatible = "brcm,bcm6368-switch",
|
||||
.data = (void *)BCM63XX_DEVICE_ID,
|
||||
}, {
|
||||
.compatible = "brcm,bcm63268-switch",
|
||||
.data = (void *)BCM63268_DEVICE_ID,
|
||||
}, {
|
||||
.compatible = "brcm,bcm63xx-switch",
|
||||
.data = (void *)BCM63XX_DEVICE_ID,
|
||||
}, { /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, b53_mmap_of_table);
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ enum {
|
||||
BCM53125_DEVICE_ID = 0x53125,
|
||||
BCM53128_DEVICE_ID = 0x53128,
|
||||
BCM63XX_DEVICE_ID = 0x6300,
|
||||
BCM63268_DEVICE_ID = 0x63268,
|
||||
BCM53010_DEVICE_ID = 0x53010,
|
||||
BCM53011_DEVICE_ID = 0x53011,
|
||||
BCM53012_DEVICE_ID = 0x53012,
|
||||
@@ -191,7 +192,13 @@ static inline int is531x5(struct b53_device *dev)
|
||||
|
||||
static inline int is63xx(struct b53_device *dev)
|
||||
{
|
||||
return dev->chip_id == BCM63XX_DEVICE_ID;
|
||||
return dev->chip_id == BCM63XX_DEVICE_ID ||
|
||||
dev->chip_id == BCM63268_DEVICE_ID;
|
||||
}
|
||||
|
||||
static inline int is63268(struct b53_device *dev)
|
||||
{
|
||||
return dev->chip_id == BCM63268_DEVICE_ID;
|
||||
}
|
||||
|
||||
static inline int is5301x(struct b53_device *dev)
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
|
||||
#define B53_RGMII_CTRL_IMP 0x60
|
||||
#define RGMII_CTRL_ENABLE_GMII BIT(7)
|
||||
#define RGMII_CTRL_MII_OVERRIDE BIT(6)
|
||||
#define RGMII_CTRL_TIMING_SEL BIT(2)
|
||||
#define RGMII_CTRL_DLL_RXC BIT(1)
|
||||
#define RGMII_CTRL_DLL_TXC BIT(0)
|
||||
|
||||
Reference in New Issue
Block a user