Lines Matching refs:addr

11 #define addr_to_blk(nor, addr) ((addr) / nor->blk_size)  argument
12 #define addr_to_page(nor, addr) ((addr) / nor->page_size) argument
18 unsigned int addr; member
63 SPINOR_DEBUG("clear cache addr 0x%x\n", c->addr); in clear_cache()
65 c->addr = INVALID_CACHE_ADDR; in clear_cache()
72 c->addr = 0; in delete_cache()
162 static int check_cache_addr(cache_t *c, unsigned int addr, unsigned int len) in check_cache_addr() argument
164 if (c->addr == INVALID_CACHE_ADDR) in check_cache_addr()
167 if (ALIGN_DOWN(addr, CACHE_SIZE) != c->addr) in check_cache_addr()
170 if (ALIGN_DOWN(addr + len - 1, CACHE_SIZE) != c->addr) in check_cache_addr()
175 static inline void set_cache_addr(cache_t *c, unsigned int addr) in set_cache_addr() argument
177 c->addr = ALIGN_DOWN(addr, CACHE_SIZE); in set_cache_addr()
178 SPINOR_DEBUG("set cache addr as 0x%x\n", c->addr); in set_cache_addr()
187 return c->addr + page * nor->page_size; in get_addr_by_page()
196 return c->addr + blk * nor->blk_size; in get_addr_by_blk()
199 static inline void set_bit(int nr, unsigned long *addr) in set_bit() argument
201 addr[nr / BITS_PER_LONG] |= 1UL << (nr % BITS_PER_LONG); in set_bit()
204 static __always_inline int test_bit(unsigned int nr, const unsigned long *addr) in test_bit() argument
207 (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0; in test_bit()
277 if (nc->cache.addr == INVALID_CACHE_ADDR) in nor_flush_cache()
292 int nor_cache_write(unsigned int addr, char *buf, unsigned int len) in nor_cache_write() argument
301 SPINOR_DEBUG("try to write addr 0x%x with size %u\n", addr, len); in nor_cache_write()
303 if (addr % nor->page_size) { in nor_cache_write()
304 SPINOR_ERR("addr %u must align to page size %u\n", addr, nor->page_size); in nor_cache_write()
319 (addr - ALIGN_DOWN(addr, CACHE_SIZE) + len > CACHE_SIZE)) { in nor_cache_write()
324 ret = nor_write(addr, buf, len); in nor_cache_write()
328 ret = check_cache_addr(c, addr, len); in nor_cache_write()
331 addr, len, c->addr); in nor_cache_write()
339 set_cache_addr(c, addr); in nor_cache_write()
342 pbuf = c->buf + (addr - c->addr); in nor_cache_write()
343 page = addr_to_page(nor, addr - c->addr); in nor_cache_write()
373 int nor_cache_read(unsigned int addr, char *buf, unsigned int len) in nor_cache_read() argument
382 SPINOR_DEBUG("try to read addr 0x%x with size %u\n", addr, len); in nor_cache_read()
384 if (addr % nor->page_size) { in nor_cache_read()
385 SPINOR_ERR("addr %u must align to page size %u\n", addr, nor->page_size); in nor_cache_read()
400 (addr - ALIGN_DOWN(addr, CACHE_SIZE) + len > CACHE_SIZE)) { in nor_cache_read()
405 ret = nor_read(addr, buf, len); in nor_cache_read()
409 ret = check_cache_addr(c, addr, len); in nor_cache_read()
411 ret = nor_read(addr, buf, len); in nor_cache_read()
415 pbuf = c->buf + (addr - c->addr); in nor_cache_read()
416 page = addr_to_page(nor, addr - c->addr); in nor_cache_read()
425 blk = addr_to_blk(nor, addr - c->addr); in nor_cache_read()
470 int nor_cache_erase(unsigned int addr, unsigned int len) in nor_cache_erase() argument
478 SPINOR_DEBUG("try to erase addr 0x%x with size %u\n", addr, len); in nor_cache_erase()
480 if (addr % nor->blk_size) { in nor_cache_erase()
481 SPINOR_ERR("addr %u must align to blk size %u\n", addr, nor->blk_size); in nor_cache_erase()
496 (addr - ALIGN_DOWN(addr, CACHE_SIZE) + len > CACHE_SIZE)) { in nor_cache_erase()
502 ret = nor_erase(addr, len); in nor_cache_erase()
506 ret = check_cache_addr(c, addr, len); in nor_cache_erase()
509 addr, len, c->addr); in nor_cache_erase()
517 set_cache_addr(c, addr); in nor_cache_erase()
520 blk = addr_to_blk(nor, addr - c->addr); in nor_cache_erase()