123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- --- a/drivers/mtd/chips/cfi_cmdset_0002.c
- +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
- @@ -1632,8 +1632,8 @@ static int __xipram do_write_oneword(str
- break;
- }
-
- - if (chip_ready(map, adr))
- - break;
- + if (chip_good(map, adr, datum))
- + goto enable_xip;
-
- /* Latency issues. Drop the lock, wait a while and retry */
- UDELAY(map, chip, adr, 1);
- @@ -1649,6 +1649,8 @@ static int __xipram do_write_oneword(str
-
- ret = -EIO;
- }
- +
- + enable_xip:
- xip_enable(map, chip, adr);
- op_done:
- if (mode == FL_OTP_WRITE)
- @@ -2227,7 +2229,6 @@ static int cfi_amdstd_panic_write(struct
- return 0;
- }
-
- -
- /*
- * Handle devices with one erase region, that only implement
- * the chip erase command.
- @@ -2291,8 +2292,8 @@ static int __xipram do_erase_chip(struct
- chip->erase_suspended = 0;
- }
-
- - if (chip_ready(map, adr))
- - break;
- + if (chip_good(map, adr, map_word_ff(map)))
- + goto op_done;
-
- if (time_after(jiffies, timeo)) {
- printk(KERN_WARNING "MTD %s(): software timeout\n",
- @@ -2312,6 +2313,7 @@ static int __xipram do_erase_chip(struct
- ret = -EIO;
- }
-
- + op_done:
- chip->state = FL_READY;
- xip_enable(map, chip, adr);
- DISABLE_VPP(map);
- @@ -2380,9 +2382,9 @@ static int __xipram do_erase_oneblock(st
- chip->erase_suspended = 0;
- }
-
- - if (chip_ready(map, adr)) {
- + if (chip_good(map, adr, map_word_ff(map))) {
- xip_enable(map, chip, adr);
- - break;
- + goto op_done;
- }
-
- if (time_after(jiffies, timeo)) {
- @@ -2404,6 +2406,7 @@ static int __xipram do_erase_oneblock(st
- ret = -EIO;
- }
-
- + op_done:
- chip->state = FL_READY;
- DISABLE_VPP(map);
- put_chip(map, chip, adr);
|