Commit Graph

324 Commits

Author SHA1 Message Date
hathach
65d6acdbfa fix build warnings 2023-06-16 12:02:42 +07:00
hathach
9593ab7acc fix usbh issue when device genreate multiple attach/detach/attach when plugging in 2023-06-13 16:40:29 +07:00
hathach
9b7dee563e able to response with good crc 2023-06-07 18:57:48 +07:00
Dave Nadler
70a92291fe Fix diagnostic format string (missing %u) 2023-06-01 10:58:03 -04:00
hathach
20ef6c4ef7 slightly clean up 2023-05-29 13:29:11 +07:00
hathach
5c428d35a6 check status_change is not zero first 2023-05-29 13:27:20 +07:00
Ivo Popov
8ad024e51b Even when we get an empty "status change" interrupt from the hub, schedule another interrupt poll.
During enumeration, when there are multiple devices attached to the
hub as it's plugged into the Pi Pico, enumeration hangs, because we
get a "status change" callback with value zero. With this patch, we
retry several times on "zero" status change callbacks, until
eventually we succeed.

This is the cheapo hub that exhibits this behavior, but I assume it's
not the only one: https://www.amazon.com/gp/product/B083RQMC7S.

While debugging this, I consulted the implementation in the Linux
kernel. There, hub setup explicitly checks each port individually,
before starting to depend on "status change" interrupts:
https://elixir.bootlin.com/linux/latest/source/drivers/usb/core/hub.c#L1133.
We probably should do something like that here, but it's a much bigger
change.
2023-05-29 13:18:16 +07:00
hathach
5dae5e1292 ehci fix dcache clean when control endpoint failed 2023-05-19 13:32:49 +07:00
hathach
49e2aabc81 EHCI more improvement
- more dcache clean/invalidate
- extract init_periodic_list()
- improve isr list handling
2023-05-18 13:45:38 +07:00
hathach
a3e017bfd2 EHCI adding dcahe support, passing enumertaion 2023-05-18 10:04:48 +07:00
hathach
eb89df4115 adding hcd_dcache_clean/hcd_dcache_invalidate 2023-05-17 16:14:35 +07:00
hathach
2c48050993 add various check for disconncted device, also fix #1511 un-roll recursive hub removal with usbh queue 2023-05-16 11:09:22 +07:00
hathach
1c4f22a54c EHCI: fix xfer failed with disconnected device as stalled
- change CFG_TUH_ENDPOINT_MAX to 16 (max endpoint pair per device) if
not defined
- change QHD_MAX for EHCI, should be user configurable and more
optimized in the future
2023-05-16 11:09:22 +07:00
hathach
206d63e038 correct EHCI reporting failed xfer (instead of stalled) when device is unplugged 2023-05-16 11:09:21 +07:00
hathach
0a43a7b418 improve host serial drivers
- tuh_control_xfer() update xfer result to user_data if complete
callback = NULL (sync/blocking)
- refactor host serial driver for acm/ftdi/cp210x
2023-04-28 19:13:25 +07:00
hathach
45169d833d hacky, but ftdi work with hard code baudrate = 9600 2023-04-26 22:36:17 +07:00
hathach
71fb6469d4 separate CFG_TUSB_MEM_SECTION and CFG_TUSB_MEM_ALIGN to
- CFG_TUD_MEM_SECTION and CFG_TUD_MEM_ALIGN
- CFG_TUH_MEM_SECTION and CFG_TUH_MEM_ALIGN
- fix missing mem section and align for host
2023-03-24 14:05:21 +07:00
hathach
f8a5cde3c7 add tuh_task_event_ready(), better implement blocking control transfer for rtos 2023-03-22 09:23:44 +07:00
hathach
8a0b17598c add osal_task_delay() for control blocking 2023-03-21 18:15:45 +07:00
hathach
d34508a316 add note for blocking tuh_configuration_set(), tuh_interface_set() 2023-03-21 18:13:25 +07:00
hathach
e44e461ce3 add tuh_set_interface 2023-03-21 12:55:52 +07:00
hathach
bdfcd50b1b Merge branch 'master' into portability 2023-03-17 23:53:38 +07:00
hathach
3623ba1884 fix trailing space and new line
temporarily disable codespell
2023-03-17 16:12:49 +07:00
hathach
e1fda007f6 minor refactor to invalid index 2023-03-17 14:46:02 +07:00
hathach
f349ae7702 fix enumerate one device at a time 2023-03-17 13:58:01 +07:00
hathach
1466afafeb move and add optional tusb_app_virt_to_phys/tusb_app_phys_to_virt
also add place holder for tusb_app_dcache_flush() and
tusb_app_dcache_invalidate()
2023-02-22 22:14:50 +07:00
hathach
95403ed9ac fix host issue when mounting an CDC device without IAD 2023-01-31 18:40:07 +07:00
pete-pjb
f5cffeedec Fix typo in audio.h. Specifiy _ctrl_xfer struct in CFG_TUSB_MEM_SECTION
Add NULL check to loop in list_remove_qhd_by_addr() function in ehci.c
2023-01-03 10:33:36 +00:00
hathach
14d45b580e correct host cdc enum 2022-12-22 19:17:09 +07:00
hathach
8323e4b79a moving edpt_stream API into common tusb.c 2022-12-22 08:52:01 +07:00
hathach
cb2af4c0bc minor debug log 2022-12-21 11:46:58 +07:00
hathach
d1ea3844f7 rename TU_LOG_VAR to TU_LOG_PTR, print out setup of failed control transfer when LOG=1 2022-12-21 11:04:57 +07:00
hathach
fc9321ce26 correct cdc usbh_driver_set_config_complete() 2022-12-16 23:54:21 +07:00
hathach
bd1f7f86ce add common EPSIZE for bulk/iso in full and highspeed
adding cdc host fifo tx/rx
2022-12-16 17:08:37 +07:00
hathach
f0c51eae44 cdc check for bNumEndpoints before checking for endpoint descriptor 2022-12-16 17:08:37 +07:00
hathach
1e99480ad2 fix ci with usbh and unit test 2022-12-16 15:19:40 +07:00
hathach
88e6da7273 use OSAL_MUTEX_REQUIRED to replace CFG_FIFO_MUTEX/TUSB_OPT_MUTEX
add macro to swallow mutex API in order to simplify code with mutex
2022-12-15 18:03:01 +07:00
Bastien Nocera
6a2cf67289 Fix typos 2022-12-04 19:43:23 +07:00
hathach
be6f6f2c99 increase delay between attempts to 100ms 2022-11-28 23:43:52 +07:00
hathach
b2a3f33046 Retry a few times with transfers in enumeration since device can be unstable when starting up 2022-11-28 23:22:10 +07:00
hathach
460bef9dbb host msc example work well with rp2040 pio-usb 2022-11-21 15:49:38 +07:00
Ben Avison
01edbb8af6 IAR doesn't support __attribute__((fallthrough))
IAR generates warning Pa167 'the "fallthrough" attribute is not supported'.
It doesn't generate warnings when one switch case falls through to another,
so simply make TU_ATTR_FALLTHROUGH expand to an empty string.

Also replace one instance of __attribute__ with the macro.
2022-09-13 18:00:51 +01:00
Ben Avison
53f0d5538b Don't assume ints automatically convert to enums
IAR generates warning Pe188 'enumerated type mixed with another type'.
2022-09-13 18:00:50 +01:00
Ryzee119
2b2354d302 Hub: Clear other port feature changes 2022-08-16 18:25:46 +09:30
Ryzee119
3c7b5dcaff Hub: Handle hub device status change interrupt 2022-08-16 18:25:43 +09:30
Ryzee119
aafea8ef5d Hub: Rename port status callback to be more generic 2022-08-15 17:43:04 +09:30
Ryzee119
5efef4393c Hub: Expand hub helpers to handle device events 2022-08-15 17:42:56 +09:30
hathach
7e4c0f64cd abtract attribute fallthrough 2022-07-14 18:39:47 +07:00
graham sanderson
4bd47bcb99 disable bad gcc 6 warning 2022-07-12 13:29:47 -05:00
hathach
345558307d fix incorrect null-dereference warnings when compiling with gcc7 2022-07-12 00:50:52 +07:00