lkml.org 
[lkml]   [2007]   [Dec]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 23/26] atl1: update shutdown and remove functions
    Date
    From: Jay Cliburn <jacliburn@bellsouth.net>

    Update shutdown and remove functions to conform with the current vendor
    driver version 1.2.40.2.

    Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net>
    ---
    drivers/net/atlx/atl1.c | 31 +++++++++++++++++++++++--------
    1 files changed, 23 insertions(+), 8 deletions(-)

    diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
    index f09928d..b89201e 100644
    --- a/drivers/net/atlx/atl1.c
    +++ b/drivers/net/atlx/atl1.c
    @@ -2591,6 +2591,16 @@ static int atl1_close(struct net_device *netdev)
    return 0;
    }

    +static void atl1_force_ps(struct atl1_hw *hw)
    +{
    + atl1_write_phy_reg(hw, MII_DBG_ADDR, 0);
    + atl1_write_phy_reg(hw, MII_DBG_DATA, 0x124E);
    + atl1_write_phy_reg(hw, MII_DBG_ADDR, 2);
    + atl1_write_phy_reg(hw, MII_DBG_DATA, 0x3000);
    + atl1_write_phy_reg(hw, MII_DBG_ADDR, 3);
    + atl1_write_phy_reg(hw, MII_DBG_DATA, 0);
    +}
    +
    #ifdef CONFIG_PM
    static int atl1_suspend(struct pci_dev *pdev, pm_message_t state)
    {
    @@ -2878,12 +2888,7 @@ err_request_regions:
    static void __devexit atl1_remove(struct pci_dev *pdev)
    {
    struct net_device *netdev = pci_get_drvdata(pdev);
    - struct atl1_adapter *adapter;
    - /* Device not available. Return. */
    - if (!netdev)
    - return;
    -
    - adapter = netdev_priv(netdev);
    + struct atl1_adapter *adapter = netdev_priv(netdev);

    /*
    * Some atl1 boards lack persistent storage for their MAC, and get it
    @@ -2896,21 +2901,31 @@ static void __devexit atl1_remove(struct pci_dev *pdev)
    atl1_set_mac_addr(&adapter->hw);
    }

    - iowrite16(0, adapter->hw.hw_addr + REG_PHY_ENABLE);
    + set_bit(__ATL1_DOWN, &adapter->flags);
    + del_timer_sync(&adapter->watchdog_timer);
    + del_timer_sync(&adapter->phy_config_timer);
    + flush_scheduled_work();
    unregister_netdev(netdev);
    + atl1_force_ps(&adapter->hw);
    pci_iounmap(pdev, adapter->hw.hw_addr);
    pci_release_regions(pdev);
    free_netdev(netdev);
    pci_disable_device(pdev);
    }

    +static void atl1_shutdown(struct pci_dev *pdev)
    +{
    + atl1_suspend(pdev, PMSG_SUSPEND);
    +}
    +
    static struct pci_driver atl1_driver = {
    .name = ATLX_DRIVER_NAME,
    .id_table = atl1_pci_tbl,
    .probe = atl1_probe,
    .remove = __devexit_p(atl1_remove),
    .suspend = atl1_suspend,
    - .resume = atl1_resume
    + .resume = atl1_resume,
    + .shutdown = atl1_shutdown
    };

    /*
    --
    1.5.3.3


    \
     
     \ /
      Last update: 2008-01-01 03:15    [W:0.023 / U:32.276 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site