Changeset 22682 for branches/backfire


Ignore:
Timestamp:
2010-08-16T22:53:17+02:00 (6 years ago)
Author:
florian
Message:

r22680 also applies to 2.6.32

Location:
branches/backfire/target/linux/generic-2.6/patches-2.6.32
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/generic-2.6/patches-2.6.32/014-cfi_fix_amd_extended_table_check.patch

    r22679 r22682  
    11--- a/drivers/mtd/chips/cfi_cmdset_0002.c 
    22+++ b/drivers/mtd/chips/cfi_cmdset_0002.c 
    3 @@ -51,6 +51,7 @@ 
    4  #define SST49LF040B            0x0050 
    5  #define SST49LF008A            0x005a 
    6  #define AT49BV6416             0x00d6 
    7 +#define MANUFACTURER_SAMSUNG   0x00ec 
     3@@ -325,6 +325,8 @@ static struct cfi_fixup fixup_table[] = 
     4 static void cfi_fixup_major_minor(struct cfi_private *cfi, 
     5                                  struct cfi_pri_amdstd *extp) 
     6 { 
     7+       // manufacturers defined in include/linux/mtd/cfi.h 
     8+ 
     9        if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e && 
     10            extp->MajorVersion == '0') 
     11                extp->MajorVersion = '1'; 
     12@@ -355,6 +357,9 @@ struct mtd_info *cfi_cmdset_0002(struct 
     13        mtd->name    = map->name; 
     14        mtd->writesize = 1; 
    815  
    9  static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *); 
    10  static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *); 
    11 @@ -375,12 +376,19 @@ struct mtd_info *cfi_cmdset_0002(struct  
     16+       printk(" CFI mfr 0x%08x\n", cfi->mfr);  // TODO: Is there a more general place to print this info? 
     17+       printk(" CFI id  0x%08x\n", cfi->id); 
     18+ 
     19        if (cfi->cfi_mode==CFI_MODE_CFI){ 
     20                unsigned char bootloc; 
     21                /* 
     22@@ -373,16 +378,24 @@ struct mtd_info *cfi_cmdset_0002(struct 
    1223  
    13                 if (extp->MajorVersion != '1' || 
    14                     (extp->MinorVersion < '0' || extp->MinorVersion > '4')) { 
    15 -                       printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query " 
     24                cfi_fixup_major_minor(cfi, extp); 
     25  
     26-               if (extp->MajorVersion != '1' || 
     27-                   (extp->MinorVersion < '0' || extp->MinorVersion > '4')) { 
     28+               // valid primary extension versions are: 1.0, 1.1, 1.2, 1.3 
     29+               // see: http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_r20.pdf, page 19 and on 
     30+               //      http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_100_20011201.pdf 
     31+               if (extp->MajorVersion < '1' || 
     32+                   extp->MajorVersion > '1' || 
     33+                   (extp->MajorVersion == '1' && ( extp->MinorVersion < '0' || extp->MinorVersion > '3'))) { 
     34                        printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query " 
    1635-                              "version %c.%c.\n",  extp->MajorVersion, 
    1736-                              extp->MinorVersion); 
    18 -                       kfree(extp); 
    19 -                       kfree(mtd); 
    20 -                       return NULL; 
    21 +                       if (cfi->mfr == MANUFACTURER_SAMSUNG && 
    22 +                           (extp->MajorVersion == '3' && extp->MinorVersion == '3')) { 
    23 +                           printk(KERN_NOTICE "  Newer Samsung flash detected, " 
    24 +                                  "should be compatibile with Amd/Fujitsu.\n"); 
    25 +                       } 
    26 +                       else { 
    27 +                           printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query " 
    28 +                                  "version %c.%c.\n",  extp->MajorVersion, 
    29 +                                  extp->MinorVersion); 
    30 +                           kfree(extp); 
    31 +                           kfree(mtd); 
    32 +                           return NULL; 
    33 +                       } 
     37+                              "version %c.%c (0x%02x/0x%02x).\n", 
     38+                              extp->MajorVersion, extp->MinorVersion, 
     39+                              extp->MajorVersion, extp->MinorVersion); 
     40                        kfree(extp); 
     41                        kfree(mtd); 
     42                        return NULL; 
    3443                } 
    3544  
     45+               printk("  Amd/Fujitsu Extended Query version %c.%c.\n", 
     46+                      extp->MajorVersion, extp->MinorVersion); 
     47+ 
    3648                /* Install our own private info structure */ 
     49                cfi->cmdset_priv = extp; 
     50  
Note: See TracChangeset for help on using the changeset viewer.