mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
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
1 changed files with 20 additions and 15 deletions
|
@ -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 a new issue