diff options
| author | hathach <[email protected]> | 2026-04-25 23:00:48 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-04-25 23:00:48 +0700 |
| commit | 2dc90e364aa4354a2f07912a2fb6b22169928a35 (patch) | |
| tree | ac006e58a7935c986882f546af5006a0cabbaa39 /src/device | |
| parent | b87876b2760cf265b093637205c3e72e7550f521 (diff) | |
| parent | 4c7fd70e53b34bf63ef9334f2b5624cac48299f1 (diff) | |
Merge branch 'master' into musb-followup-3594
# Conflicts:
# src/common/tusb_types.h
# src/portable/mentor/musb/dcd_musb.c
Diffstat (limited to 'src/device')
| -rw-r--r-- | src/device/dcd.h | 5 | ||||
| -rw-r--r-- | src/device/usbd.c | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/device/dcd.h b/src/device/dcd.h index 850c37bc2..f861eb258 100644 --- a/src/device/dcd.h +++ b/src/device/dcd.h @@ -219,6 +219,11 @@ TU_ATTR_ALWAYS_INLINE static inline void dcd_event_setup_received(uint8_t rhport event.rhport = rhport; event.event_id = DCD_EVENT_SETUP_RECEIVED; (void) memcpy(&event.setup_received, setup, sizeof(tusb_control_request_t)); + // USB wire format is little-endian. Convert multi-byte fields to host byte order + // so the stack always sees correct values regardless of CPU endianness. + event.setup_received.wValue = tu_le16toh(event.setup_received.wValue); + event.setup_received.wIndex = tu_le16toh(event.setup_received.wIndex); + event.setup_received.wLength = tu_le16toh(event.setup_received.wLength); dcd_event_handler(&event, in_isr); } diff --git a/src/device/usbd.c b/src/device/usbd.c index 3c14175f6..da0ffb4c6 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -1212,7 +1212,7 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const TU_LOG_USBD(" String[%u]\r\n", desc_index); // String Descriptor always uses the desc set from user - uint8_t const* desc_str = (uint8_t const*) tud_descriptor_string_cb(desc_index, tu_le16toh(p_request->wIndex)); + uint8_t const* desc_str = (uint8_t const*) tud_descriptor_string_cb(desc_index, p_request->wIndex); TU_VERIFY(desc_str); // first byte of descriptor is its size |
