diff -uNr clean/drivers/mtd/chips/cfi_cmdset_0001.c mtd/drivers/mtd/chips/cfi_cmdset_0001.c --- clean/drivers/mtd/chips/cfi_cmdset_0001.c 2004-03-26 10:33:48.000000000 -0600 +++ mtd/drivers/mtd/chips/cfi_cmdset_0001.c 2004-03-26 10:34:26.000000000 -0600 @@ -1373,8 +1373,8 @@ /* check for lock bit */ if (status & CMD(0x3a)) { - unsigned char chipstatus = status; - if (status != CMD(status & 0xff)) { + unsigned char chipstatus = cfi_to_cpu(status); + if (status != CMD(cfi_to_cpu(status) & 0xff)) { int i; for (i = 1; i> (cfi->device_type * 8); diff -uNr clean/include/linux/mtd/cfi.h mtd/include/linux/mtd/cfi.h --- clean/include/linux/mtd/cfi.h 2004-03-26 10:33:50.000000000 -0600 +++ mtd/include/linux/mtd/cfi.h 2004-03-26 10:35:42.000000000 -0600 @@ -473,6 +473,21 @@ } } +static inline __u8 cfi_to_cpu(cfi_word val) +{ + if (cfi_buswidth_is_1()) { + return val; + } else if (cfi_buswidth_is_2()) { + return cfi16_to_cpu(val); + } else if (cfi_buswidth_is_4()) { + return cfi32_to_cpu(val); + } else if (cfi_buswidth_is_8()) { + return cfi64_to_cpu(val); + } else { + return 0; + } +} + static inline void cfi_udelay(int us) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)