mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-11 07:24:46 +00:00

UFS storage often uses a 4096-byte sector size, add support for dynamic sector sizes based loosely on the Linux implementation. Support for dynamic sector sizes changes the types used in some divisions, resulting in the compiler attempting to use libgcc helpers (__aeabi_ldivmod). Replace these divisions with calls to lldiv() to handle this correctly. Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> Link: https://lore.kernel.org/r/20240320-b4-qcom-usb-v4-4-41be480172e1@linaro.org [mkorpershoek: squashed the lldiv() fix from caleb] Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
31 lines
843 B
C
31 lines
843 B
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (C) 2011 Samsung Electrnoics
|
|
* Lukasz Majewski <l.majewski@samsung.com>
|
|
*/
|
|
|
|
#ifndef __USB_MASS_STORAGE_H__
|
|
#define __USB_MASS_STORAGE_H__
|
|
|
|
#include <part.h>
|
|
#include <linux/usb/composite.h>
|
|
|
|
/* Wait at maximum 60 seconds for cable connection */
|
|
#define UMS_CABLE_READY_TIMEOUT 60
|
|
|
|
struct ums {
|
|
int (*read_sector)(struct ums *ums_dev,
|
|
ulong start, lbaint_t blkcnt, void *buf);
|
|
int (*write_sector)(struct ums *ums_dev,
|
|
ulong start, lbaint_t blkcnt, const void *buf);
|
|
unsigned int start_sector;
|
|
unsigned int num_sectors;
|
|
const char *name;
|
|
struct blk_desc block_dev;
|
|
};
|
|
|
|
int fsg_init(struct ums *ums_devs, int count, struct udevice *udc);
|
|
void fsg_cleanup(void);
|
|
int fsg_main_thread(void *);
|
|
int fsg_add(struct usb_configuration *c);
|
|
#endif /* __USB_MASS_STORAGE_H__ */
|