diff options
| author | Eric Nelson <eric.nelson@boundarydevices.com> | 2012-01-31 10:52:07 -0700 | 
|---|---|---|
| committer | Mike Frysinger <vapier@gentoo.org> | 2012-02-12 15:18:29 -0500 | 
| commit | c1173bd0754aa55bc52d874d5490c0c892a56ebf (patch) | |
| tree | 71d8705c113e9cd895d633ec54946e014532b2d0 /common/cmd_sf.c | |
| parent | 8b463dab933f3bb1e4ec703a9e3cbfca2f031334 (diff) | |
| download | olio-uboot-2014.01-c1173bd0754aa55bc52d874d5490c0c892a56ebf.tar.xz olio-uboot-2014.01-c1173bd0754aa55bc52d874d5490c0c892a56ebf.zip | |
sf command: allow default bus and chip selects
This patch allows a board configuration file to provide default bus
and chip-selects for SPI flash so that first argument to the 'sf' command
is optional.
On boards that use the mxc_spi driver and a GPIO for chip select, this allows
a much simpler command line:
	U-Boot> sf probe
instead of
	U-Boot> sf probe 0x5300
Tested-by: Jason Liu <jason.hui@linaro.org>
Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'common/cmd_sf.c')
| -rw-r--r-- | common/cmd_sf.c | 35 | 
1 files changed, 20 insertions, 15 deletions
| diff --git a/common/cmd_sf.c b/common/cmd_sf.c index 612fd1861..98e416211 100644 --- a/common/cmd_sf.c +++ b/common/cmd_sf.c @@ -17,6 +17,12 @@  #ifndef CONFIG_SF_DEFAULT_MODE  # define CONFIG_SF_DEFAULT_MODE		SPI_MODE_3  #endif +#ifndef CONFIG_SF_DEFAULT_CS +# define CONFIG_SF_DEFAULT_CS		0 +#endif +#ifndef CONFIG_SF_DEFAULT_BUS +# define CONFIG_SF_DEFAULT_BUS		0 +#endif  static struct spi_flash *flash; @@ -63,27 +69,26 @@ static int sf_parse_len_arg(char *arg, ulong *len)  static int do_spi_flash_probe(int argc, char * const argv[])  { -	unsigned int bus = 0; -	unsigned int cs; +	unsigned int bus = CONFIG_SF_DEFAULT_BUS; +	unsigned int cs = CONFIG_SF_DEFAULT_CS;  	unsigned int speed = CONFIG_SF_DEFAULT_SPEED;  	unsigned int mode = CONFIG_SF_DEFAULT_MODE;  	char *endp;  	struct spi_flash *new; -	if (argc < 2) -		return -1; - -	cs = simple_strtoul(argv[1], &endp, 0); -	if (*argv[1] == 0 || (*endp != 0 && *endp != ':')) -		return -1; -	if (*endp == ':') { -		if (endp[1] == 0) +	if (argc >= 2) { +		cs = simple_strtoul(argv[1], &endp, 0); +		if (*argv[1] == 0 || (*endp != 0 && *endp != ':'))  			return -1; +		if (*endp == ':') { +			if (endp[1] == 0) +				return -1; -		bus = cs; -		cs = simple_strtoul(endp + 1, &endp, 0); -		if (*endp != 0) -			return -1; +			bus = cs; +			cs = simple_strtoul(endp + 1, &endp, 0); +			if (*endp != 0) +				return -1; +		}  	}  	if (argc >= 3) { @@ -299,7 +304,7 @@ usage:  U_BOOT_CMD(  	sf,	5,	1,	do_spi_flash,  	"SPI flash sub-system", -	"probe [bus:]cs [hz] [mode]	- init flash device on given SPI bus\n" +	"probe [[bus:]cs] [hz] [mode]	- init flash device on given SPI bus\n"  	"				  and chip select\n"  	"sf read addr offset len 	- read `len' bytes starting at\n"  	"				  `offset' to memory at `addr'\n" |