diff options
61 files changed, 380 insertions, 204 deletions
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c index 5d1d07645132..e8cd652d2017 100644 --- a/drivers/atm/solos-pci.c +++ b/drivers/atm/solos-pci.c | |||
| @@ -1206,9 +1206,9 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 1206 | 1206 | ||
| 1207 | out_unmap_both: | 1207 | out_unmap_both: |
| 1208 | pci_set_drvdata(dev, NULL); | 1208 | pci_set_drvdata(dev, NULL); |
| 1209 | pci_iounmap(dev, card->config_regs); | ||
| 1210 | out_unmap_config: | ||
| 1211 | pci_iounmap(dev, card->buffers); | 1209 | pci_iounmap(dev, card->buffers); |
| 1210 | out_unmap_config: | ||
| 1211 | pci_iounmap(dev, card->config_regs); | ||
| 1212 | out_release_regions: | 1212 | out_release_regions: |
| 1213 | pci_release_regions(dev); | 1213 | pci_release_regions(dev); |
| 1214 | out: | 1214 | out: |
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index f00f596c1029..789c9b579aea 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
| @@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = { | |||
| 102 | 102 | ||
| 103 | /* Broadcom BCM20702A0 */ | 103 | /* Broadcom BCM20702A0 */ |
| 104 | { USB_DEVICE(0x0a5c, 0x21e3) }, | 104 | { USB_DEVICE(0x0a5c, 0x21e3) }, |
| 105 | { USB_DEVICE(0x0a5c, 0x21f3) }, | ||
| 105 | { USB_DEVICE(0x413c, 0x8197) }, | 106 | { USB_DEVICE(0x413c, 0x8197) }, |
| 106 | 107 | ||
| 107 | { } /* Terminating entry */ | 108 | { } /* Terminating entry */ |
| @@ -726,9 +727,6 @@ static int btusb_send_frame(struct sk_buff *skb) | |||
| 726 | usb_fill_bulk_urb(urb, data->udev, pipe, | 727 | usb_fill_bulk_urb(urb, data->udev, pipe, |
| 727 | skb->data, skb->len, btusb_tx_complete, skb); | 728 | skb->data, skb->len, btusb_tx_complete, skb); |
| 728 | 729 | ||
| 729 | if (skb->priority >= HCI_PRIO_MAX - 1) | ||
| 730 | urb->transfer_flags = URB_ISO_ASAP; | ||
| 731 | |||
| 732 | hdev->stat.acl_tx++; | 730 | hdev->stat.acl_tx++; |
| 733 | break; | 731 | break; |
| 734 | 732 | ||
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c index 04a3f1b756a8..192b0d118df4 100644 --- a/drivers/net/can/sja1000/sja1000.c +++ b/drivers/net/can/sja1000/sja1000.c | |||
| @@ -95,11 +95,16 @@ static void sja1000_write_cmdreg(struct sja1000_priv *priv, u8 val) | |||
| 95 | spin_unlock_irqrestore(&priv->cmdreg_lock, flags); | 95 | spin_unlock_irqrestore(&priv->cmdreg_lock, flags); |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | static int sja1000_is_absent(struct sja1000_priv *priv) | ||
| 99 | { | ||
| 100 | return (priv->read_reg(priv, REG_MOD) == 0xFF); | ||
| 101 | } | ||
| 102 | |||
| 98 | static int sja1000_probe_chip(struct net_device *dev) | 103 | static int sja1000_probe_chip(struct net_device *dev) |
| 99 | { | 104 | { |
| 100 | struct sja1000_priv *priv = netdev_priv(dev); | 105 | struct sja1000_priv *priv = netdev_priv(dev); |
| 101 | 106 | ||
| 102 | if (priv->reg_base && (priv->read_reg(priv, 0) == 0xFF)) { | 107 | if (priv->reg_base && sja1000_is_absent(priv)) { |
| 103 | printk(KERN_INFO "%s: probing @0x%lX failed\n", | 108 | printk(KERN_INFO "%s: probing @0x%lX failed\n", |
| 104 | DRV_NAME, dev->base_addr); | 109 | DRV_NAME, dev->base_addr); |
| 105 | return 0; | 110 | return 0; |
| @@ -493,6 +498,9 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id) | |||
| 493 | while ((isrc = priv->read_reg(priv, REG_IR)) && (n < SJA1000_MAX_IRQ)) { | 498 | while ((isrc = priv->read_reg(priv, REG_IR)) && (n < SJA1000_MAX_IRQ)) { |
| 494 | n++; | 499 | n++; |
| 495 | status = priv->read_reg(priv, REG_SR); | 500 | status = priv->read_reg(priv, REG_SR); |
| 501 | /* check for absent controller due to hw unplug */ | ||
| 502 | if (status == 0xFF && sja1000_is_absent(priv)) | ||
| 503 | return IRQ_NONE; | ||
| 496 | 504 | ||
| 497 | if (isrc & IRQ_WUI) | 505 | if (isrc & IRQ_WUI) |
| 498 | dev_warn(dev->dev.parent, "wakeup interrupt\n"); | 506 | dev_warn(dev->dev.parent, "wakeup interrupt\n"); |
| @@ -509,6 +517,9 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id) | |||
| 509 | while (status & SR_RBS) { | 517 | while (status & SR_RBS) { |
| 510 | sja1000_rx(dev); | 518 | sja1000_rx(dev); |
| 511 | status = priv->read_reg(priv, REG_SR); | 519 | status = priv->read_reg(priv, REG_SR); |
| 520 | /* check for absent controller */ | ||
| 521 | if (status == 0xFF && sja1000_is_absent(priv)) | ||
| 522 | return IRQ_NONE; | ||
| 512 | } | 523 | } |
| 513 | } | 524 | } |
| 514 | if (isrc & (IRQ_DOI | IRQ_EI | IRQ_BEI | IRQ_EPI | IRQ_ALI)) { | 525 | if (isrc & (IRQ_DOI | IRQ_EI | IRQ_BEI | IRQ_EPI | IRQ_ALI)) { |
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c index b8591246eb4c..1ff3c6df35a2 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c | |||
| @@ -2244,10 +2244,6 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb, | |||
| 2244 | dev_info(&adapter->pdev->dev, "tx locked\n"); | 2244 | |
