diff options
Diffstat (limited to 'drivers/mtd/chips/jedec_probe.c')
-rw-r--r-- | drivers/mtd/chips/jedec_probe.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/mtd/chips/jedec_probe.c b/drivers/mtd/chips/jedec_probe.c index 30325a25ab95..30da428eb7b9 100644 --- a/drivers/mtd/chips/jedec_probe.c +++ b/drivers/mtd/chips/jedec_probe.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | Common Flash Interface probe code. | 2 | Common Flash Interface probe code. |
3 | (C) 2000 Red Hat. GPL'd. | 3 | (C) 2000 Red Hat. GPL'd. |
4 | $Id: jedec_probe.c,v 1.61 2004/11/19 20:52:16 thayne Exp $ | 4 | $Id: jedec_probe.c,v 1.63 2005/02/14 16:30:32 bjd Exp $ |
5 | See JEDEC (http://www.jedec.org/) standard JESD21C (section 3.5) | 5 | See JEDEC (http://www.jedec.org/) standard JESD21C (section 3.5) |
6 | for the standard this probe goes back to. | 6 | for the standard this probe goes back to. |
7 | 7 | ||
@@ -142,6 +142,7 @@ | |||
142 | #define SST29LE512 0x003d | 142 | #define SST29LE512 0x003d |
143 | #define SST39LF800 0x2781 | 143 | #define SST39LF800 0x2781 |
144 | #define SST39LF160 0x2782 | 144 | #define SST39LF160 0x2782 |
145 | #define SST39VF1601 0x234b | ||
145 | #define SST39LF512 0x00D4 | 146 | #define SST39LF512 0x00D4 |
146 | #define SST39LF010 0x00D5 | 147 | #define SST39LF010 0x00D5 |
147 | #define SST39LF020 0x00D6 | 148 | #define SST39LF020 0x00D6 |
@@ -1448,6 +1449,21 @@ static const struct amd_flash_info jedec_table[] = { | |||
1448 | ERASEINFO(0x1000,256), | 1449 | ERASEINFO(0x1000,256), |
1449 | ERASEINFO(0x1000,256) | 1450 | ERASEINFO(0x1000,256) |
1450 | } | 1451 | } |
1452 | }, { | ||
1453 | .mfr_id = MANUFACTURER_SST, /* should be CFI */ | ||
1454 | .dev_id = SST39VF1601, | ||
1455 | .name = "SST 39VF1601", | ||
1456 | .uaddr = { | ||
1457 | [0] = MTD_UADDR_0x5555_0x2AAA, /* x8 */ | ||
1458 | [1] = MTD_UADDR_0x5555_0x2AAA /* x16 */ | ||
1459 | }, | ||
1460 | .DevSize = SIZE_2MiB, | ||
1461 | .CmdSet = P_ID_AMD_STD, | ||
1462 | .NumEraseRegions= 2, | ||
1463 | .regions = { | ||
1464 | ERASEINFO(0x1000,256), | ||
1465 | ERASEINFO(0x1000,256) | ||
1466 | } | ||
1451 | 1467 | ||
1452 | }, { | 1468 | }, { |
1453 | .mfr_id = MANUFACTURER_ST, /* FIXME - CFI device? */ | 1469 | .mfr_id = MANUFACTURER_ST, /* FIXME - CFI device? */ |
@@ -1856,6 +1872,16 @@ static inline int jedec_match( __u32 base, | |||
1856 | case CFI_DEVICETYPE_X8: | 1872 | case CFI_DEVICETYPE_X8: |
1857 | mfr = (__u8)finfo->mfr_id; | 1873 | mfr = (__u8)finfo->mfr_id; |
1858 | id = (__u8)finfo->dev_id; | 1874 | id = (__u8)finfo->dev_id; |
1875 | |||
1876 | /* bjd: it seems that if we do this, we can end up | ||
1877 | * detecting 16bit flashes as an 8bit device, even though | ||
1878 | * there aren't. | ||
1879 | */ | ||
1880 | if (finfo->dev_id > 0xff) { | ||
1881 | DEBUG( MTD_DEBUG_LEVEL3, "%s(): ID is not 8bit\n", | ||
1882 | __func__); | ||
1883 | goto match_done; | ||
1884 | } | ||
1859 | break; | 1885 | break; |
1860 | case CFI_DEVICETYPE_X16: | 1886 | case CFI_DEVICETYPE_X16: |
1861 | mfr = (__u16)finfo->mfr_id; | 1887 | mfr = (__u16)finfo->mfr_id; |