aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/bt3c_cs.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/bluetooth/bt3c_cs.c
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/bluetooth/bt3c_cs.c')
-rw-r--r--drivers/bluetooth/bt3c_cs.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c
index d58e22b9f06a..027cb8bf650f 100644
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -345,7 +345,9 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
345 int iir; 345 int iir;
346 irqreturn_t r = IRQ_NONE; 346 irqreturn_t r = IRQ_NONE;
347 347
348 BUG_ON(!info->hdev); 348 if (!info || !info->hdev)
349 /* our irq handler is shared */
350 return IRQ_NONE;
349 351
350 iobase = info->p_dev->io.BasePort1; 352 iobase = info->p_dev->io.BasePort1;
351 353
@@ -580,7 +582,7 @@ static int bt3c_open(bt3c_info_t *info)
580 582
581 info->hdev = hdev; 583 info->hdev = hdev;
582 584
583 hdev->type = HCI_PCCARD; 585 hdev->bus = HCI_PCCARD;
584 hdev->driver_data = info; 586 hdev->driver_data = info;
585 SET_HCIDEV_DEV(hdev, &info->p_dev->dev); 587 SET_HCIDEV_DEV(hdev, &info->p_dev->dev);
586 588
@@ -659,11 +661,9 @@ static int bt3c_probe(struct pcmcia_device *link)
659 661
660 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; 662 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
661 link->io.NumPorts1 = 8; 663 link->io.NumPorts1 = 8;
662 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT; 664 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
663 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
664 665
665 link->irq.Handler = bt3c_interrupt; 666 link->irq.Handler = bt3c_interrupt;
666 link->irq.Instance = info;
667 667
668 link->conf.Attributes = CONF_ENABLE_IRQ; 668 link->conf.Attributes = CONF_ENABLE_IRQ;
669 link->conf.IntType = INT_MEMORY_AND_IO; 669 link->conf.IntType = INT_MEMORY_AND_IO;
@@ -740,21 +740,16 @@ static int bt3c_config(struct pcmcia_device *link)
740 goto found_port; 740 goto found_port;
741 741
742 BT_ERR("No usable port range found"); 742 BT_ERR("No usable port range found");
743 cs_error(link, RequestIO, -ENODEV);
744 goto failed; 743 goto failed;
745 744
746found_port: 745found_port:
747 i = pcmcia_request_irq(link, &link->irq); 746 i = pcmcia_request_irq(link, &link->irq);
748 if (i != 0) { 747 if (i != 0)
749 cs_error(link, RequestIRQ, i);
750 link->irq.AssignedIRQ = 0; 748 link->irq.AssignedIRQ = 0;
751 }
752 749
753 i = pcmcia_request_configuration(link, &link->conf); 750 i = pcmcia_request_configuration(link, &link->conf);
754 if (i != 0) { 751 if (i != 0)
755 cs_error(link, RequestConfiguration, i);
756 goto failed; 752 goto failed;
757 }
758 753
759 if (bt3c_open(info) != 0) 754 if (bt3c_open(info) != 0)
760 goto failed; 755 goto failed;