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 <l.majewski@samsung.com> Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
This commit is contained in:
parent
36ff05c4f9
commit
abfe8afe88
@ -7,7 +7,6 @@
|
||||
|
||||
obj-$(CONFIG_SOFT_I2C_MULTI_BUS) += multi_i2c.o
|
||||
obj-$(CONFIG_THOR_FUNCTION) += thor.o
|
||||
obj-$(CONFIG_CMD_USB_MASS_STORAGE) += ums.o
|
||||
obj-$(CONFIG_MISC_COMMON) += misc.o
|
||||
|
||||
ifndef CONFIG_SPL_BUILD
|
||||
|
@ -1,55 +0,0 @@
|
||||
/*
|
||||
* 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",
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
@ -9,9 +9,55 @@
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <g_dnl.h>
|
||||
#include <mmc.h>
|
||||
#include <part.h>
|
||||
#include <usb.h>
|
||||
#include <usb_mass_storage.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",
|
||||
};
|
||||
|
||||
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[])
|
||||
{
|
||||
|
@ -30,7 +30,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__ */
|
||||
|
Loading…
Reference in New Issue
Block a user