diff options
Diffstat (limited to 'include/spi_flash.h')
| -rw-r--r-- | include/spi_flash.h | 39 | 
1 files changed, 39 insertions, 0 deletions
| diff --git a/include/spi_flash.h b/include/spi_flash.h index 9da90624f..3b6a44edc 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -39,6 +39,7 @@ struct spi_flash {  	/* Erase (sector) size */  	u32		sector_size; +	void *memory_map;	/* Address of read-only SPI flash access */  	int		(*read)(struct spi_flash *flash, u32 offset,  				size_t len, void *buf);  	int		(*write)(struct spi_flash *flash, u32 offset, @@ -47,6 +48,44 @@ struct spi_flash {  				size_t len);  }; +/** + * spi_flash_do_alloc - Allocate a new spi flash structure + * + * The structure is allocated and cleared with default values for + * read, write and erase, which the caller can modify. The caller must set + * up size, page_size and sector_size. + * + * Use the helper macro spi_flash_alloc() to call this. + * + * @offset: Offset of struct spi_slave within slave structure + * @size: Size of slave structure + * @spi: SPI slave + * @name: Name of SPI flash device + */ +void *spi_flash_do_alloc(int offset, int size, struct spi_slave *spi, +			 const char *name); + +/** + * spi_flash_alloc - Allocate a new SPI flash structure + * + * @_struct: Name of structure to allocate (e.g. struct ramtron_spi_fram). This + *	structure must contain a member 'struct spi_flash *flash'. + * @spi: SPI slave + * @name: Name of SPI flash device + */ +#define spi_flash_alloc(_struct, spi, name) \ +	spi_flash_do_alloc(offsetof(_struct, flash), sizeof(_struct), \ +				spi, name) + +/** + * spi_flash_alloc_base - Allocate a new SPI flash structure with no private data + * + * @spi: SPI slave + * @name: Name of SPI flash device + */ +#define spi_flash_alloc_base(spi, name) \ +	spi_flash_do_alloc(0, sizeof(struct spi_flash), spi, name) +  struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,  		unsigned int max_hz, unsigned int spi_mode);  void spi_flash_free(struct spi_flash *flash); |