Commit Graph

1157 Commits

Author SHA1 Message Date
hathach 4795cca04a
add parse config descriptor to example
move usbh_edpt_open() to public API, remove rhport from its signature
2022-03-19 00:43:31 +07:00
Reinhard Panhuber 9fde8f2d9e Fix DSTS_FNSOF in dwc2.c 2022-03-16 07:53:47 +01:00
Reinhard Panhuber 26339e694f Merge remote-tracking branch 'upstream/add-sof-isr' into add-sof-isr 2022-03-14 20:40:57 +01:00
Reinhard Panhuber f212899b54 Add SOF callback function for feedback value determination in uac - wip! 2022-03-14 20:40:33 +01:00
Ha Thach 41ffd54fa0
Merge branch 'master' into add-sof-isr 2022-03-14 11:57:01 +07:00
hathach 606f932d92 added dcd_sof_enable() stubs for all other ports 2022-03-07 23:05:05 +07:00
hathach 85dbcf5473 implement dcd_sof_enable() for rp2040 2022-03-07 23:04:47 +07:00
hathach ce60e98f6d remove broadcom/synopssy (repalced by synopsys/dwc2) 2022-03-07 23:00:11 +07:00
Ha Thach 7180883fae
Merge pull request #1379 from Qianhao2579/master
Modify the wrong macro definition code
2022-03-07 16:09:16 +07:00
Ha Thach 1bd31c22e1
Merge pull request #1374 from kasjer/kasjer/stm32wb55
stm32wb55 support
2022-03-07 16:09:06 +07:00
Jerzy Kasenberg a18ac84229 Add support for STM32WB mcu 2022-03-07 09:35:12 +01:00
QianHao 65bf5ddb1b Modify the wrong macro definition code 2022-03-07 08:04:49 +00:00
Ha Thach 8e0b8c15ea
Merge pull request #1369 from tannewt/host_string_desc
Add host string descriptor functions
2022-03-04 22:59:16 +07:00
hathach 56c2d4b666 fix naming, and build 2022-03-04 22:31:48 +07:00
hathach 7480c2e46b correct qhd and qtd count for ehci/ohci 2022-03-04 21:04:52 +07:00
hathach 96165a1950 rename HCD_MAX_XFER to CFG_TUH_ENDPOINT_MAX
minor clean up
2022-03-04 17:07:04 +07:00
Ha Thach 5453c7e97f
Merge pull request #1370 from hathach/fix-esp-idf
fix build with esp32s2, also use dwc2 for esp example
2022-03-04 15:20:51 +07:00
hathach f72da8ee7d fix build with esp32s2, also use dwc2 for esp example 2022-03-04 14:45:26 +07:00
Scott Shawcroft 2cd73ca602
Add host string descriptor functions
Plus typo fixes, GCC11 array bounds fix, snprintf for malloc-free
debug and pragmas for alignment checks.
2022-03-03 21:53:12 -08:00
hathach fa62d5abc9 got interrupt endpoint working 2022-03-03 21:57:29 +07:00
hathach 635fb9dcdd try to fix ci 2022-03-02 12:33:47 +07:00
hathach 918f3e9cae minor rename 2022-03-02 12:22:20 +07:00
hathach 1d29817139 start to add pio usb (host) support
run as proof of concept
2022-03-01 23:55:53 +07:00
Ha Thach 7c627f58d7
Merge pull request #1343 from Daft-Freak/patch-1
Open OUT endpoint for HID host
2022-02-28 20:00:40 +07:00
Ha Thach c9b0fbc907
Merge pull request #1354 from hathach/mcu-specific
Mcu specific
2022-02-26 21:30:07 +07:00
Ha Thach 6dd4d50213
Merge pull request #1352 from ETCLabs/fix-ehci-isr-status-clear-error
Updated the clearing of the status register bits to use a straight '=…
2022-02-26 18:05:59 +07:00
hathach a4ba3f2891 add TUP_USBIP_DWC2 2022-02-26 17:13:06 +07:00
hathach 11c89d43ab more internal rename 2022-02-26 17:06:50 +07:00
hathach bc63f59af2 mcu specific rename 2022-02-26 15:23:29 +07:00
Ha Thach 244154e087
Merge pull request #1311 from Wini-Buh/CCRX_Ext
Solve problems with CCRX toolchain
2022-02-26 14:34:18 +07:00
Tom Peterson 39fdbc8ffc Updated the clearing of the status register bits to use a straight '=', rather than an '|='. Use of the latter caused an extra, unwanted read of the status register before the write-to-clear operation, which, in some cases, allowed new status bits to assert (relative to the initial read of the status register two statements earlier), and then be cleared blindly and unconditionally during the write-back. This had the potential (and, in my case, observed) effect of dropping the handling of an enabled interrupt. Ultimately, the system would lock up in a busy state, with no hope of clearing the condition. See Issue #1339 for more information. 2022-02-25 12:39:09 -06:00
hathach 0997589c45 more symbol rename 2022-02-25 23:05:15 +07:00
hathach 89115253da internal symbol rename 2022-02-25 22:45:05 +07:00
hathach 99ad3ae2ca rename and move dcd_attr.h to tusb_mcu_attr.h 2022-02-25 18:35:21 +07:00
hathach 31aa077cb0 rename TUSB_OPT_HOST_ENABLED to CFG_TUH_ENABLED 2022-02-25 18:35:21 +07:00
hathach d10326cb4e rename TUSB_OPT_DEVICE_ENABLED to CFG_TUD_ENABLED
TUSB_OPT_DEVICE_ENABLED still usable for backward compatible
2022-02-25 18:35:21 +07:00
hathach 4a5a53b3b8 improve rphort management for usbd 2022-02-25 18:35:21 +07:00
Charlie Birks c0a65ba0f6
Support interrupt OUT in RP2040 HCD 2022-02-23 12:25:01 +00:00
Ha Thach e04f15ff3d
Merge pull request #1280 from kasjer/kasjer/nrf5x-dma-race
nrf5x: Fix DMA access race condition
2022-02-22 21:00:51 +07:00
Ha Thach 63cb3cdc74
Merge pull request #1304 from kkitayam/add_hcd_for_frdm_kl25z
Add hcd driver for frdm kl25z
2022-02-09 16:14:50 +07:00
Wini-Buh 5414cf275b
Merge branch 'hathach:master' into CCRX_Ext 2022-02-02 21:06:37 +01:00
Ha Thach d6fb1859a4
Merge pull request #1291 from kasjer/kasjer/da1469x-fix-resume
da1469x: fix resume
2022-02-02 20:20:39 +07:00
Roland 7beb92864e Merge branch 'CCRX_Ext' of https://github.com/Wini-Buh/tinyusb into CCRX_Ext 2022-02-01 23:49:20 +01:00
Roland e1f0c484c6 Modifications for CCRX toolchain 2022-02-01 23:45:52 +01:00
Ryzee119 453ba529a6
OHCI: Fix array out of bounds issue
If using a USB hub, a request outside the array size can occur

