X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fpcmcia%2Fpd6729.c;h=247ab837f841739f0982c51ecd937692d841f5ef;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=05da3bf154ede186db37caa4b22f65cfb7fdeb39;hpb=6a77f38946aaee1cd85eeec6cf4229b204c15071;p=linux-2.6.git diff --git a/drivers/pcmcia/pd6729.c b/drivers/pcmcia/pd6729.c index 05da3bf15..247ab837f 100644 --- a/drivers/pcmcia/pd6729.c +++ b/drivers/pcmcia/pd6729.c @@ -8,7 +8,6 @@ */ #include -#include #include #include #include @@ -304,75 +303,6 @@ static int pd6729_get_status(struct pcmcia_socket *sock, u_int *value) } -static int pd6729_get_socket(struct pcmcia_socket *sock, socket_state_t *state) -{ - struct pd6729_socket *socket - = container_of(sock, struct pd6729_socket, socket); - unsigned char reg, vcc, vpp; - - state->flags = 0; - state->Vcc = 0; - state->Vpp = 0; - state->io_irq = 0; - state->csc_mask = 0; - - /* First the power status of the socket */ - reg = indirect_read(socket, I365_POWER); - - if (reg & I365_PWR_AUTO) - state->flags |= SS_PWR_AUTO; /* Automatic Power Switch */ - - if (reg & I365_PWR_OUT) - state->flags |= SS_OUTPUT_ENA; /* Output signals are enabled */ - - vcc = reg & I365_VCC_MASK; vpp = reg & I365_VPP1_MASK; - - if (reg & I365_VCC_5V) { - state->Vcc = (indirect_read(socket, PD67_MISC_CTL_1) & - PD67_MC1_VCC_3V) ? 33 : 50; - - if (vpp == I365_VPP1_5V) { - if (state->Vcc == 50) - state->Vpp = 50; - else - state->Vpp = 33; - } - if (vpp == I365_VPP1_12V) - state->Vpp = 120; - } - - /* Now the IO card, RESET flags and IO interrupt */ - reg = indirect_read(socket, I365_INTCTL); - - if ((reg & I365_PC_RESET) == 0) - state->flags |= SS_RESET; - if (reg & I365_PC_IOCARD) - state->flags |= SS_IOCARD; /* This is an IO card */ - - /* Set the IRQ number */ - state->io_irq = socket->card_irq; - - /* Card status change */ - reg = indirect_read(socket, I365_CSCINT); - - if (reg & I365_CSC_DETECT) - state->csc_mask |= SS_DETECT; /* Card detect is enabled */ - - if (state->flags & SS_IOCARD) {/* IO Cards behave different */ - if (reg & I365_CSC_STSCHG) - state->csc_mask |= SS_STSCHG; - } else { - if (reg & I365_CSC_BVD1) - state->csc_mask |= SS_BATDEAD; - if (reg & I365_CSC_BVD2) - state->csc_mask |= SS_BATWARN; - if (reg & I365_CSC_READY) - state->csc_mask |= SS_READY; - } - - return 0; -} - static int pd6729_set_socket(struct pcmcia_socket *sock, socket_state_t *state) { struct pd6729_socket *socket @@ -615,11 +545,6 @@ static int pd6729_set_mem_map(struct pcmcia_socket *sock, return 0; } -static int pd6729_suspend(struct pcmcia_socket *sock) -{ - return pd6729_set_socket(sock, &dead_socket); -} - static int pd6729_init(struct pcmcia_socket *sock) { int i; @@ -644,9 +569,7 @@ static int pd6729_init(struct pcmcia_socket *sock) /* the pccard structure and its functions */ static struct pccard_operations pd6729_operations = { .init = pd6729_init, - .suspend = pd6729_suspend, .get_status = pd6729_get_status, - .get_socket = pd6729_get_socket, .set_socket = pd6729_set_socket, .set_io_map = pd6729_set_io_map, .set_mem_map = pd6729_set_mem_map, @@ -666,7 +589,7 @@ static int pd6729_check_irq(int irq, int flags) return 0; } -static u_int __init pd6729_isa_scan(void) +static u_int __devinit pd6729_isa_scan(void) { u_int mask0, mask = 0; int i; @@ -710,13 +633,11 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev, char configbyte; struct pd6729_socket *socket; - socket = kmalloc(sizeof(struct pd6729_socket) * MAX_SOCKETS, + socket = kzalloc(sizeof(struct pd6729_socket) * MAX_SOCKETS, GFP_KERNEL); if (!socket) return -ENOMEM; - memset(socket, 0, sizeof(struct pd6729_socket) * MAX_SOCKETS); - if ((ret = pci_enable_device(dev))) goto err_out_free_mem; @@ -750,7 +671,7 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev, for (i = 0; i < MAX_SOCKETS; i++) { socket[i].io_base = pci_resource_start(dev, 0); - socket[i].socket.features |= SS_CAP_PCCARD; + socket[i].socket.features |= SS_CAP_PAGE_REGS | SS_CAP_PCCARD; socket[i].socket.map_size = 0x1000; socket[i].socket.irq_mask = mask; socket[i].socket.pci_irq = dev->irq; @@ -833,7 +754,7 @@ static void __devexit pd6729_pci_remove(struct pci_dev *dev) kfree(socket); } -static int pd6729_socket_suspend(struct pci_dev *dev, u32 state) +static int pd6729_socket_suspend(struct pci_dev *dev, pm_message_t state) { return pcmcia_socket_dev_suspend(&dev->dev, state); } @@ -865,7 +786,7 @@ static struct pci_driver pd6729_pci_drv = { static int pd6729_module_init(void) { - return pci_module_init(&pd6729_pci_drv); + return pci_register_driver(&pd6729_pci_drv); } static void pd6729_module_exit(void)