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
This commit is contained in:
commit
4a390e07fc
drivers/staging
comedi/drivers
meilhaus
rspiusb
rt2870
rtl8187se/ieee80211
rtl8192su
serqt_usb2
stlc45xx
vt6655
|
@ -45,6 +45,8 @@ Devices: [JR3] PCI force sensor board (jr3_pci)
|
|||
#include <linux/delay.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/timer.h>
|
||||
#include "comedi_pci.h"
|
||||
#include "jr3_pci.h"
|
||||
|
||||
|
|
|
@ -111,9 +111,13 @@ static const struct s626_board s626_boards[] = {
|
|||
#define PCI_VENDOR_ID_S626 0x1131
|
||||
#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) = {
|
||||
{PCI_VENDOR_ID_S626, PCI_DEVICE_ID_S626, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
0},
|
||||
{PCI_VENDOR_ID_S626, PCI_DEVICE_ID_S626, 0x6000, 0x0272, 0, 0, 0},
|
||||
{0}
|
||||
};
|
||||
|
||||
|
@ -499,25 +503,26 @@ static int s626_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
resource_size_t resourceStart;
|
||||
dma_addr_t appdma;
|
||||
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)
|
||||
return -ENOMEM;
|
||||
|
||||
for (pdev = pci_get_device(PCI_VENDOR_ID_S626, PCI_DEVICE_ID_S626,
|
||||
NULL); pdev != NULL;
|
||||
pdev = pci_get_device(PCI_VENDOR_ID_S626,
|
||||
PCI_DEVICE_ID_S626, pdev)) {
|
||||
if (it->options[0] || it->options[1]) {
|
||||
if (pdev->bus->number == it->options[0] &&
|
||||
PCI_SLOT(pdev->devfn) == it->options[1]) {
|
||||
for (i = 0; i < (ARRAY_SIZE(s626_pci_table) - 1) && !pdev; i++) {
|
||||
ids = &s626_pci_table[i];
|
||||
do {
|
||||
pdev = pci_get_subsys(ids->vendor, ids->device, ids->subvendor,
|
||||
ids->subdevice, pdev);
|
||||
|
||||
if ((it->options[0] || it->options[1]) && pdev) {
|
||||
/* matches requested bus/slot */
|
||||
if (pdev->bus->number == it->options[0] &&
|
||||
PCI_SLOT(pdev->devfn) == it->options[1])
|
||||
break;
|
||||
} else
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* no bus/slot specified */
|
||||
break;
|
||||
}
|
||||
} while (1);
|
||||
}
|
||||
devpriv->pdev = pdev;
|
||||
|
||||
|
|
|
@ -7,4 +7,4 @@ TODO:
|
|||
- possible comedi merge
|
||||
|
||||
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)
|
|||
__func__, status);
|
||||
|
||||
pdx->pendingWrite = 0;
|
||||
usb_buffer_free(urb->dev, urb->transfer_buffer_length,
|
||||
urb->transfer_buffer, urb->transfer_dma);
|
||||
kfree(urb->transfer_buffer);
|
||||
}
|
||||
|
||||
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);
|
||||
if (urb != NULL) {
|
||||
kbuf =
|
||||
usb_buffer_alloc(pdx->udev, len, GFP_KERNEL,
|
||||
&urb->transfer_dma);
|
||||
kbuf = kmalloc(len, GFP_KERNEL);
|
||||
if (!kbuf) {
|
||||
dev_err(&pdx->udev->dev, "buffer_alloc failed\n");
|
||||
return -ENOMEM;
|
||||
|
@ -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,
|
||||
len, piusb_write_bulk_callback, pdx);
|
||||
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
||||
err = usb_submit_urb(urb, GFP_KERNEL);
|
||||
if (err) {
|
||||
dev_err(&pdx->udev->dev,
|
||||
|
@ -641,7 +637,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
|
|||
numPagesRequired =
|
||||
((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT;
|
||||
dbg("Number of pages needed = %d", numPagesRequired);
|
||||
maplist_p = vmalloc(numPagesRequired * sizeof(struct page));
|
||||
maplist_p = vmalloc(numPagesRequired * sizeof(struct page *));
|
||||
if (!maplist_p) {
|
||||
dbg("Can't Allocate Memory for maplist_p");
|
||||
return -ENOMEM;
|
||||
|
@ -712,9 +708,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
|
|||
usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i],
|
||||
pdx->udev,
|
||||
epAddr,
|
||||
(dma_addr_t *) sg_dma_address(&pdx->
|
||||
sgl[frameInfo]
|
||||
[i]),
|
||||
NULL, // non-DMA HC? buy a better hardware
|
||||
sg_dma_len(&pdx->sgl[frameInfo][i]),
|
||||
piusb_readPIXEL_callback, (void *)pdx);
|
||||
pdx->PixelUrb[frameInfo][i]->transfer_dma =
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
{USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */ \
|
||||
{USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */ \
|
||||
{USB_DEVICE(0x0DF6,0x0039)}, /* Sitecom */ \
|
||||
{USB_DEVICE(0x0DF6,0x003F)}, /* Sitecom WL-608 */ \
|
||||
{USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \
|
||||
{USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \
|
||||
{USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \
|
||||
|
|
|
@ -461,19 +461,19 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee,
|
|||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu, char *extra)
|
||||
{
|
||||
strcpy(wrqu->name, "802.11");
|
||||
strlcpy(wrqu->name, "802.11", IFNAMSIZ);
|
||||
if(ieee->modulation & IEEE80211_CCK_MODULATION){
|
||||
strcat(wrqu->name, "b");
|
||||
strlcat(wrqu->name, "b", IFNAMSIZ);
|
||||
if(ieee->modulation & IEEE80211_OFDM_MODULATION)
|
||||
strcat(wrqu->name, "/g");
|
||||
strlcat(wrqu->name, "/g", IFNAMSIZ);
|
||||
}else if(ieee->modulation & IEEE80211_OFDM_MODULATION)
|
||||
strcat(wrqu->name, "g");
|
||||
strlcat(wrqu->name, "g", IFNAMSIZ);
|
||||
|
||||
if((ieee->state == IEEE80211_LINKED) ||
|
||||
(ieee->state == IEEE80211_LINKED_SCANNING))
|
||||
strcat(wrqu->name," linked");
|
||||
strlcat(wrqu->name," link", IFNAMSIZ);
|
||||
else if(ieee->state != IEEE80211_NOLINK)
|
||||
strcat(wrqu->name," link..");
|
||||
strlcat(wrqu->name," .....", IFNAMSIZ);
|
||||
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
config RTL8192SU
|
||||
tristate "RealTek RTL8192SU Wireless LAN NIC driver"
|
||||
depends on PCI
|
||||
depends on WIRELESS_EXT && COMPAT_NET_DEV_OPS
|
||||
depends on WIRELESS_EXT
|
||||
default N
|
||||
---help---
|
||||
|
|
|
@ -118,7 +118,6 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
|
|||
#else
|
||||
ieee = (struct ieee80211_device *)dev->priv;
|
||||
#endif
|
||||
dev->hard_start_xmit = ieee80211_xmit;
|
||||
|
||||
memset(ieee, 0, sizeof(struct ieee80211_device)+sizeof_priv);
|
||||
ieee->dev = dev;
|
||||
|
|
|
@ -548,21 +548,21 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee,
|
|||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu, char *extra)
|
||||
{
|
||||
strcpy(wrqu->name, "802.11");
|
||||
strlcpy(wrqu->name, "802.11", IFNAMSIZ);
|
||||
if(ieee->modulation & IEEE80211_CCK_MODULATION){
|
||||
strcat(wrqu->name, "b");
|
||||
strlcat(wrqu->name, "b", IFNAMSIZ);
|
||||
if(ieee->modulation & IEEE80211_OFDM_MODULATION)
|
||||
strcat(wrqu->name, "/g");
|
||||
strlcat(wrqu->name, "/g", IFNAMSIZ);
|
||||
}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))
|
||||
strcat(wrqu->name, "/n");
|
||||
strlcat(wrqu->name, "/n", IFNAMSIZ);
|
||||
|
||||
if((ieee->state == IEEE80211_LINKED) ||
|
||||
(ieee->state == IEEE80211_LINKED_SCANNING))
|
||||
strcat(wrqu->name," linked");
|
||||
strlcat(wrqu->name, " link", IFNAMSIZ);
|
||||
else if(ieee->state != IEEE80211_NOLINK)
|
||||
strcat(wrqu->name," link..");
|
||||
strlcat(wrqu->name, " .....", IFNAMSIZ);
|
||||
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -12132,6 +12132,19 @@ static void HalUsbSetQueuePipeMapping8192SUsb(struct usb_interface *intf, struct
|
|||
}
|
||||
#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)
|
||||
static int __devinit rtl8192_usb_probe(struct usb_interface *intf,
|
||||
const struct usb_device_id *id)
|
||||
|
@ -12186,15 +12199,7 @@ static void * __devinit rtl8192_usb_probe(struct usb_device *udev,
|
|||
priv->ops = &rtl8192u_ops;
|
||||
#endif
|
||||
|
||||
dev->open = rtl8192_open;
|
||||
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;
|
||||
dev->netdev_ops = &rtl8192_netdev_ops;
|
||||
|
||||
//DMESG("Oops: i'm coming\n");
|
||||
#if WIRELESS_EXT >= 12
|
||||
|
|
|
@ -35,7 +35,9 @@ int rtl8192U_suspend(struct usb_interface *intf, pm_message_t state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
dev->stop(dev);
|
||||
if (dev->netdev_ops->ndo_stop)
|
||||
dev->netdev_ops->ndo_stop(dev);
|
||||
|
||||
mdelay(10);
|
||||
|
||||
netif_device_detach(dev);
|
||||
|
@ -61,7 +63,9 @@ int rtl8192U_resume (struct usb_interface *intf)
|
|||
}
|
||||
|
||||
netif_device_attach(dev);
|
||||
dev->open(dev);
|
||||
|
||||
if (dev->netdev_ops->ndo_open)
|
||||
dev->netdev_ops->ndo_open(dev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -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 *serial;
|
||||
|
@ -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,
|
||||
struct file *filp)
|
||||
static void qt_close( struct usb_serial_port *port)
|
||||
{
|
||||
struct usb_serial *serial = port->serial;
|
||||
struct quatech_port *qt_port;
|
||||
struct quatech_port *port0;
|
||||
struct tty_struct *tty;
|
||||
int status;
|
||||
unsigned int index;
|
||||
status = 0;
|
||||
|
||||
dbg("%s - port %d\n", __func__, port->number);
|
||||
|
||||
tty = tty_port_tty_get(&port->port);
|
||||
index = tty->index - serial->minor;
|
||||
|
||||
qt_port = qt_get_port_private(port);
|
||||
|
|
|
@ -2235,24 +2235,6 @@ static void stlc45xx_op_remove_interface(struct ieee80211_hw *hw,
|
|||
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)
|
||||
{
|
||||
struct stlc45xx *stlc = hw->priv;
|
||||
|
@ -2295,6 +2277,14 @@ static void stlc45xx_op_bss_info_changed(struct ieee80211_hw *hw,
|
|||
{
|
||||
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) {
|
||||
stlc->associated = info->assoc;
|
||||
if (info->assoc)
|
||||
|
@ -2357,7 +2347,6 @@ static const struct ieee80211_ops stlc45xx_ops = {
|
|||
.add_interface = stlc45xx_op_add_interface,
|
||||
.remove_interface = stlc45xx_op_remove_interface,
|
||||
.config = stlc45xx_op_config,
|
||||
.config_interface = stlc45xx_op_config_interface,
|
||||
.configure_filter = stlc45xx_op_configure_filter,
|
||||
.tx = stlc45xx_op_tx,
|
||||
.bss_info_changed = stlc45xx_op_bss_info_changed,
|
||||
|
|
|
@ -344,7 +344,7 @@ static CHIP_INFO chip_info_table[]= {
|
|||
};
|
||||
|
||||
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, }
|
||||
};
|
||||
#endif
|
||||
|
@ -369,7 +369,7 @@ static int device_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
|
|||
|
||||
#ifdef CONFIG_PM
|
||||
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);
|
||||
struct notifier_block device_notifier = {
|
||||
notifier_call: device_notify_reboot,
|
||||
|
@ -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) {
|
||||
if(pci_dev_driver(pdev) == &device_driver) {
|
||||
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)
|
|||
}
|
||||
|
||||
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
|
||||
|
||||
|
@ -3971,7 +3971,7 @@ viawget_suspend(struct pci_dev *pcid, u32 state)
|
|||
memset(pMgmt->abyCurrBSSID, 0, 6);
|
||||
pMgmt->eCurrState = WMAC_STATE_IDLE;
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue