Commit Graph

1094 Commits

Author SHA1 Message Date
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
Yunhao Tian bb7d1fa3ba Add support for Allwinner F1Cx00s family
Allwinner F1Cx00s family is a series of SoCs
with Mentor MUSB controller and HS phy. It comes
with a slightly different register space layout,
and some quirks, so it's not multiplexed with
the existing musb support library.

This library currently requires to be compiled
with https://github.com/hongxuyao/F1C100s_with_Keil_RTX4_emWin5
2021-12-01 15:35:48 +08:00
hathach 0612433eef add chipidea highspeed controller
add warning to transdimension for the rename
2021-12-01 12:14:44 +07:00
kkitayam 9bccc8068b Add register settings to handle a HUB 2021-11-30 23:13:20 +09:00
hathach 3e3fe1e429 improve hcd_device_close() for rp2040 2021-11-30 17:36:52 +07:00
rppicomidi 06f99c220e implement hcd device close 2021-11-30 17:17:06 +07:00
kkitayam b50cf856b3 Add hcd_musb.c 2021-11-29 00:28:22 +09:00
kkitayam 7413b6b020 Add a compile condition for dcd 2021-11-27 10:26:32 +09:00
hathach c9e9f4785f more clean up 2021-11-23 09:52:11 +07:00
hathach 0fc11746c0 clean up 2021-11-23 09:46:45 +07:00
hathach a994540860 fix nrf easy dma race condition 2021-11-23 09:36:28 +07:00
Ha Thach b8d66e4d19
Merge pull request #1206 from hathach/bcm-dwc2-address
Bcm dwc2 address
2021-11-22 12:07:07 +07:00
hathach dac7574c98
use USB_OTG_GLOBAL_BASE instead of hard code value 2021-11-22 10:52:28 +07:00
hathach 301d6b4133
clean up 2021-11-17 09:48:08 +07:00
hathach 12e96ce571
set DCFG_XCVRDLY when using external ULPI highspeed phy 2021-11-15 12:18:28 +07:00
hathach d415bd4d7b
add missing musb type file 2021-11-08 17:39:37 +07:00
hathach f65917f51a
rename to simply OPT_MCU_MSP432E4, add msp432e to ci 2021-11-08 17:29:26 +07:00
hathach 6fea50f735 musb work well with tm4c123 2021-11-08 16:41:29 +07:00
kkitayam 26461d1efe Fix DCD_EVENT_XFER_COMPLETE was signaled, even after EP is closed 2021-11-07 18:25:11 +09:00
kkitayam 0b3c8c4a59 Implement dcd_edpt_xfer_fifo for dcd_musb 2021-11-06 00:06:27 +09:00
kkitayam 50ca0dda2c Add dcd_musb.c 2021-11-06 00:06:26 +09:00
Liam Fraser e692fa9ae4 RP2040 HCD: Move invalid ep->active assert in hw_trans_complete. The check for ep->active should only happen if a setup packet was just sent. Otherwise the transaction is handled in hw_handle_buff_status. 2021-11-05 09:39:31 +00:00
Ha Thach c04006bc13
Merge pull request #1180 from hathach/add-xmc4500
Add xmc4500
2021-11-05 14:38:23 +07:00
hathach d87a897a7b
xmc4500 ported, cdc msc example run fine 2021-11-05 13:13:21 +07:00
Jerzy Kasenberg e35bb6341c broadcom/dcd: Fix mynewt build
dcd_synopsys.c included broadcom/interrupts.h before
preprocessor check whether file should be used.

Since mynewt build does not include all folders it resulted in build
error.

