summaryrefslogtreecommitdiff
path: root/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-e100-add-support-for-82552-10-100-adapter.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-e100-add-support-for-82552-10-100-adapter.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-e100-add-support-for-82552-10-100-adapter.patch208
1 files changed, 0 insertions, 208 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-e100-add-support-for-82552-10-100-adapter.patch b/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-e100-add-support-for-82552-10-100-adapter.patch
deleted file mode 100644
index 9291362f0..000000000
--- a/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-e100-add-support-for-82552-10-100-adapter.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From b55de80e49892002a1878013ab9aee1a30970be6 Mon Sep 17 00:00:00 2001
-From: Bruce Allan <bruce.w.allan@intel.com>
-Date: Sat, 21 Mar 2009 13:25:25 -0700
-Subject: [PATCH] e100: add support for 82552 10/100 adapter
-
-This patch enables support for the new Intel 82552 adapter (new PHY paired
-with the existing MAC in the ICH7 chipset). No new features are added to
-the driver, however there are minor changes due to updated registers and a
-few workarounds for hardware errata.
-
-Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/e100.c | 93 +++++++++++++++++++++++++++++++++++++++++++---------
- 1 files changed, 77 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/e100.c b/drivers/net/e100.c
-index 861d2ee..0504db9 100644
---- a/drivers/net/e100.c
-+++ b/drivers/net/e100.c
-@@ -167,7 +167,7 @@
-
- #define DRV_NAME "e100"
- #define DRV_EXT "-NAPI"
--#define DRV_VERSION "3.5.23-k6"DRV_EXT
-+#define DRV_VERSION "3.5.24-k2"DRV_EXT
- #define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver"
- #define DRV_COPYRIGHT "Copyright(c) 1999-2006 Intel Corporation"
- #define PFX DRV_NAME ": "
-@@ -240,6 +240,7 @@ static struct pci_device_id e100_id_table[] = {
- INTEL_8255X_ETHERNET_DEVICE(0x1093, 7),
- INTEL_8255X_ETHERNET_DEVICE(0x1094, 7),
- INTEL_8255X_ETHERNET_DEVICE(0x1095, 7),
-+ INTEL_8255X_ETHERNET_DEVICE(0x10fe, 7),
- INTEL_8255X_ETHERNET_DEVICE(0x1209, 0),
- INTEL_8255X_ETHERNET_DEVICE(0x1229, 0),
- INTEL_8255X_ETHERNET_DEVICE(0x2449, 2),
-@@ -275,6 +276,7 @@ enum phy {
- phy_82562_em = 0x032002A8,
- phy_82562_ek = 0x031002A8,
- phy_82562_eh = 0x017002A8,
-+ phy_82552_v = 0xd061004d,
- phy_unknown = 0xFFFFFFFF,
- };
-
-@@ -943,6 +945,22 @@ static int mdio_read(struct net_device *netdev, int addr, int reg)
-
- static void mdio_write(struct net_device *netdev, int addr, int reg, int data)
- {
-+ struct nic *nic = netdev_priv(netdev);
-+
-+ if ((nic->phy == phy_82552_v) && (reg == MII_BMCR) &&
-+ (data & (BMCR_ANRESTART | BMCR_ANENABLE))) {
-+ u16 advert = mdio_read(netdev, nic->mii.phy_id, MII_ADVERTISE);
-+
-+ /*
-+ * Workaround Si issue where sometimes the part will not
-+ * autoneg to 100Mbps even when advertised.
-+ */
-+ if (advert & ADVERTISE_100FULL)
-+ data |= BMCR_SPEED100 | BMCR_FULLDPLX;
-+ else if (advert & ADVERTISE_100HALF)
-+ data |= BMCR_SPEED100;
-+ }
-+
- mdio_ctrl(netdev_priv(netdev), addr, mdi_write, reg, data);
- }
-
-@@ -1276,16 +1294,12 @@ static int e100_phy_init(struct nic *nic)
- if (addr == 32)
- return -EAGAIN;
-
-- /* Selected the phy and isolate the rest */
-- for (addr = 0; addr < 32; addr++) {
-- if (addr != nic->mii.phy_id) {
-- mdio_write(netdev, addr, MII_BMCR, BMCR_ISOLATE);
-- } else {
-- bmcr = mdio_read(netdev, addr, MII_BMCR);
-- mdio_write(netdev, addr, MII_BMCR,
-- bmcr & ~BMCR_ISOLATE);
-- }
-- }
-+ /* Isolate all the PHY ids */
-+ for (addr = 0; addr < 32; addr++)
-+ mdio_write(netdev, addr, MII_BMCR, BMCR_ISOLATE);
-+ /* Select the discovered PHY */
-+ bmcr &= ~BMCR_ISOLATE;
-+ mdio_write(netdev, nic->mii.phy_id, MII_BMCR, bmcr);
-
- /* Get phy ID */
- id_lo = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID1);
-@@ -1303,7 +1317,18 @@ static int e100_phy_init(struct nic *nic)
- mdio_write(netdev, nic->mii.phy_id, MII_NSC_CONG, cong);
- }
-
-- if ((nic->mac >= mac_82550_D102) || ((nic->flags & ich) &&
-+ if (nic->phy == phy_82552_v) {
-+ u16 advert = mdio_read(netdev, nic->mii.phy_id, MII_ADVERTISE);
-+
-+ /* Workaround Si not advertising flow-control during autoneg */
-+ advert |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
-+ mdio_write(netdev, nic->mii.phy_id, MII_ADVERTISE, advert);
-+
-+ /* Reset for the above changes to take effect */
-+ bmcr = mdio_read(netdev, nic->mii.phy_id, MII_BMCR);
-+ bmcr |= BMCR_RESET;
-+ mdio_write(netdev, nic->mii.phy_id, MII_BMCR, bmcr);
-+ } else if ((nic->mac >= mac_82550_D102) || ((nic->flags & ich) &&
- (mdio_read(netdev, nic->mii.phy_id, MII_TPISTATUS) & 0x8000) &&
- !(nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled))) {
- /* enable/disable MDI/MDI-X auto-switching. */
-@@ -2134,6 +2159,9 @@ err_clean_rx:
- }
-
- #define MII_LED_CONTROL 0x1B
-+#define E100_82552_LED_OVERRIDE 0x19
-+#define E100_82552_LED_ON 0x000F /* LEDTX and LED_RX both on */
-+#define E100_82552_LED_OFF 0x000A /* LEDTX and LED_RX both off */
- static void e100_blink_led(unsigned long data)
- {
- struct nic *nic = (struct nic *)data;
-@@ -2143,10 +2171,19 @@ static void e100_blink_led(unsigned long data)
- led_on_559 = 0x05,
- led_on_557 = 0x07,
- };
-+ u16 led_reg = MII_LED_CONTROL;
-+
-+ if (nic->phy == phy_82552_v) {
-+ led_reg = E100_82552_LED_OVERRIDE;
-
-- nic->leds = (nic->leds & led_on) ? led_off :
-- (nic->mac < mac_82559_D101M) ? led_on_557 : led_on_559;
-- mdio_write(nic->netdev, nic->mii.phy_id, MII_LED_CONTROL, nic->leds);
-+ nic->leds = (nic->leds == E100_82552_LED_ON) ?
-+ E100_82552_LED_OFF : E100_82552_LED_ON;
-+ } else {
-+ nic->leds = (nic->leds & led_on) ? led_off :
-+ (nic->mac < mac_82559_D101M) ? led_on_557 :
-+ led_on_559;
-+ }
-+ mdio_write(nic->netdev, nic->mii.phy_id, led_reg, nic->leds);
- mod_timer(&nic->blink_timer, jiffies + HZ / 4);
- }
-
-@@ -2375,13 +2412,15 @@ static void e100_diag_test(struct net_device *netdev,
- static int e100_phys_id(struct net_device *netdev, u32 data)
- {
- struct nic *nic = netdev_priv(netdev);
-+ u16 led_reg = (nic->phy == phy_82552_v) ? E100_82552_LED_OVERRIDE :
-+ MII_LED_CONTROL;
-
- if (!data || data > (u32)(MAX_SCHEDULE_TIMEOUT / HZ))
- data = (u32)(MAX_SCHEDULE_TIMEOUT / HZ);
- mod_timer(&nic->blink_timer, jiffies);
- msleep_interruptible(data * 1000);
- del_timer_sync(&nic->blink_timer);
-- mdio_write(netdev, nic->mii.phy_id, MII_LED_CONTROL, 0);
-+ mdio_write(netdev, nic->mii.phy_id, led_reg, 0);
-
- return 0;
- }
-@@ -2686,6 +2725,9 @@ static void __devexit e100_remove(struct pci_dev *pdev)
- }
- }
-
-+#define E100_82552_SMARTSPEED 0x14 /* SmartSpeed Ctrl register */
-+#define E100_82552_REV_ANEG 0x0200 /* Reverse auto-negotiation */
-+#define E100_82552_ANEG_NOW 0x0400 /* Auto-negotiate now */
- static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
- {
- struct net_device *netdev = pci_get_drvdata(pdev);
-@@ -2698,6 +2740,15 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
- pci_save_state(pdev);
-
- if ((nic->flags & wol_magic) | e100_asf(nic)) {
-+ /* enable reverse auto-negotiation */
-+ if (nic->phy == phy_82552_v) {
-+ u16 smartspeed = mdio_read(netdev, nic->mii.phy_id,
-+ E100_82552_SMARTSPEED);
-+
-+ mdio_write(netdev, nic->mii.phy_id,
-+ E100_82552_SMARTSPEED, smartspeed |
-+ E100_82552_REV_ANEG | E100_82552_ANEG_NOW);
-+ }
- if (pci_enable_wake(pdev, PCI_D3cold, true))
- pci_enable_wake(pdev, PCI_D3hot, true);
- } else {
-@@ -2721,6 +2772,16 @@ static int e100_resume(struct pci_dev *pdev)
- /* ack any pending wake events, disable PME */
- pci_enable_wake(pdev, 0, 0);
-
-+ /* disbale reverse auto-negotiation */
-+ if (nic->phy == phy_82552_v) {
-+ u16 smartspeed = mdio_read(netdev, nic->mii.phy_id,
-+ E100_82552_SMARTSPEED);
-+
-+ mdio_write(netdev, nic->mii.phy_id,
-+ E100_82552_SMARTSPEED,
-+ smartspeed & ~(E100_82552_REV_ANEG));
-+ }
-+
- netif_device_attach(netdev);
- if (netif_running(netdev))
- e100_up(nic);
---
-1.5.5.1
-