diff options
| -rw-r--r-- | board/samsung/common/Makefile | 1 | ||||
| -rw-r--r-- | board/samsung/common/ums.c | 76 | ||||
| -rw-r--r-- | board/samsung/trats/trats.c | 68 | ||||
| -rw-r--r-- | include/configs/trats.h | 2 | 
4 files changed, 77 insertions, 70 deletions
| diff --git a/board/samsung/common/Makefile b/board/samsung/common/Makefile index ca7032c3d..501d9744e 100644 --- a/board/samsung/common/Makefile +++ b/board/samsung/common/Makefile @@ -7,3 +7,4 @@  obj-$(CONFIG_SOFT_I2C_MULTI_BUS) += multi_i2c.o  obj-$(CONFIG_THOR_FUNCTION) += thor.o +obj-$(CONFIG_CMD_USB_MASS_STORAGE) += ums.o diff --git a/board/samsung/common/ums.c b/board/samsung/common/ums.c new file mode 100644 index 000000000..dc155ad0e --- /dev/null +++ b/board/samsung/common/ums.c @@ -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); +} diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index dab790fab..7012c134f 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -772,71 +772,3 @@ void init_panel_info(vidinfo_t *vid)  	setenv("lcdinfo", "lcd=s6e8ax0");  } - -#ifdef CONFIG_USB_GADGET_MASS_STORAGE -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); -} -#endif diff --git a/include/configs/trats.h b/include/configs/trats.h index 6ed331326..3d080c4d1 100644 --- a/include/configs/trats.h +++ b/include/configs/trats.h @@ -321,9 +321,7 @@  #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 120 * 4) + (1 << 12))  #define CONFIG_CMD_USB_MASS_STORAGE -#if defined(CONFIG_CMD_USB_MASS_STORAGE)  #define CONFIG_USB_GADGET_MASS_STORAGE -#endif  /* Pass open firmware flat tree */  #define CONFIG_OF_LIBFDT    1 |