static void pcmcia_write16_remap(struct map_info *map, map_word d, unsigned long adr) { caddr_t addr = remap_window(map, adr); if(!addr) return; DEBUG(3, "adr = 0x%08lx (%p) data = 0x%04x", adr, addr, d.x[0]); writew(d.x[0], addr); }
static void pcmcia_write8_remap(struct map_info *map, u8 d, unsigned long adr) { caddr_t addr = remap_window(map, adr); if(!addr) return; DEBUG(3, "adr = 0x%08lx (%p) data = 0x%02x", adr, addr, d); writeb(d, addr); }
static map_word pcmcia_read16_remap(struct map_info *map, unsigned long ofs) { caddr_t addr; map_word d = {{0}}; addr = remap_window(map, ofs); if(!addr) return d; d.x[0] = readw(addr); DEBUG(3, "ofs = 0x%08lx (%p) data = 0x%04x", ofs, addr, d.x[0]); return d; }
static u16 pcmcia_read16_remap(struct map_info *map, unsigned long ofs) { caddr_t addr; u16 d; addr = remap_window(map, ofs); if(!addr) return 0; d = readw(addr); DEBUG(3, "ofs = 0x%08lx (%p) data = 0x%04x", ofs, addr, d); return d; }
static void pcmcia_copy_to_remap(struct map_info *map, unsigned long to, const void *from, ssize_t len) { struct pcmciamtd_dev *dev = (struct pcmciamtd_dev *)map->map_priv_1; unsigned long win_size = dev->win_size; DEBUG(3, "to = %lu from = %p len = %u", to, from, len); while(len) { int towrite = win_size - (to & (win_size-1)); caddr_t addr; if(towrite > len) towrite = len; addr = remap_window(map, to); if(!addr) return; DEBUG(4, "memcpy from %p to %p len = %d", from, addr, towrite); memcpy_toio(addr, from, towrite); len -= towrite; to += towrite; from += towrite; } }
static void pcmcia_copy_from_remap(struct map_info *map, void *to, unsigned long from, ssize_t len) { struct pcmciamtd_dev *dev = (struct pcmciamtd_dev *)map->map_priv_1; unsigned long win_size = dev->win_size; DEBUG(3, "to = %p from = %lu len = %u", to, from, len); while(len) { int toread = win_size - (from & (win_size-1)); caddr_t addr; if(toread > len) toread = len; addr = remap_window(map, from); if(!addr) return; DEBUG(4, "memcpy from %p to %p len = %d", addr, to, toread); memcpy_fromio(to, addr, toread); len -= toread; to += toread; from += toread; } }