xref: /openbmc/u-boot/include/usb_mass_storage.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2b528f713SLukasz Majewski /*
3b528f713SLukasz Majewski  * Copyright (C) 2011 Samsung Electrnoics
4b528f713SLukasz Majewski  * Lukasz Majewski <l.majewski@samsung.com>
5b528f713SLukasz Majewski  */
6b528f713SLukasz Majewski 
7b528f713SLukasz Majewski #ifndef __USB_MASS_STORAGE_H__
8b528f713SLukasz Majewski #define __USB_MASS_STORAGE_H__
9b528f713SLukasz Majewski 
10b528f713SLukasz Majewski #define SECTOR_SIZE		0x200
11ce19d974SStephen Warren #include <part.h>
12ba4e95c9SLukasz Majewski #include <linux/usb/composite.h>
13b528f713SLukasz Majewski 
143603e31dSPrzemyslaw Marczak /* Wait at maximum 60 seconds for cable connection */
153603e31dSPrzemyslaw Marczak #define UMS_CABLE_READY_TIMEOUT	60
163603e31dSPrzemyslaw Marczak 
1793c813b3SPrzemyslaw Marczak struct ums {
1893c813b3SPrzemyslaw Marczak 	int (*read_sector)(struct ums *ums_dev,
1993c813b3SPrzemyslaw Marczak 			   ulong start, lbaint_t blkcnt, void *buf);
2093c813b3SPrzemyslaw Marczak 	int (*write_sector)(struct ums *ums_dev,
2193c813b3SPrzemyslaw Marczak 			    ulong start, lbaint_t blkcnt, const void *buf);
220697f206SPrzemyslaw Marczak 	unsigned int start_sector;
230697f206SPrzemyslaw Marczak 	unsigned int num_sectors;
2493c813b3SPrzemyslaw Marczak 	const char *name;
254101f687SSimon Glass 	struct blk_desc block_dev;
26b528f713SLukasz Majewski };
27b528f713SLukasz Majewski 
2802585eb3SStephen Warren int fsg_init(struct ums *ums_devs, int count);
2916297cfbSMateusz Zalega void fsg_cleanup(void);
3016297cfbSMateusz Zalega int fsg_main_thread(void *);
31ba4e95c9SLukasz Majewski int fsg_add(struct usb_configuration *c);
32b528f713SLukasz Majewski #endif /* __USB_MASS_STORAGE_H__ */
33