diff options
| author | Prafulla Wadaskar <prafulla@marvell.com> | 2009-07-06 20:29:15 +0530 | 
|---|---|---|
| committer | Mike Frysinger <vapier@gentoo.org> | 2009-07-06 18:46:20 -0400 | 
| commit | 2efee52b09657e9353655b9dae9e1d1a67a2abe4 (patch) | |
| tree | 9b9dcd812bf2dbd74c8751eb94976293a95c50da /drivers/mtd/spi/macronix.c | |
| parent | dd54126715b89ed0c43322aa78b0dad306f043b6 (diff) | |
| download | olio-uboot-2014.01-2efee52b09657e9353655b9dae9e1d1a67a2abe4.tar.xz olio-uboot-2014.01-2efee52b09657e9353655b9dae9e1d1a67a2abe4.zip | |
sf: Macronix additional chips supported
new chips supported:-
MX25L1605D, MX25L3205D, MX25L6405D, MX25L12855E
out of which MX25L6405D and MX25L12855E tested on Kirkwood platforms
Modified the Macronix flash support to use 2 bytes of device id instead of 1
This was required to support MX25L12855E
Signed-off-by: Piyush Shah <spiyush@marvell.com>
Signed-off-by: Prafulla Wadaskar <prafulla@marvell.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'drivers/mtd/spi/macronix.c')
| -rw-r--r-- | drivers/mtd/spi/macronix.c | 49 | 
1 files changed, 37 insertions, 12 deletions
| diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c index 9464c8440..fe1310bf9 100644 --- a/drivers/mtd/spi/macronix.c +++ b/drivers/mtd/spi/macronix.c @@ -49,18 +49,10 @@  #define CMD_MX25XX_DP		0xb9	/* Deep Power-down */  #define CMD_MX25XX_RES		0xab	/* Release from DP, and Read Signature */ -#define MXIC_ID_MX2516		0x15 -#define MXIC_ID_MX2520		0x12 -#define MXIC_ID_MX2532		0x16 -#define MXIC_ID_MX2540		0x13 -#define MXIC_ID_MX2564		0x17 -#define MXIC_ID_MX2580		0x14 -#define MXIC_ID_MX25128		0x18 -  #define MACRONIX_SR_WIP		(1 << 0)	/* Write-in-Progress */  struct macronix_spi_flash_params { -	u8 idcode1; +	u16 idcode;  	u16 page_size;  	u16 pages_per_sector;  	u16 sectors_per_block; @@ -81,13 +73,45 @@ static inline struct macronix_spi_flash *to_macronix_spi_flash(struct spi_flash  static const struct macronix_spi_flash_params macronix_spi_flash_table[] = {  	{ -		.idcode1 = MXIC_ID_MX25128, +		.idcode = 0x2015, +		.page_size = 256, +		.pages_per_sector = 16, +		.sectors_per_block = 16, +		.nr_blocks = 32, +		.name = "MX25L1605D", +	}, +	{ +		.idcode = 0x2016, +		.page_size = 256, +		.pages_per_sector = 16, +		.sectors_per_block = 16, +		.nr_blocks = 64, +		.name = "MX25L3205D", +	}, +	{ +		.idcode = 0x2017, +		.page_size = 256, +		.pages_per_sector = 16, +		.sectors_per_block = 16, +		.nr_blocks = 128, +		.name = "MX25L6405D", +	}, +	{ +		.idcode = 0x2018,  		.page_size = 256,  		.pages_per_sector = 16,  		.sectors_per_block = 16,  		.nr_blocks = 256,  		.name = "MX25L12805D",  	}, +	{ +		.idcode = 0x2618, +		.page_size = 256, +		.pages_per_sector = 16, +		.sectors_per_block = 16, +		.nr_blocks = 256, +		.name = "MX25L12855E", +	},  };  static int macronix_wait_ready(struct spi_flash *flash, unsigned long timeout) @@ -277,15 +301,16 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)  	const struct macronix_spi_flash_params *params;  	struct macronix_spi_flash *mcx;  	unsigned int i; +	u16 id = idcode[2] | idcode[1] << 8;  	for (i = 0; i < ARRAY_SIZE(macronix_spi_flash_table); i++) {  		params = ¯onix_spi_flash_table[i]; -		if (params->idcode1 == idcode[2]) +		if (params->idcode == id)  			break;  	}  	if (i == ARRAY_SIZE(macronix_spi_flash_table)) { -		debug("SF: Unsupported Macronix ID %02x\n", idcode[1]); +		debug("SF: Unsupported Macronix ID %04x\n", id);  		return NULL;  	} |