Original line:
ffb257ac17/src/portable/ohci/ohci.h (L162)

It can happen in a few places but one such example is here:
ffb257ac17/src/portable/ohci/ohci.c (L460)

ie. if HUB address is 5, this would be an array index out of bounds on control endpoints as `CFG_TUH_DEVICE_MAX+1` is only 5.

This fix just includes num of hubs in the reserve array size.

Fixing locally fixed this issue.
2022-01-28 14:02:34 +10:30
kkitayam 03d2e32dc1 Fix handling for pending transfers 2022-01-27 23:38:19 +09:00
kkitayam 60a0be82da Change hcd_edpt_xfer to send at the next SOF 2022-01-27 22:25:36 +09:00
kkitayam cc06a3585e Add handling for NAK response 2022-01-27 20:57:41 +09:00
kkitayam cdab869472 Fix handling control transfer 2022-01-27 20:57:41 +09:00
kkitayam a4bc6075ce Add HCD functions for KL25Z 2022-01-27 20:57:40 +09:00
hathach 578a123282 fix mynewt build sunxi 2022-01-26 12:59:53 +07:00
Ha Thach 7de166390e
Merge branch 'master' into master 2022-01-25 22:29:05 +07:00
Jerzy Kasenberg 7b078367e8 dcd_da1469x: Re-enable RX after resume
Going to suspend states disable reception on non-0 RX endpoints.

