diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/configs/arndale.h | 4 | ||||
| -rw-r--r-- | include/spi.h | 26 | ||||
| -rw-r--r-- | include/spi_flash.h | 57 | ||||
| -rw-r--r-- | include/usb_mass_storage.h | 3 | 
4 files changed, 90 insertions, 0 deletions
| diff --git a/include/configs/arndale.h b/include/configs/arndale.h index 7e367f39b..9584d82af 100644 --- a/include/configs/arndale.h +++ b/include/configs/arndale.h @@ -117,6 +117,10 @@  #define CONFIG_USB_EHCI_EXYNOS  #define CONFIG_USB_STORAGE +#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS	3 +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_ASIX +  /* MMC SPL */  #define CONFIG_EXYNOS_SPL  #define CONFIG_SPL diff --git a/include/spi.h b/include/spi.h index aba792244..ffd66478b 100644 --- a/include/spi.h +++ b/include/spi.h @@ -30,6 +30,24 @@  #define SPI_XFER_MMAP		0x08	/* Memory Mapped start */  #define SPI_XFER_MMAP_END	0x10	/* Memory Mapped End */  #define SPI_XFER_ONCE		(SPI_XFER_BEGIN | SPI_XFER_END) +#define SPI_XFER_U_PAGE		(1 << 5) + +/* SPI TX operation modes */ +#define SPI_OPM_TX_QPP		1 << 0 + +/* SPI RX operation modes */ +#define SPI_OPM_RX_AS		1 << 0 +#define SPI_OPM_RX_DOUT		1 << 1 +#define SPI_OPM_RX_DIO		1 << 2 +#define SPI_OPM_RX_QOF		1 << 3 +#define SPI_OPM_RX_QIOF		1 << 4 +#define SPI_OPM_RX_EXTN		SPI_OPM_RX_AS | SPI_OPM_RX_DOUT | \ +				SPI_OPM_RX_DIO | SPI_OPM_RX_QOF | \ +				SPI_OPM_RX_QIOF + +/* SPI bus connection options */ +#define SPI_CONN_DUAL_SHARED	1 << 0 +#define SPI_CONN_DUAL_SEPARATED	1 << 1  /* Header byte that marks the start of the message */  #define SPI_PREAMBLE_END_BYTE	0xec @@ -43,17 +61,25 @@   *   * @bus:		ID of the bus that the slave is attached to.   * @cs:			ID of the chip select connected to the slave. + * @op_mode_rx:		SPI RX operation mode. + * @op_mode_tx:		SPI TX operation mode.   * @wordlen:		Size of SPI word in number of bits   * @max_write_size:	If non-zero, the maximum number of bytes which can   *			be written at once, excluding command bytes.   * @memory_map:		Address of read-only SPI flash access. + * @option:		Varies SPI bus options - separate, shared bus. + * @flags:		Indication of SPI flags.   */  struct spi_slave {  	unsigned int bus;  	unsigned int cs; +	u8 op_mode_rx; +	u8 op_mode_tx;  	unsigned int wordlen;  	unsigned int max_write_size;  	void *memory_map; +	u8 option; +	u8 flags;  };  /** 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); diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h index 9df3adcf2..058dcf117 100644 --- a/include/usb_mass_storage.h +++ b/include/usb_mass_storage.h @@ -20,6 +20,9 @@  #define UMS_NUM_SECTORS		0  #endif +/* Wait at maximum 60 seconds for cable connection */ +#define UMS_CABLE_READY_TIMEOUT	60 +  struct ums {  	int (*read_sector)(struct ums *ums_dev,  			   ulong start, lbaint_t blkcnt, void *buf); |