ums: remove UMS_{NUM,START}_SECTORS + UMS_START_SECTOR
authorStephen Warren <swarren@nvidia.com>
Mon, 5 May 2014 16:40:12 +0000 (10:40 -0600)
committerChanho Park <chanho61.park@samsung.com>
Fri, 24 Jul 2015 07:29:59 +0000 (16:29 +0900)
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 <l.majewski@samsung.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
Conflicts:
board/samsung/common/ums.c
include/usb_mass_storage.h

board/samsung/common/ums.c [new file with mode: 0644]
include/usb_mass_storage.h

diff --git a/board/samsung/common/ums.c b/board/samsung/common/ums.c
new file mode 100644 (file)
index 0000000..1f7dda4
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2013 Samsung Electronics
+ * Lukasz Majewski <l.majewski@samsung.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <usb_mass_storage.h>
+#include <mmc.h>
+#include <part.h>
+
+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);
+}
index 0cb65606b0f1a7633158e4779817a53814997f86..11ff055603d9b3d8504fbe90e4ed8ef8efbfedc1 100644 (file)
 #include <part.h>
 #include <linux/usb/composite.h>
 
-#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,