From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] ums: Add "dev num" parameter. Check mmc device before do ums init.
Date: Wed, 4 Sep 2013 00:26:39 +0200 [thread overview]
Message-ID: <201309040026.39446.marex@denx.de> (raw)
In-Reply-To: <1378213073-25692-2-git-send-email-p.marczak@samsung.com>
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.marczak@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> CC: Marek Vasut <marek.vasut@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
next prev parent reply other threads:[~2013-09-03 22:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-03 12:57 [U-Boot] [PATCH] arm:mmc:goni/exynos: Fix wrong mmc base register devices offset Przemyslaw Marczak
2013-09-03 12:57 ` [U-Boot] [PATCH] ums: Add "dev num" parameter. Check mmc device before do ums init Przemyslaw Marczak
2013-09-03 22:26 ` Marek Vasut [this message]
2013-09-04 9:57 ` Przemyslaw Marczak
2013-09-04 12:34 ` Marek Vasut
2013-09-04 14:01 ` Przemyslaw Marczak
2013-09-09 8:05 ` [U-Boot] [PATCH] arm:mmc:goni/exynos: Fix wrong mmc base register devices offset Przemyslaw Marczak
2013-09-11 1:53 ` Minkyu Kang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201309040026.39446.marex@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox