Merge pull request #8222 from tannewt/fat_window_align
Align fatfs window buffer for tinyusb
This commit is contained in:
commit
f466a4373e
@ -162,7 +162,7 @@ typedef struct {
|
||||
DWORD bitbase; /* Allocation bitmap base sector */
|
||||
#endif
|
||||
DWORD winsect; /* Current sector appearing in the win[] */
|
||||
BYTE win[FF_MAX_SS]; /* Disk access window for Directory, FAT (and file data at tiny cfg) */
|
||||
__attribute__((aligned(FF_WINDOW_ALIGNMENT),)) BYTE win[FF_MAX_SS]; /* Disk access window for Directory, FAT (and file data at tiny cfg). */
|
||||
} FATFS;
|
||||
|
||||
|
||||
|
@ -267,6 +267,12 @@
|
||||
/ for variable sector size mode and disk_ioctl() function needs to implement
|
||||
/ GET_SECTOR_SIZE command. */
|
||||
|
||||
#ifdef MICROPY_FATFS_WINDOW_ALIGNMENT
|
||||
#define FF_WINDOW_ALIGNMENT (MICROPY_FATFS_WINDOW_ALIGNMENT)
|
||||
#else
|
||||
#define FF_WINDOW_ALIGNMENT 1
|
||||
#endif
|
||||
|
||||
|
||||
#define FF_USE_TRIM 0
|
||||
/* This option switches support for ATA-TRIM. (0:Disable or 1:Enable)
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 6c7c9f2ef5a80d5a6879e9c3558162188c6cf889
|
||||
Subproject commit db59494b1b24f7dad26c5c66c85a195a2cf09466
|
@ -1748,6 +1748,10 @@ msgstr ""
|
||||
msgid "Pins must share PWM slice"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/usb/core/Device.c
|
||||
msgid "Pipe error"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
msgid "Plus any modules on the filesystem\n"
|
||||
msgstr ""
|
||||
@ -1825,7 +1829,8 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/__init__.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize.c
|
||||
#: shared-bindings/pulseio/PulseIn.c shared-module/displayio/Bitmap.c
|
||||
#: shared-bindings/pulseio/PulseIn.c shared-module/bitmaptools/__init__.c
|
||||
#: shared-module/displayio/Bitmap.c
|
||||
msgid "Read-only"
|
||||
msgstr ""
|
||||
|
||||
@ -4021,7 +4026,7 @@ msgstr ""
|
||||
msgid "sosfilt requires iterable arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitmaptools/__init__.c shared-bindings/displayio/Bitmap.c
|
||||
#: shared-bindings/bitmaptools/__init__.c
|
||||
msgid "source palette too large"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 5a7aa8d4e78f9a50e4fb9defcf3488b3fc44aff1
|
||||
Subproject commit d00a10a8c425d0d40f81b87169102944b01f3bb3
|
@ -611,6 +611,12 @@ void background_callback_run_all(void);
|
||||
#define CIRCUITPY_DIGITALIO_HAVE_INVALID_DRIVE_MODE (0)
|
||||
#endif
|
||||
|
||||
// Align the internal sector buffer. Useful when it is passed into TinyUSB for
|
||||
// loads.
|
||||
#ifndef MICROPY_FATFS_WINDOW_ALIGNMENT
|
||||
#define MICROPY_FATFS_WINDOW_ALIGNMENT CIRCUITPY_TUSB_MEM_ALIGN
|
||||
#endif
|
||||
|
||||
#define FF_FS_CASE_INSENSITIVE_COMPARISON_ASCII_ONLY (1)
|
||||
|
||||
#define FF_FS_MAKE_VOLID (1)
|
||||
|
@ -49,6 +49,7 @@ void tuh_umount_cb(uint8_t dev_addr) {
|
||||
}
|
||||
|
||||
STATIC xfer_result_t _xfer_result;
|
||||
STATIC size_t _actual_len;
|
||||
bool common_hal_usb_core_device_construct(usb_core_device_obj_t *self, uint8_t device_number) {
|
||||
if (device_number == 0 || device_number > CFG_TUH_DEVICE_MAX + CFG_TUH_HUB) {
|
||||
return false;
|
||||
@ -78,6 +79,9 @@ uint16_t common_hal_usb_core_device_get_idProduct(usb_core_device_obj_t *self) {
|
||||
STATIC void _transfer_done_cb(tuh_xfer_t *xfer) {
|
||||
// Store the result so we stop waiting for the transfer.
|
||||
_xfer_result = xfer->result;
|
||||
// The passed in xfer is not the original one we passed in, so we need to
|
||||
// copy any info out that we want (like actual_len.)
|
||||
_actual_len = xfer->actual_len;
|
||||
}
|
||||
|
||||
STATIC bool _wait_for_callback(void) {
|
||||
@ -159,11 +163,14 @@ STATIC size_t _xfer(tuh_xfer_t *xfer, mp_int_t timeout) {
|
||||
}
|
||||
xfer_result_t result = _xfer_result;
|
||||
_xfer_result = 0xff;
|
||||
if (result == XFER_RESULT_STALLED || result == 0xff) {
|
||||
if (result == XFER_RESULT_STALLED) {
|
||||
mp_raise_usb_core_USBError(translate("Pipe error"));
|
||||
}
|
||||
if (result == 0xff) {
|
||||
mp_raise_usb_core_USBTimeoutError();
|
||||
}
|
||||
if (result == XFER_RESULT_SUCCESS) {
|
||||
return xfer->actual_len;
|
||||
return _actual_len;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -192,7 +199,10 @@ STATIC bool _open_endpoint(usb_core_device_obj_t *self, mp_int_t endpoint) {
|
||||
}
|
||||
tusb_desc_configuration_t *desc_cfg = (tusb_desc_configuration_t *)desc_buf;
|
||||
|
||||
uint8_t const *desc_end = ((uint8_t const *)desc_cfg) + tu_le16toh(desc_cfg->wTotalLength);
|
||||
uint32_t total_length = tu_le16toh(desc_cfg->wTotalLength);
|
||||
// Cap to the buffer size we requested.
|
||||
total_length = MIN(total_length, sizeof(desc_buf));
|
||||
uint8_t const *desc_end = ((uint8_t const *)desc_cfg) + total_length;
|
||||
uint8_t const *p_desc = tu_desc_next(desc_cfg);
|
||||
|
||||
// parse each interfaces
|
||||
@ -281,7 +291,10 @@ mp_int_t common_hal_usb_core_device_ctrl_transfer(usb_core_device_obj_t *self,
|
||||
}
|
||||
xfer_result_t result = _xfer_result;
|
||||
_xfer_result = 0xff;
|
||||
if (result == XFER_RESULT_STALLED || result == 0xff) {
|
||||
if (result == XFER_RESULT_STALLED) {
|
||||
mp_raise_usb_core_USBError(translate("Pipe error"));
|
||||
}
|
||||
if (result == 0xff) {
|
||||
mp_raise_usb_core_USBTimeoutError();
|
||||
}
|
||||
if (result == XFER_RESULT_SUCCESS) {
|
||||
|
Loading…
Reference in New Issue
Block a user