diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/common.h | 12 | ||||
| -rw-r--r-- | include/configs/P2041RDB.h | 4 | ||||
| -rw-r--r-- | include/configs/am335x_evm.h | 6 | ||||
| -rw-r--r-- | include/configs/dra7xx_evm.h | 19 | ||||
| -rw-r--r-- | include/configs/eXalion.h | 2 | ||||
| -rw-r--r-- | include/configs/sacsng.h | 2 | ||||
| -rw-r--r-- | include/configs/sama5d3xek.h | 8 | ||||
| -rw-r--r-- | include/configs/top9000.h | 1 | ||||
| -rw-r--r-- | include/dfu.h | 35 | ||||
| -rw-r--r-- | include/fs.h | 4 | ||||
| -rw-r--r-- | include/i2s.h | 1 | ||||
| -rw-r--r-- | include/libfdt.h | 4 | ||||
| -rw-r--r-- | include/linux/fb.h | 1 | ||||
| -rw-r--r-- | include/linux/usb/atmel_usba_udc.h | 26 | ||||
| -rw-r--r-- | include/linux/usb/gadget.h | 1 | ||||
| -rw-r--r-- | include/miiphy.h | 2 | ||||
| -rw-r--r-- | include/mmc.h | 4 | ||||
| -rw-r--r-- | include/sdhci.h | 3 | ||||
| -rw-r--r-- | include/spi.h | 100 | ||||
| -rw-r--r-- | include/spi_flash.h | 103 | ||||
| -rw-r--r-- | include/usb_mass_storage.h | 9 | 
21 files changed, 223 insertions, 124 deletions
| diff --git a/include/common.h b/include/common.h index 4d2a56d0d..bed43168f 100644 --- a/include/common.h +++ b/include/common.h @@ -383,7 +383,7 @@ int setenv_hex(const char *varname, ulong value);  /**   * setenv_addr - Set an environment variable to an address in hex   * - * @varname:	Environmet variable to set + * @varname:	Environment variable to set   * @addr:	Value to set it to   * @return 0 if ok, 1 on error   */ @@ -596,6 +596,12 @@ void ddr_enable_ecc(unsigned int dram_size);  #endif  #endif +/* + * Return the current value of a monotonically increasing microsecond timer. + * Granularity may be larger than 1us if hardware does not support this. + */ +ulong timer_get_us(void); +  /* $(CPU)/cpu.c */  static inline int cpumask_next(int cpu, unsigned int mask)  { @@ -1017,10 +1023,10 @@ static inline phys_addr_t map_to_sysmem(void *ptr)   * of a function scoped static buffer.  It can not be used to create a cache   * line aligned global buffer.   */ -#define PAD_COUNT(s, pad) ((s - 1) / pad + 1) +#define PAD_COUNT(s, pad) (((s) - 1) / (pad) + 1)  #define PAD_SIZE(s, pad) (PAD_COUNT(s, pad) * pad)  #define ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, pad)		\ -	char __##name[ROUND(PAD_SIZE(size * sizeof(type), pad), align)  \ +	char __##name[ROUND(PAD_SIZE((size) * sizeof(type), pad), align)  \  		      + (align - 1)];					\  									\  	type *name = (type *) ALIGN((uintptr_t)__##name, align) diff --git a/include/configs/P2041RDB.h b/include/configs/P2041RDB.h index 905bacfa9..862614b5c 100644 --- a/include/configs/P2041RDB.h +++ b/include/configs/P2041RDB.h @@ -354,10 +354,10 @@ unsigned long get_board_sys_clk(unsigned long dummy);  #define CONFIG_SYS_I2C_FSL  #define CONFIG_SYS_FSL_I2C_SPEED	400000  #define CONFIG_SYS_FSL_I2C_SLAVE	0x7F -#define CONFIG_SYS_FSL_I2C_OFFSET	0x3000 +#define CONFIG_SYS_FSL_I2C_OFFSET	0x118000  #define CONFIG_SYS_FSL_I2C2_SPEED	400000  #define CONFIG_SYS_FSL_I2C2_SLAVE	0x7F -#define CONFIG_SYS_FSL_I2C2_OFFSET	0x3100 +#define CONFIG_SYS_FSL_I2C2_OFFSET	0x118100  /*   * RapidIO diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 2f06ca2ea..e8e527546 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -100,6 +100,7 @@  	"loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \  	"importbootenv=echo Importing environment from mmc ...; " \  		"env import -t $loadaddr $filesize\0" \ +	"dfu_alt_info_ram=" DFU_ALT_INFO_RAM "\0" \  	"ramargs=setenv bootargs console=${console} " \  		"${optargs} " \  		"root=${ramroot} " \ @@ -327,6 +328,11 @@  	"kernel part 0 8;" \  	"rootfs part 0 9"  #endif +#define CONFIG_DFU_RAM +#define DFU_ALT_INFO_RAM \ +	"kernel ram 0x80200000 0xD80000;" \ +	"fdt ram 0x80F80000 0x80000;" \ +	"ramdisk ram 0x81000000 0x4000000"  /*   * Default to using SPI for environment, etc. diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h index 7b120de21..51e0e801a 100644 --- a/include/configs/dra7xx_evm.h +++ b/include/configs/dra7xx_evm.h @@ -48,4 +48,23 @@  #define CONFIG_PHYLIB  #define CONFIG_PHY_ADDR			2 +/* SPI */ +#undef	CONFIG_OMAP3_SPI +#define CONFIG_TI_QSPI +#define CONFIG_SPI_FLASH +#define CONFIG_SPI_FLASH_SPANSION +#define CONFIG_CMD_SF +#define CONFIG_CMD_SPI +#define CONFIG_TI_SPI_MMAP +#define CONFIG_SF_DEFAULT_SPEED                48000000 +#define CONFIG_DEFAULT_SPI_MODE                SPI_MODE_3 + +/* SPI SPL */ +#define CONFIG_SPL_SPI_SUPPORT +#define CONFIG_SPL_SPI_LOAD +#define CONFIG_SPL_SPI_FLASH_SUPPORT +#define CONFIG_SPL_SPI_BUS             0 +#define CONFIG_SPL_SPI_CS              0 +#define CONFIG_SYS_SPI_U_BOOT_OFFS     0x20000 +  #endif /* __CONFIG_DRA7XX_EVM_H */ diff --git a/include/configs/eXalion.h b/include/configs/eXalion.h index c2d04a21c..7321b60c2 100644 --- a/include/configs/eXalion.h +++ b/include/configs/eXalion.h @@ -119,7 +119,7 @@  #define CONFIG_ENV_IS_IN_FLASH	1  #define CONFIG_ENV_SECT_SIZE	0x20000 /* Size of one Flash sector */ -#define CONFIG_ENV_SIZE		CONFIG_ENV_SECT_SIZE	/* Use one Flash sector for enviroment	*/ +#define CONFIG_ENV_SIZE		CONFIG_ENV_SECT_SIZE	/* Use one Flash sector for environment	*/  #define CONFIG_ENV_ADDR		0xFFFC0000  #define CONFIG_ENV_OFFSET		0	/* starting right at the beginning  */ diff --git a/include/configs/sacsng.h b/include/configs/sacsng.h index d63d0c4f5..0feef1eab 100644 --- a/include/configs/sacsng.h +++ b/include/configs/sacsng.h @@ -305,7 +305,7 @@  #define CONFIG_ENV_IN_OWN_SECT	1  /* Define this to contain any number of null terminated strings that - * will be part of the default enviroment compiled into the boot image. + * will be part of the default environment compiled into the boot image.   */  #define CONFIG_EXTRA_ENV_SETTINGS \  "quiet=0\0" \ diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h index 76fa500ed..79c00684d 100644 --- a/include/configs/sama5d3xek.h +++ b/include/configs/sama5d3xek.h @@ -162,6 +162,14 @@  #define CONFIG_USB_STORAGE  #endif +/* USB device */ +#define CONFIG_USB_GADGET +#define CONFIG_USB_GADGET_DUALSPEED +#define CONFIG_USB_GADGET_ATMEL_USBA +#define CONFIG_USB_ETHER +#define CONFIG_USB_ETH_RNDIS +#define CONFIG_USBNET_MANUFACTURER      "Atmel SAMA5D3xEK" +  #if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)  #define CONFIG_CMD_FAT  #endif diff --git a/include/configs/top9000.h b/include/configs/top9000.h index 65dabde54..a6d692872 100644 --- a/include/configs/top9000.h +++ b/include/configs/top9000.h @@ -120,7 +120,6 @@  #define CONFIG_ATMEL_SPI0		/* SPI used for FRAM is SPI0 */  #define FRAM_SPI_BUS		0  #define FRAM_CS_NUM		0 -#define CONFIG_SPI_FLASH		/* RAMTRON FRAM on SPI bus */  #define CONFIG_SPI_FRAM_RAMTRON  #define CONFIG_SF_DEFAULT_SPEED	1000000	/* be conservative here... */  #define CONFIG_SF_DEFAULT_MODE	SPI_MODE_0 diff --git a/include/dfu.h b/include/dfu.h index 47b90559d..b2ecf1beb 100644 --- a/include/dfu.h +++ b/include/dfu.h @@ -14,11 +14,13 @@  #include <common.h>  #include <linux/list.h>  #include <mmc.h> +#include <linux/usb/composite.h>  enum dfu_device_type {  	DFU_DEV_MMC = 1,  	DFU_DEV_ONENAND,  	DFU_DEV_NAND, +	DFU_DEV_RAM,  };  enum dfu_layout { @@ -27,6 +29,12 @@ enum dfu_layout {  	DFU_FS_EXT2,  	DFU_FS_EXT3,  	DFU_FS_EXT4, +	DFU_RAM_ADDR, +}; + +enum dfu_op { +	DFU_OP_READ = 1, +	DFU_OP_WRITE,  };  struct mmc_internal_data { @@ -51,6 +59,11 @@ struct nand_internal_data {  	unsigned int ubi;  }; +struct ram_internal_data { +	void		*start; +	unsigned int	size; +}; +  static inline unsigned int get_mmc_blk_size(int dev)  {  	return find_mmc_device(dev)->read_bl_len; @@ -62,7 +75,7 @@ static inline unsigned int get_mmc_blk_size(int dev)  #define CONFIG_SYS_DFU_DATA_BUF_SIZE		(1024*1024*8)	/* 8 MiB */  #endif  #ifndef CONFIG_SYS_DFU_MAX_FILE_SIZE -#define CONFIG_SYS_DFU_MAX_FILE_SIZE	(4 << 20)	/* 4 MiB */ +#define CONFIG_SYS_DFU_MAX_FILE_SIZE CONFIG_SYS_DFU_DATA_BUF_SIZE  #endif  struct dfu_entity { @@ -76,6 +89,7 @@ struct dfu_entity {  	union {  		struct mmc_internal_data mmc;  		struct nand_internal_data nand; +		struct ram_internal_data ram;  	} data;  	int (*read_medium)(struct dfu_entity *dfu, @@ -113,6 +127,7 @@ struct dfu_entity *dfu_get_entity(int alt);  char *dfu_extract_token(char** e, int *n);  void dfu_trigger_reset(void);  bool dfu_reset(void); +int dfu_init_env_entities(char *interface, int dev);  int dfu_read(struct dfu_entity *de, void *buf, int size, int blk_seq_num);  int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num); @@ -137,4 +152,22 @@ static inline int dfu_fill_entity_nand(struct dfu_entity *dfu, char *s)  }  #endif +#ifdef CONFIG_DFU_RAM +extern int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s); +#else +static inline int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s) +{ +	puts("RAM support not available!\n"); +	return -1; +} +#endif + +#ifdef CONFIG_DFU_FUNCTION +int dfu_add(struct usb_configuration *c); +#else +int dfu_add(struct usb_configuration *c) +{ +	return 0; +} +#endif  #endif /* __DFU_ENTITY_H_ */ diff --git a/include/fs.h b/include/fs.h index c837bae25..7d9403ed8 100644 --- a/include/fs.h +++ b/include/fs.h @@ -59,10 +59,10 @@ int fs_read(const char *filename, ulong addr, int offset, int len);   * to a specific filesystem type via the fstype parameter.   */  int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], -		int fstype, int cmdline_base); +		int fstype);  int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],  		int fstype);  int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], -		int fstype, int cmdline_base); +		int fstype);  #endif /* _FS_H */ diff --git a/include/i2s.h b/include/i2s.h index aee52e7f1..8dd2cc388 100644 --- a/include/i2s.h +++ b/include/i2s.h @@ -85,6 +85,7 @@ struct i2stx_info {  	unsigned int bitspersample;	/* bits per sample */  	unsigned int channels;		/* audio channels */  	unsigned int base_address;	/* I2S Register Base */ +	unsigned int id;		/* I2S controller id */  };  /* diff --git a/include/libfdt.h b/include/libfdt.h index 765d84f5e..9eefaaf5f 100644 --- a/include/libfdt.h +++ b/include/libfdt.h @@ -596,9 +596,9 @@ const char *fdt_get_alias_namelen(const void *fdt,  				  const char *name, int namelen);  /** - * fdt_get_alias - retreive the path referenced by a given alias + * fdt_get_alias - retrieve the path referenced by a given alias   * @fdt: pointer to the device tree blob - * @name: name of the alias th look up + * @name: name of the alias to look up   *   * fdt_get_alias() retrieves the value of a given alias.  That is, the   * value of the property named 'name' in the node /aliases. diff --git a/include/linux/fb.h b/include/linux/fb.h index 3858f8f80..111372c9f 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -2,6 +2,7 @@  #define _LINUX_FB_H  #include <linux/types.h> +#include <linux/list.h>  /* Definitions of frame buffers						*/ diff --git a/include/linux/usb/atmel_usba_udc.h b/include/linux/usb/atmel_usba_udc.h new file mode 100644 index 000000000..be29ef0c5 --- /dev/null +++ b/include/linux/usb/atmel_usba_udc.h @@ -0,0 +1,26 @@ +/* + * Platform data definitions for Atmel USBA gadget driver + * [Original from Linux kernel: include/linux/usb/atmel_usba_udc.h] + * + * SPDX-License-Identifier:     GPL-2.0+ + */ +#ifndef __LINUX_USB_USBA_H__ +#define __LINUX_USB_USBA_H__ + +struct usba_ep_data { +	char *name; +	int index; +	int fifo_size; +	int nr_banks; +	int can_dma; +	int can_isoc; +}; + +struct usba_platform_data { +	int			num_ep; +	struct usba_ep_data	*ep; +}; + +extern int usba_udc_probe(struct usba_platform_data *pdata); + +#endif /* __LINUX_USB_USBA_H */ diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 220d06860..a8a576316 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -18,6 +18,7 @@  #ifndef __LINUX_USB_GADGET_H  #define __LINUX_USB_GADGET_H +#include <errno.h>  #include <linux/list.h>  struct usb_ep; diff --git a/include/miiphy.h b/include/miiphy.h index 657b49624..088797e4c 100644 --- a/include/miiphy.h +++ b/include/miiphy.h @@ -1,5 +1,5 @@  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   *   * Additions (C) Copyright 2009 Industrie Dial Face S.p.A.   */ diff --git a/include/mmc.h b/include/mmc.h index 228d77139..214b9edc8 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -335,7 +335,11 @@ int mmc_start_init(struct mmc *mmc);  void mmc_set_preinit(struct mmc *mmc, int preinit);  #ifdef CONFIG_GENERIC_MMC +#ifdef CONFIG_MMC_SPI  #define mmc_host_is_spi(mmc)	((mmc)->host_caps & MMC_MODE_SPI) +#else +#define mmc_host_is_spi(mmc)	0 +#endif  struct mmc *mmc_spi_init(uint bus, uint cs, uint speed, uint mode);  #else  int mmc_legacy_init(int verbose); diff --git a/include/sdhci.h b/include/sdhci.h index b18b87312..74d06ae18 100644 --- a/include/sdhci.h +++ b/include/sdhci.h @@ -192,6 +192,8 @@  #define   SDHCI_SPEC_200	1  #define   SDHCI_SPEC_300	2 +#define SDHCI_GET_VERSION(x) (x->version & SDHCI_SPEC_VER_MASK) +  /*   * End of controller registers.   */ @@ -210,6 +212,7 @@  #define SDHCI_QUIRK_NO_CD		(1 << 5)  #define SDHCI_QUIRK_WAIT_SEND_CMD	(1 << 6)  #define SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER (1 << 7) +#define SDHCI_QUIRK_USE_WIDE8		(1 << 8)  /* to make gcc happy */  struct sdhci_host; diff --git a/include/spi.h b/include/spi.h index c0dab578b..5164d437b 100644 --- a/include/spi.h +++ b/include/spi.h @@ -25,29 +25,33 @@  #define	SPI_PREAMBLE	0x80			/* Skip preamble bytes */  /* SPI transfer flags */ -#define SPI_XFER_BEGIN	0x01			/* Assert CS before transfer */ -#define SPI_XFER_END	0x02			/* Deassert CS after transfer */ +#define SPI_XFER_BEGIN		0x01	/* Assert CS before transfer */ +#define SPI_XFER_END		0x02	/* Deassert CS after transfer */ +#define SPI_XFER_MMAP		0x08	/* Memory Mapped start */ +#define SPI_XFER_MMAP_END	0x10	/* Memory Mapped End */  /* Header byte that marks the start of the message */  #define SPI_PREAMBLE_END_BYTE	0xec -/*----------------------------------------------------------------------- - * Representation of a SPI slave, i.e. what we're communicating with. +/** + * struct spi_slave - Representation of a SPI slave   *   * Drivers are expected to extend this with controller-specific data.   * - *   bus:	ID of the bus that the slave is attached to. - *   cs:	ID of the chip select connected to the slave. - *   max_write_size:	If non-zero, the maximum number of bytes which can - *		be written at once, excluding command bytes. + * @bus:		ID of the bus that the slave is attached to. + * @cs:			ID of the chip select connected to the slave. + * @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.   */  struct spi_slave { -	unsigned int	bus; -	unsigned int	cs; +	unsigned int bus; +	unsigned int cs;  	unsigned int max_write_size; +	void *memory_map;  }; -/*----------------------------------------------------------------------- +/**   * Initialization, must be called once on start up.   *   * TODO: I don't think we really need this. @@ -60,10 +64,10 @@ void spi_init(void);   * Allocate and zero all fields in the spi slave, and set the bus/chip   * select. Use the helper macro spi_alloc_slave() to call this.   * - * @offset: Offset of struct spi_slave within slave structure - * @size: Size of slave structure - * @bus: Bus ID of the slave chip. - * @cs: Chip select ID of the slave chip on the specified bus. + * @offset:	Offset of struct spi_slave within slave structure. + * @size:	Size of slave structure. + * @bus:	Bus ID of the slave chip. + * @cs:		Chip select ID of the slave chip on the specified bus.   */  void *spi_do_alloc_slave(int offset, int size, unsigned int bus,  			 unsigned int cs); @@ -74,10 +78,10 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,   * Allocate and zero all fields in the spi slave, and set the bus/chip   * select.   * - * @_struct: Name of structure to allocate (e.g. struct tegra_spi). This - *	structure must contain a member 'struct spi_slave *slave'. - * @bus: Bus ID of the slave chip. - * @cs: Chip select ID of the slave chip on the specified bus. + * @_struct:	Name of structure to allocate (e.g. struct tegra_spi). + *		This structure must contain a member 'struct spi_slave *slave'. + * @bus:	Bus ID of the slave chip. + * @cs:		Chip select ID of the slave chip on the specified bus.   */  #define spi_alloc_slave(_struct, bus, cs) \  	spi_do_alloc_slave(offsetof(_struct, slave), \ @@ -89,13 +93,13 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,   * Allocate and zero all fields in the spi slave, and set the bus/chip   * select.   * - * @bus: Bus ID of the slave chip. - * @cs: Chip select ID of the slave chip on the specified bus. + * @bus:	Bus ID of the slave chip. + * @cs:		Chip select ID of the slave chip on the specified bus.   */  #define spi_alloc_slave_base(bus, cs) \  	spi_do_alloc_slave(0, sizeof(struct spi_slave), bus, cs) -/*----------------------------------------------------------------------- +/**   * Set up communications parameters for a SPI slave.   *   * This must be called once for each slave. Note that this function @@ -103,10 +107,10 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,   * contents of spi_slave so that the hardware can be easily   * initialized later.   * - *   bus:     Bus ID of the slave chip. - *   cs:      Chip select ID of the slave chip on the specified bus. - *   max_hz:  Maximum SCK rate in Hz. - *   mode:    Clock polarity, clock phase and other parameters. + * @bus:	Bus ID of the slave chip. + * @cs:		Chip select ID of the slave chip on the specified bus. + * @max_hz:	Maximum SCK rate in Hz. + * @mode:	Clock polarity, clock phase and other parameters.   *   * Returns: A spi_slave reference that can be used in subsequent SPI   * calls, or NULL if one or more of the parameters are not supported. @@ -114,14 +118,14 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,  struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,  		unsigned int max_hz, unsigned int mode); -/*----------------------------------------------------------------------- +/**   * Free any memory associated with a SPI slave.   * - *   slave:	The SPI slave + * @slave:	The SPI slave   */  void spi_free_slave(struct spi_slave *slave); -/*----------------------------------------------------------------------- +/**   * Claim the bus and prepare it for communication with a given slave.   *   * This must be called before doing any transfers with a SPI slave. It @@ -130,25 +134,25 @@ void spi_free_slave(struct spi_slave *slave);   * allowed to claim the same bus for several slaves without releasing   * the bus in between.   * - *   slave:	The SPI slave + * @slave:	The SPI slave   *   * Returns: 0 if the bus was claimed successfully, or a negative value   * if it wasn't.   */  int spi_claim_bus(struct spi_slave *slave); -/*----------------------------------------------------------------------- +/**   * Release the SPI bus   *   * This must be called once for every call to spi_claim_bus() after   * all transfers have finished. It may disable any SPI hardware as   * appropriate.   * - *   slave:	The SPI slave + * @slave:	The SPI slave   */  void spi_release_bus(struct spi_slave *slave); -/*----------------------------------------------------------------------- +/**   * SPI transfer   *   * This writes "bitlen" bits out the SPI MOSI port and simultaneously clocks @@ -161,19 +165,19 @@ void spi_release_bus(struct spi_slave *slave);   * temporary variables, this is OK).   *   * spi_xfer() interface: - *   slave:	The SPI slave which will be sending/receiving the data. - *   bitlen:	How many bits to write and read. - *   dout:	Pointer to a string of bits to send out.  The bits are + * @slave:	The SPI slave which will be sending/receiving the data. + * @bitlen:	How many bits to write and read. + * @dout:	Pointer to a string of bits to send out.  The bits are   *		held in a byte array and are sent MSB first. - *   din:	Pointer to a string of bits that will be filled in. - *   flags:	A bitwise combination of SPI_XFER_* flags. + * @din:	Pointer to a string of bits that will be filled in. + * @flags:	A bitwise combination of SPI_XFER_* flags.   * - *   Returns: 0 on success, not 0 on failure + * Returns: 0 on success, not 0 on failure   */  int  spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,  		void *din, unsigned long flags); -/*----------------------------------------------------------------------- +/**   * Determine if a SPI chipselect is valid.   * This function is provided by the board if the low-level SPI driver   * needs it to determine if a given chipselect is actually valid. @@ -183,7 +187,7 @@ int  spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,   */  int  spi_cs_is_valid(unsigned int bus, unsigned int cs); -/*----------------------------------------------------------------------- +/**   * Activate a SPI chipselect.   * This function is provided by the board code when using a driver   * that can't control its chipselects automatically (e.g. @@ -192,7 +196,7 @@ int  spi_cs_is_valid(unsigned int bus, unsigned int cs);   */  void spi_cs_activate(struct spi_slave *slave); -/*----------------------------------------------------------------------- +/**   * Deactivate a SPI chipselect.   * This function is provided by the board code when using a driver   * that can't control its chipselects automatically (e.g. @@ -201,18 +205,18 @@ void spi_cs_activate(struct spi_slave *slave);   */  void spi_cs_deactivate(struct spi_slave *slave); -/*----------------------------------------------------------------------- +/**   * Set transfer speed.   * This sets a new speed to be applied for next spi_xfer(). - *   slave:	The SPI slave - *   hz:	The transfer speed + * @slave:	The SPI slave + * @hz:		The transfer speed   */  void spi_set_speed(struct spi_slave *slave, uint hz); -/*----------------------------------------------------------------------- +/**   * Write 8 bits, then read 8 bits. - *   slave:	The SPI slave we're communicating with - *   byte:	Byte to be written + * @slave:	The SPI slave we're communicating with + * @byte:	Byte to be written   *   * Returns: The value that was read, or a negative value on error.   * diff --git a/include/spi_flash.h b/include/spi_flash.h index bfc59aa70..1ff5af4df 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -1,7 +1,8 @@  /* - * Interface to SPI flash + * Common SPI flash Interface   *   * Copyright (C) 2008 Atmel Corporation + * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.   *   * See file CREDITS for list of people who contributed to this   * project. @@ -10,6 +11,7 @@   * modify it under the terms of the GNU General Public License   * version 2 as published by the Free Software Foundation.    */ +  #ifndef _SPI_FLASH_H_  #define _SPI_FLASH_H_ @@ -17,75 +19,52 @@  #include <linux/types.h>  #include <linux/compiler.h> +/** + * struct spi_flash - SPI flash structure + * + * @spi:		SPI slave + * @name:		Name of SPI flash + * @size:		Total flash size + * @page_size:		Write (page) size + * @sector_size:	Sector size + * @erase_size:		Erase size + * @bank_read_cmd:	Bank read cmd + * @bank_write_cmd:	Bank write cmd + * @bank_curr:		Current flash bank + * @poll_cmd:		Poll cmd - for flash erase/program + * @erase_cmd:		Erase cmd 4K, 32K, 64K + * @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 + * @write:		Flash write ops: Write len bytes from buf into offeset + *			Supported cmds: Page Program + * @erase:		Flash erase ops: Erase len bytes from offset + *			Supported cmds: Sector erase 4K, 32K, 64K + * return 0 - Sucess, 1 - Failure + */  struct spi_flash {  	struct spi_slave *spi; +	const char *name; -	const char	*name; - -	/* Total flash size */ -	u32		size; -	/* Write (page) size */ -	u32		page_size; -	/* Erase (sector) size */ -	u32		sector_size; +	u32 size; +	u32 page_size; +	u32 sector_size; +	u32 erase_size;  #ifdef CONFIG_SPI_FLASH_BAR -	/* Bank read cmd */ -	u8		bank_read_cmd; -	/* Bank write cmd */ -	u8		bank_write_cmd; -	/* Current flash bank */ -	u8		bank_curr; +	u8 bank_read_cmd; +	u8 bank_write_cmd; +	u8 bank_curr;  #endif -	/* Poll cmd - for flash erase/program */ -	u8		poll_cmd; +	u8 poll_cmd; +	u8 erase_cmd; -	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, -				size_t len, const void *buf); -	int		(*erase)(struct spi_flash *flash, u32 offset, -				size_t len); +	void *memory_map; +	int (*read)(struct spi_flash *flash, u32 offset, size_t len, void *buf); +	int (*write)(struct spi_flash *flash, u32 offset, size_t len, +			const void *buf); +	int (*erase)(struct spi_flash *flash, u32 offset, 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); diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h index 35cdcc3d8..e08deb4dd 100644 --- a/include/usb_mass_storage.h +++ b/include/usb_mass_storage.h @@ -11,6 +11,7 @@  #define SECTOR_SIZE		0x200  #include <mmc.h> +#include <linux/usb/composite.h>  struct ums_device {  	struct mmc *mmc; @@ -39,4 +40,12 @@ extern struct ums_board_info *board_ums_init(unsigned int,  extern int usb_gadget_handle_interrupts(void);  extern int fsg_main_thread(void *); +#ifdef CONFIG_USB_GADGET_MASS_STORAGE +int fsg_add(struct usb_configuration *c); +#else +int fsg_add(struct usb_configuration *c) +{ +	return 0; +} +#endif  #endif /* __USB_MASS_STORAGE_H__ */ |