Now offending include is moved few lines after preprocessor check.
2021-11-04 21:46:17 +01:00
hathach f90f5ea369 adding g4 family with g474nucleo, able to blink led and button 2021-11-04 16:16:51 +07:00
Ha Thach fc59515bfd
Merge pull request #1163 from hathach/generalize-synopsys-dwc2
Generalize synopsys dwc2
2021-11-04 13:41:25 +07:00
hathach 6cfdf697eb add hint/question with ISB 2021-11-04 12:42:28 +07:00
hathach b51d038b65 fix issue with bcm2711 caching issue by ading ISB() after dwc2_dcd_int_enable90
also add hwcfg_list for reference
2021-11-04 12:30:11 +07:00
hathach e16506cb52 clean up 2021-11-03 12:24:10 +07:00
hathach 7e68894726 grouping stm32L4 family in bsp 2021-11-02 16:10:40 +07:00
hathach b809429873 minor clean up 2021-11-02 14:51:15 +07:00
hathach aa682d7301 add fix for stm32l4 (version 3.10a) which generate transfer complete when setup recieved and control out data complete 2021-11-02 13:52:30 +07:00
hathach 215e0595ab change F207 to use new dwc2 2021-10-31 00:09:40 +07:00
hathach b85a6898af remove dcd_efm32 2021-10-30 20:45:58 +07:00
hathach 9cd5a87c64 add support for EFM32GG
merge GG12 GG12 to simply OPT_MCU_EFM32GG
2021-10-30 20:42:55 +07:00
hathach 660e8b8c88 skip snpsid check for gd32, abstract phyfs turnaround, set max timeout calibration.
still has issue with gd32 with msc (does work with running with rtt as
log).
2021-10-29 16:08:19 +07:00
hathach 6c67fc4125 correctly init hs phy for bcm 2021-10-29 00:53:30 +07:00
hathach 7def380058 support bcm2711 on pi4, enhance dcd init with utmi and ulpi hs phy 2021-10-28 12:52:18 +07:00
Gordon McNab 6a658007a5 Changes to use ft90x-sdk as submodule or installed SDK from toolchain. 2021-10-27 12:30:51 +01:00
hathach 49aa69a301 update bcm dcd 2021-10-26 23:57:48 +07:00
hathach 07829510e7 Merge branch 'tannewt-rpi' into generalize-synopsys-dwc2 2021-10-26 23:43:35 +07:00
hathach 9f1cd1a753 add synopsys id check, rename GCCFG_* to STM32_GCCFG-* 2021-10-26 23:10:26 +07:00
hathach bb5dab5c2e add hw config struct 2021-10-26 22:48:01 +07:00
hathach 68fa9d4064
enhance fifo read/write 2021-10-26 13:56:56 +07:00
hathach 5d05f8758f
more clean up 2021-10-26 13:36:43 +07:00
hathach 4ebfd00d67
clean up 2021-10-26 13:33:40 +07:00
hathach de413183d4
use dwc2->epin 2021-10-26 13:07:00 +07:00
hathach e7655a7567
update the access epout 2021-10-26 13:02:26 +07:00
hathach 34844c9061
use dwc2->fifo[] 2021-10-26 12:53:29 +07:00
hathach 5e1a031800
complete dwc2 regs struct 2021-10-26 12:22:41 +07:00
hathach 3755814f57
add epin, epout to dwc2 regs 2021-10-26 11:49:59 +07:00
hathach 8df078dc9e
more rename 2021-10-26 11:11:46 +07:00
hathach 7369d2441d
update dwc2_type 2021-10-26 00:55:24 +07:00
hathach 460052c8a0
spacing 2021-10-25 21:20:58 +07:00
suda-morris 7d0d6f85f2 update dcd_esp32sx with correct include list 2021-10-25 21:53:14 +08:00
hathach dbd31895bc
change usage of TU_CHECK_MCU() to prevent macro conflict 2021-10-25 17:04:03 +07:00
hathach 85e18b9172
house keeping 2021-10-25 15:58:12 +07:00
hathach 4ccf60954d
moving esp32s2 to dwc2, abstract dwc2_set_turnaround() 2021-10-25 15:51:41 +07:00
hathach 61c80840c3
update dwc int enable/disable 2021-10-25 00:40:21 +07:00
hathach 4ab931a361
more clean up 2021-10-25 00:23:18 +07:00
hathach 0e7c103e98
minor rename 2021-10-25 00:11:17 +07:00
hathach 32742571da
switch gd32 and stm32f4 to use new dwc2 driver 2021-10-25 00:06:57 +07:00
hathach 06de6b725c
adding generalized dwc2 driver 2021-10-24 23:24:46 +07:00