1*b528f713SLukasz Majewski /* 2*b528f713SLukasz Majewski * Copyright (C) 2011 Samsung Electrnoics 3*b528f713SLukasz Majewski * Lukasz Majewski <l.majewski@samsung.com> 4*b528f713SLukasz Majewski * 5*b528f713SLukasz Majewski * This program is free software; you can redistribute it and/or 6*b528f713SLukasz Majewski * modify it under the terms of the GNU General Public License as 7*b528f713SLukasz Majewski * published by the Free Software Foundation; either version 2 of 8*b528f713SLukasz Majewski * the License, or (at your option) any later version. 9*b528f713SLukasz Majewski * 10*b528f713SLukasz Majewski * This program is distributed in the hope that it will be useful, 11*b528f713SLukasz Majewski * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*b528f713SLukasz Majewski * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*b528f713SLukasz Majewski * GNU General Public License for more details. 14*b528f713SLukasz Majewski * 15*b528f713SLukasz Majewski * You should have received a copy of the GNU General Public License 16*b528f713SLukasz Majewski * aloong with this program; if not, write to the Free Software 17*b528f713SLukasz Majewski * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 18*b528f713SLukasz Majewski * MA 02111-1307 USA 19*b528f713SLukasz Majewski */ 20*b528f713SLukasz Majewski 21*b528f713SLukasz Majewski #ifndef __USB_MASS_STORAGE_H__ 22*b528f713SLukasz Majewski #define __USB_MASS_STORAGE_H__ 23*b528f713SLukasz Majewski 24*b528f713SLukasz Majewski #define SECTOR_SIZE 0x200 25*b528f713SLukasz Majewski 26*b528f713SLukasz Majewski #include <mmc.h> 27*b528f713SLukasz Majewski 28*b528f713SLukasz Majewski struct ums_device { 29*b528f713SLukasz Majewski struct mmc *mmc; 30*b528f713SLukasz Majewski int dev_num; 31*b528f713SLukasz Majewski int offset; 32*b528f713SLukasz Majewski int part_size; 33*b528f713SLukasz Majewski }; 34*b528f713SLukasz Majewski 35*b528f713SLukasz Majewski struct ums_board_info { 36*b528f713SLukasz Majewski int (*read_sector)(struct ums_device *ums_dev, 37*b528f713SLukasz Majewski ulong start, lbaint_t blkcnt, void *buf); 38*b528f713SLukasz Majewski int (*write_sector)(struct ums_device *ums_dev, 39*b528f713SLukasz Majewski ulong start, lbaint_t blkcnt, const void *buf); 40*b528f713SLukasz Majewski void (*get_capacity)(struct ums_device *ums_dev, 41*b528f713SLukasz Majewski long long int *capacity); 42*b528f713SLukasz Majewski const char *name; 43*b528f713SLukasz Majewski struct ums_device ums_dev; 44*b528f713SLukasz Majewski }; 45*b528f713SLukasz Majewski 46*b528f713SLukasz Majewski extern void board_usb_init(void); 47*b528f713SLukasz Majewski 48*b528f713SLukasz Majewski extern int fsg_init(struct ums_board_info *); 49*b528f713SLukasz Majewski extern void fsg_cleanup(void); 50*b528f713SLukasz Majewski extern struct ums_board_info *board_ums_init(unsigned int, 51*b528f713SLukasz Majewski unsigned int, unsigned int); 52*b528f713SLukasz Majewski extern int usb_gadget_handle_interrupts(void); 53*b528f713SLukasz Majewski extern int fsg_main_thread(void *); 54*b528f713SLukasz Majewski 55*b528f713SLukasz Majewski #endif /* __USB_MASS_STORAGE_H__ */ 56