Now when USB resume condition is detected, all RX endpoints
with pending transfers are resumed.
2022-01-20 16:28:09 +01:00
Jerzy Kasenberg ae4d901d83 dcd_da1469x: Fix over-run/under-run mask
Bit mask enabling/disabling over-run/unde-run was shifted
by one nibble, so interrupt was never enabled.
It did not force any issue as this situation could only
happen on ISO endpoints without DMA.
2022-01-20 10:01:18 +01:00
Ha Thach e40547ada1
Merge pull request #1265 from kkitayam/add_hcd_for_renesas_rx
Add HCD driver for Renesas RX
2022-01-19 19:07:21 +07:00
Jerzy Kasenberg 36b6ed8ff9 nrf5x: Fix EP OUT race conditions in OS build
When two tasks entered dcd_edpt_xfer() it was possible that
first disabled interrupt to setup total_len and actual_len
but second task for another endpoint enabled interrupt
between total_len and actual_len resulting in race
condition with interrupt, hence mutex is added on top of interrupt being blocked.
2022-01-19 09:48:04 +01:00
Jerzy Kasenberg 980ffe3b4e nrf5x: Fix DMA access race condition
In multi-thread mode starting DMA in thread mode was
prone to race condition resulting in infinite loop.
It may happen on single core CPU with strict priority based
tasks scheduler where ready high prio task never yields to
ready low prio task (Mynewt).

Sequence that failed (T1 - low priority task, T2 - high priority task)
- T1 called start_dma()
- T1 set _dcd.dma_running (DMA not started yet, context switch happens)
- T2 took CPU and saw that _dcd.dma_running is set, so waits for _dcd.dma_running to be 0
- T1 never gets CPU again, DMA is not started T2 waits forever

OSAL mutex resolves problem of DMA starting from thread-context.
2022-01-19 09:06:43 +01:00
Ha Thach 983abfd6d8
Merge pull request #1279 from kasjer/kasjer/nrf5x-int-race
nrf5x: Fix EP OUT race conditions
2022-01-19 10:33:37 +07:00
Ha Thach 84f2ca77f7
Merge pull request #1283 from kasjer/kasjer/olimex-pic32-board-fixes
olimex pic32 board fixes
2022-01-19 09:55:18 +07:00
Ha Thach 92c36f187d
Merge pull request #1274 from kasjer/kasjer/nrf5x-request-clock-in-mynewt
nrf5x: Request HFXO via OS
2022-01-18 20:00:23 +07:00
Jerzy Kasenberg f4725120a4 nrf5x: Request HFXO via OS
Mynewt (similar to Soft Device) has its own reference counting for
HFXO oscillator.
So far TinyUSB requested HFXO when VBUS was detected and stopped when
VBUS was removed.
But with Mynewt running HFXO can be stopped when other interested parties
don't require HFXO anymore. This results in very difficult to track
USB transmission errors.

