Commit 4a390e07 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6:
  Staging: stlc45xx: convert config_interface to bss_info_changed, fixing a build error
  Staging: comedi: s626: use subvendor:subdevice ids for SAA7146 board
  Staging: prevent rtl8192su from crashing dev_ioctl in SIOCGIWNAME
  Staging: prevent rtl8187se from crashing dev_ioctl() in SIOCGIWNAME
  Staging: rtl8192su: convert to net_device_ops
  Staging: serqt_usb2: declare qt_open static in serqt_usb2
  Staging: serqt_usb2: fix qt_close parameters in serqt_usb2
  Staging: comedi: jr3_pci.c: add required includes
  Staging: meilhaus: add email address to TODO
  Staging: rspiusb: use NULL virtual address instead of a bogus one
  Staging: vt6655: compile fix
  Staging: rt2870: Add USB ID for Sitecom WL-608
parents a4dc3237 f6387184
...@@ -45,6 +45,8 @@ Devices: [JR3] PCI force sensor board (jr3_pci) ...@@ -45,6 +45,8 @@ Devices: [JR3] PCI force sensor board (jr3_pci)
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <linux/jiffies.h>
#include <linux/timer.h>
#include "comedi_pci.h" #include "comedi_pci.h"
#include "jr3_pci.h" #include "jr3_pci.h"
......
...@@ -111,9 +111,13 @@ static const struct s626_board s626_boards[] = { ...@@ -111,9 +111,13 @@ static const struct s626_board s626_boards[] = {
#define PCI_VENDOR_ID_S626 0x1131 #define PCI_VENDOR_ID_S626 0x1131
#define PCI_DEVICE_ID_S626 0x7146 #define PCI_DEVICE_ID_S626 0x7146
/*
* For devices with vendor:device id == 0x1131:0x7146 you must specify
* also subvendor:subdevice ids, because otherwise it will conflict with
* Philips SAA7146 media/dvb based cards.
*/
static DEFINE_PCI_DEVICE_TABLE(s626_pci_table) = { static DEFINE_PCI_DEVICE_TABLE(s626_pci_table) = {
{PCI_VENDOR_ID_S626, PCI_DEVICE_ID_S626, PCI_ANY_ID, PCI_ANY_ID, 0, 0, {PCI_VENDOR_ID_S626, PCI_DEVICE_ID_S626, 0x6000, 0x0272, 0, 0, 0},
0},
{0} {0}
}; };
...@@ -499,25 +503,26 @@ static int s626_attach(struct comedi_device *dev, struct comedi_devconfig *it) ...@@ -499,25 +503,26 @@ static int s626_attach(struct comedi_device *dev, struct comedi_devconfig *it)
resource_size_t resourceStart; resource_size_t resourceStart;
dma_addr_t appdma; dma_addr_t appdma;
struct comedi_subdevice *s; struct comedi_subdevice *s;
struct pci_dev *pdev; const struct pci_device_id *ids;
struct pci_dev *pdev = NULL;
if (alloc_private(dev, sizeof(struct s626_private)) < 0) if (alloc_private(dev, sizeof(struct s626_private)) < 0)
return -ENOMEM; return -ENOMEM;
for (pdev = pci_get_device(PCI_VENDOR_ID_S626, PCI_DEVICE_ID_S626, for (i = 0; i < (ARRAY_SIZE(s626_pci_table) - 1) && !pdev; i++) {
NULL); pdev != NULL; ids = &s626_pci_table[i];
pdev = pci_get_device(PCI_VENDOR_ID_S626, do {
PCI_DEVICE_ID_S626, pdev)) { pdev = pci_get_subsys(ids->vendor, ids->device, ids->subvendor,
if (it->options[0] || it->options[1]) { ids->subdevice, pdev);
if (pdev->bus->number == it->options[0] &&
PCI_SLOT(pdev->devfn) == it->options[1]) { if ((it->options[0] || it->options[1]) && pdev) {
/* matches requested bus/slot */ /* matches requested bus/slot */
if (pdev->bus->number == it->options[0] &&
PCI_SLOT(pdev->devfn) == it->options[1])
break;
} else
break; break;
} } while (1);
} else {
/* no bus/slot specified */
break;
}
} }
devpriv->pdev = pdev; devpriv->pdev = pdev;
......
...@@ -7,4 +7,4 @@ TODO: ...@@ -7,4 +7,4 @@ TODO:
- possible comedi merge - possible comedi merge
Please send cleanup patches to Greg Kroah-Hartman <greg@kroah.com> Please send cleanup patches to Greg Kroah-Hartman <greg@kroah.com>
and CC: David Kiliani <mail@davidkiliani.de> and CC: David Kiliani <mail@davidkiliani.de> and Meilhaus Support <support@meilhaus.de>
...@@ -444,8 +444,7 @@ static void piusb_write_bulk_callback(struct urb *urb) ...@@ -444,8 +444,7 @@ static void piusb_write_bulk_callback(struct urb *urb)
__func__, status); __func__, status);
pdx->pendingWrite = 0; pdx->pendingWrite = 0;
usb_buffer_free(urb->dev, urb->transfer_buffer_length, kfree(urb->transfer_buffer);
urb->transfer_buffer, urb->transfer_dma);
} }
int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len,
...@@ -457,9 +456,7 @@ int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, ...@@ -457,9 +456,7 @@ int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len,
urb = usb_alloc_urb(0, GFP_KERNEL); urb = usb_alloc_urb(0, GFP_KERNEL);
if (urb != NULL) { if (urb != NULL) {
kbuf = kbuf = kmalloc(len, GFP_KERNEL);
usb_buffer_alloc(pdx->udev, len, GFP_KERNEL,
&urb->transfer_dma);
if (!kbuf) { if (!kbuf) {
dev_err(&pdx->udev->dev, "buffer_alloc failed\n"); dev_err(&pdx->udev->dev, "buffer_alloc failed\n");
return -ENOMEM; return -ENOMEM;
...@@ -470,7 +467,6 @@ int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, ...@@ -470,7 +467,6 @@ int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len,
} }
usb_fill_bulk_urb(urb, pdx->udev, pdx->hEP[io->endpoint], kbuf, usb_fill_bulk_urb(urb, pdx->udev, pdx->hEP[io->endpoint], kbuf,
len, piusb_write_bulk_callback, pdx); len, piusb_write_bulk_callback, pdx);
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
err = usb_submit_urb(urb, GFP_KERNEL); err = usb_submit_urb(urb, GFP_KERNEL);
if (err) { if (err) {
dev_err(&pdx->udev->dev, dev_err(&pdx->udev->dev,
...@@ -641,7 +637,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx) ...@@ -641,7 +637,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
numPagesRequired = numPagesRequired =
((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT; ((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT;
dbg("Number of pages needed = %d", numPagesRequired); dbg("Number of pages needed = %d", numPagesRequired);
maplist_p = vmalloc(numPagesRequired * sizeof(struct page)); maplist_p = vmalloc(numPagesRequired * sizeof(struct page *));
if (!maplist_p) { if (!maplist_p) {
dbg("Can't Allocate Memory for maplist_p"); dbg("Can't Allocate Memory for maplist_p");
return -ENOMEM; return -ENOMEM;
...@@ -712,9 +708,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx) ...@@ -712,9 +708,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i], usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i],
pdx->udev, pdx->udev,
epAddr, epAddr,
(dma_addr_t *) sg_dma_address(&pdx-> NULL, // non-DMA HC? buy a better hardware
sgl[frameInfo]
[i]),
sg_dma_len(&pdx->sgl[frameInfo][i]), sg_dma_len(&pdx->sgl[frameInfo][i]),
piusb_readPIXEL_callback, (void *)pdx); piusb_readPIXEL_callback, (void *)pdx);
pdx->PixelUrb[frameInfo][i]->transfer_dma = pdx->PixelUrb[frameInfo][i]->transfer_dma =
......
...@@ -89,6 +89,7 @@ ...@@ -89,6 +89,7 @@
{USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */ \ {USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */ \
{USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */ \ {USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */ \
{USB_DEVICE(0x0DF6,0x0039)}, /* Sitecom */ \ {USB_DEVICE(0x0DF6,0x0039)}, /* Sitecom */ \
{USB_DEVICE(0x0DF6,0x003F)}, /* Sitecom WL-608 */ \
{USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \ {USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \
{USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \ {USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \
{USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \ {USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \
......
...@@ -461,19 +461,19 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee, ...@@ -461,19 +461,19 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee,
struct iw_request_info *info, struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) union iwreq_data *wrqu, char *extra)
{ {
strcpy(wrqu->name, "802.11"); strlcpy(wrqu->name, "802.11", IFNAMSIZ);
if(ieee->modulation & IEEE80211_CCK_MODULATION){ if(ieee->modulation & IEEE80211_CCK_MODULATION){
strcat(wrqu->name, "b"); strlcat(wrqu->name, "b", IFNAMSIZ);
if(ieee->modulation & IEEE80211_OFDM_MODULATION) if(ieee->modulation & IEEE80211_OFDM_MODULATION)
strcat(wrqu->name, "/g"); strlcat(wrqu->name, "/g", IFNAMSIZ);
}else if(ieee->modulation & IEEE80211_OFDM_MODULATION) }else if(ieee->modulation & IEEE80211_OFDM_MODULATION)
strcat(wrqu->name, "g"); strlcat(wrqu->name, "g", IFNAMSIZ);
if((ieee->state == IEEE80211_LINKED) || if((ieee->state == IEEE80211_LINKED) ||
(ieee->state == IEEE80211_LINKED_SCANNING)) (ieee->state == IEEE80211_LINKED_SCANNING))
strcat(wrqu->name," linked"); strlcat(wrqu->name," link", IFNAMSIZ);
else if(ieee->state != IEEE80211_NOLINK) else if(ieee->state != IEEE80211_NOLINK)
strcat(wrqu->name," link.."); strlcat(wrqu->name," .....", IFNAMSIZ);
return 0; return 0;
......
config RTL8192SU config RTL8192SU
tristate "RealTek RTL8192SU Wireless LAN NIC driver" tristate "RealTek RTL8192SU Wireless LAN NIC driver"
depends on PCI depends on PCI
depends on WIRELESS_EXT && COMPAT_NET_DEV_OPS depends on WIRELESS_EXT
default N default N
---help--- ---help---
...@@ -118,7 +118,6 @@ struct net_device *alloc_ieee80211(int sizeof_priv) ...@@ -118,7 +118,6 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
#else #else
ieee = (struct ieee80211_device *)dev->priv; ieee = (struct ieee80211_device *)dev->priv;
#endif #endif
dev->hard_start_xmit = ieee80211_xmit;
memset(ieee, 0, sizeof(struct ieee80211_device)+sizeof_priv); memset(ieee, 0, sizeof(struct ieee80211_device)+sizeof_priv);
ieee->dev = dev; ieee->dev = dev;
......
...@@ -548,21 +548,21 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee, ...@@ -548,21 +548,21 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee,
struct iw_request_info *info, struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) union iwreq_data *wrqu, char *extra)
{ {
strcpy(wrqu->name, "802.11"); strlcpy(wrqu->name, "802.11", IFNAMSIZ);
if(ieee->modulation & IEEE80211_CCK_MODULATION){ if(ieee->modulation & IEEE80211_CCK_MODULATION){
strcat(wrqu->name, "b"); strlcat(wrqu->name, "b", IFNAMSIZ);
if(ieee->modulation & IEEE80211_OFDM_MODULATION) if(ieee->modulation & IEEE80211_OFDM_MODULATION)
strcat(wrqu->name, "/g"); strlcat(wrqu->name, "/g", IFNAMSIZ);
}else if(ieee->modulation & IEEE80211_OFDM_MODULATION) }else if(ieee->modulation & IEEE80211_OFDM_MODULATION)
strcat(wrqu->name, "g"); strlcat(wrqu->name, "g", IFNAMSIZ);
if (ieee->mode & (IEEE_N_24G | IEEE_N_5G)) if (ieee->mode & (IEEE_N_24G | IEEE_N_5G))
strcat(wrqu->name, "/n"); strlcat(wrqu->name, "/n", IFNAMSIZ);
if((ieee->state == IEEE80211_LINKED) || if((ieee->state == IEEE80211_LINKED) ||
(ieee->state == IEEE80211_LINKED_SCANNING)) (ieee->state == IEEE80211_LINKED_SCANNING))
strcat(wrqu->name," linked"); strlcat(wrqu->name, " link", IFNAMSIZ);
else if(ieee->state != IEEE80211_NOLINK) else if(ieee->state != IEEE80211_NOLINK)
strcat(wrqu->name," link.."); strlcat(wrqu->name, " .....", IFNAMSIZ);
return 0; return 0;
......
...@@ -12132,6 +12132,19 @@ static void HalUsbSetQueuePipeMapping8192SUsb(struct usb_interface *intf, struct ...@@ -12132,6 +12132,19 @@ static void HalUsbSetQueuePipeMapping8192SUsb(struct usb_interface *intf, struct
} }
#endif #endif
static const struct net_device_ops rtl8192_netdev_ops = {
.ndo_open = rtl8192_open,
.ndo_stop = rtl8192_close,
.ndo_get_stats = rtl8192_stats,
.ndo_tx_timeout = tx_timeout,
.ndo_do_ioctl = rtl8192_ioctl,
.ndo_set_multicast_list = r8192_set_multicast,
.ndo_set_mac_address = r8192_set_mac_adr,
.ndo_validate_addr = eth_validate_addr,
.ndo_change_mtu = eth_change_mtu,
.ndo_start_xmit = ieee80211_xmit,
};
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
static int __devinit rtl8192_usb_probe(struct usb_interface *intf, static int __devinit rtl8192_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id) const struct usb_device_id *id)
...@@ -12186,15 +12199,7 @@ static void * __devinit rtl8192_usb_probe(struct usb_device *udev, ...@@ -12186,15 +12199,7 @@ static void * __devinit rtl8192_usb_probe(struct usb_device *udev,
priv->ops = &rtl8192u_ops; priv->ops = &rtl8192u_ops;
#endif #endif
dev->open = rtl8192_open; dev->netdev_ops = &rtl8192_netdev_ops;
dev->stop = rtl8192_close;
//dev->hard_start_xmit = rtl8192_8023_hard_start_xmit;
dev->tx_timeout = tx_timeout;
//dev->wireless_handlers = &r8192_wx_handlers_def;
dev->do_ioctl = rtl8192_ioctl;
dev->set_multicast_list = r8192_set_multicast;
dev->set_mac_address = r8192_set_mac_adr;
dev->get_stats = rtl8192_stats;
//DMESG("Oops: i'm coming\n"); //DMESG("Oops: i'm coming\n");
#if WIRELESS_EXT >= 12 #if WIRELESS_EXT >= 12
......
...@@ -35,7 +35,9 @@ int rtl8192U_suspend(struct usb_interface *intf, pm_message_t state) ...@@ -35,7 +35,9 @@ int rtl8192U_suspend(struct usb_interface *intf, pm_message_t state)
return 0; return 0;
} }
dev->stop(dev); if (dev->netdev_ops->ndo_stop)
dev->netdev_ops->ndo_stop(dev);
mdelay(10); mdelay(10);
netif_device_detach(dev); netif_device_detach(dev);
...@@ -61,7 +63,9 @@ int rtl8192U_resume (struct usb_interface *intf) ...@@ -61,7 +63,9 @@ int rtl8192U_resume (struct usb_interface *intf)
} }
netif_device_attach(dev); netif_device_attach(dev);
dev->open(dev);
if (dev->netdev_ops->ndo_open)
dev->netdev_ops->ndo_open(dev);
} }
return 0; return 0;
......
...@@ -866,7 +866,7 @@ static void qt_release(struct usb_serial *serial) ...@@ -866,7 +866,7 @@ static void qt_release(struct usb_serial *serial)
} }
int qt_open(struct tty_struct *tty, static int qt_open(struct tty_struct *tty,
struct usb_serial_port *port, struct file *filp) struct usb_serial_port *port, struct file *filp)
{ {
struct usb_serial *serial; struct usb_serial *serial;
...@@ -1041,17 +1041,19 @@ static void qt_block_until_empty(struct tty_struct *tty, ...@@ -1041,17 +1041,19 @@ static void qt_block_until_empty(struct tty_struct *tty,
} }
} }
static void qt_close(struct tty_struct *tty, struct usb_serial_port *port, static void qt_close( struct usb_serial_port *port)
struct file *filp)
{ {
struct usb_serial *serial = port->serial; struct usb_serial *serial = port->serial;
struct quatech_port *qt_port; struct quatech_port *qt_port;
struct quatech_port *port0; struct quatech_port *port0;
struct tty_struct *tty;
int status; int status;
unsigned int index; unsigned int index;
status = 0; status = 0;
dbg("%s - port %d\n", __func__, port->number); dbg("%s - port %d\n", __func__, port->number);
tty = tty_port_tty_get(&port->port);
index = tty->index - serial->minor; index = tty->index - serial->minor;
qt_port = qt_get_port_private(port); qt_port = qt_get_port_private(port);
......
...@@ -2235,24 +2235,6 @@ static void stlc45xx_op_remove_interface(struct ieee80211_hw *hw, ...@@ -2235,24 +2235,6 @@ static void stlc45xx_op_remove_interface(struct ieee80211_hw *hw,
stlc45xx_debug(DEBUG_FUNC, "%s", __func__); stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
} }
static int stlc45xx_op_config_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_if_conf *conf)
{
struct stlc45xx *stlc = hw->priv;
stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
mutex_lock(&stlc->mutex);
memcpy(stlc->bssid, conf->bssid, ETH_ALEN);
stlc45xx_tx_setup(stlc);
mutex_unlock(&stlc->mutex);
return 0;
}
static int stlc45xx_op_config(struct ieee80211_hw *hw, u32 changed) static int stlc45xx_op_config(struct ieee80211_hw *hw, u32 changed)
{ {
struct stlc45xx *stlc = hw->priv; struct stlc45xx *stlc = hw->priv;
...@@ -2295,6 +2277,14 @@ static void stlc45xx_op_bss_info_changed(struct ieee80211_hw *hw, ...@@ -2295,6 +2277,14 @@ static void stlc45xx_op_bss_info_changed(struct ieee80211_hw *hw,
{ {
struct stlc45xx *stlc = hw->priv; struct stlc45xx *stlc = hw->priv;
stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
mutex_lock(&stlc->mutex);
memcpy(stlc->bssid, info->bssid, ETH_ALEN);
stlc45xx_tx_setup(stlc);
mutex_unlock(&stlc->mutex);
if (changed & BSS_CHANGED_ASSOC) { if (changed & BSS_CHANGED_ASSOC) {
stlc->associated = info->assoc; stlc->associated = info->assoc;
if (info->assoc) if (info->assoc)
...@@ -2357,7 +2347,6 @@ static const struct ieee80211_ops stlc45xx_ops = { ...@@ -2357,7 +2347,6 @@ static const struct ieee80211_ops stlc45xx_ops = {
.add_interface = stlc45xx_op_add_interface, .add_interface = stlc45xx_op_add_interface,
.remove_interface = stlc45xx_op_remove_interface, .remove_interface = stlc45xx_op_remove_interface,
.config = stlc45xx_op_config, .config = stlc45xx_op_config,
.config_interface = stlc45xx_op_config_interface,
.configure_filter = stlc45xx_op_configure_filter, .configure_filter = stlc45xx_op_configure_filter,
.tx = stlc45xx_op_tx, .tx = stlc45xx_op_tx,
.bss_info_changed = stlc45xx_op_bss_info_changed, .bss_info_changed = stlc45xx_op_bss_info_changed,
......
...@@ -344,7 +344,7 @@ static CHIP_INFO chip_info_table[]= { ...@@ -344,7 +344,7 @@ static CHIP_INFO chip_info_table[]= {
}; };
static struct pci_device_id device_id_table[] __devinitdata = { static struct pci_device_id device_id_table[] __devinitdata = {
{ 0x1106, 0x3253, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (int)&chip_info_table[0]}, { 0x1106, 0x3253, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long)&chip_info_table[0]},
{ 0, } { 0, }
}; };
#endif #endif
...@@ -369,7 +369,7 @@ static int device_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); ...@@ -369,7 +369,7 @@ static int device_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
#ifdef CONFIG_PM #ifdef CONFIG_PM
static int device_notify_reboot(struct notifier_block *, unsigned long event, void *ptr); static int device_notify_reboot(struct notifier_block *, unsigned long event, void *ptr);
static int viawget_suspend(struct pci_dev *pcid, u32 state); static int viawget_suspend(struct pci_dev *pcid, pm_message_t state);
static int viawget_resume(struct pci_dev *pcid); static int viawget_resume(struct pci_dev *pcid);
struct notifier_block device_notifier = { struct notifier_block device_notifier = {
notifier_call: device_notify_reboot, notifier_call: device_notify_reboot,
...@@ -3941,7 +3941,7 @@ device_notify_reboot(struct notifier_block *nb, unsigned long event, void *p) ...@@ -3941,7 +3941,7 @@ device_notify_reboot(struct notifier_block *nb, unsigned long event, void *p)
while ((pdev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, pdev)) != NULL) { while ((pdev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, pdev)) != NULL) {
if(pci_dev_driver(pdev) == &device_driver) { if(pci_dev_driver(pdev) == &device_driver) {
if (pci_get_drvdata(pdev)) if (pci_get_drvdata(pdev))
viawget_suspend(pdev, 3); viawget_suspend(pdev, PMSG_HIBERNATE);
} }
} }
} }
...@@ -3949,7 +3949,7 @@ device_notify_reboot(struct notifier_block *nb, unsigned long event, void *p) ...@@ -3949,7 +3949,7 @@ device_notify_reboot(struct notifier_block *nb, unsigned long event, void *p)
} }
static int static int
viawget_suspend(struct pci_dev *pcid, u32 state) viawget_suspend(struct pci_dev *pcid, pm_message_t state)
{ {
int power_status; // to silence the compiler int power_status; // to silence the compiler
...@@ -3971,7 +3971,7 @@ viawget_suspend(struct pci_dev *pcid, u32 state) ...@@ -3971,7 +3971,7 @@ viawget_suspend(struct pci_dev *pcid, u32 state)
memset(pMgmt->abyCurrBSSID, 0, 6); memset(pMgmt->abyCurrBSSID, 0, 6);
pMgmt->eCurrState = WMAC_STATE_IDLE; pMgmt->eCurrState = WMAC_STATE_IDLE;
pci_disable_device(pcid); pci_disable_device(pcid);
power_status = pci_set_power_state(pcid, state); power_status = pci_set_power_state(pcid, pci_choose_state(pcid, state));
spin_unlock_irq(&pDevice->lock); spin_unlock_irq(&pDevice->lock);
return 0; return 0;
} }
......
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