Skip to content

Commit 4f4598f

Browse files
Matt Carlsondavem330
authored andcommitted
broadcom: Add BCM50610M support
This patch adds support for the BCM50610M phy ID. Signed-off-by: Matt Carlson <[email protected]> Reviewed-by: Michael Chan <[email protected]> Reviewed-by: Benjamin Li <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 7f97a4b commit 4f4598f

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

drivers/net/phy/broadcom.c

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <linux/phy.h>
1919

2020
#define PHY_ID_BCM50610 0x0143bd60
21+
#define PHY_ID_BCM50610M 0x0143bd70
2122

2223
#define MII_BCM54XX_ECR 0x10 /* BCM54xx extended control register */
2324
#define MII_BCM54XX_ECR_IM 0x1000 /* Interrupt mask */
@@ -447,7 +448,7 @@ static struct phy_driver bcm5411_driver = {
447448
.read_status = genphy_read_status,
448449
.ack_interrupt = bcm54xx_ack_interrupt,
449450
.config_intr = bcm54xx_config_intr,
450-
.driver = { .owner = THIS_MODULE },
451+
.driver = { .owner = THIS_MODULE },
451452
};
452453

453454
static struct phy_driver bcm5421_driver = {
@@ -462,7 +463,7 @@ static struct phy_driver bcm5421_driver = {
462463
.read_status = genphy_read_status,
463464
.ack_interrupt = bcm54xx_ack_interrupt,
464465
.config_intr = bcm54xx_config_intr,
465-
.driver = { .owner = THIS_MODULE },
466+
.driver = { .owner = THIS_MODULE },
466467
};
467468

468469
static struct phy_driver bcm5461_driver = {
@@ -477,7 +478,7 @@ static struct phy_driver bcm5461_driver = {
477478
.read_status = genphy_read_status,
478479
.ack_interrupt = bcm54xx_ack_interrupt,
479480
.config_intr = bcm54xx_config_intr,
480-
.driver = { .owner = THIS_MODULE },
481+
.driver = { .owner = THIS_MODULE },
481482
};
482483

483484
static struct phy_driver bcm5464_driver = {
@@ -492,7 +493,7 @@ static struct phy_driver bcm5464_driver = {
492493
.read_status = genphy_read_status,
493494
.ack_interrupt = bcm54xx_ack_interrupt,
494495
.config_intr = bcm54xx_config_intr,
495-
.driver = { .owner = THIS_MODULE },
496+
.driver = { .owner = THIS_MODULE },
496497
};
497498

498499
static struct phy_driver bcm5481_driver = {
@@ -507,7 +508,7 @@ static struct phy_driver bcm5481_driver = {
507508
.read_status = genphy_read_status,
508509
.ack_interrupt = bcm54xx_ack_interrupt,
509510
.config_intr = bcm54xx_config_intr,
510-
.driver = { .owner = THIS_MODULE },
511+
.driver = { .owner = THIS_MODULE },
511512
};
512513

513514
static struct phy_driver bcm5482_driver = {
@@ -522,7 +523,7 @@ static struct phy_driver bcm5482_driver = {
522523
.read_status = bcm5482_read_status,
523524
.ack_interrupt = bcm54xx_ack_interrupt,
524525
.config_intr = bcm54xx_config_intr,
525-
.driver = { .owner = THIS_MODULE },
526+
.driver = { .owner = THIS_MODULE },
526527
};
527528

528529
static struct phy_driver bcm50610_driver = {
@@ -537,7 +538,22 @@ static struct phy_driver bcm50610_driver = {
537538
.read_status = genphy_read_status,
538539
.ack_interrupt = bcm54xx_ack_interrupt,
539540
.config_intr = bcm54xx_config_intr,
540-
.driver = { .owner = THIS_MODULE },
541+
.driver = { .owner = THIS_MODULE },
542+
};
543+
544+
static struct phy_driver bcm50610m_driver = {
545+
.phy_id = PHY_ID_BCM50610M,
546+
.phy_id_mask = 0xfffffff0,
547+
.name = "Broadcom BCM50610M",
548+
.features = PHY_GBIT_FEATURES |
549+
SUPPORTED_Pause | SUPPORTED_Asym_Pause,
550+
.flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
551+
.config_init = bcm54xx_config_init,
552+
.config_aneg = genphy_config_aneg,
553+
.read_status = genphy_read_status,
554+
.ack_interrupt = bcm54xx_ack_interrupt,
555+
.config_intr = bcm54xx_config_intr,
556+
.driver = { .owner = THIS_MODULE },
541557
};
542558

543559
static struct phy_driver bcm57780_driver = {
@@ -552,7 +568,7 @@ static struct phy_driver bcm57780_driver = {
552568
.read_status = genphy_read_status,
553569
.ack_interrupt = bcm54xx_ack_interrupt,
554570
.config_intr = bcm54xx_config_intr,
555-
.driver = { .owner = THIS_MODULE },
571+
.driver = { .owner = THIS_MODULE },
556572
};
557573

558574
static int __init broadcom_init(void)
@@ -580,12 +596,17 @@ static int __init broadcom_init(void)
580596
ret = phy_driver_register(&bcm50610_driver);
581597
if (ret)
582598
goto out_50610;
599+
ret = phy_driver_register(&bcm50610m_driver);
600+
if (ret)
601+
goto out_50610m;
583602
ret = phy_driver_register(&bcm57780_driver);
584603
if (ret)
585604
goto out_57780;
586605
return ret;
587606

588607
out_57780:
608+
phy_driver_unregister(&bcm50610m_driver);
609+
out_50610m:
589610
phy_driver_unregister(&bcm50610_driver);
590611
out_50610:
591612
phy_driver_unregister(&bcm5482_driver);
@@ -606,6 +627,7 @@ static int __init broadcom_init(void)
606627
static void __exit broadcom_exit(void)
607628
{
608629
phy_driver_unregister(&bcm57780_driver);
630+
phy_driver_unregister(&bcm50610m_driver);
609631
phy_driver_unregister(&bcm50610_driver);
610632
phy_driver_unregister(&bcm5482_driver);
611633
phy_driver_unregister(&bcm5481_driver);

0 commit comments

Comments
 (0)