static void elan_104nc_write32(struct map_info *map, __u32 d, unsigned long adr) { spin_lock(&elan_104nc_spin); elan_104nc_page(map, adr); writel(d, iomapadr + (adr & WINDOW_MASK)); spin_unlock(&elan_104nc_spin); }
static map_word elan_104nc_read16(struct map_info *map, unsigned long ofs) { map_word ret; spin_lock(&elan_104nc_spin); elan_104nc_page(map, ofs); ret.x[0] = readw(iomapadr + (ofs & WINDOW_MASK)); spin_unlock(&elan_104nc_spin); return ret; }
static __u32 elan_104nc_read32(struct map_info *map, unsigned long ofs) { __u32 ret; spin_lock(&elan_104nc_spin); elan_104nc_page(map, ofs); ret = readl(iomapadr + (ofs & WINDOW_MASK)); spin_unlock(&elan_104nc_spin); return ret; }
static void elan_104nc_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len) { while(len) { unsigned long thislen = len; if (len > (WINDOW_LENGTH - (to & WINDOW_MASK))) thislen = WINDOW_LENGTH-(to & WINDOW_MASK); spin_lock(&elan_104nc_spin); elan_104nc_page(map, to); memcpy_toio(iomapadr + (to & WINDOW_MASK), from, thislen); spin_unlock(&elan_104nc_spin); to += thislen; from += thislen; len -= thislen; } }
static void elan_104nc_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len) { while (len) { unsigned long thislen = len; if (len > (WINDOW_LENGTH - (from & WINDOW_MASK))) thislen = WINDOW_LENGTH-(from & WINDOW_MASK); spin_lock(&elan_104nc_spin); elan_104nc_page(map, from); memcpy_fromio(to, iomapadr + (from & WINDOW_MASK), thislen); spin_unlock(&elan_104nc_spin); to += thislen; from += thislen; len -= thislen; } }