summaryrefslogtreecommitdiff
path: root/src/portable/raspberrypi/rp2040/hcd_rp2040.c
AgeCommit message (Collapse)Author
2026-07-29also added rp2usb_deinit() call to hcd_deinit()Geurt Vos
2026-07-02license: use SPDX identifiers for src/ headers (#3749)Ha Thach
* license: use SPDX identifiers for src/ headers Replace the full ~20-line MIT license boilerplate on every src/ file with a two-line SPDX tag (SPDX-FileCopyrightText + SPDX-License-Identifier), following the REUSE convention used by CircuitPython and the Linux kernel. Removes ~3500 lines of duplicated boilerplate.
2026-05-15rp2040: fix host SET_REPORT (and any OUT-data control xfer) sending DATA0 ↵Boris Dolgov
instead of DATA1 hcd_edpt_xfer() previously reset ep->next_pid to 1 only when the control endpoint direction changed between stages. That handled IN-data control transfers (e.g. GET_REPORT, GET_DESCRIPTOR) where SETUP is OUT and DATA is IN, but not OUT-data class requests like SET_REPORT, where SETUP and DATA are both OUT and the direction-change check is false. ep->next_pid was left at 0 from hcd_edpt_open(), so the DATA stage went on the wire as DATA0 when the device expected DATA1. Strict devices (observed: Elgato Stream Deck) treat this as a protocol violation and disconnect. Key off "endpoint 0" instead of "direction changed", restoring the previous behavior. Interrupt/bulk endpoints take the ep->interrupt_num > 0 branch above and never reach this code, so they are unaffected.
2026-04-01reduce code size, use state to replace active + pendinghathach
2026-03-31finally get rp2040 host epx working with 2-sof solution for switchinghathach
2026-03-30hcd rp2 add double buffered for control endpoint transfers.hathach
2026-03-28rp2 common refactorhathach
2026-03-28host epx clean uphathach
2026-03-27refactorhathach
2026-03-27rename and clean uphathach
2026-03-26implement ping-pong double buffered for both tx and rxhathach
2026-03-25update hcd to handle interrupt per bufhathach
2026-03-23add rp2040 sof + stop_trans on nak. increase nak_poll fs/ls delay to 300 us ↵hathach
to prevent xfer is ack while stopping.
2026-03-20clean uphathach
2026-03-20Add support for EPX preemption on RP2350 during NAK conditionshathach
2026-03-19Add EPX transfer scheduling when hcd_edpt_xfer() is called while epx is busyhathach
2026-01-16revert back to shared hw_endpoint_thathach
2026-01-16renamehathach
2026-01-16renamehathach
2026-01-16implement hcd_device_close()hathach
2026-01-16refactor hcd, get both control and interrupt endpoint workinghathach
2026-01-15draft: hcd control workhathach
2026-01-09enable dedicated hwfifo for rp2hathach
2026-01-09clean uphathach
2026-01-09only apply errata E5 and E15 for rp2040. rp2350 already fixes thesehathach
2026-01-08fix hcd force_single mistake by refactorhathach
2026-01-08minor clean uphathach
2026-01-08change signature for hwep_buf_ctrl_* to take pointer to buf control instead ↵hathach
of hwep
2026-01-07remove hw_endpoint_t rx, rename/change signature of helper functionshathach
2026-01-07refactor remove endpoint_control/buffer_control from hw_endpoint_thathach
2025-03-26added hcd_edpt_close() stub for other portshathach
2025-02-28fix(hcd_rp2040) assert/panic endpoint already active: when a device reset ↵hathach
while having on-going control transfer
2024-10-14change the tusb_rhport_init_t struct, exclude the rhport to make API more ↵hathach
consistent
2024-10-11hcd_init() take init structhathach
2024-04-08add class driver deinithathach
2024-04-08Implements tuh_deinit() and tud_deinit() to uninitialize host/device mode.Felix "xq" Queißner
2024-03-29fix rp2 debug build with level 3hathach
2023-12-26allow rp2040 to use max3421e as host controllerhathach
- fix warnings build hcd max3421 with rp2040 - add tinyusb_host_max3421 target for rp2040 cmake, -DMAX3421_HOST=1 will enable this - add max3421 driver implementation for rp2040 family - update tusb_config for host to allow easy enable host selection for rp2040 (default/pio-usb/max3421)
2023-09-27change hcd_int_handler(rhport, in_isr) signature: add in_isrhathach
change tuh_int_handler() to take in_isr as optional parameter (default = true)
2023-08-04Merge branch 'master' into masterHa Thach
2023-07-26correct hcd_edpt_clear_stall() API signaturehathach
2023-07-21add stub hcd_edpt_abort_xfer() for all portshathach
2023-07-02made line ends consistent.Lars Pötter
2023-04-20[rp2040] Make writes to SIE_CTRL aware of concurrent accessJacek Fedorynski
This commit makes it so that when setting the START_TRANS bit in the SIE_CTRL register, along with some other bits, we first set all the other bits, then wait some cycles, and then set the START_TRANS bit. Doing so protects against a situation where the USB controller is reading the register at the same time and gets an incorrect value. This mirrors the procedure already applied to buffer control registers.
2023-03-17Merge branch 'master' into portabilityhathach
2023-01-23rp2040: export hw_endpoint_start_next_buffer() and hw_endpoint_lock_update()Jonathan Bell
The next change to the driver requires the export of these functions. Leave the lock unimplemented for now. Also move hw_set and hw_clear aliases into the top-level header file.
2022-11-30white spaceshathach
2022-11-04fix -wconversion-int and add minor commenthathach
2022-11-04Merge branch 'master' into rp2040-hcd-bulkHa Thach
2022-09-13Remove unreachable codeBen Avison
IAR generates warning Pe111 'statement is unreachable'. In a couple of cases, replace return statements with TU_ATTR_FALLTHROUGH; because some compilers apparently can't figure out that the return statements are unreachable but do whinge about an imagined fall-through without them!