Lines Matching full:this

13  * This program is free software; you can redistribute it and/or modify
71 #define ONENAND_CORE_SPARE(flash, this, offset) \ argument
72 ((flash->data) + (this->chipsize) + (offset >> 5))
74 #define ONENAND_MAIN_AREA(this, offset) \ argument
75 (this->base + ONENAND_DATARAM + offset)
77 #define ONENAND_SPARE_AREA(this, offset) \ argument
78 (this->base + ONENAND_SPARERAM + offset)
80 #define ONENAND_GET_WP_STATUS(this) \ argument
81 (readw(this->base + ONENAND_REG_WP_STATUS))
83 #define ONENAND_SET_WP_STATUS(v, this) \ argument
84 (writew(v, this->base + ONENAND_REG_WP_STATUS))
124 * @this: OneNAND device structure
130 static void onenand_lock_handle(struct onenand_chip *this, int cmd) in onenand_lock_handle() argument
135 status = ONENAND_GET_WP_STATUS(this); in onenand_lock_handle()
136 block_lock_scheme = !(this->options & ONENAND_HAS_CONT_LOCK); in onenand_lock_handle()
142 ONENAND_SET_WP_STATUS(ONENAND_WP_US, this); in onenand_lock_handle()
144 ONENAND_SET_WP_STATUS(status | ONENAND_WP_US, this); in onenand_lock_handle()
149 ONENAND_SET_WP_STATUS(ONENAND_WP_LS, this); in onenand_lock_handle()
151 ONENAND_SET_WP_STATUS(status | ONENAND_WP_LS, this); in onenand_lock_handle()
156 ONENAND_SET_WP_STATUS(ONENAND_WP_LTS, this); in onenand_lock_handle()
158 ONENAND_SET_WP_STATUS(status | ONENAND_WP_LTS, this); in onenand_lock_handle()
168 * @this: OneNAND device structure
173 static void onenand_bootram_handle(struct onenand_chip *this, int cmd) in onenand_bootram_handle() argument
177 writew(manuf_id, this->base); in onenand_bootram_handle()
178 writew(device_id, this->base + 2); in onenand_bootram_handle()
179 writew(version_id, this->base + 4); in onenand_bootram_handle()
190 * @this: OneNAND device structure
195 static void onenand_update_interrupt(struct onenand_chip *this, int cmd) in onenand_update_interrupt() argument
222 writew(interrupt, this->base + ONENAND_REG_INTERRUPT); in onenand_update_interrupt()
251 * @this: OneNAND device structure
260 static void onenand_data_handle(struct onenand_chip *this, int cmd, in onenand_data_handle() argument
264 struct onenand_flash *flash = this->priv; in onenand_data_handle()
281 die = readw(this->base + ONENAND_REG_START_ADDRESS2); in onenand_data_handle()
296 dest = ONENAND_MAIN_AREA(this, main_offset); in onenand_data_handle()
298 writew(boundary[die], this->base + ONENAND_DATARAM); in onenand_data_handle()
305 src = ONENAND_CORE_SPARE(flash, this, offset); in onenand_data_handle()
306 dest = ONENAND_SPARE_AREA(this, spare_offset); in onenand_data_handle()
311 src = ONENAND_MAIN_AREA(this, main_offset); in onenand_data_handle()
314 boundary[die] = readw(this->base + ONENAND_DATARAM); in onenand_data_handle()
319 int off = i * this->subpagesize; in onenand_data_handle()
320 if (!memcmp(src + off, ffchars, this->subpagesize)) in onenand_data_handle()
322 if (memcmp(dest + off, ffchars, this->subpagesize) && in onenand_data_handle()
323 onenand_check_overwrite(dest + off, src + off, this->subpagesize)) in onenand_data_handle()
325 memcpy(dest + off, src + off, this->subpagesize); in onenand_data_handle()
330 src = ONENAND_SPARE_AREA(this, spare_offset); in onenand_data_handle()
335 dest = ONENAND_CORE_SPARE(flash, this, offset); in onenand_data_handle()
347 if (FLEXONENAND(this)) { in onenand_data_handle()
354 memset(ONENAND_CORE_SPARE(flash, this, offset), 0xff, in onenand_data_handle()
365 * @this: OneNAND device structure
370 static void onenand_command_handle(struct onenand_chip *this, int cmd) in onenand_command_handle() argument
381 onenand_lock_handle(this, cmd); in onenand_command_handle()
389 block = (int) readw(this->base + ONENAND_REG_START_ADDRESS1); in onenand_command_handle()
393 block += this->chipsize >> (this->erase_shift + 1); in onenand_command_handle()
398 page = (int) readw(this->base + ONENAND_REG_START_ADDRESS8); in onenand_command_handle()
400 bufferram = (int) readw(this->base + ONENAND_REG_START_BUFFER); in onenand_command_handle()
408 offset = onenand_addr(this, block); in onenand_command_handle()
411 offset += page << this->page_shift; in onenand_command_handle()
413 onenand_data_handle(this, cmd, dataram, offset); in onenand_command_handle()
415 onenand_update_interrupt(this, cmd); in onenand_command_handle()
427 struct onenand_chip *this = info->mtd.priv; in onenand_writew() local
430 if (addr < this->base + ONENAND_DATARAM) { in onenand_writew()
431 onenand_bootram_handle(this, value); in onenand_writew()
435 if (addr == this->base + ONENAND_REG_COMMAND) in onenand_writew()
436 onenand_command_handle(this, value); in onenand_writew()
550 struct onenand_chip *this = info->mtd.priv; in onenand_sim_exit() local
551 struct onenand_flash *flash = this->priv; in onenand_sim_exit()