Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[cascardo/linux.git] / drivers / mtd / chips / cfi_cmdset_0002.c
index 9d68ab9..f072fcf 100644 (file)
@@ -392,9 +392,21 @@ static struct cfi_fixup fixup_table[] = {
 static void cfi_fixup_major_minor(struct cfi_private *cfi,
                                  struct cfi_pri_amdstd *extp)
 {
-       if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e &&
-           extp->MajorVersion == '0')
-               extp->MajorVersion = '1';
+       if (cfi->mfr == CFI_MFR_SAMSUNG) {
+               if ((extp->MajorVersion == '0' && extp->MinorVersion == '0') ||
+                   (extp->MajorVersion == '3' && extp->MinorVersion == '3')) {
+                       /*
+                        * Samsung K8P2815UQB and K8D6x16UxM chips
+                        * report major=0 / minor=0.
+                        * K8D3x16UxC chips report major=3 / minor=3.
+                        */
+                       printk(KERN_NOTICE "  Fixing Samsung's Amd/Fujitsu"
+                              " Extended Query version to 1.%c\n",
+                              extp->MinorVersion);
+                       extp->MajorVersion = '1';
+               }
+       }
+
        /*
         * SST 38VF640x chips report major=0xFF / minor=0xFF.
         */
@@ -428,6 +440,10 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)
        mtd->flags   = MTD_CAP_NORFLASH;
        mtd->name    = map->name;
        mtd->writesize = 1;
+       mtd->writebufsize = 1 << cfi->cfiq->MaxBufWriteSize;
+
+       DEBUG(MTD_DEBUG_LEVEL3, "MTD %s(): write buffer size %d\n",
+               __func__, mtd->writebufsize);
 
        mtd->reboot_notifier.notifier_call = cfi_amdstd_reboot;