From: Stephen Warren Date: Mon, 5 May 2014 16:40:12 +0000 (-0600) Subject: ums: remove UMS_{NUM,START}_SECTORS + UMS_START_SECTOR X-Git-Tag: submit/tizen/20160318.071304~258 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38b4f87819ed6c46dd796784d0fd36ac802ad59a;p=profile%2Fcommon%2Fplatform%2Fkernel%2Fu-boot-artik.git ums: remove UMS_{NUM,START}_SECTORS + UMS_START_SECTOR These values aren't set anywhere at present, and hence have no effect. The concept of a single global offset/number of sectors to expose through USB Mass Storage doesn't even make sense in the face of multiple storage devices. Remove these defines to simplify the code. Cc: Lukasz Majewski Signed-off-by: Stephen Warren Acked-by: Przemyslaw Marczak Conflicts: board/samsung/common/ums.c include/usb_mass_storage.h --- diff --git a/board/samsung/common/ums.c b/board/samsung/common/ums.c new file mode 100644 index 000000000..1f7dda436 --- /dev/null +++ b/board/samsung/common/ums.c @@ -0,0 +1,65 @@ +/* + * 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/include/usb_mass_storage.h b/include/usb_mass_storage.h index 0cb65606b..11ff05560 100644 --- a/include/usb_mass_storage.h +++ b/include/usb_mass_storage.h @@ -25,13 +25,8 @@ #include #include -#ifndef UMS_START_SECTOR -#define UMS_START_SECTOR 0 -#endif - -#ifndef UMS_NUM_SECTORS -#define UMS_NUM_SECTORS 0 -#endif +/* Wait at maximum 60 seconds for cable connection */ +#define UMS_CABLE_READY_TIMEOUT 60 struct ums { int (*read_sector)(struct ums *ums_dev,