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 | #ifndef CONFIG_SF_DEFAULT_MODE | ||||||
| # define CONFIG_SF_DEFAULT_MODE		SPI_MODE_3 | # define CONFIG_SF_DEFAULT_MODE		SPI_MODE_3 | ||||||
| #endif | #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; | 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[]) | static int do_spi_flash_probe(int argc, char * const argv[]) | ||||||
| { | { | ||||||
| 	unsigned int bus = 0; | 	unsigned int bus = CONFIG_SF_DEFAULT_BUS; | ||||||
| 	unsigned int cs; | 	unsigned int cs = CONFIG_SF_DEFAULT_CS; | ||||||
| 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED; | 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED; | ||||||
| 	unsigned int mode = CONFIG_SF_DEFAULT_MODE; | 	unsigned int mode = CONFIG_SF_DEFAULT_MODE; | ||||||
| 	char *endp; | 	char *endp; | ||||||
| 	struct spi_flash *new; | 	struct spi_flash *new; | ||||||
| 
 | 
 | ||||||
| 	if (argc < 2) | 	if (argc >= 2) { | ||||||
| 		return -1; | 		cs = simple_strtoul(argv[1], &endp, 0); | ||||||
| 
 | 		if (*argv[1] == 0 || (*endp != 0 && *endp != ':')) | ||||||
| 	cs = simple_strtoul(argv[1], &endp, 0); |  | ||||||
| 	if (*argv[1] == 0 || (*endp != 0 && *endp != ':')) |  | ||||||
| 		return -1; |  | ||||||
| 	if (*endp == ':') { |  | ||||||
| 		if (endp[1] == 0) |  | ||||||
| 			return -1; | 			return -1; | ||||||
|  | 		if (*endp == ':') { | ||||||
|  | 			if (endp[1] == 0) | ||||||
|  | 				return -1; | ||||||
| 
 | 
 | ||||||
| 		bus = cs; | 			bus = cs; | ||||||
| 		cs = simple_strtoul(endp + 1, &endp, 0); | 			cs = simple_strtoul(endp + 1, &endp, 0); | ||||||
| 		if (*endp != 0) | 			if (*endp != 0) | ||||||
| 			return -1; | 				return -1; | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (argc >= 3) { | 	if (argc >= 3) { | ||||||
|  | @ -299,7 +304,7 @@ usage: | ||||||
| U_BOOT_CMD( | U_BOOT_CMD( | ||||||
| 	sf,	5,	1,	do_spi_flash, | 	sf,	5,	1,	do_spi_flash, | ||||||
| 	"SPI flash sub-system", | 	"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" | 	"				  and chip select\n" | ||||||
| 	"sf read addr offset len 	- read `len' bytes starting at\n" | 	"sf read addr offset len 	- read `len' bytes starting at\n" | ||||||
| 	"				  `offset' to memory at `addr'\n" | 	"				  `offset' to memory at `addr'\n" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue