Commit b6d11c07 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz Committed by Greg Kroah-Hartman

Staging: rtl8187se: merge r8180_pm.c with r8180_core.c

* merge r8180_pm.c with r8180_core.c
* make functions static
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent b72490a5
...@@ -25,7 +25,6 @@ rtl8187se-objs := \ ...@@ -25,7 +25,6 @@ rtl8187se-objs := \
r8180_rtl8225z2.o \ r8180_rtl8225z2.o \
r8185b_init.o \ r8185b_init.o \
r8180_dm.o \ r8180_dm.o \
r8180_pm.o \
ieee80211/dot11d.o \ ieee80211/dot11d.o \
ieee80211/ieee80211_softmac.o \ ieee80211/ieee80211_softmac.o \
ieee80211/ieee80211_rx.o \ ieee80211/ieee80211_rx.o \
......
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
A big big thanks goes also to Realtek corp. for their help in my attempt to A big big thanks goes also to Realtek corp. for their help in my attempt to
add RTL8185 and RTL8225 support, and to David Young also. add RTL8185 and RTL8225 support, and to David Young also.
Power management interface routines.
Written by Mariusz Matuszek.
*/ */
#undef RX_DONT_PASS_UL #undef RX_DONT_PASS_UL
...@@ -37,8 +40,6 @@ ...@@ -37,8 +40,6 @@
#include "r8180_wx.h" #include "r8180_wx.h"
#include "r8180_dm.h" #include "r8180_dm.h"
#include "r8180_pm.h"
#include "ieee80211/dot11d.h" #include "ieee80211/dot11d.h"
#ifndef PCI_VENDOR_ID_BELKIN #ifndef PCI_VENDOR_ID_BELKIN
...@@ -121,6 +122,64 @@ static void rtl8180_shutdown (struct pci_dev *pdev) ...@@ -121,6 +122,64 @@ static void rtl8180_shutdown (struct pci_dev *pdev)
pci_disable_device(pdev); pci_disable_device(pdev);
} }
static int rtl8180_suspend(struct pci_dev *pdev, pm_message_t state)
{
struct net_device *dev = pci_get_drvdata(pdev);
if (!netif_running(dev))
goto out_pci_suspend;
if (dev->netdev_ops->ndo_stop)
dev->netdev_ops->ndo_stop(dev);
netif_device_detach(dev);
out_pci_suspend:
pci_save_state(pdev);
pci_disable_device(pdev);
pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0;
}
static int rtl8180_resume(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
int err;
u32 val;
pci_set_power_state(pdev, PCI_D0);
err = pci_enable_device(pdev);
if (err) {
printk(KERN_ERR "%s: pci_enable_device failed on resume\n",
dev->name);
return err;
}
pci_restore_state(pdev);
/*
* Suspend/Resume resets the PCI configuration space, so we have to
* re-disable the RETRY_TIMEOUT register (0x41) to keep PCI Tx retries
* from interfering with C3 CPU state. pci_restore_state won't help
* here since it only restores the first 64 bytes pci config header.
*/
pci_read_config_dword(pdev, 0x40, &val);
if ((val & 0x0000ff00) != 0)
pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
if (!netif_running(dev))
goto out;
if (dev->netdev_ops->ndo_open)
dev->netdev_ops->ndo_open(dev);
netif_device_attach(dev);
out:
return 0;
}
static struct pci_driver rtl8180_pci_driver = { static struct pci_driver rtl8180_pci_driver = {
.name = RTL8180_MODULE_NAME, /* Driver name */ .name = RTL8180_MODULE_NAME, /* Driver name */
.id_table = rtl8180_pci_id_tbl, /* PCI_ID table */ .id_table = rtl8180_pci_id_tbl, /* PCI_ID table */
......
/*
Power management interface routines.
Written by Mariusz Matuszek.
This code is currently just a placeholder for later work and
does not do anything useful.
This is part of rtl8180 OpenSource driver.
Copyright (C) Andrea Merello 2004 <andreamrl@tiscali.it>
Released under the terms of GPL (General Public Licence)
*/
#include "r8180_hw.h"
#include "r8180_pm.h"
#include "r8180.h"
int rtl8180_suspend(struct pci_dev *pdev, pm_message_t state)
{
struct net_device *dev = pci_get_drvdata(pdev);
if (!netif_running(dev))
goto out_pci_suspend;
if (dev->netdev_ops->ndo_stop)
dev->netdev_ops->ndo_stop(dev);
netif_device_detach(dev);
out_pci_suspend:
pci_save_state(pdev);
pci_disable_device(pdev);
pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0;
}
int rtl8180_resume(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
int err;
u32 val;
pci_set_power_state(pdev, PCI_D0);
err = pci_enable_device(pdev);
if (err) {
printk(KERN_ERR "%s: pci_enable_device failed on resume\n",
dev->name);
return err;
}
pci_restore_state(pdev);
/*
* Suspend/Resume resets the PCI configuration space, so we have to
* re-disable the RETRY_TIMEOUT register (0x41) to keep PCI Tx retries
* from interfering with C3 CPU state. pci_restore_state won't help
* here since it only restores the first 64 bytes pci config header.
*/
pci_read_config_dword(pdev, 0x40, &val);
if ((val & 0x0000ff00) != 0)
pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
if (!netif_running(dev))
goto out;
if (dev->netdev_ops->ndo_open)
dev->netdev_ops->ndo_open(dev);
netif_device_attach(dev);
out:
return 0;
}
/*
Power management interface routines.
Written by Mariusz Matuszek.
This code is currently just a placeholder for later work and
does not do anything useful.
This is part of rtl8180 OpenSource driver.
Copyright (C) Andrea Merello 2004 <andreamrl@tiscali.it>
Released under the terms of GPL (General Public Licence)
*/
#ifndef R8180_PM_H
#define R8180_PM_H
#include <linux/types.h>
#include <linux/pci.h>
int rtl8180_suspend (struct pci_dev *pdev, pm_message_t state);
int rtl8180_resume (struct pci_dev *pdev);
#endif //R8180_PM_H
...@@ -26,8 +26,6 @@ Major Change History: ...@@ -26,8 +26,6 @@ Major Change History:
#include "r8180_93cx6.h" /* Card EEPROM */ #include "r8180_93cx6.h" /* Card EEPROM */
#include "r8180_wx.h" #include "r8180_wx.h"
#include "r8180_pm.h"
#include "ieee80211/dot11d.h" #include "ieee80211/dot11d.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment