Lines Matching refs:socket

56 static inline uint8_t exca_readb(vrc4173_socket_t *socket, uint16_t offset)
58 return readb(socket->base + EXCA_REGS_BASE + offset);
61 static inline uint16_t exca_readw(vrc4173_socket_t *socket, uint16_t offset)
65 val = readb(socket->base + EXCA_REGS_BASE + offset);
66 val |= (u16)readb(socket->base + EXCA_REGS_BASE + offset + 1) << 8;
71 static inline void exca_writeb(vrc4173_socket_t *socket, uint16_t offset, uint8_t val)
73 writeb(val, socket->base + EXCA_REGS_BASE + offset);
76 static inline void exca_writew(vrc4173_socket_t *socket, uint8_t offset, uint16_t val)
78 writeb((u8)val, socket->base + EXCA_REGS_BASE + offset);
79 writeb((u8)(val >> 8), socket->base + EXCA_REGS_BASE + offset + 1);
82 static inline uint32_t cardbus_socket_readl(vrc4173_socket_t *socket, u16 offset)
84 return readl(socket->base + CARDBUS_SOCKET_REGS_BASE + offset);
87 static inline void cardbus_socket_writel(vrc4173_socket_t *socket, u16 offset, uint32_t val)
89 writel(val, socket->base + CARDBUS_SOCKET_REGS_BASE + offset);
124 vrc4173_socket_t *socket = &cardu_sockets[slot];
126 cardu_pciregs_init(socket->dev);
129 exca_writeb(socket, GLO_CNT, 0);
131 socket->cap.features |= SS_CAP_PCCARD | SS_CAP_PAGE_REGS;
132 socket->cap.irq_mask = 0;
133 socket->cap.map_size = 0x1000;
134 socket->cap.pci_irq = socket->dev->irq;
135 socket->events = 0;
136 spin_lock_init(socket->event_lock);
139 exca_writeb(socket, CARD_SCI, CARD_DT_EN|RDY_EN|BAT_WAR_EN|BAT_DEAD_EN);
148 vrc4173_socket_t *socket = &cardu_sockets[sock];
150 socket->handler = handler;
151 socket->info = info;
158 vrc4173_socket_t *socket = &cardu_sockets[sock];
160 *cap = socket->cap;
167 vrc4173_socket_t *socket = &cardu_sockets[sock];
172 status = exca_readb(socket, IF_STATUS);
178 if (exca_readb(socket, INT_GEN_CNT) & CARD_TYPE_IO) {
188 state = cardbus_socket_readl(socket, SKT_PRE_STATE);
228 vrc4173_socket_t *socket = &cardu_sockets[sock];
237 exca_writeb(socket, PWR_CNT, val);
239 val = exca_readb(socket, INT_GEN_CNT) & CARD_REST0;
243 exca_writeb(socket, INT_GEN_CNT, val);
250 vrc4173_socket_t *socket = &cardu_sockets[sock];
258 io->start = exca_readw(socket, IO_WIN_SA(map));
259 io->stop = exca_readw(socket, IO_WIN_EA(map));
261 ioctl = exca_readb(socket, IO_WIN_CNT);
262 window = exca_readb(socket, ADR_WIN_EN);
274 vrc4173_socket_t *socket = &cardu_sockets[sock];
283 window = exca_readb(socket, ADR_WIN_EN);
288 exca_writeb(socket, ADR_WIN_EN, window);
291 exca_writew(socket, IO_WIN_SA(map), io->start);
292 exca_writew(socket, IO_WIN_EA(map), io->stop);
294 ioctl = exca_readb(socket, IO_WIN_CNT) & ~IO_WIN_CNT_MASK(map);
297 exca_writeb(socket, IO_WIN_CNT, ioctl);
300 exca_writeb(socket, ADR_WIN_EN, window | enable);
307 vrc4173_socket_t *socket = &cardu_sockets[sock];
316 window = exca_readb(socket, ADR_WIN_EN);
319 start = exca_readw(socket, MEM_WIN_SA(map));
323 stop = exca_readw(socket, MEM_WIN_EA(map));
326 offset = exca_readw(socket, MEM_WIN_OA(map));
332 page = exca_readb(socket, MEM_WIN_SAU(map)) << 24;
341 vrc4173_socket_t *socket = &cardu_sockets[sock];
356 window = exca_readb(socket, ADR_WIN_EN);
360 exca_writeb(socket, ADR_WIN_EN, window);
363 exca_writeb(socket, MEM_WIN_SAU(map), sys_start >> 24);
367 exca_writew(socket, MEM_WIN_SA(map), value);
370 exca_writew(socket, MEM_WIN_EA(map), value);
375 exca_writew(socket, MEM_WIN_OA(map), value);
378 exca_writeb(socket, ADR_WIN_EN, window | enable);
402 vrc4173_socket_t *socket = (vrc4173_socket_t *)data;
405 spin_lock_irq(&socket->event_lock);
406 events = socket->events;
407 socket->events = 0;
408 spin_unlock_irq(&socket->event_lock);
410 if (socket->handler)
411 socket->handler(socket->info, events);
414 static uint16_t get_events(vrc4173_socket_t *socket)
419 status = exca_readb(socket, IF_STATUS);
420 csc = exca_readb(socket, CARD_SC);
428 if (exca_readb(socket, INT_GEN_CNT) & CARD_TYPE_IO) {
445 vrc4173_socket_t *socket = (vrc4173_socket_t *)dev_id;
448 INIT_WORK(&socket->tq_work, cardu_bh, socket);
450 events = get_events(socket);
452 spin_lock(&socket->event_lock);
453 socket->events |= events;
454 spin_unlock(&socket->event_lock);
455 schedule_work(&socket->tq_work);
462 vrc4173_socket_t *socket;
467 socket = &cardu_sockets[slot];
468 if (socket->noprobe != 0)
471 sprintf(socket->name, "NEC VRC4173 CARDU%1d", slot+1);
494 err = pci_request_regions(dev, socket->name);
500 socket->base = ioremap(start, len);
501 if (socket->base == NULL) {
506 socket->dev = dev;
508 socket->pcmcia_socket = pcmcia_register_socket(slot, &cardu_operations, 1);
509 if (socket->pcmcia_socket == NULL) {
514 if (request_irq(dev->irq, cardu_interrupt, IRQF_SHARED, socket->name, socket) < 0) {
519 printk(KERN_INFO "%s at %#08lx, IRQ %d\n", socket->name, start, dev->irq);
524 pcmcia_unregister_socket(socket->pcmcia_socket);
525 socket->pcmcia_socket = NULL;
527 iounmap(socket->base);
528 socket->base = NULL;