Lines Matching refs:chip
82 static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr, int mode);
83 static void put_chip(struct map_info *map, struct flchip *chip, unsigned long adr);
778 static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr, int mode) in get_chip() argument
788 switch (chip->state) { in get_chip()
799 mutex_unlock(&chip->mutex); in get_chip()
801 mutex_lock(&chip->mutex); in get_chip()
824 map_write(map, CMD(0xB0), chip->in_progress_block_addr); in get_chip()
825 chip->oldstate = FL_ERASING; in get_chip()
826 chip->state = FL_ERASE_SUSPENDING; in get_chip()
827 chip->erase_suspended = 1; in get_chip()
838 put_chip(map, chip, adr); in get_chip()
843 mutex_unlock(&chip->mutex); in get_chip()
845 mutex_lock(&chip->mutex); in get_chip()
849 chip->state = FL_READY; in get_chip()
856 chip->oldstate = chip->state; in get_chip()
857 chip->state = FL_READY; in get_chip()
866 if (mode == FL_READY && chip->oldstate == FL_READY) in get_chip()
872 add_wait_queue(&chip->wq, &wait); in get_chip()
873 mutex_unlock(&chip->mutex); in get_chip()
875 remove_wait_queue(&chip->wq, &wait); in get_chip()
876 mutex_lock(&chip->mutex); in get_chip()
882 static void put_chip(struct map_info *map, struct flchip *chip, unsigned long adr) in put_chip() argument
886 switch(chip->oldstate) { in put_chip()
889 chip->in_progress_block_addr); in put_chip()
890 map_write(map, cfi->sector_erase_cmd, chip->in_progress_block_addr); in put_chip()
892 chip->oldstate = FL_READY; in put_chip()
893 chip->state = FL_ERASING; in put_chip()
897 chip->state = chip->oldstate; in put_chip()
898 chip->oldstate = FL_READY; in put_chip()
905 printk(KERN_ERR "MTD: put_chip() called with oldstate %d!!\n", chip->oldstate); in put_chip()
907 wake_up(&chip->wq); in put_chip()
923 static void xip_disable(struct map_info *map, struct flchip *chip, in xip_disable() argument
931 static void __xipram xip_enable(struct map_info *map, struct flchip *chip, in xip_enable() argument
936 if (chip->state != FL_POINT && chip->state != FL_READY) { in xip_enable()
938 chip->state = FL_READY; in xip_enable()
958 static void __xipram xip_udelay(struct map_info *map, struct flchip *chip, in xip_udelay() argument
970 ((chip->state == FL_ERASING && (extp->EraseSuspend & 2))) && in xip_udelay()
971 (cfi_interleave_is_1(cfi) || chip->oldstate == FL_READY)) { in xip_udelay()
999 oldstate = chip->state; in xip_udelay()
1002 chip->state = FL_XIP_WHILE_ERASING; in xip_udelay()
1003 chip->erase_suspended = 1; in xip_udelay()
1008 mutex_unlock(&chip->mutex); in xip_udelay()
1018 mutex_lock(&chip->mutex); in xip_udelay()
1019 while (chip->state != FL_XIP_WHILE_ERASING) { in xip_udelay()
1022 add_wait_queue(&chip->wq, &wait); in xip_udelay()
1023 mutex_unlock(&chip->mutex); in xip_udelay()
1025 remove_wait_queue(&chip->wq, &wait); in xip_udelay()
1026 mutex_lock(&chip->mutex); in xip_udelay()
1035 chip->state = oldstate; in xip_udelay()
1050 #define UDELAY(map, chip, adr, usec) xip_udelay(map, chip, adr, usec) argument
1062 #define INVALIDATE_CACHE_UDELAY(map, chip, adr, len, usec) \ argument
1063 UDELAY(map, chip, adr, usec)
1084 #define xip_disable(map, chip, adr) argument
1085 #define xip_enable(map, chip, adr) argument
1088 #define UDELAY(map, chip, adr, usec) \ argument
1090 mutex_unlock(&chip->mutex); \
1092 mutex_lock(&chip->mutex); \
1095 #define INVALIDATE_CACHE_UDELAY(map, chip, adr, len, usec) \ argument
1097 mutex_unlock(&chip->mutex); \
1100 mutex_lock(&chip->mutex); \
1105 static inline int do_read_onechip(struct map_info *map, struct flchip *chip, loff_t adr, size_t len… in do_read_onechip() argument
1111 adr += chip->start; in do_read_onechip()
1116 mutex_lock(&chip->mutex); in do_read_onechip()
1117 ret = get_chip(map, chip, cmd_addr, FL_READY); in do_read_onechip()
1119 mutex_unlock(&chip->mutex); in do_read_onechip()
1123 if (chip->state != FL_POINT && chip->state != FL_READY) { in do_read_onechip()
1125 chip->state = FL_READY; in do_read_onechip()
1130 put_chip(map, chip, cmd_addr); in do_read_onechip()
1132 mutex_unlock(&chip->mutex); in do_read_onechip()
1174 typedef int (*otp_op_t)(struct map_info *map, struct flchip *chip,
1177 static inline void otp_enter(struct map_info *map, struct flchip *chip, in otp_enter() argument
1182 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in otp_enter()
1184 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in otp_enter()
1186 cfi_send_gen_cmd(0x88, cfi->addr_unlock1, chip->start, map, cfi, in otp_enter()
1189 INVALIDATE_CACHED_RANGE(map, chip->start + adr, len); in otp_enter()
1192 static inline void otp_exit(struct map_info *map, struct flchip *chip, in otp_exit() argument
1197 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in otp_exit()
1199 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in otp_exit()
1201 cfi_send_gen_cmd(0x90, cfi->addr_unlock1, chip->start, map, cfi, in otp_exit()
1203 cfi_send_gen_cmd(0x00, cfi->addr_unlock1, chip->start, map, cfi, in otp_exit()
1206 INVALIDATE_CACHED_RANGE(map, chip->start + adr, len); in otp_exit()
1210 struct flchip *chip, loff_t adr, in do_read_secsi_onechip() argument
1218 mutex_lock(&chip->mutex); in do_read_secsi_onechip()
1220 if (chip->state != FL_READY){ in do_read_secsi_onechip()
1222 add_wait_queue(&chip->wq, &wait); in do_read_secsi_onechip()
1224 mutex_unlock(&chip->mutex); in do_read_secsi_onechip()
1227 remove_wait_queue(&chip->wq, &wait); in do_read_secsi_onechip()
1233 adr += chip->start; in do_read_secsi_onechip()
1235 chip->state = FL_READY; in do_read_secsi_onechip()
1237 otp_enter(map, chip, adr, len); in do_read_secsi_onechip()
1239 otp_exit(map, chip, adr, len); in do_read_secsi_onechip()
1241 wake_up(&chip->wq); in do_read_secsi_onechip()
1242 mutex_unlock(&chip->mutex); in do_read_secsi_onechip()
1286 static int __xipram do_write_oneword(struct map_info *map, struct flchip *chip,
1290 static int do_otp_write(struct map_info *map, struct flchip *chip, loff_t adr, in do_otp_write() argument
1302 otp_enter(map, chip, bus_ofs, map_bankwidth(map)); in do_otp_write()
1304 otp_exit(map, chip, bus_ofs, map_bankwidth(map)); in do_otp_write()
1308 ret = do_write_oneword(map, chip, bus_ofs, datum, FL_OTP_WRITE); in do_otp_write()
1320 static int do_otp_lock(struct map_info *map, struct flchip *chip, loff_t adr, in do_otp_lock() argument
1332 mutex_lock(&chip->mutex); in do_otp_lock()
1333 ret = get_chip(map, chip, chip->start, FL_LOCKING); in do_otp_lock()
1335 mutex_unlock(&chip->mutex); in do_otp_lock()
1338 chip->state = FL_LOCKING; in do_otp_lock()
1341 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in do_otp_lock()
1343 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in do_otp_lock()
1345 cfi_send_gen_cmd(0x40, cfi->addr_unlock1, chip->start, map, cfi, in do_otp_lock()
1356 map_write(map, CMD(0xA0), chip->start); in do_otp_lock()
1357 map_write(map, CMD(lockreg), chip->start); in do_otp_lock()
1370 UDELAY(map, chip, 0, 1); in do_otp_lock()
1374 map_write(map, CMD(0x90), chip->start); in do_otp_lock()
1375 map_write(map, CMD(0x00), chip->start); in do_otp_lock()
1377 chip->state = FL_READY; in do_otp_lock()
1378 put_chip(map, chip, chip->start); in do_otp_lock()
1379 mutex_unlock(&chip->mutex); in do_otp_lock()
1393 struct flchip *chip; in cfi_amdstd_otp_walk() local
1404 chip = &cfi->chips[chipnum]; in cfi_amdstd_otp_walk()
1410 base = chip->start; in cfi_amdstd_otp_walk()
1414 mutex_lock(&chip->mutex); in cfi_amdstd_otp_walk()
1415 ret = get_chip(map, chip, base, FL_CFI_QUERY); in cfi_amdstd_otp_walk()
1417 mutex_unlock(&chip->mutex); in cfi_amdstd_otp_walk()
1423 put_chip(map, chip, base); in cfi_amdstd_otp_walk()
1424 mutex_unlock(&chip->mutex); in cfi_amdstd_otp_walk()
1435 mutex_lock(&chip->mutex); in cfi_amdstd_otp_walk()
1436 ret = get_chip(map, chip, base, FL_LOCKING); in cfi_amdstd_otp_walk()
1438 mutex_unlock(&chip->mutex); in cfi_amdstd_otp_walk()
1444 chip->start, map, cfi, in cfi_amdstd_otp_walk()
1447 chip->start, map, cfi, in cfi_amdstd_otp_walk()
1450 chip->start, map, cfi, in cfi_amdstd_otp_walk()
1455 map_write(map, CMD(0x90), chip->start); in cfi_amdstd_otp_walk()
1456 map_write(map, CMD(0x00), chip->start); in cfi_amdstd_otp_walk()
1457 put_chip(map, chip, chip->start); in cfi_amdstd_otp_walk()
1458 mutex_unlock(&chip->mutex); in cfi_amdstd_otp_walk()
1486 ret = action(map, chip, otpoffset + from, size, buf, in cfi_amdstd_otp_walk()
1548 static int __xipram do_write_oneword(struct map_info *map, struct flchip *chip, in do_write_oneword() argument
1568 adr += chip->start; in do_write_oneword()
1570 mutex_lock(&chip->mutex); in do_write_oneword()
1571 ret = get_chip(map, chip, adr, mode); in do_write_oneword()
1573 mutex_unlock(&chip->mutex); in do_write_oneword()
1581 otp_enter(map, chip, adr, map_bankwidth(map)); in do_write_oneword()
1598 xip_disable(map, chip, adr); in do_write_oneword()
1601 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_write_oneword()
1602 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_write_oneword()
1603 cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_write_oneword()
1605 chip->state = mode; in do_write_oneword()
1607 INVALIDATE_CACHE_UDELAY(map, chip, in do_write_oneword()
1609 chip->word_write_time); in do_write_oneword()
1614 if (chip->state != mode) { in do_write_oneword()
1619 add_wait_queue(&chip->wq, &wait); in do_write_oneword()
1620 mutex_unlock(&chip->mutex); in do_write_oneword()
1622 remove_wait_queue(&chip->wq, &wait); in do_write_oneword()
1624 mutex_lock(&chip->mutex); in do_write_oneword()
1629 xip_enable(map, chip, adr); in do_write_oneword()
1631 xip_disable(map, chip, adr); in do_write_oneword()
1639 UDELAY(map, chip, adr, 1); in do_write_oneword()
1644 map_write( map, CMD(0xF0), chip->start ); in do_write_oneword()
1652 xip_enable(map, chip, adr); in do_write_oneword()
1655 otp_exit(map, chip, adr, map_bankwidth(map)); in do_write_oneword()
1656 chip->state = FL_READY; in do_write_oneword()
1658 put_chip(map, chip, adr); in do_write_oneword()
1659 mutex_unlock(&chip->mutex); in do_write_oneword()
1792 static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip, in do_write_buffer() argument
1803 usecs_to_jiffies(chip->buffer_write_time_max); in do_write_buffer()
1809 adr += chip->start; in do_write_buffer()
1812 mutex_lock(&chip->mutex); in do_write_buffer()
1813 ret = get_chip(map, chip, adr, FL_WRITING); in do_write_buffer()
1815 mutex_unlock(&chip->mutex); in do_write_buffer()
1826 xip_disable(map, chip, cmd_adr); in do_write_buffer()
1828 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_write_buffer()
1829 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_write_buffer()
1834 chip->state = FL_WRITING_TO_BUFFER; in do_write_buffer()
1854 chip->state = FL_WRITING; in do_write_buffer()
1856 INVALIDATE_CACHE_UDELAY(map, chip, in do_write_buffer()
1858 chip->word_write_time); in do_write_buffer()
1863 if (chip->state != FL_WRITING) { in do_write_buffer()
1868 add_wait_queue(&chip->wq, &wait); in do_write_buffer()
1869 mutex_unlock(&chip->mutex); in do_write_buffer()
1871 remove_wait_queue(&chip->wq, &wait); in do_write_buffer()
1873 mutex_lock(&chip->mutex); in do_write_buffer()
1881 xip_enable(map, chip, adr); in do_write_buffer()
1886 UDELAY(map, chip, adr, 1); in do_write_buffer()
1897 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in do_write_buffer()
1899 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in do_write_buffer()
1901 cfi_send_gen_cmd(0xF0, cfi->addr_unlock1, chip->start, map, cfi, in do_write_buffer()
1903 xip_enable(map, chip, adr); in do_write_buffer()
1911 chip->state = FL_READY; in do_write_buffer()
1913 put_chip(map, chip, adr); in do_write_buffer()
1914 mutex_unlock(&chip->mutex); in do_write_buffer()
2003 static int cfi_amdstd_panic_wait(struct map_info *map, struct flchip *chip, in cfi_amdstd_panic_wait() argument
2014 if (chip->state == FL_READY && chip_ready(map, adr)) in cfi_amdstd_panic_wait()
2027 map_write(map, CMD(0xF0), chip->start); in cfi_amdstd_panic_wait()
2055 static int do_panic_write_oneword(struct map_info *map, struct flchip *chip, in do_panic_write_oneword() argument
2065 adr += chip->start; in do_panic_write_oneword()
2067 ret = cfi_amdstd_panic_wait(map, chip, adr); in do_panic_write_oneword()
2089 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_panic_write_oneword()
2090 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_panic_write_oneword()
2091 cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_panic_write_oneword()
2103 map_write(map, CMD(0xF0), chip->start); in do_panic_write_oneword()
2234 static int __xipram do_erase_chip(struct map_info *map, struct flchip *chip) in do_erase_chip() argument
2244 mutex_lock(&chip->mutex); in do_erase_chip()
2245 ret = get_chip(map, chip, adr, FL_WRITING); in do_erase_chip()
2247 mutex_unlock(&chip->mutex); in do_erase_chip()
2252 __func__, chip->start ); in do_erase_chip()
2256 xip_disable(map, chip, adr); in do_erase_chip()
2258 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_chip()
2259 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_chip()
2260 cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_chip()
2261 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_chip()
2262 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_chip()
2263 cfi_send_gen_cmd(0x10, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_chip()
2265 chip->state = FL_ERASING; in do_erase_chip()
2266 chip->erase_suspended = 0; in do_erase_chip()
2267 chip->in_progress_block_addr = adr; in do_erase_chip()
2269 INVALIDATE_CACHE_UDELAY(map, chip, in do_erase_chip()
2271 chip->erase_time*500); in do_erase_chip()
2276 if (chip->state != FL_ERASING) { in do_erase_chip()
2279 add_wait_queue(&chip->wq, &wait); in do_erase_chip()
2280 mutex_unlock(&chip->mutex); in do_erase_chip()
2282 remove_wait_queue(&chip->wq, &wait); in do_erase_chip()
2283 mutex_lock(&chip->mutex); in do_erase_chip()
2286 if (chip->erase_suspended) { in do_erase_chip()
2290 chip->erase_suspended = 0; in do_erase_chip()
2303 UDELAY(map, chip, adr, 1000000/HZ); in do_erase_chip()
2308 map_write( map, CMD(0xF0), chip->start ); in do_erase_chip()
2314 chip->state = FL_READY; in do_erase_chip()
2315 xip_enable(map, chip, adr); in do_erase_chip()
2317 put_chip(map, chip, adr); in do_erase_chip()
2318 mutex_unlock(&chip->mutex); in do_erase_chip()
2324 static int __xipram do_erase_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr,… in do_erase_oneblock() argument
2331 adr += chip->start; in do_erase_oneblock()
2333 mutex_lock(&chip->mutex); in do_erase_oneblock()
2334 ret = get_chip(map, chip, adr, FL_ERASING); in do_erase_oneblock()
2336 mutex_unlock(&chip->mutex); in do_erase_oneblock()
2345 xip_disable(map, chip, adr); in do_erase_oneblock()
2347 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_oneblock()
2348 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_oneblock()
2349 cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_oneblock()
2350 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_oneblock()
2351 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL); in do_erase_oneblock()
2354 chip->state = FL_ERASING; in do_erase_oneblock()
2355 chip->erase_suspended = 0; in do_erase_oneblock()
2356 chip->in_progress_block_addr = adr; in do_erase_oneblock()
2358 INVALIDATE_CACHE_UDELAY(map, chip, in do_erase_oneblock()
2360 chip->erase_time*500); in do_erase_oneblock()
2365 if (chip->state != FL_ERASING) { in do_erase_oneblock()
2368 add_wait_queue(&chip->wq, &wait); in do_erase_oneblock()
2369 mutex_unlock(&chip->mutex); in do_erase_oneblock()
2371 remove_wait_queue(&chip->wq, &wait); in do_erase_oneblock()
2372 mutex_lock(&chip->mutex); in do_erase_oneblock()
2375 if (chip->erase_suspended) { in do_erase_oneblock()
2379 chip->erase_suspended = 0; in do_erase_oneblock()
2383 xip_enable(map, chip, adr); in do_erase_oneblock()
2388 xip_enable(map, chip, adr); in do_erase_oneblock()
2395 UDELAY(map, chip, adr, 1000000/HZ); in do_erase_oneblock()
2400 map_write( map, CMD(0xF0), chip->start ); in do_erase_oneblock()
2406 chip->state = FL_READY; in do_erase_oneblock()
2408 put_chip(map, chip, adr); in do_erase_oneblock()
2409 mutex_unlock(&chip->mutex); in do_erase_oneblock()
2455 static int do_atmel_lock(struct map_info *map, struct flchip *chip, in do_atmel_lock() argument
2461 mutex_lock(&chip->mutex); in do_atmel_lock()
2462 ret = get_chip(map, chip, adr + chip->start, FL_LOCKING); in do_atmel_lock()
2465 chip->state = FL_LOCKING; in do_atmel_lock()
2469 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in do_atmel_lock()
2471 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in do_atmel_lock()
2473 cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, in do_atmel_lock()
2475 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in do_atmel_lock()
2477 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in do_atmel_lock()
2479 map_write(map, CMD(0x40), chip->start + adr); in do_atmel_lock()
2481 chip->state = FL_READY; in do_atmel_lock()
2482 put_chip(map, chip, adr + chip->start); in do_atmel_lock()
2486 mutex_unlock(&chip->mutex); in do_atmel_lock()
2490 static int do_atmel_unlock(struct map_info *map, struct flchip *chip, in do_atmel_unlock() argument
2496 mutex_lock(&chip->mutex); in do_atmel_unlock()
2497 ret = get_chip(map, chip, adr + chip->start, FL_UNLOCKING); in do_atmel_unlock()
2500 chip->state = FL_UNLOCKING; in do_atmel_unlock()
2504 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in do_atmel_unlock()
2508 chip->state = FL_READY; in do_atmel_unlock()
2509 put_chip(map, chip, adr + chip->start); in do_atmel_unlock()
2513 mutex_unlock(&chip->mutex); in do_atmel_unlock()
2532 struct flchip *chip; member
2544 struct flchip *chip, in do_ppb_xxlock() argument
2551 mutex_lock(&chip->mutex); in do_ppb_xxlock()
2552 ret = get_chip(map, chip, adr + chip->start, FL_LOCKING); in do_ppb_xxlock()
2554 mutex_unlock(&chip->mutex); in do_ppb_xxlock()
2560 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, in do_ppb_xxlock()
2562 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, in do_ppb_xxlock()
2565 cfi_send_gen_cmd(0xC0, cfi->addr_unlock1, chip->start, map, cfi, in do_ppb_xxlock()
2569 chip->state = FL_LOCKING; in do_ppb_xxlock()
2570 map_write(map, CMD(0xA0), chip->start + adr); in do_ppb_xxlock()
2571 map_write(map, CMD(0x00), chip->start + adr); in do_ppb_xxlock()
2577 chip->state = FL_UNLOCKING; in do_ppb_xxlock()
2578 map_write(map, CMD(0x80), chip->start); in do_ppb_xxlock()
2579 map_write(map, CMD(0x30), chip->start); in do_ppb_xxlock()
2581 chip->state = FL_JEDEC_QUERY; in do_ppb_xxlock()
2601 UDELAY(map, chip, adr, 1); in do_ppb_xxlock()
2605 map_write(map, CMD(0x90), chip->start); in do_ppb_xxlock()
2606 map_write(map, CMD(0x00), chip->start); in do_ppb_xxlock()
2608 chip->state = FL_READY; in do_ppb_xxlock()
2609 put_chip(map, chip, adr + chip->start); in do_ppb_xxlock()
2610 mutex_unlock(&chip->mutex); in do_ppb_xxlock()
2667 sect[sectors].chip = &cfi->chips[chipnum]; in cfi_ppb_unlock()
2712 do_ppb_xxlock(map, sect[i].chip, sect[i].offset, 0, in cfi_ppb_unlock()
2732 struct flchip *chip; in cfi_amdstd_sync() local
2737 chip = &cfi->chips[i]; in cfi_amdstd_sync()
2740 mutex_lock(&chip->mutex); in cfi_amdstd_sync()
2742 switch(chip->state) { in cfi_amdstd_sync()
2747 chip->oldstate = chip->state; in cfi_amdstd_sync()
2748 chip->state = FL_SYNCING; in cfi_amdstd_sync()
2754 mutex_unlock(&chip->mutex); in cfi_amdstd_sync()
2760 add_wait_queue(&chip->wq, &wait); in cfi_amdstd_sync()
2762 mutex_unlock(&chip->mutex); in cfi_amdstd_sync()
2766 remove_wait_queue(&chip->wq, &wait); in cfi_amdstd_sync()
2775 chip = &cfi->chips[i]; in cfi_amdstd_sync()
2777 mutex_lock(&chip->mutex); in cfi_amdstd_sync()
2779 if (chip->state == FL_SYNCING) { in cfi_amdstd_sync()
2780 chip->state = chip->oldstate; in cfi_amdstd_sync()
2781 wake_up(&chip->wq); in cfi_amdstd_sync()
2783 mutex_unlock(&chip->mutex); in cfi_amdstd_sync()
2793 struct flchip *chip; in cfi_amdstd_suspend() local
2797 chip = &cfi->chips[i]; in cfi_amdstd_suspend()
2799 mutex_lock(&chip->mutex); in cfi_amdstd_suspend()
2801 switch(chip->state) { in cfi_amdstd_suspend()
2806 chip->oldstate = chip->state; in cfi_amdstd_suspend()
2807 chip->state = FL_PM_SUSPENDED; in cfi_amdstd_suspend()
2819 mutex_unlock(&chip->mutex); in cfi_amdstd_suspend()
2826 chip = &cfi->chips[i]; in cfi_amdstd_suspend()
2828 mutex_lock(&chip->mutex); in cfi_amdstd_suspend()
2830 if (chip->state == FL_PM_SUSPENDED) { in cfi_amdstd_suspend()
2831 chip->state = chip->oldstate; in cfi_amdstd_suspend()
2832 wake_up(&chip->wq); in cfi_amdstd_suspend()
2834 mutex_unlock(&chip->mutex); in cfi_amdstd_suspend()
2847 struct flchip *chip; in cfi_amdstd_resume() local
2851 chip = &cfi->chips[i]; in cfi_amdstd_resume()
2853 mutex_lock(&chip->mutex); in cfi_amdstd_resume()
2855 if (chip->state == FL_PM_SUSPENDED) { in cfi_amdstd_resume()
2856 chip->state = FL_READY; in cfi_amdstd_resume()
2857 map_write(map, CMD(0xF0), chip->start); in cfi_amdstd_resume()
2858 wake_up(&chip->wq); in cfi_amdstd_resume()
2863 mutex_unlock(&chip->mutex); in cfi_amdstd_resume()
2879 struct flchip *chip; in cfi_amdstd_reset() local
2883 chip = &cfi->chips[i]; in cfi_amdstd_reset()
2885 mutex_lock(&chip->mutex); in cfi_amdstd_reset()
2887 ret = get_chip(map, chip, chip->start, FL_SHUTDOWN); in cfi_amdstd_reset()
2889 map_write(map, CMD(0xF0), chip->start); in cfi_amdstd_reset()
2890 chip->state = FL_SHUTDOWN; in cfi_amdstd_reset()
2891 put_chip(map, chip, chip->start); in cfi_amdstd_reset()
2894 mutex_unlock(&chip->mutex); in cfi_amdstd_reset()