#include <linux/sched.h>
 #include <linux/mod_devicetable.h>
 
+#include <linux/mtd/cfi.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 
 #define FAST_READ_DUMMY_BYTE 0
 #endif
 
+#define JEDEC_MFR(_jedec_id)   ((_jedec_id) >> 16)
+
 /****************************************************************************/
 
 struct m25p {
         * up with the software protection bits set
         */
 
-       if (info->jedec_id >> 16 == 0x1f ||
-           info->jedec_id >> 16 == 0x89 ||
-           info->jedec_id >> 16 == 0xbf) {
+       if (JEDEC_MFR(info->jedec_id) == CFI_MFR_ATMEL ||
+           JEDEC_MFR(info->jedec_id) == CFI_MFR_INTEL ||
+           JEDEC_MFR(info->jedec_id) == CFI_MFR_SST) {
                write_enable(flash);
                write_sr(flash, 0);
        }
        flash->mtd.read = m25p80_read;
 
        /* sst flash chips use AAI word program */
-       if (info->jedec_id >> 16 == 0xbf)
+       if (JEDEC_MFR(info->jedec_id) == CFI_MFR_SST)
                flash->mtd.write = sst_write;
        else
                flash->mtd.write = m25p80_write;