On 04/07/13 19:52, Lukasz Majewski wrote: > From: Arkadiusz Wlodarczyk <a.wlodarc...@samsung.com> > > This commit enables support for USB mass storage composite function. > It defines platform code and enables it at config file. > > Signed-off-by: Arkadiusz Wlodarczyk <a.wlodarc...@samsung.com> > Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com> > Tested-by: Arkadiusz Wlodarczyk <a.wlodarc...@samsung.com> > Cc: Minkyu Kang <mk7.k...@samsung.com> > --- > board/samsung/goni/goni.c | 68 > ++++++++++++++++++++++++++++++++++++++++++++ > include/configs/s5p_goni.h | 5 ++++ > 2 files changed, 73 insertions(+) >
please run checkpatch before submitting. CHECK: Alignment should match open parenthesis #51: FILE: board/samsung/goni/goni.c:173: + if (ums_dev->mmc->block_dev.block_read(ums_dev->dev_num, + start + ums_dev->offset, blkcnt, buf) != blkcnt) CHECK: Alignment should match open parenthesis #61: FILE: board/samsung/goni/goni.c:183: + if (ums_dev->mmc->block_dev.block_write(ums_dev->dev_num, + start + ums_dev->offset, blkcnt, buf) != blkcnt) total: 0 errors, 0 warnings, 2 checks, 86 lines checked > diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c > index 3c53106..a09daca 100644 > --- a/board/samsung/goni/goni.c > +++ b/board/samsung/goni/goni.c > @@ -29,6 +29,7 @@ > #include <usb/s3c_udc.h> > #include <asm/arch/cpu.h> > #include <power/max8998_pmic.h> > +#include <usb_mass_storage.h> > DECLARE_GLOBAL_DATA_PTR; > > static struct s5pc110_gpio *s5pc110_gpio; > @@ -163,3 +164,70 @@ void board_usb_init(void) > } > > #endif > + > +#ifdef CONFIG_USB_GADGET_MASS_STORAGE > +static int ums_read_sector(struct ums_device *ums_dev, > + ulong start, lbaint_t blkcnt, void *buf) > +{ > + if (ums_dev->mmc->block_dev.block_read(ums_dev->dev_num, > + start + ums_dev->offset, blkcnt, buf) != blkcnt) > + return -1; > + > + return 0; > +} > + > +static int ums_write_sector(struct ums_device *ums_dev, > + ulong start, lbaint_t blkcnt, const void *buf) > +{ > + if (ums_dev->mmc->block_dev.block_write(ums_dev->dev_num, > + start + ums_dev->offset, blkcnt, buf) != blkcnt) > + return -1; indentation error. > + > + return 0; > +} > + > +static void ums_get_capacity(struct ums_device *ums_dev, > + long long int *capacity) > +{ > + long long int tmp_capacity; > + > + tmp_capacity = (long long int) ((ums_dev->offset + ums_dev->part_size) > + * SECTOR_SIZE); > + *capacity = ums_dev->mmc->capacity - tmp_capacity; > +} > + > +static struct ums_board_info ums_board = { > + .read_sector = ums_read_sector, > + .write_sector = ums_write_sector, > + .get_capacity = ums_get_capacity, > + .name = "GONI UMS disk", > + .ums_dev = { > + .mmc = NULL, > + .dev_num = 0, > + .offset = 0, > + .part_size = 0. > + }, > +}; > + > +struct ums_board_info *board_ums_init(unsigned int dev_num, unsigned int > offset, > + unsigned int part_size) > +{ > + struct mmc *mmc; > + > + mmc = find_mmc_device(dev_num); > + /* mmc initialization is necessary prior to the ums command usage > + * due to fact that on goni target environment is read from oneNand > + * memory, so the mmc remains uninitialized whenu-boot prompt appears > + * */ > + if (!mmc || mmc_init(mmc)) > + return NULL; > + > + ums_board.ums_dev.mmc = mmc; > + ums_board.ums_dev.dev_num = dev_num; > + ums_board.ums_dev.offset = offset; > + ums_board.ums_dev.part_size = part_size; > + > + return &ums_board; > +} > + > +#endif > diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h > index e8f2639..1cfbb88 100644 > --- a/include/configs/s5p_goni.h > +++ b/include/configs/s5p_goni.h > @@ -269,4 +269,9 @@ > #define CONFIG_USB_GADGET_DUALSPEED > #define CONFIG_USB_GADGET_VBUS_DRAW 2 > > +#define CONFIG_CMD_USB_MASS_STORAGE > +#if defined(CONFIG_CMD_USB_MASS_STORAGE) unnecessary ifdef. this file is board specific and we already knew that CONFIG_CMD_USB_MASS_STORAGE is defined. > +#define CONFIG_USB_GADGET_MASS_STORAGE > +#endif > + > #endif /* __CONFIG_H */ > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot