diff options
| author | Tom Rini <trini@ti.com> | 2014-01-13 13:45:15 -0500 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2014-01-13 13:45:15 -0500 | 
| commit | 10fcda8e25cb9477b47a62edb716f81c9d5e1f0e (patch) | |
| tree | b705f678c1eb1161227c6e1996a0d5c008ea4b64 /include/spi_flash.h | |
| parent | d104a0c6a19da2d35cfae447e909b5bda727895a (diff) | |
| parent | 35a55fb57fffb615e6b20980fb317e162076adb4 (diff) | |
| download | olio-uboot-2014.01-10fcda8e25cb9477b47a62edb716f81c9d5e1f0e.tar.xz olio-uboot-2014.01-10fcda8e25cb9477b47a62edb716f81c9d5e1f0e.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-spi
Diffstat (limited to 'include/spi_flash.h')
| -rw-r--r-- | include/spi_flash.h | 57 | 
1 files changed, 57 insertions, 0 deletions
| diff --git a/include/spi_flash.h b/include/spi_flash.h index afc3a5809..f79f0eacc 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -19,11 +19,60 @@  #include <linux/types.h>  #include <linux/compiler.h> +/* sf param flags */ +#define SECT_4K		1 << 1 +#define SECT_32K	1 << 2 +#define E_FSR		1 << 3 +#define WR_QPP		1 << 4 + +/* Enum list - Full read commands */ +enum spi_read_cmds { +	ARRAY_SLOW = 1 << 0, +	DUAL_OUTPUT_FAST = 1 << 1, +	DUAL_IO_FAST = 1 << 2, +	QUAD_OUTPUT_FAST = 1 << 3, +	QUAD_IO_FAST = 1 << 4, +}; +#define RD_EXTN		ARRAY_SLOW | DUAL_OUTPUT_FAST | DUAL_IO_FAST +#define RD_FULL		RD_EXTN | QUAD_OUTPUT_FAST | QUAD_IO_FAST + +/* Dual SPI flash memories */ +enum spi_dual_flash { +	SF_SINGLE_FLASH = 0, +	SF_DUAL_STACKED_FLASH = 1 << 0, +	SF_DUAL_PARALLEL_FLASH = 1 << 1, +}; + +/** + * struct spi_flash_params - SPI/QSPI flash device params structure + * + * @name:		Device name ([MANUFLETTER][DEVTYPE][DENSITY][EXTRAINFO]) + * @jedec:		Device jedec ID (0x[1byte_manuf_id][2byte_dev_id]) + * @ext_jedec:		Device ext_jedec ID + * @sector_size:	Sector size of this device + * @nr_sectors:		No.of sectors on this device + * @e_rd_cmd:		Enum list for read commands + * @flags:		Importent param, for flash specific behaviour + */ +struct spi_flash_params { +	const char *name; +	u32 jedec; +	u16 ext_jedec; +	u32 sector_size; +	u32 nr_sectors; +	u8 e_rd_cmd; +	u16 flags; +}; + +extern const struct spi_flash_params spi_flash_params_table[]; +  /**   * struct spi_flash - SPI flash structure   *   * @spi:		SPI slave   * @name:		Name of SPI flash + * @dual_flash:		Indicates dual flash memories - dual stacked, parallel + * @shift:		Flash shift useful in dual parallel   * @size:		Total flash size   * @page_size:		Write (page) size   * @sector_size:	Sector size @@ -33,6 +82,9 @@   * @bank_curr:		Current flash bank   * @poll_cmd:		Poll cmd - for flash erase/program   * @erase_cmd:		Erase cmd 4K, 32K, 64K + * @read_cmd:		Read cmd - Array Fast, Extn read and quad read. + * @write_cmd:		Write cmd - page and quad program. + * @dummy_byte:		Dummy cycles for read operation.   * @memory_map:		Address of read-only SPI flash access   * @read:		Flash read ops: Read len bytes at offset into buf   *			Supported cmds: Fast Array Read @@ -45,6 +97,8 @@  struct spi_flash {  	struct spi_slave *spi;  	const char *name; +	u8 dual_flash; +	u8 shift;  	u32 size;  	u32 page_size; @@ -57,6 +111,9 @@ struct spi_flash {  #endif  	u8 poll_cmd;  	u8 erase_cmd; +	u8 read_cmd; +	u8 write_cmd; +	u8 dummy_byte;  	void *memory_map;  	int (*read)(struct spi_flash *flash, u32 offset, size_t len, void *buf); |