diff options
-rw-r--r-- | drivers/pcmcia/cs.c | 15 | ||||
-rw-r--r-- | drivers/pcmcia/yenta_socket.c | 10 |
2 files changed, 18 insertions, 7 deletions
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index 4d1cc5304e17..e39178fc59d0 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c | |||
@@ -215,6 +215,13 @@ int pcmcia_register_socket(struct pcmcia_socket *socket) | |||
215 | list_add_tail(&socket->socket_list, &pcmcia_socket_list); | 215 | list_add_tail(&socket->socket_list, &pcmcia_socket_list); |
216 | up_write(&pcmcia_socket_list_rwsem); | 216 | up_write(&pcmcia_socket_list_rwsem); |
217 | 217 | ||
218 | #ifndef CONFIG_CARDBUS | ||
219 | /* | ||
220 | * If we do not support Cardbus, ensure that | ||
221 | * the Cardbus socket capability is disabled. | ||
222 | */ | ||
223 | socket->features &= ~SS_CAP_CARDBUS; | ||
224 | #endif | ||
218 | 225 | ||
219 | /* set proper values in socket->dev */ | 226 | /* set proper values in socket->dev */ |
220 | socket->dev.class_data = socket; | 227 | socket->dev.class_data = socket; |
@@ -448,11 +455,11 @@ static int socket_setup(struct pcmcia_socket *skt, int initial_delay) | |||
448 | } | 455 | } |
449 | 456 | ||
450 | if (status & SS_CARDBUS) { | 457 | if (status & SS_CARDBUS) { |
458 | if (!(skt->features & SS_CAP_CARDBUS)) { | ||
459 | cs_err(skt, "cardbus cards are not supported.\n"); | ||
460 | return CS_BAD_TYPE; | ||
461 | } | ||
451 | skt->state |= SOCKET_CARDBUS; | 462 | skt->state |= SOCKET_CARDBUS; |
452 | #ifndef CONFIG_CARDBUS | ||
453 | cs_err(skt, "cardbus cards are not supported.\n"); | ||
454 | return CS_BAD_TYPE; | ||
455 | #endif | ||
456 | } | 463 | } |
457 | 464 | ||
458 | /* | 465 | /* |
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c index 1d593e1dc3d9..0e7aa8176692 100644 --- a/drivers/pcmcia/yenta_socket.c +++ b/drivers/pcmcia/yenta_socket.c | |||
@@ -868,14 +868,11 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket) | |||
868 | */ | 868 | */ |
869 | static void yenta_get_socket_capabilities(struct yenta_socket *socket, u32 isa_irq_mask) | 869 | static void yenta_get_socket_capabilities(struct yenta_socket *socket, u32 isa_irq_mask) |
870 | { | 870 | { |
871 | socket->socket.features |= SS_CAP_PAGE_REGS | SS_CAP_PCCARD | SS_CAP_CARDBUS; | ||
872 | socket->socket.map_size = 0x1000; | ||
873 | socket->socket.pci_irq = socket->cb_irq; | 871 | socket->socket.pci_irq = socket->cb_irq; |
874 | if (isa_probe) | 872 | if (isa_probe) |
875 | socket->socket.irq_mask = yenta_probe_irq(socket, isa_irq_mask); | 873 | socket->socket.irq_mask = yenta_probe_irq(socket, isa_irq_mask); |
876 | else | 874 | else |
877 | socket->socket.irq_mask = 0; | 875 | socket->socket.irq_mask = 0; |
878 | socket->socket.cb_dev = socket->dev; | ||
879 | 876 | ||
880 | printk(KERN_INFO "Yenta: ISA IRQ mask 0x%04x, PCI irq %d\n", | 877 | printk(KERN_INFO "Yenta: ISA IRQ mask 0x%04x, PCI irq %d\n", |
881 | socket->socket.irq_mask, socket->cb_irq); | 878 | socket->socket.irq_mask, socket->cb_irq); |
@@ -941,6 +938,9 @@ static int __devinit yenta_probe (struct pci_dev *dev, const struct pci_device_i | |||
941 | socket->socket.dev.dev = &dev->dev; | 938 | socket->socket.dev.dev = &dev->dev; |
942 | socket->socket.driver_data = socket; | 939 | socket->socket.driver_data = socket; |
943 | socket->socket.owner = THIS_MODULE; | 940 | socket->socket.owner = THIS_MODULE; |
941 | socket->socket.features = SS_CAP_PAGE_REGS | SS_CAP_PCCARD; | ||
942 | socket->socket.map_size = 0x1000; | ||
943 | socket->socket.cb_dev = dev; | ||
944 | 944 | ||
945 | /* prepare struct yenta_socket */ | 945 | /* prepare struct yenta_socket */ |
946 | socket->dev = dev; | 946 | socket->dev = dev; |
@@ -1011,6 +1011,10 @@ static int __devinit yenta_probe (struct pci_dev *dev, const struct pci_device_i | |||
1011 | socket->poll_timer.data = (unsigned long)socket; | 1011 | socket->poll_timer.data = (unsigned long)socket; |
1012 | socket->poll_timer.expires = jiffies + HZ; | 1012 | socket->poll_timer.expires = jiffies + HZ; |
1013 | add_timer(&socket->poll_timer); | 1013 | add_timer(&socket->poll_timer); |
1014 | printk(KERN_INFO "Yenta: no PCI IRQ, CardBus support disabled for this socket.\n" | ||
1015 | KERN_INFO "Yenta: check your BIOS CardBus, BIOS IRQ or ACPI settings.\n"); | ||
1016 | } else { | ||
1017 | socket->socket.features |= SS_CAP_CARDBUS; | ||
1014 | } | 1018 | } |
1015 | 1019 | ||
1016 | /* Figure out what the dang thing can do for the PCMCIA layer... */ | 1020 | /* Figure out what the dang thing can do for the PCMCIA layer... */ |