From: Stephen Warren Date: Mon, 5 May 2014 16:40:15 +0000 (-0600) Subject: ums: move IO support code to common location X-Git-Tag: submit/tizen/20160318.071304~257 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0f30f586a0a7fc37af4d69b7388baa84c8dcb00e;p=profile%2Fcommon%2Fplatform%2Fkernel%2Fu-boot-artik.git ums: move IO support code to common location There's nothing Samsung-/board-specfic about the implementation of ums_init(). Move the code into cmd_usb_mass_storage.c, so that it can be shared by any user of that command. Cc: Lukasz Majewski Signed-off-by: Stephen Warren Acked-by: Przemyslaw Marczak Conflicts: board/samsung/common/Makefile board/samsung/common/ums.c --- diff --git a/board/samsung/common/ums.c b/board/samsung/common/ums.c deleted file mode 100644 index 1f7dda436..000000000 --- a/board/samsung/common/ums.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2013 Samsung Electronics - * Lukasz Majewski - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include -#include -#include -#include - -static int ums_read_sector(struct ums *ums_dev, - ulong start, lbaint_t blkcnt, void *buf) -{ - block_dev_desc_t *block_dev = ums_dev->block_dev; - lbaint_t blkstart = start + ums_dev->start_sector; - int dev_num = block_dev->dev; - - return block_dev->block_read(dev_num, blkstart, blkcnt, buf); -} - -static int ums_write_sector(struct ums *ums_dev, - ulong start, lbaint_t blkcnt, const void *buf) -{ - block_dev_desc_t *block_dev = ums_dev->block_dev; - lbaint_t blkstart = start + ums_dev->start_sector; - int dev_num = block_dev->dev; - - return block_dev->block_write(dev_num, blkstart, blkcnt, buf); -} - -static struct ums ums_dev = { - .read_sector = ums_read_sector, - .write_sector = ums_write_sector, - .name = "UMS disk", -}; - -static struct ums *ums_disk_init(struct mmc *mmc) -{ - uint64_t mmc_end_sector = mmc->capacity / SECTOR_SIZE; - - if (!mmc_end_sector) { - error("MMC capacity is not valid"); - return NULL; - } - - ums_dev.block_dev = &mmc->block_dev; - ums_dev.start_sector = 0; - ums_dev.num_sectors = mmc_end_sector; - - printf("UMS: disk start sector: %#x, count: %#x\n", - ums_dev.start_sector, ums_dev.num_sectors); - - return &ums_dev; -} - -struct ums *ums_init(unsigned int dev_num) -{ - struct mmc *mmc = find_mmc_device(dev_num); - - if (!mmc || mmc_init(mmc)) - return NULL; - return ums_disk_init(mmc); -} diff --git a/common/cmd_usb_mass_storage.c b/common/cmd_usb_mass_storage.c index 1cd497270..91368e384 100644 --- a/common/cmd_usb_mass_storage.c +++ b/common/cmd_usb_mass_storage.c @@ -22,9 +22,55 @@ #include #include #include +#include +#include #include #include +static int ums_read_sector(struct ums *ums_dev, + ulong start, lbaint_t blkcnt, void *buf) +{ + block_dev_desc_t *block_dev = ums_dev->block_dev; + lbaint_t blkstart = start + ums_dev->start_sector; + int dev_num = block_dev->dev; + + return block_dev->block_read(dev_num, blkstart, blkcnt, buf); +} + +static int ums_write_sector(struct ums *ums_dev, + ulong start, lbaint_t blkcnt, const void *buf) +{ + block_dev_desc_t *block_dev = ums_dev->block_dev; + lbaint_t blkstart = start + ums_dev->start_sector; + int dev_num = block_dev->dev; + + return block_dev->block_write(dev_num, blkstart, blkcnt, buf); +} + +static struct ums ums_dev = { + .read_sector = ums_read_sector, + .write_sector = ums_write_sector, + .name = "UMS disk", +}; + +struct ums *ums_init(unsigned int dev_num) +{ + struct mmc *mmc = NULL; + + mmc = find_mmc_device(dev_num); + if (!mmc || mmc_init(mmc)) + return NULL; + + ums_dev.block_dev = &mmc->block_dev; + ums_dev.start_sector = 0; + ums_dev.num_sectors = mmc->capacity / SECTOR_SIZE; + + printf("UMS: disk start sector: %#x, count: %#x\n", + ums_dev.start_sector, ums_dev.num_sectors); + + return &ums_dev; +} + int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h index 11ff05560..3553ecc02 100644 --- a/include/usb_mass_storage.h +++ b/include/usb_mass_storage.h @@ -43,7 +43,6 @@ extern struct ums *ums; int fsg_init(struct ums *); void fsg_cleanup(void); -struct ums *ums_init(unsigned int); int fsg_main_thread(void *); int fsg_add(struct usb_configuration *c); #endif /* __USB_MASS_STORAGE_H__ */