This change enables Mynewt specific HFXO management in Soft Device fashion.
2022-01-18 08:12:49 +01:00
Jerzy Kasenberg 168c7095e8 pic32mz: Fix remote_wakeup without OS
Remote wakeup requires 10ms of delay when RESUME bit
is toggled.
It was covered for OS build.
For non-OS build simple delay based on board_millis() is
used to wait required amount of time.
Without this remote wakup may not work.
2022-01-17 17:59:51 +01:00
Jerzy Kasenberg ec01428820 ft9xx: Fix Mynewt build
Includes were moved few lines down to restore build with Mynewt build system.
2022-01-17 09:14:41 +01:00
Ha Thach efc29baead
Merge branch 'master' into port-ft90x 2022-01-17 12:36:39 +07:00
Ha Thach 976405dea3
Merge pull request #1270 from kasjer/kasjer/pic32mz
Driver for Microchip PIC32MZ family
2022-01-16 20:24:14 +07:00
Jerzy Kasenberg da44fe3fc9 nrf5x: Fix EP OUT race conditions
When dcd_edpt_xfer() starts new transfer two separate problems were observed.
For both problems stream of OUT packets was pouring from host.

First problem was that total_len and actual_len were not atomic.
In case where incoming OUT packets are less (63) than MPS (64), actual_len and total_len
are set 63.
Then transfer complete from USBD is called that will schedule next 64 bytes transfer.
At that point incoming packet would start DMA if there is place in RAM, normally
it does not happen since actual_len == total_len.
If packets arrives and interrupt is raised after total_len is set (64) but actual_len is still 63 from
previous transfer, interrupt code sees that there is place in ram (1 byte) and transfer this 1 byte
to buffer that was already filled with previous packet.
To remedy this USB interrupt is blocked during transfer setup.

Second problem can happen when dcd_edpt_xfer setups xfer->total_len and actual_len correctly
but then context switch happens before xfer->data_received is checked.
If during this time two packets arrive one will be copied to RAM second will stay in endpoint with
data_received set to 1.
Then when xfer_edpt_xfer() checks data_receive flag it starts DMA again overwriting data.
To remedy this, data_received is checked together with check if data was already transferred.
If transfer was complete, there is no need to start DMA yet.
In such case data_received will be handled in same place by next xfer_edpt_xfer() correctly.
2022-01-14 09:46:39 +01:00
Jerzy Kasenberg 340309561d Add driver for PIC32MZ MCUs
Device-only driver for PIC32MZ MCUs.
2022-01-07 14:12:42 +01:00
Scott Shawcroft a79ffeb764
Add Raspberry Pi Zero W and Zero 2 W
These are different Broadcom chips. The peripherals are essentially
the same. The main differences are:
* The CPU(s)
* The interrupt controller
* The peripheral base address (but not the peripherals that we use)
2022-01-05 13:47:01 -08:00
Jerzy Kasenberg 2f69649bb6 Add register file for Microchip PIC32MZ 2021-12-31 22:53:27 +01:00
hathach adb848f754
update docs 2021-12-29 19:42:34 +07:00
hathach 5f280b3029
add license to dcd file, slightly update readme 2021-12-29 19:25:32 +07:00
hathach 30aba24ddc Merge branch 'master' of https://github.com/t123yh/tinyusb into t123yh-master 2021-12-29 18:27:29 +07:00
kkitayam 2b8b8a3a97 Fix hcd_edpt_clear_stall 2021-12-27 22:55:28 +09:00
kkitayam 2c0fcc2fa7 Add statements for control VBUS 2021-12-27 21:36:49 +09:00
kkitayam a76799b085 Add hcd for Renesas RX 2021-12-27 21:19:02 +09:00
Jerzy Kasenberg 7a596b9e55 Fix Mynewt build for Microchip PIC32MZ devices.
definition of DEBUG breaks Microchip pic32 builds for Mynewt.
When MCU is not VALENTYUSB_EPTRI there is no need to have any
preprocessor definitions.
It may not look like a big deal but for xc32 builds, compiler
automatically force-includes some file that have structure with field name
DEBUG that result in build error in dcd_eptri.c when this file
is not really needed.

