mtd/drivers/mtd/chips cfi_cmdset_0001.c,1.168,1.169
gleixner at infradead.org
gleixner at infradead.org
Tue Mar 15 14:07:21 EST 2005
Update of /home/cvs/mtd/drivers/mtd/chips
In directory phoenix.infradead.org:/tmp/cvs-serv15957
Modified Files:
cfi_cmdset_0001.c
Log Message:
Fix the buggy status check. The change makes the code endianess aware and replaces the bogus nested loop to or the status flags together.
Index: cfi_cmdset_0001.c
===================================================================
RCS file: /home/cvs/mtd/drivers/mtd/chips/cfi_cmdset_0001.c,v
retrieving revision 1.168
retrieving revision 1.169
diff -u -r1.168 -r1.169
--- cfi_cmdset_0001.c 17 Feb 2005 20:34:59 -0000 1.168
+++ cfi_cmdset_0001.c 15 Mar 2005 19:07:18 -0000 1.169
@@ -1697,24 +1697,14 @@
/* 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);
More information about the linux-mtd-cvs
mailing list