diff options
author | Narendra Damahe <ndamahe@nvidia.com> | 2010-03-26 11:29:15 -0700 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-03-30 15:14:19 -0800 |
commit | 940b19bdd16c37ccf8d24c02e58aa08963fb1c3b (patch) | |
tree | 51573f83502a8815003648ff46c4fb23b35243b0 /drivers | |
parent | 68f7bc2e1198fc0f40a947efedb8d3120e5098ed (diff) |
tegra: SMSC LAN V4 driver integration to reduce power during OS idle
Change-Id: I5dacba846a7c979cf556470699c4b1e036c72ede
Reviewed-on: http://git-master/r/970
Reviewed-by: Narendra Damahe <ndamahe@nvidia.com>
Tested-by: Narendra Damahe <ndamahe@nvidia.com>
Reviewed-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/usb/smsc9500.c | 12 | ||||
-rw-r--r-- | drivers/net/usb/version.h | 2 |
2 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/usb/smsc9500.c b/drivers/net/usb/smsc9500.c index a41cf4477d40..2e2e2f5e70e5 100644 --- a/drivers/net/usb/smsc9500.c +++ b/drivers/net/usb/smsc9500.c @@ -983,6 +983,9 @@ static int smsc9500_rx_setmulticastlist(struct usbnet *dev) PADAPTER_DATA adapterData=(PADAPTER_DATA)(dev->data[0]); + if (dev->suspendFlag) { + return 0; + } if(down_interruptible(&adapterData->RxFilterLock)){ return -EINTR; } @@ -1092,6 +1095,7 @@ static int Phy_GetLinkMode(struct usbnet *dev) PADAPTER_DATA adapterData=(PADAPTER_DATA)(dev->data[0]); SMSC_TRACE(DBG_LINK, "---------->in Phy_GetLinkMode"); CHECK_RETURN_STATUS(smsc9500_read_phy(dev,PHY_BSR,&dwTemp)); + CHECK_RETURN_STATUS(smsc9500_read_phy(dev,PHY_BSR,&dwTemp)); wRegBSR=LOWORD(dwTemp); @@ -4106,6 +4110,7 @@ static int SetWakeupEvents(struct net_device *netdev) // If there's currently no link we can use Suspend1 CHECK_RETURN_STATUS(smsc9500_read_phy(dev, PHY_BSR, &Value32)); + CHECK_RETURN_STATUS(smsc9500_read_phy(dev, PHY_BSR, &Value32)); wValue=(u16)Value32; if (!(wValue & PHY_BSR_LINK_STATUS_)) { @@ -4690,6 +4695,7 @@ static int Smsc9500AutoSuspend (struct usb_interface *intf, pm_message_t state) { adapterData->wakeupOptsBackup = adapterData->WolWakeupOpts; + smsc9500_read_phy(dev, PHY_BSR, &Value32); if(smsc9500_read_phy(dev, PHY_BSR, &Value32) < 0){ return SMSC9500_FAIL; } @@ -4746,16 +4752,18 @@ static int Smsc9500AutoSuspend (struct usb_interface *intf, pm_message_t state) adapterData->dynamicSuspendPHYEvent = PHY_INT_MASK_LINK_DOWN_; ret = EnablePHYWakeupInterrupt(dev, adapterData->dynamicSuspendPHYEvent); } - }else{// if(suspendFlag & AUTOSUSPEND_LINKDOWN){//Resume immediately + }else{ ret = SMSC9500_FAIL; } } if(ret != SMSC9500_SUCCESS){ - SMSC_WARNING("Failed to suspend device\n"); + //SMSC_WARNING("Failed to suspend device\n"); dev->suspendFlag = 0; if(!dev->pmLock){//Resume immediately smscusbnet_defer_myevent(dev, EVENT_IDLE_RESUME); + Tx_WakeQueue(dev,0x04UL); + tasklet_schedule (&dev->bh); } goto _SUSPEND_EXIT; }else{ diff --git a/drivers/net/usb/version.h b/drivers/net/usb/version.h index 6851385fb7a0..f085e4759ce1 100644 --- a/drivers/net/usb/version.h +++ b/drivers/net/usb/version.h @@ -1,6 +1,6 @@ #ifndef SMSC9500_VERSION_H_ #define SMSC9500_VERSION_H_ -#define DRIVER_VERSION (0x01010603UL) +#define DRIVER_VERSION (0x01010604UL) #endif /*SMSC9500_VERSION_H_*/ |