Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+53 -8
+3
Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
··· 57 57 - items: 58 58 - enum: 59 59 - brcm,bcm3384-switch 60 + - brcm,bcm6318-switch 60 61 - brcm,bcm6328-switch 62 + - brcm,bcm6362-switch 61 63 - brcm,bcm6368-switch 64 + - brcm,bcm63268-switch 62 65 - const: brcm,bcm63xx-switch 63 66 64 67 required:
+18 -1
drivers/net/dsa/b53/b53_common.c
··· 1240 1240 break; 1241 1241 } 1242 1242 1243 - if (port != dev->imp_port) 1243 + if (port != dev->imp_port) { 1244 + if (is63268(dev)) 1245 + rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE; 1246 + 1244 1247 rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII; 1248 + } 1245 1249 1246 1250 b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl); 1247 1251 ··· 2459 2455 { 2460 2456 .chip_id = BCM63XX_DEVICE_ID, 2461 2457 .dev_name = "BCM63xx", 2458 + .vlans = 4096, 2459 + .enabled_ports = 0, /* pdata must provide them */ 2460 + .arl_bins = 4, 2461 + .arl_buckets = 1024, 2462 + .imp_port = 8, 2463 + .vta_regs = B53_VTA_REGS_63XX, 2464 + .duplex_reg = B53_DUPLEX_STAT_63XX, 2465 + .jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX, 2466 + .jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX, 2467 + }, 2468 + { 2469 + .chip_id = BCM63268_DEVICE_ID, 2470 + .dev_name = "BCM63268", 2462 2471 .vlans = 4096, 2463 2472 .enabled_ports = 0, /* pdata must provide them */ 2464 2473 .arl_bins = 4,
+23 -6
drivers/net/dsa/b53/b53_mmap.c
··· 248 248 return -ENOMEM; 249 249 250 250 pdata->regs = mem; 251 - pdata->chip_id = BCM63XX_DEVICE_ID; 251 + pdata->chip_id = (u32)(unsigned long)device_get_match_data(dev); 252 252 pdata->big_endian = of_property_read_bool(np, "big-endian"); 253 253 254 254 of_ports = of_get_child_by_name(np, "ports"); ··· 330 330 } 331 331 332 332 static const struct of_device_id b53_mmap_of_table[] = { 333 - { .compatible = "brcm,bcm3384-switch" }, 334 - { .compatible = "brcm,bcm6328-switch" }, 335 - { .compatible = "brcm,bcm6368-switch" }, 336 - { .compatible = "brcm,bcm63xx-switch" }, 337 - { /* sentinel */ }, 333 + { 334 + .compatible = "brcm,bcm3384-switch", 335 + .data = (void *)BCM63XX_DEVICE_ID, 336 + }, { 337 + .compatible = "brcm,bcm6318-switch", 338 + .data = (void *)BCM63268_DEVICE_ID, 339 + }, { 340 + .compatible = "brcm,bcm6328-switch", 341 + .data = (void *)BCM63XX_DEVICE_ID, 342 + }, { 343 + .compatible = "brcm,bcm6362-switch", 344 + .data = (void *)BCM63XX_DEVICE_ID, 345 + }, { 346 + .compatible = "brcm,bcm6368-switch", 347 + .data = (void *)BCM63XX_DEVICE_ID, 348 + }, { 349 + .compatible = "brcm,bcm63268-switch", 350 + .data = (void *)BCM63268_DEVICE_ID, 351 + }, { 352 + .compatible = "brcm,bcm63xx-switch", 353 + .data = (void *)BCM63XX_DEVICE_ID, 354 + }, { /* sentinel */ } 338 355 }; 339 356 MODULE_DEVICE_TABLE(of, b53_mmap_of_table); 340 357
+8 -1
drivers/net/dsa/b53/b53_priv.h
··· 70 70 BCM53125_DEVICE_ID = 0x53125, 71 71 BCM53128_DEVICE_ID = 0x53128, 72 72 BCM63XX_DEVICE_ID = 0x6300, 73 + BCM63268_DEVICE_ID = 0x63268, 73 74 BCM53010_DEVICE_ID = 0x53010, 74 75 BCM53011_DEVICE_ID = 0x53011, 75 76 BCM53012_DEVICE_ID = 0x53012, ··· 192 191 193 192 static inline int is63xx(struct b53_device *dev) 194 193 { 195 - return dev->chip_id == BCM63XX_DEVICE_ID; 194 + return dev->chip_id == BCM63XX_DEVICE_ID || 195 + dev->chip_id == BCM63268_DEVICE_ID; 196 + } 197 + 198 + static inline int is63268(struct b53_device *dev) 199 + { 200 + return dev->chip_id == BCM63268_DEVICE_ID; 196 201 } 197 202 198 203 static inline int is5301x(struct b53_device *dev)
+1
drivers/net/dsa/b53/b53_regs.h
··· 138 138 139 139 #define B53_RGMII_CTRL_IMP 0x60 140 140 #define RGMII_CTRL_ENABLE_GMII BIT(7) 141 + #define RGMII_CTRL_MII_OVERRIDE BIT(6) 141 142 #define RGMII_CTRL_TIMING_SEL BIT(2) 142 143 #define RGMII_CTRL_DLL_RXC BIT(1) 143 144 #define RGMII_CTRL_DLL_TXC BIT(0)