Changeset 19186


Ignore:
Timestamp:
2010-01-17T15:33:29+01:00 (8 years ago)
Author:
juhosg
Message:

ar71xx: add optimizations to the cfi cmdset 002 status checking

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/patches-2.6.30/108-mtd_fix_cfi_cmdset_0002_status_check.patch

    r19175 r19186  
    2626 /* Atmel chips don't use the same PRI format as AMD chips */ 
    2727 static void fixup_convert_atmel_pri(struct mtd_info *mtd, void *param) 
    28 @@ -1152,7 +1154,7 @@ static int __xipram do_write_oneword(str 
     28@@ -1152,8 +1154,8 @@ static int __xipram do_write_oneword(str 
    2929                        break; 
    3030                } 
    3131  
    3232-               if (chip_ready(map, adr)) 
     33-                       break; 
    3334+               if (chip_good(map, adr, datum)) 
    34                         break; 
     35+                       goto enable_xip; 
    3536  
    3637                /* Latency issues. Drop the lock, wait a while and retry */ 
    37 @@ -1436,6 +1438,7 @@ static int __xipram do_write_buffer(stru 
     38                UDELAY(map, chip, adr, 1); 
     39@@ -1169,6 +1171,8 @@ static int __xipram do_write_oneword(str 
     40  
     41                ret = -EIO; 
     42        } 
     43+ 
     44+ enable_xip: 
     45        xip_enable(map, chip, adr); 
     46  op_done: 
     47        chip->state = FL_READY; 
     48@@ -1436,6 +1440,7 @@ static int __xipram do_write_buffer(stru 
    3849 } 
    3950  
     
    4354                                    size_t *retlen, const u_char *buf) 
    4455 { 
    45 @@ -1514,7 +1517,7 @@ static int cfi_amdstd_write_buffers(stru 
     56@@ -1514,7 +1519,7 @@ static int cfi_amdstd_write_buffers(stru 
    4657  
    4758        return 0; 
     
    5263 /* 
    5364  * Handle devices with one erase region, that only implement 
    54 @@ -1579,7 +1582,7 @@ static int __xipram do_erase_chip(struct 
     65@@ -1579,8 +1584,8 @@ static int __xipram do_erase_chip(struct 
    5566                        chip->erase_suspended = 0; 
    5667                } 
    5768  
    5869-               if (chip_ready(map, adr)) 
     70-                       break; 
    5971+               if (chip_good(map, adr, map_word_ff(map))) 
    60                         break; 
     72+                       goto op_done; 
    6173  
    6274                if (time_after(jiffies, timeo)) { 
    63 @@ -1667,7 +1670,7 @@ static int __xipram do_erase_oneblock(st 
     75                        printk(KERN_WARNING "MTD %s(): software timeout\n", 
     76@@ -1600,6 +1605,7 @@ static int __xipram do_erase_chip(struct 
     77                ret = -EIO; 
     78        } 
     79  
     80+ op_done: 
     81        chip->state = FL_READY; 
     82        xip_enable(map, chip, adr); 
     83        put_chip(map, chip, adr); 
     84@@ -1667,9 +1673,9 @@ static int __xipram do_erase_oneblock(st 
    6485                        chip->erase_suspended = 0; 
    6586                } 
     
    6889+               if (chip_good(map, adr, map_word_ff(map))) { 
    6990                        xip_enable(map, chip, adr); 
    70                         break; 
     91-                       break; 
     92+                       goto op_done; 
    7193                } 
     94  
     95                if (time_after(jiffies, timeo)) { 
     96@@ -1691,6 +1697,7 @@ static int __xipram do_erase_oneblock(st 
     97                ret = -EIO; 
     98        } 
     99  
     100+ op_done: 
     101        chip->state = FL_READY; 
     102        put_chip(map, chip, adr); 
     103        spin_unlock(chip->mutex); 
Note: See TracChangeset for help on using the changeset viewer.