On 5 May 2015 at 05:37, haikun.w...@freescale.com <haikun.w...@freescale.com> wrote: > On 5/1/2015 9:54 AM, Simon Glass wrote: >> Hi, >> >> On 29 April 2015 at 04:40, Haikun Wang <haikun.w...@freescale.com> wrote: >>> Add command "sf info" to show the information of the current SPI flash >>> device. >>> >>> Signed-off-by: Haikun Wang <haikun.w...@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? > You mean I should only enable it when driver model is used? > I think it is also useful in NO-DM model. > We can get the device information without data transfer using this command.
OK. Acked-by: Simon Glass <s...@chromium.org> > > Best regards, > Wang Haikun >> >>> >>> 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 >> > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot