lkml.org 
[lkml]   [2004]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 2.4.28-pre3] 3c59x: reload EEPROM values at rmmod for needy cards
    Enable reload of EEPROM values in reset at rmmod for cards that need
    it, similar to old EEPROM_NORESET flag but in reverse.

    Signed-of-by: John W. Linville <linville@tuxdriver.com>
    ---
    (Most?) 3c905 and (some?) 3c905B cards need an additional bit unmasked
    in the reset at rmmod or else they don't get reinitialized properly when
    the driver is reloaded.

    drivers/net/3c59x.c | 17 +++++++++--------
    1 files changed, 9 insertions(+), 8 deletions(-)

    Please note that this depends on the "3c59x: resync with 2.6" patch
    which I posted earlier today.

    --- linux-2.4/drivers/net/3c59x.c.orig
    +++ linux-2.4/drivers/net/3c59x.c
    @@ -413,7 +413,7 @@ enum { IS_VORTEX=1, IS_BOOMERANG=2, IS_C
    HAS_PWR_CTRL=0x20, HAS_MII=0x40, HAS_NWAY=0x80, HAS_CB_FNS=0x100,
    INVERT_MII_PWR=0x200, INVERT_LED_PWR=0x400, MAX_COLLISION_RESET=0x800,
    EEPROM_OFFSET=0x1000, HAS_HWCKSM=0x2000, WNO_XCVR_PWR=0x4000,
    - EXTRA_PREAMBLE=0x8000, };
    + EXTRA_PREAMBLE=0x8000, EEPROM_RESET=0x10000, };

    enum vortex_chips {
    CH_3C590 = 0,
    @@ -502,16 +502,16 @@ static struct vortex_chip_info {
    {"3c900B-FL Cyclone 10base-FL",
    PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_HWCKSM, 128, },
    {"3c905 Boomerang 100baseTx",
    - PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII, 64, },
    + PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII|EEPROM_RESET, 64, },
    {"3c905 Boomerang 100baseT4",
    - PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII, 64, },
    + PCI_USES_IO|PCI_USES_MASTER, IS_BOOMERANG|HAS_MII|EEPROM_RESET, 64, },
    {"3c905B Cyclone 100baseTx",
    - PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM|EXTRA_PREAMBLE, 128, },
    + PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM|EXTRA_PREAMBLE|EEPROM_RESET, 128, },

    {"3c905B Cyclone 10/100/BNC",
    - PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM, 128, },
    + PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM|EEPROM_RESET, 128, },
    {"3c905B-FX Cyclone 100baseFx",
    - PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_HWCKSM, 128, },
    + PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_HWCKSM|EEPROM_RESET, 128, },
    {"3c905C Tornado",
    PCI_USES_IO|PCI_USES_MASTER, IS_TORNADO|HAS_NWAY|HAS_HWCKSM|EXTRA_PREAMBLE, 128, },
    {"3c920B-EMB-WNM (ATI Radeon 9100 IGP)",
    @@ -562,7 +562,7 @@ static struct vortex_chip_info {
    {"3c982 Hydra Dual Port B",
    PCI_USES_IO|PCI_USES_MASTER, IS_TORNADO|HAS_HWCKSM|HAS_NWAY, 128, },
    {"3c905B-T4",
    - PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM|EXTRA_PREAMBLE, 128, },
    + PCI_USES_IO|PCI_USES_MASTER, IS_CYCLONE|HAS_NWAY|HAS_HWCKSM|EXTRA_PREAMBLE|EEPROM_RESET, 128, },
    {"3c920B-EMB-WNM Tornado",
    PCI_USES_IO|PCI_USES_MASTER, IS_TORNADO|HAS_NWAY|HAS_HWCKSM, 128, },

    @@ -3091,7 +3091,8 @@ static void __devexit vortex_remove_one
    pci_restore_state(VORTEX_PCI(vp), vp->power_state);
    }
    /* Should really use issue_and_wait() here */
    - outw(TotalReset|0x14, dev->base_addr + EL3_CMD);
    + outw(TotalReset | ((vp->drv_flags & EEPROM_RESET) ? 0x04 : 0x14),
    + dev->base_addr + EL3_CMD);

    pci_free_consistent(pdev,
    sizeof(struct boom_rx_desc) * RX_RING_SIZE
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:06    [W:0.021 / U:16.288 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site