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>
This commit is contained in:
		
							parent
							
								
									8b463dab93
								
							
						
					
					
						commit
						c1173bd075
					
				|  | @ -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" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue