• Home
  • Raw
  • Download

Lines Matching +full:mem +full:- +full:io

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (C) 2003-2005 Yoichi Yuasa <yuasa@linux-mips.org>
15 #include <asm/io.h>
22 MODULE_AUTHOR("Yoichi Yuasa <yuasa@linux-mips.org>");
219 return -1; in search_nonuse_irq()
227 sock->features |= SS_CAP_PCCARD | SS_CAP_PAGE_REGS; in pccard_init()
228 sock->irq_mask = 0; in pccard_init()
229 sock->map_size = 0x1000; in pccard_init()
230 sock->pci_irq = vrc4171_irq; in pccard_init()
232 slot = sock->sock; in pccard_init()
234 socket->csc_irq = search_nonuse_irq(); in pccard_init()
235 socket->io_irq = search_nonuse_irq(); in pccard_init()
236 spin_lock_init(&socket->lock); in pccard_init()
247 if (sock == NULL || sock->sock >= CARD_MAX_SLOTS || value == NULL) in pccard_get_status()
248 return -EINVAL; in pccard_get_status()
250 slot = sock->sock; in pccard_get_status()
311 if (sock == NULL || sock->sock >= CARD_MAX_SLOTS || in pccard_set_socket()
312 (state->Vpp != state->Vcc && state->Vpp != 0) || in pccard_set_socket()
313 (state->Vcc != 50 && state->Vcc != 33 && state->Vcc != 0)) in pccard_set_socket()
314 return -EINVAL; in pccard_set_socket()
316 slot = sock->sock; in pccard_set_socket()
319 spin_lock_irq(&socket->lock); in pccard_set_socket()
321 voltage = set_Vcc_value(state->Vcc); in pccard_set_socket()
325 if (state->Vpp == state->Vcc) in pccard_set_socket()
327 if (state->flags & SS_OUTPUT_ENA) in pccard_set_socket()
332 if (state->io_irq != 0) in pccard_set_socket()
333 control |= socket->io_irq; in pccard_set_socket()
334 if (state->flags & SS_IOCARD) in pccard_set_socket()
336 if (state->flags & SS_RESET) in pccard_set_socket()
345 if (state->csc_mask != 0) in pccard_set_socket()
346 cscint |= socket->csc_irq << 8; in pccard_set_socket()
347 if (state->flags & SS_IOCARD) { in pccard_set_socket()
348 if (state->csc_mask & SS_STSCHG) in pccard_set_socket()
351 if (state->csc_mask & SS_BATDEAD) in pccard_set_socket()
353 if (state->csc_mask & SS_BATWARN) in pccard_set_socket()
356 if (state->csc_mask & SS_READY) in pccard_set_socket()
358 if (state->csc_mask & SS_DETECT) in pccard_set_socket()
362 spin_unlock_irq(&socket->lock); in pccard_set_socket()
367 static int pccard_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *io) in pccard_set_io_map() argument
373 if (sock == NULL || sock->sock >= CARD_MAX_SLOTS || in pccard_set_io_map()
374 io == NULL || io->map >= IO_MAX_MAPS || in pccard_set_io_map()
375 io->start > 0xffff || io->stop > 0xffff || io->start > io->stop) in pccard_set_io_map()
376 return -EINVAL; in pccard_set_io_map()
378 slot = sock->sock; in pccard_set_io_map()
379 map = io->map; in pccard_set_io_map()
387 exca_write_word(slot, I365_IO(map)+I365_W_START, io->start); in pccard_set_io_map()
388 exca_write_word(slot, I365_IO(map)+I365_W_STOP, io->stop); in pccard_set_io_map()
391 if (io->speed > 0) in pccard_set_io_map()
393 if (io->flags & MAP_16BIT) in pccard_set_io_map()
395 if (io->flags & MAP_AUTOSZ) in pccard_set_io_map()
397 if (io->flags & MAP_0WS) in pccard_set_io_map()
401 if (io->flags & MAP_ACTIVE) { in pccard_set_io_map()
409 static int pccard_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map *mem) in pccard_set_mem_map() argument
416 if (sock == NULL || sock->sock >= CARD_MAX_SLOTS || in pccard_set_mem_map()
417 mem == NULL || mem->map >= MEM_MAX_MAPS || in pccard_set_mem_map()
418 mem->res->start < CARD_MEM_START || mem->res->start > CARD_MEM_END || in pccard_set_mem_map()
419 mem->res->end < CARD_MEM_START || mem->res->end > CARD_MEM_END || in pccard_set_mem_map()
420 mem->res->start > mem->res->end || in pccard_set_mem_map()
421 mem->card_start > CARD_MAX_MEM_OFFSET || in pccard_set_mem_map()
422 mem->speed > CARD_MAX_MEM_SPEED) in pccard_set_mem_map()
423 return -EINVAL; in pccard_set_mem_map()
425 slot = sock->sock; in pccard_set_mem_map()
426 map = mem->map; in pccard_set_mem_map()
434 start = (mem->res->start >> 12) & 0x3fff; in pccard_set_mem_map()
435 if (mem->flags & MAP_16BIT) in pccard_set_mem_map()
439 stop = (mem->res->end >> 12) & 0x3fff; in pccard_set_mem_map()
440 switch (mem->speed) { in pccard_set_mem_map()
455 offset = (mem->card_start >> 12) & 0x3fff; in pccard_set_mem_map()
456 if (mem->flags & MAP_ATTRIB) in pccard_set_mem_map()
458 if (mem->flags & MAP_WRPROT) in pccard_set_mem_map()
462 if (mem->flags & MAP_ACTIVE) { in pccard_set_mem_map()
515 if (socket->slot == SLOT_INITIALIZED) { in pccard_interrupt()
516 if (status & (1 << socket->csc_irq)) { in pccard_interrupt()
519 pcmcia_parse_events(&socket->pcmcia_socket, events); in pccard_interrupt()
528 if (socket->slot == SLOT_INITIALIZED) { in pccard_interrupt()
529 if (status & (1 << socket->csc_irq)) { in pccard_interrupt()
532 pcmcia_parse_events(&socket->pcmcia_socket, events); in pccard_interrupt()
565 if (socket->slot != SLOT_PROBE) { in vrc4171_add_sockets()
568 switch (socket->slot) { in vrc4171_add_sockets()
587 sprintf(socket->name, "NEC VRC4171 Card Slot %1c", 'A' + slot); in vrc4171_add_sockets()
588 socket->pcmcia_socket.dev.parent = &vrc4171_card_device.dev; in vrc4171_add_sockets()
589 socket->pcmcia_socket.ops = &vrc4171_pccard_operations; in vrc4171_add_sockets()
590 socket->pcmcia_socket.owner = THIS_MODULE; in vrc4171_add_sockets()
592 retval = pcmcia_register_socket(&socket->pcmcia_socket); in vrc4171_add_sockets()
599 socket->slot = SLOT_INITIALIZED; in vrc4171_add_sockets()
615 if (socket->slot == SLOT_INITIALIZED) in vrc4171_remove_sockets()
616 pcmcia_unregister_socket(&socket->pcmcia_socket); in vrc4171_remove_sockets()
618 socket->slot = SLOT_PROBE; in vrc4171_remove_sockets()