| Age | Commit message (Collapse) | Author |
|
USB_EVT_DETECTED runs hfclk_enable() which, when SoftDevice is not yet
enabled, starts HFXO via direct CLOCK register access. After
sd_softdevice_enable() takes over CLOCK, HFXO is physically off again
and SD's HFCLK reference count is 0.
If USB_EVT_READY is fired post-SD (e.g. on nRF52 via Bluefruit's
usb_softdevice_post_enable() when the pre-SD nrfx_power READY callback
didn't get to run before nrfx_power was uninited), the wait loop
'while (!hfclk_running()) {}' calls sd_clock_hfclk_is_running() which
returns false forever -> deadlock that blocks both USB enumeration and
any further app code on the calling thread.
Call hfclk_enable() right before the wait so HFCLK is requested in
whichever context (SD or direct) is current. hfclk_enable() is
idempotent.
Reproduces reliably with bleuart on Feather nRF52840 Express flashed
via JLink: chip wedges in sd_clock_hfclk_is_running SVC, no USB
enumeration, no BLE advertising. With the fix, USB enumerates and BLE
advertises as expected.
|
|
midi-host-rx-bufsize-default-and-docs
|
|
Even if CFG_TUH_MIDI_RX_BUFSIZE=100*TUH_EPSIZE_BULK_MAX, calling tuh_midi_stream_read without a loop can return only one 4-byte packet and preventing subsequent transfer.
Signed-off-by: Zixun LI <[email protected]>
|
|
Refactor USB control transfer handling into `usbd.c`
|
|
|
|
|
|
endpoint state handling methods and accesses
|
|
|
|
|
|
`_usbd_dev` structure and remove `usbd_control_reset`
|
|
|
|
|
|
|
|
# Conflicts:
# src/device/usbd_control.c
|
|
Extract the "which endpoint is the Status stage on" rule into a single
TU_ATTR_ALWAYS_INLINE helper, and use it from both status_stage_xact()
and the completion callback. Replaces the two-operand wLength/direction
check with a direct endpoint-match comparison, matching the first
operand's pattern.
Per USB 2.0 §9.3.1, when wLength == 0 the bmRequestType Direction bit
is ignored and the Status stage is always IN; otherwise the Status
stage is opposite to the Data stage direction.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
|
|
# Conflicts:
# src/common/tusb_types.h
# src/portable/mentor/musb/dcd_musb.c
|
|
|
|
|
|
transition. handle status out to make sure xfer_complete() not called before dcd_edpt_xfer()
|
|
|
|
|
|
fix #3596: big-endian host support for SETUP packet handling
|
|
|
|
|
|
- Resolve .gitignore conflict: incorporate upstream's .worktrees entry and
expand dependency path patterns to cover all tools/get_deps.py fetched dirs
(lib/, tools/linkermap, tools/uf2, hw/mcu/*) instead of listing only a few
- Auto-merged upstream changes: build system cleanups, BSP updates,
portability fixes, new boards (nrf54lm20dk, stm32h743_weact),
fatfs relocation, and many other upstream improvements
- Net driver changes (ecm_rndis_device.c, ncm_device.c, net_device.h,
usbd.h, usb_descriptors.c) retain our PR's descriptor-based ep_size
approach as our branch takes precedence
Co-authored-by: HiFiPhile <[email protected]>
|
|
hathach/copilot/extract-hcd-pma-buffer-errata-workaround
Refactor STM32 FSDEV PMA errata delay into shared static inline helper and apply to DCD/HCD with overridable timing
|
|
Fix some -Wconversion warnings
|
|
|
|
Follow-up to #3239. tuh_midi_stream_read terminates on cable-number
transitions, leaving residue in the FIFO. With the default RX FIFO
sized equal to one bulk packet, the next bulk IN transfer fails to
queue and the driver silently stops receiving. Raising the default
to 2x bulk gives single-call apps a full packet of headroom and
documents the drain-loop expectation.
Reproduced with Akai LPD8 mk1 (VID 09E8 PID 0075) on STM32H753 DWC2
host; fixed with this patch. See #3613 for full repro + captures.
|
|
|
|
|
|
|
|
|
|
separate process_edpt_n() to process_epin() and process_epout()
|
|
|
|
`CFG_TUD_ENDPOINT_ONE_DIRECTION_ONLY` for improved configuration consistency across examples and core sources
|
|
|
|
|
|
|
|
|
|
Signed-off-by: Andrew Leech <[email protected]>
|
|
Fix musb RXRDY Clearing
|
|
|
|
|
|
|
|
1. Add TU_LITTLE_ENDIAN_BITFIELD / TU_BIG_ENDIAN_BITFIELD macros in
tusb_compiler.h (GCC and IAR), following Linux kernel style.
2. Update bmAttributes (tusb_desc_endpoint_t) and bmRequestType_bit
(tusb_control_request_t) in tusb_types.h to use these macros with explicit
#error fallback if undefined.
3. Add tu_le16toh() conversion in dcd_event_setup_received() for
wValue/wIndex/wLength.
Tested on CIU98320B (big-endian ARM Cortex-M, full-speed HID keyboard).
|
|
Resolves an issue in the musb handle_xfer_out function where not all
execution paths cleared the MUSB_RXCSRL1_RXRDY bit, causing the RX
interface to hang and no longer communicate with the host.
Signed-off-by: Brent Kowal <[email protected]>
|
|
Co-authored-by: Copilot <[email protected]>
|
|
|
|
|