+++ /dev/null
-From fe9ea211b215172aca41dff8cc454f60e3346739 Mon Sep 17 00:00:00 2001
-From: root <root@unixgrp-03.broadcom.net>
-Date: Fri, 3 Oct 2008 09:59:42 -0700
-Subject: [PATCH 2/2] broadcom: Add support for the 57780 integrated PHY
-Acked-by: Karsten Keil <kkeil@novell.com>
-Reference: bnc#434147
-
-This patch adds support for the 57780 integrated PHY.
----
- drivers/net/phy/broadcom.c | 24 ++++++++++++++++++++++--
- drivers/net/tg3.c | 9 ++++++++-
- drivers/net/tg3.h | 5 +++--
- 3 files changed, 33 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 4b4dc98..ad5c4f7 100644
---- a/drivers/net/phy/broadcom.c
-+++ b/drivers/net/phy/broadcom.c
-@@ -402,14 +402,29 @@ static struct phy_driver bcm5481_driver = {
- };
-
- static struct phy_driver bcm5482_driver = {
-+ .phy_id = 0x03625d90,
-+ .phy_id_mask = 0xfffffff0,
-+ .name = "Broadcom BCM57780",
-+ .features = PHY_GBIT_FEATURES |
-+ SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-+ .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
-+ .config_init = bcm5482_config_init,
-+ .config_aneg = genphy_config_aneg,
-+ .read_status = bcm5482_read_status,
-+ .ack_interrupt = bcm54xx_ack_interrupt,
-+ .config_intr = bcm54xx_config_intr,
-+ .driver = { .owner = THIS_MODULE },
-+};
-+
-+static struct phy_driver bcm57780_driver = {
- .phy_id = 0x0143bcb0,
- .phy_id_mask = 0xfffffff0,
- .name = "Broadcom BCM5482",
- .features = PHY_GBIT_FEATURES,
- .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
-- .config_init = bcm5482_config_init,
-+ .config_init = bcm54xx_config_init,
- .config_aneg = genphy_config_aneg,
-- .read_status = bcm5482_read_status,
-+ .read_status = genphy_read_status,
- .ack_interrupt = bcm54xx_ack_interrupt,
- .config_intr = bcm54xx_config_intr,
- .driver = { .owner = THIS_MODULE },
-@@ -437,8 +452,13 @@ static int __init broadcom_init(void)
- ret = phy_driver_register(&bcm5482_driver);
- if (ret)
- goto out_5482;
-+ ret = phy_driver_register(&bcm57780_driver);
-+ if (ret)
-+ goto out_57780;
- return ret;
-
-+out_57780:
-+ phy_driver_unregister(&bcm5482_driver);
- out_5482:
- phy_driver_unregister(&bcm5481_driver);
- out_5481:
-diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
-index 7188675..43691c6 100644
---- a/drivers/net/tg3.c
-+++ b/drivers/net/tg3.c
-@@ -994,7 +994,14 @@ static int tg3_mdio_init(struct tg3 *tp)
-
- phydev = tp->mdio_bus.phy_map[PHY_ADDR];
-
-- switch (phydev->phy_id) {
-+if(!phydev || !phydev->drv)
-+ return -1;
-+
-+ switch (phydev->drv->phy_id & phydev->drv->phy_id_mask) {
-+ case TG3_PHY_ID_BCM57780:
-+ phydev->interface = PHY_INTERFACE_MODE_GMII;
-+ phydev->dev_flags = PHY_BRCM_WIRESPEED_ENABLE;
-+ break;
- case TG3_PHY_ID_BCM50610:
- phydev->interface = PHY_INTERFACE_MODE_RGMII;
- if (tp->tg3_flags3 & TG3_FLG3_RGMII_STD_IBND_DISABLE)
-diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
-index 06859d1..fc313a4 100644
---- a/drivers/net/tg3.h
-+++ b/drivers/net/tg3.h
-@@ -2592,8 +2592,9 @@ struct tg3 {
- #define PHY_REV_BCM5401_B2 0x3
- #define PHY_REV_BCM5401_C0 0x6
- #define PHY_REV_BCM5411_X0 0x1 /* Found on Netgear GA302T */
--#define TG3_PHY_ID_BCM50610 0x143bd60
--#define TG3_PHY_ID_BCMAC131 0x143bc70
-+#define TG3_PHY_ID_BCM50610 0x0143bd60
-+#define TG3_PHY_ID_BCMAC131 0x0143bc70
-+#define TG3_PHY_ID_BCM57780 0x03625d90
-
-
- u32 led_ctrl;
---
-1.5.6.4
-