Merge branch 'upstream-fixes' into upstream
[pandora-kernel.git] / drivers / pcmcia / pcmcia_resource.c
index 3281e51..c832339 100644 (file)
@@ -245,10 +245,17 @@ int pccard_get_configuration_info(struct pcmcia_socket *s,
                return CS_SUCCESS;
        }
 
-       /* !!! This is a hack !!! */
-       memcpy(&config->Attributes, &c->Attributes, sizeof(config_t));
-       config->Attributes |= CONF_VALID_CLIENT;
-       config->CardValues = c->CardValues;
+       config->Attributes = c->Attributes | CONF_VALID_CLIENT;
+       config->Vcc = s->socket.Vcc;
+       config->Vpp1 = config->Vpp2 = s->socket.Vpp;
+       config->IntType = c->IntType;
+       config->ConfigBase = c->ConfigBase;
+       config->Status = c->Status;
+       config->Pin = c->Pin;
+       config->Copy = c->Copy;
+       config->Option = c->Option;
+       config->ExtStatus = c->ExtStatus;
+       config->Present = config->CardValues = c->CardValues;
        config->IRQAttributes = c->irq.Attributes;
        config->AssignedIRQ = s->irq.AssignedIRQ;
        config->BasePort1 = c->io.BasePort1;
@@ -801,9 +808,9 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req)
        /* Decide what type of interrupt we are registering */
        type = 0;
        if (s->functions > 1)           /* All of this ought to be handled higher up */
-               type = SA_SHIRQ;
+               type = IRQF_SHARED;
        if (req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)
-               type = SA_SHIRQ;
+               type = IRQF_SHARED;
 
 #ifdef CONFIG_PCMCIA_PROBE
        if (s->irq.AssignedIRQ != 0) {
@@ -845,7 +852,7 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req)
        if (ret && !s->irq.AssignedIRQ) {
                if (!s->pci_irq)
                        return ret;
-               type = SA_SHIRQ;
+               type = IRQF_SHARED;
                irq = s->pci_irq;
        }
 
@@ -855,7 +862,7 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req)
        }
 
        /* Make sure the fact the request type was overridden is passed back */
-       if (type == SA_SHIRQ && !(req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)) {
+       if (type == IRQF_SHARED && !(req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)) {
                req->Attributes |= IRQ_TYPE_DYNAMIC_SHARING;
                printk(KERN_WARNING "pcmcia: request for exclusive IRQ could not be fulfilled.\n");
                printk(KERN_WARNING "pcmcia: the driver needs updating to supported shared IRQ lines.\n");