tree c92637dd52da4a8e5071d11eb032b55a6dd62d2f
parent c927cd3a226bed5cf063cdf04de13cef51144cef
author Thomas Gleixner <[EMAIL PROTECTED]> Tue, 15 Mar 2005 19:07:21 +0000
committer Thomas Gleixner <[EMAIL PROTECTED]> Mon, 23 May 2005 12:53:47 +0200

[MTD] cfi_cmdset_0001: Fix the buggy status check.

The change makes the code endianess aware and replaces the bogus 
nested loop to or the status flags together.

Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>

 drivers/mtd/chips/cfi_cmdset_0001.c |   16 +++-------------
 1 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c 
b/drivers/mtd/chips/cfi_cmdset_0001.c
--- a/drivers/mtd/chips/cfi_cmdset_0001.c
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
@@ -4,7 +4,7 @@
  *
  * (C) 2000 Red Hat. GPL'd
  *
- * $Id: cfi_cmdset_0001.c,v 1.168 2005/02/17 20:34:59 nico Exp $
+ * $Id: cfi_cmdset_0001.c,v 1.169 2005/03/15 19:07:18 gleixner Exp $
  *
  * 
  * 10/10/2000  Nicolas Pitre <[EMAIL PROTECTED]>
@@ -1697,24 +1697,14 @@ static int __xipram do_erase_oneblock(st
 
        /* check for lock bit */
        if (map_word_bitsset(map, status, CMD(0x3a))) {
-               unsigned char chipstatus;
+               unsigned long chipstatus;
 
                /* Reset the error bits */
                map_write(map, CMD(0x50), adr);
                map_write(map, CMD(0x70), adr);
                xip_enable(map, chip, adr);
 
-               chipstatus = status.x[0];
-               if (!map_word_equal(map, status, CMD(chipstatus))) {
-                       int i, w;
-                       for (w=0; w<map_words(map); w++) {
-                               for (i = 0; i<cfi_interleave(cfi); i++) {
-                                       chipstatus |= status.x[w] >> 
(cfi->device_type * 8);
-                               }
-                       }
-                       printk(KERN_WARNING "Status is not identical for all 
chips: 0x%lx. Merging to give 0x%02x\n",
-                              status.x[0], chipstatus);
-               }
+               chipstatus = MERGESTATUS(status);
 
                if ((chipstatus & 0x30) == 0x30) {
                        printk(KERN_NOTICE "Chip reports improper command 
sequence: status 0x%x\n", chipstatus);
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to