37 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 | |
| +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
 | |
| @@ -51,6 +51,7 @@
 | |
|  #define SST49LF040B	        0x0050
 | |
|  #define SST49LF008A		0x005a
 | |
|  #define AT49BV6416		0x00d6
 | |
| +#define MANUFACTURER_SAMSUNG	0x00ec
 | |
|  
 | |
|  static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
 | |
|  static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
 | |
| @@ -375,12 +376,19 @@ struct mtd_info *cfi_cmdset_0002(struct 
 | |
|  
 | |
|  		if (extp->MajorVersion != '1' ||
 | |
|  		    (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
 | |
| -			printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query "
 | |
| -			       "version %c.%c.\n",  extp->MajorVersion,
 | |
| -			       extp->MinorVersion);
 | |
| -			kfree(extp);
 | |
| -			kfree(mtd);
 | |
| -			return NULL;
 | |
| +		        if (cfi->mfr == MANUFACTURER_SAMSUNG &&
 | |
| +			    (extp->MajorVersion == '3' && extp->MinorVersion == '3')) {
 | |
| +			    printk(KERN_NOTICE "  Newer Samsung flash detected, "
 | |
| +			           "should be compatibile with Amd/Fujitsu.\n");
 | |
| +		        }
 | |
| +		        else {
 | |
| +			    printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query "
 | |
| +			           "version %c.%c.\n",  extp->MajorVersion,
 | |
| +			           extp->MinorVersion);
 | |
| +			    kfree(extp);
 | |
| +			    kfree(mtd);
 | |
| +			    return NULL;
 | |
| +		        }
 | |
|  		}
 | |
|  
 | |
|  		/* Install our own private info structure */
 |