[U-Boot] [PATCH V6 - Part 3 - 1/2] sf command: allow default bus and chip selects
Jason Hui
jason.hui at linaro.org
Wed Feb 1 12:26:41 CET 2012
On Wed, Feb 1, 2012 at 1:52 AM, Eric Nelson
<eric.nelson at boundarydevices.com> wrote:
> 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
> Signed-off-by: Eric Nelson <eric.nelson at boundarydevices.com>
> ---
> common/cmd_sf.c | 37 +++++++++++++++++++++----------------
> 1 files changed, 21 insertions(+), 16 deletions(-)
Acked-by: Jason Liu <jason.hui at linaro.org>
Tested on i.mx6q sabre-lite board with sf command:
MX6QSABRELITE U-Boot > sf probe
SF: Detected SST25VF016B with page size 4 KiB, total 2 MiB
Tested-by: Jason Liu <jason.hui at linaro.org>
>
> diff --git a/common/cmd_sf.c b/common/cmd_sf.c
> index 612fd18..98e4162 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)
> - return -1;
> -
> - bus = cs;
> - cs = simple_strtoul(endp + 1, &endp, 0);
> - if (*endp != 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;
> + }
> }
>
> 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"
> --
> 1.7.1
>
More information about the U-Boot
mailing list