static void sbc_gxx_write8(struct map_info *map, map_word d, unsigned long adr) { spin_lock(&sbc_gxx_spin); sbc_gxx_page(map, adr); writeb(d.x[0], iomapadr + (adr & WINDOW_MASK)); spin_unlock(&sbc_gxx_spin); }
static void sbc_gxx_write32(struct map_info *map, __u32 d, unsigned long adr) { spin_lock(&sbc_gxx_spin); sbc_gxx_page(map, adr); writel(d, iomapadr + (adr & WINDOW_MASK)); spin_unlock(&sbc_gxx_spin); }
static map_word sbc_gxx_read8(struct map_info *map, unsigned long ofs) { map_word ret; spin_lock(&sbc_gxx_spin); sbc_gxx_page(map, ofs); ret.x[0] = readb(iomapadr + (ofs & WINDOW_MASK)); spin_unlock(&sbc_gxx_spin); return ret; }
static __u32 sbc_gxx_read32(struct map_info *map, unsigned long ofs) { __u32 ret; spin_lock(&sbc_gxx_spin); sbc_gxx_page(map, ofs); ret = readl(iomapadr + (ofs & WINDOW_MASK)); spin_unlock(&sbc_gxx_spin); return ret; }
static void sbc_gxx_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(&sbc_gxx_spin); sbc_gxx_page(map, to); memcpy_toio(iomapadr + (to & WINDOW_MASK), from, thislen); spin_unlock(&sbc_gxx_spin); to += thislen; from += thislen; len -= thislen; } }
static void sbc_gxx_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(&sbc_gxx_spin); sbc_gxx_page(map, from); memcpy_fromio(to, iomapadr + (from & WINDOW_MASK), thislen); spin_unlock(&sbc_gxx_spin); to += thislen; from += thislen; len -= thislen; } }