Dear Przemyslaw Marczak,

> This change allows using every mmc device instance with ums, like eMMC
> or SD cards. Now MMC device is checked before ums is inited.
> 
> Example of use: ums <device_number> for mmc devices.
> 
> Signed-off-by: Przemyslaw Marczak <p.marc...@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com>
> CC: Marek Vasut <marek.va...@gmail.com>
> ---
>  board/samsung/trats/trats.c   |   12 +++---------
>  common/cmd_usb_mass_storage.c |   30 ++++++++++++++----------------
>  include/usb_mass_storage.h    |    4 ++--
>  3 files changed, 19 insertions(+), 27 deletions(-)
> 
> diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
> index 7f61d17..b7f7b05 100644
> --- a/board/samsung/trats/trats.c
> +++ b/board/samsung/trats/trats.c
> @@ -816,17 +816,11 @@ static struct ums_board_info ums_board = {
>       },
>  };
> 
> -struct ums_board_info *board_ums_init(unsigned int dev_num, unsigned int
> offset, -                                   unsigned int part_size)
> +struct ums_board_info *board_ums_init(struct mmc *mmc, unsigned int
> offset, +                                     unsigned int part_size)
>  {
> -     struct mmc *mmc;
> -
> -     mmc = find_mmc_device(dev_num);
> -     if (!mmc)
> -             return NULL;
> -
>       ums_board.ums_dev.mmc = mmc;
> -     ums_board.ums_dev.dev_num = dev_num;
> +     ums_board.ums_dev.dev_num = mmc->block_dev.dev;

You already pass "mmc", why pass mmc->block_dev.dev too? Is it not a little 
redundant?

>       ums_board.ums_dev.offset = offset;
>       ums_board.ums_dev.part_size = part_size;
> 
> diff --git a/common/cmd_usb_mass_storage.c b/common/cmd_usb_mass_storage.c
> index 33a4715..62c1308 100644
> --- a/common/cmd_usb_mass_storage.c
> +++ b/common/cmd_usb_mass_storage.c
> @@ -14,6 +14,7 @@
>  int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>                              int argc, char * const argv[])
>  {
> +     struct mmc *mmc = NULL;
>       char *ep;
>       unsigned int dev_num = 0, offset = 0, part_size = 0;
>       int rc;
> @@ -21,29 +22,29 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>       struct ums_board_info *ums_info;
>       static char *s = "ums";
> 
> -     if (argc < 2) {
> -             printf("usage: ums <dev> - e.g. ums 0\n");
> -             return 0;
> -     }
> +     if (argc < 2)
> +             return CMD_RET_USAGE;

UMS works on MMC devices only right now?

>       dev_num = (int)simple_strtoul(argv[1], &ep, 16);
> 
> -     if (dev_num) {
> -             puts("\nSet eMMC device to 0! - e.g. ums 0\n");
> -             goto fail;
> +     mmc = find_mmc_device(dev_num);
> +     if (!mmc) {
> +             printf("UMS error: invalid mmc device num: %d.\n", dev_num);
> +             return CMD_RET_FAILURE;
>       }
> 
>       board_usb_init();
> -     ums_info = board_ums_init(dev_num, offset, part_size);
> 
> +     ums_info = board_ums_init(mmc, offset, part_size);
>       if (!ums_info) {
> -             printf("MMC: %d -> NOT available\n", dev_num);
> -             goto fail;
> +             printf("UMS is not supported on this board.\n");

puts()

> +             return CMD_RET_FAILURE;
>       }
> +
>       rc = fsg_init(ums_info);
>       if (rc) {
>               printf("cmd ums: fsg_init failed\n");
> -             goto fail;
> +             return CMD_RET_FAILURE;
>       }
> 
>       g_dnl_register(s);
> @@ -61,13 +62,10 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>       }
>  exit:
>       g_dnl_unregister();
> -     return 0;
> -
> -fail:
> -     return -1;
> +     return CMD_RET_SUCCESS;
>  }
> 
>  U_BOOT_CMD(ums, CONFIG_SYS_MAXARGS, 1, do_usb_mass_storage,
>       "Use the UMS [User Mass Storage]",
> -     "ums - User Mass Storage Gadget"
> +     "ums <dev> e.g. ums 0"
>  );
> diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h
> index 35cdcc3..0f94f31 100644
> --- a/include/usb_mass_storage.h
> +++ b/include/usb_mass_storage.h
> @@ -34,8 +34,8 @@ extern void board_usb_init(void);
> 
>  extern int fsg_init(struct ums_board_info *);
>  extern void fsg_cleanup(void);
> -extern struct ums_board_info *board_ums_init(unsigned int,
> -                                          unsigned int, unsigned int);
> +extern struct ums_board_info *board_ums_init(struct mmc *, unsigned int,
> +                                             unsigned int);
>  extern int usb_gadget_handle_interrupts(void);
>  extern int fsg_main_thread(void *);

Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to