]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From fe9ea211b215172aca41dff8cc454f60e3346739 Mon Sep 17 00:00:00 2001 |
2 | From: root <root@unixgrp-03.broadcom.net> | |
3 | Date: Fri, 3 Oct 2008 09:59:42 -0700 | |
4 | Subject: [PATCH 2/2] broadcom: Add support for the 57780 integrated PHY | |
5 | Acked-by: Karsten Keil <kkeil@novell.com> | |
6 | Reference: bnc#434147 | |
7 | ||
8 | This patch adds support for the 57780 integrated PHY. | |
9 | --- | |
10 | drivers/net/phy/broadcom.c | 24 ++++++++++++++++++++++-- | |
11 | drivers/net/tg3.c | 9 ++++++++- | |
12 | drivers/net/tg3.h | 5 +++-- | |
13 | 3 files changed, 33 insertions(+), 5 deletions(-) | |
14 | ||
15 | diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c | |
16 | index 4b4dc98..ad5c4f7 100644 | |
17 | --- a/drivers/net/phy/broadcom.c | |
18 | +++ b/drivers/net/phy/broadcom.c | |
19 | @@ -402,14 +402,29 @@ static struct phy_driver bcm5481_driver = { | |
20 | }; | |
21 | ||
22 | static struct phy_driver bcm5482_driver = { | |
23 | + .phy_id = 0x03625d90, | |
24 | + .phy_id_mask = 0xfffffff0, | |
25 | + .name = "Broadcom BCM57780", | |
26 | + .features = PHY_GBIT_FEATURES | | |
27 | + SUPPORTED_Pause | SUPPORTED_Asym_Pause, | |
28 | + .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, | |
29 | + .config_init = bcm5482_config_init, | |
30 | + .config_aneg = genphy_config_aneg, | |
31 | + .read_status = bcm5482_read_status, | |
32 | + .ack_interrupt = bcm54xx_ack_interrupt, | |
33 | + .config_intr = bcm54xx_config_intr, | |
34 | + .driver = { .owner = THIS_MODULE }, | |
35 | +}; | |
36 | + | |
37 | +static struct phy_driver bcm57780_driver = { | |
38 | .phy_id = 0x0143bcb0, | |
39 | .phy_id_mask = 0xfffffff0, | |
40 | .name = "Broadcom BCM5482", | |
41 | .features = PHY_GBIT_FEATURES, | |
42 | .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, | |
43 | - .config_init = bcm5482_config_init, | |
44 | + .config_init = bcm54xx_config_init, | |
45 | .config_aneg = genphy_config_aneg, | |
46 | - .read_status = bcm5482_read_status, | |
47 | + .read_status = genphy_read_status, | |
48 | .ack_interrupt = bcm54xx_ack_interrupt, | |
49 | .config_intr = bcm54xx_config_intr, | |
50 | .driver = { .owner = THIS_MODULE }, | |
51 | @@ -437,8 +452,13 @@ static int __init broadcom_init(void) | |
52 | ret = phy_driver_register(&bcm5482_driver); | |
53 | if (ret) | |
54 | goto out_5482; | |
55 | + ret = phy_driver_register(&bcm57780_driver); | |
56 | + if (ret) | |
57 | + goto out_57780; | |
58 | return ret; | |
59 | ||
60 | +out_57780: | |
61 | + phy_driver_unregister(&bcm5482_driver); | |
62 | out_5482: | |
63 | phy_driver_unregister(&bcm5481_driver); | |
64 | out_5481: | |
65 | diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c | |
66 | index 7188675..43691c6 100644 | |
67 | --- a/drivers/net/tg3.c | |
68 | +++ b/drivers/net/tg3.c | |
69 | @@ -994,7 +994,14 @@ static int tg3_mdio_init(struct tg3 *tp) | |
70 | ||
71 | phydev = tp->mdio_bus.phy_map[PHY_ADDR]; | |
72 | ||
73 | - switch (phydev->phy_id) { | |
74 | +if(!phydev || !phydev->drv) | |
75 | + return -1; | |
76 | + | |
77 | + switch (phydev->drv->phy_id & phydev->drv->phy_id_mask) { | |
78 | + case TG3_PHY_ID_BCM57780: | |
79 | + phydev->interface = PHY_INTERFACE_MODE_GMII; | |
80 | + phydev->dev_flags = PHY_BRCM_WIRESPEED_ENABLE; | |
81 | + break; | |
82 | case TG3_PHY_ID_BCM50610: | |
83 | phydev->interface = PHY_INTERFACE_MODE_RGMII; | |
84 | if (tp->tg3_flags3 & TG3_FLG3_RGMII_STD_IBND_DISABLE) | |
85 | diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h | |
86 | index 06859d1..fc313a4 100644 | |
87 | --- a/drivers/net/tg3.h | |
88 | +++ b/drivers/net/tg3.h | |
89 | @@ -2592,8 +2592,9 @@ struct tg3 { | |
90 | #define PHY_REV_BCM5401_B2 0x3 | |
91 | #define PHY_REV_BCM5401_C0 0x6 | |
92 | #define PHY_REV_BCM5411_X0 0x1 /* Found on Netgear GA302T */ | |
93 | -#define TG3_PHY_ID_BCM50610 0x143bd60 | |
94 | -#define TG3_PHY_ID_BCMAC131 0x143bc70 | |
95 | +#define TG3_PHY_ID_BCM50610 0x0143bd60 | |
96 | +#define TG3_PHY_ID_BCMAC131 0x0143bc70 | |
97 | +#define TG3_PHY_ID_BCM57780 0x03625d90 | |
98 | ||
99 | ||
100 | u32 led_ctrl; | |
101 | -- | |
102 | 1.5.6.4 | |
103 |