Moving DEBUG and LOG_USB few lines down should not break eptri builds.
2021-12-27 10:14:38 +01:00
Gordon McNab 8d373b0887 Update midi_test endpoints and FT9xx code 2021-12-15 12:23:58 +00:00
Ha Thach bfb5e32e1f
Merge pull request #1233 from vmilea/rp2040_bugfix/ep_close
Handle the closing of endpoints on RP2040
2021-12-09 23:38:17 +07:00
Ha Thach 6bf7fba2a4
Merge pull request #1221 from kasjer/kasjer/fix-nrf5x-vbus-race-condition
nrf5x: Fix race condition during startup
2021-12-09 00:44:44 +07:00
Valentin Milea ae970ba2e2 Handle xfer events before closing EP 2021-12-08 12:34:00 +02:00
Gordon McNab 5039a5e54c Update code to implement changes from upstream master 2021-12-08 09:34:29 +00:00
Gordon McNab 9a7db98593 Merge branch 'master' into port-ft90x 2021-12-08 08:36:43 +00:00
Jerzy Kasenberg 21db2351fd nrf5x: Fix race condition during startup
When NRF5x device is reset by software (after DFU for example),
power event is ready from the beginning.
When power interrupt is triggered before tud_init() finished
USBD_IRQn is enabled before it would be enabled in tud_init().
This in turn may result in BUS RESET event being sent from
USB interrupt to USB task when queue is not initialized yet.
This scenario often happens in Mynewt build where queue creation
takes more time.

To prevent this scenario USBD_IRQn is not enabled in power event
interrupt handler before dcd_init() was called.
2021-12-08 08:27:27 +01:00
Valentin Milea 36e69b86bf Remove buffer reclaim logs 2021-12-07 15:35:30 +02:00
Ha Thach c157837878
Merge pull request #1213 from kkitayam/add_hcd_for_msp_exp432e401y
Add a HCD driver for MSP-EXP432E401Y
2021-12-07 19:24:41 +07:00
Yunhao Tian 96979a2c4a Fix handling of RXRDY bit 2021-12-06 19:56:27 +08:00
Yunhao Tian 1ffc366aa9 Change FIFO size to 4KB (not sure)
The datasheet says 2KB FIFO, but accroding to many
code examples, the F1C100s has at least 4KB of FIFO memory.
This is working with cdc_msc example,
but I'm not sure, this should be checked.
2021-12-05 22:40:05 +08:00
Yunhao Tian f308603a3a Fix a typo that leads to incorrect RX handling 2021-12-05 22:31:09 +08:00
Yunhao Tian 702698ee29 Add FIFO size check 2021-12-05 18:18:41 +08:00
Yunhao Tian 64b81fd4d3 Close all EPs upon reset 2021-12-05 18:08:01 +08:00
Yunhao Tian fa0e4d91f9 Save current EP before querying other EPs 2021-12-05 18:07:35 +08:00
Valentin Milea 48e1f6d899 Handle the closing of endpoints on RP2040 2021-12-04 16:04:48 +02:00
Yunhao Tian 68ca62dfd7 Add BSP support for F1C100s 2021-12-04 18:02:07 +08:00
Yunhao Tian dff54d854d Modify sunxi_musb code 2021-12-04 17:18:39 +08:00
kkitayam 7137a0a92f Fix buffer overrun at pipe_read_packet() 2021-12-04 01:25:34 +09:00
kkitayam 81285273a6 Fix memory overrun at pipe_read_packet() 2021-12-04 01:18:42 +09:00
Ha Thach 6ecd93eb60
Merge branch 'master' into add_hcd_for_msp_exp432e401y 2021-12-03 00:30:09 +07:00
hathach 207c60d055 more chipidea 2021-12-02 00:03:44 +07:00
hathach 83dc3e25f0 more work to abstract chipidea driver 2021-12-01 23:30:09 +07:00
hathach 61a9e125db more ci abstract 2021-12-01 23:19:17 +07:00