Lines Matching full:socket

62 static unsigned char indirect_read(struct pd6729_socket *socket,  in indirect_read()  argument
70 reg += socket->number * 0x40; in indirect_read()
71 port = socket->io_base; in indirect_read()
79 static unsigned short indirect_read16(struct pd6729_socket *socket, in indirect_read16() argument
87 reg = reg + socket->number * 0x40; in indirect_read16()
88 port = socket->io_base; in indirect_read16()
99 static void indirect_write(struct pd6729_socket *socket, unsigned short reg, in indirect_write() argument
106 reg = reg + socket->number * 0x40; in indirect_write()
107 port = socket->io_base; in indirect_write()
113 static void indirect_setbit(struct pd6729_socket *socket, unsigned short reg, in indirect_setbit() argument
121 reg = reg + socket->number * 0x40; in indirect_setbit()
122 port = socket->io_base; in indirect_setbit()
131 static void indirect_resetbit(struct pd6729_socket *socket, unsigned short reg, in indirect_resetbit() argument
139 reg = reg + socket->number * 0x40; in indirect_resetbit()
140 port = socket->io_base; in indirect_resetbit()
149 static void indirect_write16(struct pd6729_socket *socket, unsigned short reg, in indirect_write16() argument
157 reg = reg + socket->number * 0x40; in indirect_write16()
158 port = socket->io_base; in indirect_write16()
176 struct pd6729_socket *socket = (struct pd6729_socket *)dev; in pd6729_interrupt() local
196 csc = indirect_read(&socket[i], I365_CSC); in pd6729_interrupt()
197 if (csc == 0) /* no events on this socket */ in pd6729_interrupt()
205 dev_vdbg(&socket[i].socket.dev, in pd6729_interrupt()
206 "Card detected in socket %i!\n", i); in pd6729_interrupt()
209 if (indirect_read(&socket[i], I365_INTCTL) in pd6729_interrupt()
225 pcmcia_parse_events(&socket[i].socket, events); in pd6729_interrupt()
236 /* socket functions */
240 struct pd6729_socket *socket = (struct pd6729_socket *) data; in pd6729_interrupt_wrapper() local
242 pd6729_interrupt(0, (void *)socket); in pd6729_interrupt_wrapper()
243 mod_timer(&socket->poll_timer, jiffies + HZ); in pd6729_interrupt_wrapper()
248 struct pd6729_socket *socket in pd6729_get_status() local
249 = container_of(sock, struct pd6729_socket, socket); in pd6729_get_status()
255 status = indirect_read(socket, I365_STATUS); in pd6729_get_status()
265 if (indirect_read(socket, I365_INTCTL) & I365_PC_IOCARD) { in pd6729_get_status()
286 t = (socket->number) ? socket : socket + 1; in pd6729_get_status()
289 *value |= (data & PD67_EXD_VS1(socket->number)) ? 0 : SS_3VCARD; in pd6729_get_status()
297 struct pd6729_socket *socket in pd6729_set_socket() local
298 = container_of(sock, struct pd6729_socket, socket); in pd6729_set_socket()
302 indirect_write(socket, I365_GBLCTL, 0x00); in pd6729_set_socket()
303 indirect_write(socket, I365_GENCTL, 0x00); in pd6729_set_socket()
306 socket->card_irq = state->io_irq; in pd6729_set_socket()
316 indirect_write(socket, I365_INTCTL, reg); in pd6729_set_socket()
336 "setting voltage to Vcc to 3.3V on socket %i\n", in pd6729_set_socket()
337 socket->number); in pd6729_set_socket()
339 indirect_setbit(socket, PD67_MISC_CTL_1, PD67_MC1_VCC_3V); in pd6729_set_socket()
343 "setting voltage to Vcc to 5V on socket %i\n", in pd6729_set_socket()
344 socket->number); in pd6729_set_socket()
346 indirect_resetbit(socket, PD67_MISC_CTL_1, PD67_MC1_VCC_3V); in pd6729_set_socket()
357 dev_dbg(&sock->dev, "not setting Vpp on socket %i\n", in pd6729_set_socket()
358 socket->number); in pd6729_set_socket()
362 dev_dbg(&sock->dev, "setting Vpp to Vcc for socket %i\n", in pd6729_set_socket()
363 socket->number); in pd6729_set_socket()
377 if (reg != indirect_read(socket, I365_POWER)) in pd6729_set_socket()
378 indirect_write(socket, I365_POWER, reg); in pd6729_set_socket()
386 indirect_write(socket, PD67_EXT_INDEX, PD67_EXT_CTL_1); in pd6729_set_socket()
387 indirect_write(socket, PD67_EXT_DATA, data); in pd6729_set_socket()
408 indirect_write(socket, I365_CSCINT, reg); in pd6729_set_socket()
410 reg = indirect_read(socket, I365_INTCTL); in pd6729_set_socket()
414 reg |= socket->card_irq; in pd6729_set_socket()
415 indirect_write(socket, I365_INTCTL, reg); in pd6729_set_socket()
418 (void)indirect_read(socket, I365_CSC); in pd6729_set_socket()
426 struct pd6729_socket *socket in pd6729_set_io_map() local
427 = container_of(sock, struct pd6729_socket, socket); in pd6729_set_io_map()
439 if (indirect_read(socket, I365_ADDRWIN) & I365_ENA_IO(map)) in pd6729_set_io_map()
440 indirect_resetbit(socket, I365_ADDRWIN, I365_ENA_IO(map)); in pd6729_set_io_map()
446 indirect_write16(socket, I365_IO(map)+I365_W_START, io->start); in pd6729_set_io_map()
447 indirect_write16(socket, I365_IO(map)+I365_W_STOP, io->stop); in pd6729_set_io_map()
449 ioctl = indirect_read(socket, I365_IOCTL) & ~I365_IOCTL_MASK(map); in pd6729_set_io_map()
458 indirect_write(socket, I365_IOCTL, ioctl); in pd6729_set_io_map()
462 indirect_setbit(socket, I365_ADDRWIN, I365_ENA_IO(map)); in pd6729_set_io_map()
470 struct pd6729_socket *socket in pd6729_set_mem_map() local
471 = container_of(sock, struct pd6729_socket, socket); in pd6729_set_mem_map()
487 if (indirect_read(socket, I365_ADDRWIN) & I365_ENA_MEM(map)) in pd6729_set_mem_map()
488 indirect_resetbit(socket, I365_ADDRWIN, I365_ENA_MEM(map)); in pd6729_set_mem_map()
497 indirect_write16(socket, base + I365_W_START, i); in pd6729_set_mem_map()
516 indirect_write16(socket, base + I365_W_STOP, i); in pd6729_set_mem_map()
519 indirect_write(socket, PD67_EXT_INDEX, PD67_MEM_PAGE(map)); in pd6729_set_mem_map()
520 indirect_write(socket, PD67_EXT_DATA, mem->res->start >> 24); in pd6729_set_mem_map()
529 "socket %i\n", socket->number);*/ in pd6729_set_mem_map()
533 "socket %i\n", socket->number);*/ in pd6729_set_mem_map()
535 indirect_write16(socket, base + I365_W_OFF, i); in pd6729_set_mem_map()
539 indirect_setbit(socket, I365_ADDRWIN, I365_ENA_MEM(map)); in pd6729_set_mem_map()
630 struct pd6729_socket *socket; in pd6729_pci_probe() local
632 socket = kzalloc(sizeof(struct pd6729_socket) * MAX_SOCKETS, in pd6729_pci_probe()
634 if (!socket) { in pd6729_pci_probe()
635 dev_warn(&dev->dev, "failed to kzalloc socket.\n"); in pd6729_pci_probe()
681 socket[i].io_base = pci_resource_start(dev, 0); in pd6729_pci_probe()
682 socket[i].socket.features |= SS_CAP_PAGE_REGS | SS_CAP_PCCARD; in pd6729_pci_probe()
683 socket[i].socket.map_size = 0x1000; in pd6729_pci_probe()
684 socket[i].socket.irq_mask = mask; in pd6729_pci_probe()
685 socket[i].socket.pci_irq = dev->irq; in pd6729_pci_probe()
686 socket[i].socket.cb_dev = dev; in pd6729_pci_probe()
687 socket[i].socket.owner = THIS_MODULE; in pd6729_pci_probe()
689 socket[i].number = i; in pd6729_pci_probe()
691 socket[i].socket.ops = &pd6729_operations; in pd6729_pci_probe()
692 socket[i].socket.resource_ops = &pccard_nonstatic_ops; in pd6729_pci_probe()
693 socket[i].socket.dev.parent = &dev->dev; in pd6729_pci_probe()
694 socket[i].socket.driver_data = &socket[i]; in pd6729_pci_probe()
697 pci_set_drvdata(dev, socket); in pd6729_pci_probe()
701 "pd6729", socket); in pd6729_pci_probe()
709 init_timer(&socket->poll_timer); in pd6729_pci_probe()
710 socket->poll_timer.function = pd6729_interrupt_wrapper; in pd6729_pci_probe()
711 socket->poll_timer.data = (unsigned long)socket; in pd6729_pci_probe()
712 socket->poll_timer.expires = jiffies + HZ; in pd6729_pci_probe()
713 add_timer(&socket->poll_timer); in pd6729_pci_probe()
717 ret = pcmcia_register_socket(&socket[i].socket); in pd6729_pci_probe()
721 pcmcia_unregister_socket(&socket[j].socket); in pd6729_pci_probe()
730 free_irq(dev->irq, socket); in pd6729_pci_probe()
732 del_timer_sync(&socket->poll_timer); in pd6729_pci_probe()
739 kfree(socket); in pd6729_pci_probe()
746 struct pd6729_socket *socket = pci_get_drvdata(dev); in pd6729_pci_remove() local
750 indirect_write(&socket[i], I365_CSCINT, 0); in pd6729_pci_remove()
751 indirect_write(&socket[i], I365_INTCTL, 0); in pd6729_pci_remove()
753 pcmcia_unregister_socket(&socket[i].socket); in pd6729_pci_remove()
757 free_irq(dev->irq, socket); in pd6729_pci_remove()
759 del_timer_sync(&socket->poll_timer); in pd6729_pci_remove()
763 kfree(socket); in pd6729_pci_remove()