This patch introduces some cleanups to ums code. Changes:
ums common:
- introduce UMS_START_SECTOR and UMS_NUM_SECTORS as defined in
usb_mass_storage.h both default values as 0 if board config
doesn't define them
common cleanup changes:
- change name of struct ums_board_info to ums
- ums_device fields are moved to struct ums and dev_num is removed
- change function name: board_ums_init to ums_init
- remove extern prefixes from usb_mass_storage.h
cmd_usb_mass_storage:
- change error() to printf() if need to print info message
- change return values to command_ret_t type at ums command code
- add command usage string
Changes v2:
ums common:
- always returns number of read/write sectors
- coding style clean-up
ums gadget:
- calculate amount of read/write from device returned value.
Signed-off-by: Przemyslaw Marczak p.marc...@samsung.com
Cc: Marek Vasut marek.va...@gmail.com
---
board/samsung/trats/trats.c | 51 +++
common/cmd_usb_mass_storage.c | 27 ---
drivers/usb/gadget/f_mass_storage.c | 43 ++---
drivers/usb/gadget/storage_common.c |3 +--
include/usb_mass_storage.h | 33 ---
5 files changed, 73 insertions(+), 84 deletions(-)
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 58d925f..0b58b00 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -774,63 +774,54 @@ void init_panel_info(vidinfo_t *vid)
}
#ifdef CONFIG_USB_GADGET_MASS_STORAGE
-static int ums_read_sector(struct ums_device *ums_dev,
+static int ums_read_sector(struct ums *ums_dev,
ulong start, lbaint_t blkcnt, void *buf)
{
- if (ums_dev-mmc-block_dev.block_read(ums_dev-dev_num,
- start + ums_dev-offset, blkcnt, buf) != blkcnt)
- return -1;
+ block_dev_desc_t *block_dev = ums_dev-mmc-block_dev;
+ lbaint_t blkstart = start + ums_dev-offset;
+ int dev_num = block_dev-dev;
- return 0;
+ return block_dev-block_read(dev_num, blkstart, blkcnt, buf);
}
-static int ums_write_sector(struct ums_device *ums_dev,
+static int ums_write_sector(struct ums *ums_dev,
ulong start, lbaint_t blkcnt, const void *buf)
{
- if (ums_dev-mmc-block_dev.block_write(ums_dev-dev_num,
- start + ums_dev-offset, blkcnt, buf) != blkcnt)
- return -1;
+ block_dev_desc_t *block_dev = ums_dev-mmc-block_dev;
+ lbaint_t blkstart = start + ums_dev-offset;
+ int dev_num = block_dev-dev;
- return 0;
+ return block_dev-block_write(dev_num, blkstart, blkcnt, buf);
}
-static void ums_get_capacity(struct ums_device *ums_dev,
-long long int *capacity)
+static void ums_get_capacity(struct ums *ums_dev, long long int *capacity)
{
long long int tmp_capacity;
- tmp_capacity = (long long int) ((ums_dev-offset + ums_dev-part_size)
- * SECTOR_SIZE);
+ tmp_capacity = (long long int)((ums_dev-offset + ums_dev-part_size)
+ * SECTOR_SIZE);
*capacity = ums_dev-mmc-capacity - tmp_capacity;
}
-static struct ums_board_info ums_board = {
+static struct ums ums_dev = {
.read_sector = ums_read_sector,
.write_sector = ums_write_sector,
.get_capacity = ums_get_capacity,
- .name = TRATS UMS disk,
- .ums_dev = {
- .mmc = NULL,
- .dev_num = 0,
- .offset = 0,
- .part_size = 0.
- },
+ .name = UMS disk,
+ .offset = UMS_START_SECTOR,
+ .part_size = UMS_NUM_SECTORS,
};
-struct ums_board_info *board_ums_init(unsigned int dev_num, unsigned int
offset,
- unsigned int part_size)
+struct ums *ums_init(unsigned int dev_num)
{
- struct mmc *mmc;
+ struct mmc *mmc = NULL;
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.offset = offset;
- ums_board.ums_dev.part_size = part_size;
+ ums_dev.mmc = mmc;
- return ums_board;
+ return ums_dev;
}
#endif
diff --git a/common/cmd_usb_mass_storage.c b/common/cmd_usb_mass_storage.c
index f583caf..f6ceba7 100644
--- a/common/cmd_usb_mass_storage.c
+++ b/common/cmd_usb_mass_storage.c
@@ -22,28 +22,26 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
unsigned int dev_num = (unsigned int)(simple_strtoul(mmc_devstring,
NULL, 0));
- if (dev_num) {
- error(Set eMMC device to 0! - e.g. ums 0);
- goto fail;
- }
+ if (dev_num)
+ return CMD_RET_USAGE;
unsigned int controller_index = (unsigned int)(simple_strtoul(