[U-Boot] [PATCH v1 1/2] cmd_sf: Add command "sf info" to show current device info

Simon Glass sjg at chromium.org
Fri May 1 03:54:36 CEST 2015


Hi,

On 29 April 2015 at 04:40, Haikun Wang <haikun.wang at freescale.com> wrote:
> Add command "sf info" to show the information of the current SPI flash device.
>
> Signed-off-by: Haikun Wang <haikun.wang at freescale.com>
> ---
> In current sf driver, we show the debug information during the flash probe
> period.
>
> In case of without DM SPI, we need to run command "sf probe" to get the debug
> information of the current SPI flash device. "sf probe" will re-identify the
> device every time and it reduce the efficiency. We can get the debug information
> without any re-identify process using "sf info".
>
> In case of using DM SPI, if we disable CONFIG_DM_DEVICE_REMOVE "sf probe" will
> only call the flash driver's probe function the first time you run it and no
> information will show after the first. It is recommended that only call the
> flash driver's probe function once during u-boot period. You can get the debug
> information using "sf info" in this case.
>
> Changes in v1: None.
>
>  common/cmd_sf.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 42 insertions(+), 1 deletion(-)

I wonder if you should enable this command only when driver model is used?

>
> diff --git a/common/cmd_sf.c b/common/cmd_sf.c
> index 6aabf39..38841fa 100644
> --- a/common/cmd_sf.c
> +++ b/common/cmd_sf.c
> @@ -503,6 +503,44 @@ static int do_spi_flash_test(int argc, char * const argv[])
>  }
>  #endif /* CONFIG_CMD_SF_TEST */
>
> +static int do_spi_flash_info(struct spi_flash *flash, bool dm_column_style)
> +{
> +       if (dm_column_style) {
> +               struct udevice *bus;
> +               struct udevice *dev;
> +               struct dm_spi_slave_platdata *plat;
> +
> +               dev = flash->dev;
> +               bus = dev->parent;
> +               plat = dev_get_parent_platdata(dev);
> +
> +               printf("Device: %s\n", dev->name);
> +               printf("Chipselect: %d\n", plat->cs);
> +               printf("Bind Driver: %s\n", dev->driver->name);
> +               printf("SPI bus: %s\n", bus->name);
> +               printf("SPI bus number: %d\n", bus->seq);
> +               printf("Flash type: %s\n", flash->name);
> +               printf("Page size: ");
> +               print_size(flash->page_size, "\n");
> +               printf("Erase size: ");
> +               print_size(flash->erase_size, "\n");
> +               printf("Total size: ");
> +               print_size(flash->size, "\n");
> +               if (flash->memory_map)
> +                       printf("Mapped at %p\n", flash->memory_map);
> +       } else {
> +               printf("SF: Detected %s with page size ", flash->name);
> +               print_size(flash->page_size, ", erase size ");
> +               print_size(flash->erase_size, ", total ");
> +               print_size(flash->size, "");
> +               if (flash->memory_map)
> +                       printf(", mapped at %p", flash->memory_map);
> +               puts("\n");
> +       }
> +
> +       return 0;
> +}
> +
>  static int do_spi_flash(cmd_tbl_t *cmdtp, int flag, int argc,
>                         char * const argv[])
>  {
> @@ -537,6 +575,8 @@ static int do_spi_flash(cmd_tbl_t *cmdtp, int flag, int argc,
>         else if (!strcmp(cmd, "test"))
>                 ret = do_spi_flash_test(argc, argv);
>  #endif
> +       else if (!strcmp(cmd, "info"))
> +               ret = do_spi_flash_info(flash, IS_ENABLED(CONFIG_DM_SPI_FLASH));
>         else
>                 ret = -1;
>
> @@ -567,6 +607,7 @@ U_BOOT_CMD(
>         "sf erase offset [+]len         - erase `len' bytes from `offset'\n"
>         "                                 `+len' round up `len' to block size\n"
>         "sf update addr offset len      - erase and write `len' bytes from memory\n"
> -       "                                 at `addr' to flash at `offset'"
> +       "                                 at `addr' to flash at `offset'\n"
> +       "sf info - display info of the current SPI Flash device\n"
>         SF_TEST_HELP
>  );
> --
> 2.1.0.27.g96db324
>

Regards,
Simon


More information about the U-Boot mailing list