UMS init was implemented in trats board file but mostly it comprises common code. Due to that it has been moved to common/ums.c to avoid code duplication in the future. Changes: - move ums initialization code from trats to common/ums.c - remove unused CONFIG_USB_GADGET_MASS_STORAGE from trats.h Changes v2: - move this patch at the top of code cleanups patches Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com> Cc: Marek Vasut <marex@denx.de> Cc: Minkyu Kang <mk7.kang@samsung.com>master
parent
0697f206df
commit
4b19ed6c76
@ -0,0 +1,76 @@ |
||||
/*
|
||||
* 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 <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->mmc->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->mmc->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; |
||||
uint64_t ums_end_sector = UMS_NUM_SECTORS + UMS_START_SECTOR; |
||||
|
||||
if (!mmc_end_sector) { |
||||
error("MMC capacity is not valid"); |
||||
return NULL; |
||||
} |
||||
|
||||
ums_dev.mmc = mmc; |
||||
|
||||
if (ums_end_sector <= mmc_end_sector) { |
||||
ums_dev.start_sector = UMS_START_SECTOR; |
||||
if (UMS_NUM_SECTORS) |
||||
ums_dev.num_sectors = UMS_NUM_SECTORS; |
||||
else |
||||
ums_dev.num_sectors = mmc_end_sector - UMS_START_SECTOR; |
||||
} else { |
||||
ums_dev.num_sectors = mmc_end_sector; |
||||
puts("UMS: defined bad disk parameters. Using default.\n"); |
||||
} |
||||
|
||||
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 = NULL; |
||||
|
||||
mmc = find_mmc_device(dev_num); |
||||
if (!mmc) |
||||
return NULL; |
||||
|
||||
return ums_disk_init(mmc); |
||||
} |
Loading…
Reference in new issue