]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.drivers/broadcom-Add-support-for-the-57780-integrated-PHY.patch
Fix oinkmaster patch.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.drivers / broadcom-Add-support-for-the-57780-integrated-PHY.patch
CommitLineData
2cb7cef9
BS
1From fe9ea211b215172aca41dff8cc454f60e3346739 Mon Sep 17 00:00:00 2001
2From: root <root@unixgrp-03.broadcom.net>
3Date: Fri, 3 Oct 2008 09:59:42 -0700
4Subject: [PATCH 2/2] broadcom: Add support for the 57780 integrated PHY
5Acked-by: Karsten Keil <kkeil@novell.com>
6Reference: bnc#434147
7
8This 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
15diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
16index 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:
65diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
66index 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)
85diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
86index 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--
1021.5.6.4
103