diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/arm925t.h | 11 | ||||
| -rw-r--r-- | include/common.h | 6 | ||||
| -rw-r--r-- | include/configs/am335x_evm.h | 23 | ||||
| -rw-r--r-- | include/configs/da850evm.h | 2 | ||||
| -rw-r--r-- | include/configs/dra7xx_evm.h | 19 | ||||
| -rw-r--r-- | include/configs/km/keymile-common.h | 1 | ||||
| -rw-r--r-- | include/configs/km/km83xx-common.h | 1 | ||||
| -rw-r--r-- | include/configs/km82xx.h | 1 | ||||
| -rw-r--r-- | include/configs/omap1510inn.h | 166 | ||||
| -rw-r--r-- | include/configs/omap5_common.h | 45 | ||||
| -rw-r--r-- | include/configs/socfpga_cyclone5.h | 1 | ||||
| -rw-r--r-- | include/configs/top9000.h | 1 | ||||
| -rw-r--r-- | include/spi.h | 100 | ||||
| -rw-r--r-- | include/spi_flash.h | 103 | 
14 files changed, 156 insertions, 324 deletions
| diff --git a/include/arm925t.h b/include/arm925t.h deleted file mode 100644 index 3d767b35c..000000000 --- a/include/arm925t.h +++ /dev/null @@ -1,11 +0,0 @@ -/************************************************ - * NAME	    : arm925t.h - * Version  : 23 June 2003			* - ************************************************/ - -#ifndef __ARM925T_H__ -#define __ARM925T_H__ - -void archflashwp(void *archdata, int wp); - -#endif /*__ARM925T_H__*/ diff --git a/include/common.h b/include/common.h index f1a590a15..bed43168f 100644 --- a/include/common.h +++ b/include/common.h @@ -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)  { diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 348247050..f746e4854 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -46,7 +46,7 @@  		"nandboot=echo Booting from nand ...; " \  		"run nandargs; " \  		"nand read ${loadaddr} ${nandsrcaddr} ${nandimgsize}; " \ -		"bootm ${loadaddr}\0" \ +		"bootz ${loadaddr}\0" \  	"nandimgsize=0x500000\0"  #else  #define NANDARGS "" @@ -61,8 +61,9 @@  	"fdt_high=0xffffffff\0" \  	"boot_fdt=try\0" \  	"rdaddr=0x81000000\0" \ +	"bootpart=0:2\0" \  	"bootdir=/boot\0" \ -	"bootfile=uImage\0" \ +	"bootfile=zImage\0" \  	"fdtfile=undefined\0" \  	"console=ttyO0,115200n8\0" \  	"optargs=\0" \ @@ -71,7 +72,6 @@  	"mmcdev=0\0" \  	"mmcroot=/dev/mmcblk0p2 ro\0" \  	"mmcrootfstype=ext4 rootwait\0" \ -	"bootpart=0:2\0" \  	"rootpath=/export/rootfs\0" \  	"nfsopts=nolock\0" \  	"static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \ @@ -106,21 +106,21 @@  		"root=${ramroot} " \  		"rootfstype=${ramrootfstype}\0" \  	"loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \ -	"loaduimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ +	"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \  	"loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \  	"mmcloados=run mmcargs; " \  		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \  			"if run loadfdt; then " \ -				"bootm ${loadaddr} - ${fdtaddr}; " \ +				"bootz ${loadaddr} - ${fdtaddr}; " \  			"else " \  				"if test ${boot_fdt} = try; then " \ -					"bootm; " \ +					"bootz; " \  				"else " \  					"echo WARN: Cannot load the DT; " \  				"fi; " \  			"fi; " \  		"else " \ -			"bootm; " \ +			"bootz; " \  		"fi;\0" \  	"mmcboot=mmc dev ${mmcdev}; " \  		"if mmc rescan; then " \ @@ -133,7 +133,7 @@  				"echo Running uenvcmd ...;" \  				"run uenvcmd;" \  			"fi;" \ -			"if run loaduimage; then " \ +			"if run loadimage; then " \  				"run mmcloados;" \  			"fi;" \  		"fi;\0" \ @@ -141,17 +141,17 @@  		"run spiargs; " \  		"sf probe ${spibusno}:0; " \  		"sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; " \ -		"bootm ${loadaddr}\0" \ +		"bootz ${loadaddr}\0" \  	"netboot=echo Booting from network ...; " \  		"setenv autoload no; " \  		"dhcp; " \  		"tftp ${loadaddr} ${bootfile}; " \  		"tftp ${fdtaddr} ${fdtfile}; " \  		"run netargs; " \ -		"bootm ${loadaddr} - ${fdtaddr}\0" \ +		"bootz ${loadaddr} - ${fdtaddr}\0" \  	"ramboot=echo Booting from ramdisk ...; " \  		"run ramargs; " \ -		"bootm ${loadaddr} ${rdaddr} ${fdtaddr}\0" \ +		"bootz ${loadaddr} ${rdaddr} ${fdtaddr}\0" \  	"findfdt="\  		"if test $board_name = A335BONE; then " \  			"setenv fdtfile am335x-bone.dtb; fi; " \ @@ -171,7 +171,6 @@  	"run mmcboot;" \  	"setenv mmcdev 1; " \  	"setenv bootpart 1:2; " \ -	"setenv mmcroot /dev/mmcblk1p2 ro; " \  	"run mmcboot;" \  	"run nandboot;" diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h index e63d7c4ab..984550603 100644 --- a/include/configs/da850evm.h +++ b/include/configs/da850evm.h @@ -147,6 +147,7 @@  #define CONFIG_SPI_FLASH  #define CONFIG_SPI_FLASH_STMICRO  #define CONFIG_SPI_FLASH_WINBOND +#define CONFIG_CMD_SF  #define CONFIG_DAVINCI_SPI  #define CONFIG_SYS_SPI_BASE		DAVINCI_SPI1_BASE  #define CONFIG_SYS_SPI_CLK		clk_get(DAVINCI_SPI1_CLKID) @@ -334,7 +335,6 @@  #undef CONFIG_CMD_IMLS  #undef CONFIG_CMD_FLASH  #define CONFIG_CMD_SPI -#define CONFIG_CMD_SF  #define CONFIG_CMD_SAVEENV  #endif 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/km/keymile-common.h b/include/configs/km/keymile-common.h index a82987d6a..733023049 100644 --- a/include/configs/km/keymile-common.h +++ b/include/configs/km/keymile-common.h @@ -18,6 +18,7 @@  #define CONFIG_CMD_ASKENV  #define CONFIG_CMD_DHCP  #define CONFIG_CMD_DEFAULTENV_VARS +#define CONFIG_CMD_GREPENV  #define CONFIG_CMD_ECHO  #define CONFIG_CMD_IMMAP  #define CONFIG_CMD_MII diff --git a/include/configs/km/km83xx-common.h b/include/configs/km/km83xx-common.h index 0ff866a89..5e075c8dd 100644 --- a/include/configs/km/km83xx-common.h +++ b/include/configs/km/km83xx-common.h @@ -223,7 +223,6 @@  #define CONFIG_DTT_LM75		/* ON Semi's LM75 */  #define CONFIG_DTT_SENSORS	{0, 1, 2, 3}	/* Sensor addresses */  #define CONFIG_SYS_DTT_MAX_TEMP	70 -#define CONFIG_SYS_DTT_LOW_TEMP	-30  #define CONFIG_SYS_DTT_HYSTERESIS	3  #define CONFIG_SYS_DTT_BUS_NUM		1 diff --git a/include/configs/km82xx.h b/include/configs/km82xx.h index b23cb9627..726c646bc 100644 --- a/include/configs/km82xx.h +++ b/include/configs/km82xx.h @@ -271,7 +271,6 @@ int get_scl(void);  #define CONFIG_DTT_LM75			/* ON Semi's LM75		*/  #define CONFIG_DTT_SENSORS	{0}	/* Sensor addresses		*/  #define CONFIG_SYS_DTT_MAX_TEMP	70 -#define CONFIG_SYS_DTT_LOW_TEMP	-30  #define CONFIG_SYS_DTT_HYSTERESIS	3  #define CONFIG_SYS_DTT_BUS_NUM		2 diff --git a/include/configs/omap1510inn.h b/include/configs/omap1510inn.h deleted file mode 100644 index 1a7e5c717..000000000 --- a/include/configs/omap1510inn.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * (C) Copyright 2003 - * Texas Instruments. - * Kshitij Gupta <kshitij@ti.com> - * Configuation settings for the TI OMAP Innovator board. - * - * SPDX-License-Identifier:	GPL-2.0+  - */ - -#ifndef __CONFIG_H -#define __CONFIG_H - -/* - * High Level Configuration Options - * (easy to change) - */ -#define CONFIG_ARM925T	1		/* This is an arm925t CPU	*/ -#define CONFIG_OMAP	1		/* in a TI OMAP core	*/ -#define CONFIG_OMAP1510 1		/* which is in a 1510 (helen) */ -#define CONFIG_INNOVATOROMAP1510 1	/*	a Innovator Board  */ - -/* input clock of PLL */ -#define CONFIG_SYS_CLK_FREQ	12000000	/* the OMAP1510 Innovator has 12MHz input clock */ - -#define CONFIG_MISC_INIT_R - -#define CONFIG_CMDLINE_TAG	 1	/* enable passing of ATAGs	*/ -#define CONFIG_SETUP_MEMORY_TAGS 1 -#define CONFIG_INITRD_TAG	 1 - -/* - * Size of malloc() pool - */ -#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 128*1024) - -/* - * Hardware drivers - */ -/* -#define CONFIG_DRIVER_SMC9196 -#define CONFIG_SMC9196_BASE 0x08000300 -#define CONFIG_SMC9196_EXT_PHY -*/ -#define CONFIG_LAN91C96 -#define CONFIG_LAN91C96_BASE 0x08000300 -#define CONFIG_LAN91C96_EXT_PHY - -/* - * NS16550 Configuration - */ -#define CONFIG_SYS_NS16550 -#define CONFIG_SYS_NS16550_SERIAL -#define CONFIG_SYS_NS16550_REG_SIZE	(-4) -#define CONFIG_SYS_NS16550_CLK		(CONFIG_SYS_CLK_FREQ)	/* can be 12M/32Khz or 48Mhz  */ -#define CONFIG_SYS_NS16550_COM1	0xfffb0000		/* uart1, bluetooth uart on helen */ - -/* - * select serial console configuration - */ -#define CONFIG_SERIAL1		1	/* we use SERIAL 1 on OMAP1510 Innovator */ - -/* allow to overwrite serial and ethaddr */ -#define CONFIG_ENV_OVERWRITE - -#define CONFIG_ENV_OVERWRITE -#define CONFIG_CONS_INDEX	1 -#define CONFIG_BAUDRATE		115200 - -/* - * Command line configuration. - */ -#include <config_cmd_default.h> - -#define CONFIG_CMD_DHCP - - -/* - * BOOTP options - */ -#define CONFIG_BOOTP_SUBNETMASK -#define CONFIG_BOOTP_GATEWAY -#define CONFIG_BOOTP_HOSTNAME -#define CONFIG_BOOTP_BOOTPATH - - -#include <configs/omap1510.h> - -#define CONFIG_BOOTDELAY	3 -#define CONFIG_BOOTARGS		"console=ttyS0,115200n8 noinitrd root=/dev/nfs ip=bootp" -#define CONFIG_BOOTCOMMAND	"bootp;tftp;bootm" -#define CONFIG_SYS_AUTOLOAD		"n"		/* No autoload */ - -#if defined(CONFIG_CMD_KGDB) -#define CONFIG_KGDB_BAUDRATE	115200		/* speed to run kgdb serial port */ -/* what's this ? it's not used anywhere */ -#define CONFIG_KGDB_SER_INDEX	1		/* which serial port to use */ -#endif - -/* - * Miscellaneous configurable options - */ -#define CONFIG_SYS_LONGHELP				/* undef to save memory		*/ -#define CONFIG_SYS_PROMPT		"OMAP1510 Innovator # " /* Monitor Command Prompt	*/ -#define CONFIG_SYS_CBSIZE		256		/* Console I/O Buffer Size	*/ -#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */ -#define CONFIG_SYS_MAXARGS		16		/* max number of command args	*/ -#define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE	/* Boot Argument Buffer Size	*/ - -#define CONFIG_SYS_MEMTEST_START	0x10000000	/* memtest works on	*/ -#define CONFIG_SYS_MEMTEST_END		0x12000000	/* 32 MB in DRAM	*/ - -#define CONFIG_SYS_LOAD_ADDR		0x10000000	/* default load address */ - -/* The 1510 has 3 timers, they can be driven by the RefClk (12MHz) or by DPLL1. - * This time is further subdivided by a local divisor. - */ -#define CONFIG_SYS_TIMERBASE	OMAP1510_TIMER1_BASE	/* use timer 1 */ -#define CONFIG_SYS_PTV		2	/* Divisor: 2^(PTV+1) => 8 */ -#define CONFIG_SYS_HZ		1000 - -/*----------------------------------------------------------------------- - * Physical Memory Map - */ -#define CONFIG_NR_DRAM_BANKS	1	   /* we have 1 bank of DRAM */ -#define PHYS_SDRAM_1		0x10000000 /* SDRAM Bank #1 */ -#define PHYS_SDRAM_1_SIZE	0x02000000 /* 32 MB */ - -#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */ - -#define CONFIG_SYS_FLASH_BASE		PHYS_FLASH_1 - -#define PHYS_SRAM		0x20000000 - -/*----------------------------------------------------------------------- - * FLASH and environment organization - */ -#define CONFIG_SYS_MAX_FLASH_BANKS	2	/* max number of memory banks */ -#define PHYS_FLASH_SIZE		0x01000000 /* 16MB */ -#define PHYS_FLASH_SECT_SIZE	(128*1024)	/* Size of a sector (128kB) */ -#define CONFIG_SYS_MAX_FLASH_SECT	(128)	/* max number of sectors on one chip */ -#define CONFIG_ENV_ADDR		(CONFIG_SYS_FLASH_BASE + PHYS_FLASH_SECT_SIZE) -#define CONFIG_SYS_MONITOR_BASE	CONFIG_SYS_FLASH_BASE	/* Monitor at beginning of flash */ -#define CONFIG_SYS_MONITOR_LEN		PHYS_FLASH_SECT_SIZE	/* Reserve 1 sector */ -#define CONFIG_SYS_FLASH_BANKS_LIST	{ CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE + PHYS_FLASH_SIZE } - -/*----------------------------------------------------------------------- - * FLASH driver setup - */ -#define CONFIG_SYS_FLASH_CFI		1	/* Flash memory is CFI compliant */ -#define CONFIG_FLASH_CFI_DRIVER	1	/* Use drivers/mtd/cfi_flash.c */ -#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE	1	/* Use buffered writes (~10x faster) */ -#define CONFIG_SYS_FLASH_PROTECTION	1	/* Use hardware sector protection */ - -/* timeout values are in ticks */ -#define CONFIG_SYS_FLASH_ERASE_TOUT	(20*CONFIG_SYS_HZ) /* Timeout for Flash Erase */ -#define CONFIG_SYS_FLASH_WRITE_TOUT	(20*CONFIG_SYS_HZ) /* Timeout for Flash Write */ - -#define CONFIG_ENV_IS_IN_FLASH	1 -#define CONFIG_ENV_SECT_SIZE	PHYS_FLASH_SECT_SIZE	/* Total Size of Environment Sector */ -#define CONFIG_ENV_SIZE		CONFIG_ENV_SECT_SIZE -#define CONFIG_ENV_OFFSET		( CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN )	/* Environment after Monitor */ - -#define CONFIG_SYS_SDRAM_BASE		PHYS_SDRAM_1 -#define CONFIG_SYS_INIT_SP_ADDR 	PHYS_SRAM - -#endif	/* __CONFIG_H */ diff --git a/include/configs/omap5_common.h b/include/configs/omap5_common.h index 98ba559c8..eade6375c 100644 --- a/include/configs/omap5_common.h +++ b/include/configs/omap5_common.h @@ -83,7 +83,7 @@  	"partitions=" PARTS_DEFAULT "\0" \  	"optargs=\0" \  	"mmcdev=0\0" \ -	"mmcroot=/dev/mmcblk0p2 rw\0" \ +	"mmcroot=/dev/mmcblk1p2 rw\0" \  	"mmcrootfstype=ext4 rootwait\0" \  	"mmcargs=setenv bootargs console=${console} " \  		"${optargs} " \ @@ -97,9 +97,24 @@  	"importbootenv=echo Importing environment from mmc${mmcdev} ...; " \  		"env import -t ${loadaddr} ${filesize}\0" \  	"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ -	"mmcboot=echo Booting from mmc${mmcdev} ...; " \ -		"run mmcargs; " \ -		"bootz ${loadaddr} - ${fdtaddr}\0" \ +	"mmcboot=mmc dev ${mmcdev}; " \ +		"if mmc rescan; then " \ +			"echo SD/MMC found on device ${mmcdev};" \ +			"if run loadbootenv; then " \ +				"echo Loaded environment from ${bootenv};" \ +				"run importbootenv;" \ +			"fi;" \ +			"if test -n $uenvcmd; then " \ +				"echo Running uenvcmd ...;" \ +				"run uenvcmd;" \ +			"fi;" \ +			"if run loadimage; then " \ +				"run loadfdt; " \ +				"echo Booting from mmc${mmcdev} ...; " \ +				"run mmcargs; " \ +				"bootz ${loadaddr} - ${fdtaddr}; " \ +			"fi;" \ +		"fi;\0" \  	"findfdt="\  		"if test $board_name = omap5_uevm; then " \  			"setenv fdtfile omap5-uevm.dtb; fi; " \ @@ -111,23 +126,11 @@  #define CONFIG_BOOTCOMMAND \  	"run findfdt; " \ -	"mmc dev ${mmcdev}; if mmc rescan; then " \ -		"if run loadbootscript; then " \ -			"run bootscript; " \ -		"else " \ -			"if run loadbootenv; then " \ -				"run importbootenv; " \ -			"fi;" \ -			"if test -n ${uenvcmd}; then " \ -				"echo Running uenvcmd ...;" \ -				"run uenvcmd;" \ -			"fi;" \ -		"fi;" \ -		"if run loadimage; then " \ -			"run loadfdt; " \ -			"run mmcboot; " \ -		"fi; " \ -	"fi" +	"run mmcboot;" \ +	"setenv mmcdev 1; " \ +	"setenv bootpart 1:2; " \ +	"setenv mmcroot /dev/mmcblk0p2 rw; " \ +	"run mmcboot;" \  /* diff --git a/include/configs/socfpga_cyclone5.h b/include/configs/socfpga_cyclone5.h index 06aeba61d..346ca7232 100644 --- a/include/configs/socfpga_cyclone5.h +++ b/include/configs/socfpga_cyclone5.h @@ -7,6 +7,7 @@  #define __CONFIG_H  #include <asm/arch/socfpga_base_addrs.h> +#include "../../board/altera/socfpga/pinmux_config.h"  /*   * High level configuration 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/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); |