diff options
Diffstat (limited to 'drivers/pcmcia/pcmcia_resource.c')
-rw-r--r-- | drivers/pcmcia/pcmcia_resource.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c index 599b116d9747..89022ad5b520 100644 --- a/drivers/pcmcia/pcmcia_resource.c +++ b/drivers/pcmcia/pcmcia_resource.c | |||
@@ -447,7 +447,7 @@ int pcmcia_modify_configuration(struct pcmcia_device *p_dev, | |||
447 | (mod->Attributes & CONF_VPP2_CHANGE_VALID)) { | 447 | (mod->Attributes & CONF_VPP2_CHANGE_VALID)) { |
448 | if (mod->Vpp1 != mod->Vpp2) | 448 | if (mod->Vpp1 != mod->Vpp2) |
449 | return CS_BAD_VPP; | 449 | return CS_BAD_VPP; |
450 | c->Vpp1 = c->Vpp2 = s->socket.Vpp = mod->Vpp1; | 450 | s->socket.Vpp = mod->Vpp1; |
451 | if (s->ops->set_socket(s, &s->socket)) | 451 | if (s->ops->set_socket(s, &s->socket)) |
452 | return CS_BAD_VPP; | 452 | return CS_BAD_VPP; |
453 | } else if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) || | 453 | } else if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) || |
@@ -623,8 +623,6 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev, | |||
623 | if (s->ops->set_socket(s, &s->socket)) | 623 | if (s->ops->set_socket(s, &s->socket)) |
624 | return CS_BAD_VPP; | 624 | return CS_BAD_VPP; |
625 | 625 | ||
626 | c->Vcc = req->Vcc; c->Vpp1 = c->Vpp2 = req->Vpp1; | ||
627 | |||
628 | /* Pick memory or I/O card, DMA mode, interrupt */ | 626 | /* Pick memory or I/O card, DMA mode, interrupt */ |
629 | c->IntType = req->IntType; | 627 | c->IntType = req->IntType; |
630 | c->Attributes = req->Attributes; | 628 | c->Attributes = req->Attributes; |
@@ -822,7 +820,7 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) | |||
822 | ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || | 820 | ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || |
823 | (s->functions > 1) || | 821 | (s->functions > 1) || |
824 | (irq == s->pci_irq)) ? SA_SHIRQ : 0, | 822 | (irq == s->pci_irq)) ? SA_SHIRQ : 0, |
825 | p_dev->dev.bus_id, | 823 | p_dev->devname, |
826 | (req->Attributes & IRQ_HANDLE_PRESENT) ? req->Instance : data); | 824 | (req->Attributes & IRQ_HANDLE_PRESENT) ? req->Instance : data); |
827 | if (!ret) { | 825 | if (!ret) { |
828 | if (!(req->Attributes & IRQ_HANDLE_PRESENT)) | 826 | if (!(req->Attributes & IRQ_HANDLE_PRESENT)) |
@@ -832,7 +830,8 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) | |||
832 | } | 830 | } |
833 | } | 831 | } |
834 | #endif | 832 | #endif |
835 | if (ret) { | 833 | /* only assign PCI irq if no IRQ already assigned */ |
834 | if (ret && !s->irq.AssignedIRQ) { | ||
836 | if (!s->pci_irq) | 835 | if (!s->pci_irq) |
837 | return ret; | 836 | return ret; |
838 | irq = s->pci_irq; | 837 | irq = s->pci_irq; |
@@ -843,7 +842,7 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) | |||
843 | ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || | 842 | ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || |
844 | (s->functions > 1) || | 843 | (s->functions > 1) || |
845 | (irq == s->pci_irq)) ? SA_SHIRQ : 0, | 844 | (irq == s->pci_irq)) ? SA_SHIRQ : 0, |
846 | p_dev->dev.bus_id, req->Instance)) | 845 | p_dev->devname, req->Instance)) |
847 | return CS_IN_USE; | 846 | return CS_IN_USE; |
848 | } | 847 | } |
849 | 848 | ||