Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89072ef9 authored by Ryan Jackson's avatar Ryan Jackson Committed by David Woodhouse
Browse files

[MTD] CHIPS: Support for SST 49LF040B flash chip



Add chip driver and JEDEC probe support for the SST 49LF040B flash chip.

Signed-off-by: default avatarRyan Jackson <rjackson@lnxi.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent c9073ce0
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@
#define MANUFACTURER_ATMEL	0x001F
#define MANUFACTURER_ATMEL	0x001F
#define MANUFACTURER_SST	0x00BF
#define MANUFACTURER_SST	0x00BF
#define SST49LF004B	        0x0060
#define SST49LF004B	        0x0060
#define SST49LF040B	        0x0050
#define SST49LF008A		0x005a
#define SST49LF008A		0x005a
#define AT49BV6416		0x00d6
#define AT49BV6416		0x00d6


@@ -233,6 +234,7 @@ static struct cfi_fixup cfi_fixup_table[] = {
};
};
static struct cfi_fixup jedec_fixup_table[] = {
static struct cfi_fixup jedec_fixup_table[] = {
	{ MANUFACTURER_SST, SST49LF004B, fixup_use_fwh_lock, NULL, },
	{ MANUFACTURER_SST, SST49LF004B, fixup_use_fwh_lock, NULL, },
	{ MANUFACTURER_SST, SST49LF040B, fixup_use_fwh_lock, NULL, },
	{ MANUFACTURER_SST, SST49LF008A, fixup_use_fwh_lock, NULL, },
	{ MANUFACTURER_SST, SST49LF008A, fixup_use_fwh_lock, NULL, },
	{ 0, 0, NULL, NULL }
	{ 0, 0, NULL, NULL }
};
};
@@ -519,10 +521,12 @@ static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr
		if (mode == FL_WRITING) /* FIXME: Erase-suspend-program appears broken. */
		if (mode == FL_WRITING) /* FIXME: Erase-suspend-program appears broken. */
			goto sleep;
			goto sleep;


		if (!(mode == FL_READY || mode == FL_POINT
		if (!(   mode == FL_READY
		      || mode == FL_POINT
		      || !cfip
		      || !cfip
		      || (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))
		      || (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))
		      || (mode == FL_WRITING && (cfip->EraseSuspend & 0x1))))
		      || (mode == FL_WRITING && (cfip->EraseSuspend & 0x1)
		    )))
			goto sleep;
			goto sleep;


		/* We could check to see if we're trying to access the sector
		/* We could check to see if we're trying to access the sector
+15 −0
Original line number Original line Diff line number Diff line
@@ -154,6 +154,7 @@
#define SST39SF010A	0x00B5
#define SST39SF010A	0x00B5
#define SST39SF020A	0x00B6
#define SST39SF020A	0x00B6
#define SST49LF004B	0x0060
#define SST49LF004B	0x0060
#define SST49LF040B	0x0050
#define SST49LF008A	0x005a
#define SST49LF008A	0x005a
#define SST49LF030A	0x001C
#define SST49LF030A	0x001C
#define SST49LF040A	0x0051
#define SST49LF040A	0x0051
@@ -1400,6 +1401,20 @@ static const struct amd_flash_info jedec_table[] = {
			ERASEINFO(0x01000,64),
			ERASEINFO(0x01000,64),
		}
		}
	}, {
	}, {
		.mfr_id		= MANUFACTURER_SST,
		.dev_id         = SST49LF040B,
		.name           = "SST 49LF040B",
		.uaddr          = {
			[0] = MTD_UADDR_0x5555_0x2AAA /* x8 */
		},
		.DevSize        = SIZE_512KiB,
		.CmdSet         = P_ID_AMD_STD,
		.NumEraseRegions= 1,
		.regions        = {
			ERASEINFO(0x01000,128),
		}
	}, {

		.mfr_id		= MANUFACTURER_SST,
		.mfr_id		= MANUFACTURER_SST,
		.dev_id		= SST49LF004B,
		.dev_id		= SST49LF004B,
		.name		= "SST 49LF004B",
		.name		= "SST 49LF004B",