Commit Graph

232 Commits

Author SHA1 Message Date
Ha Thach 268ab9eaa8
Merge pull request #399 from duempel/redesign_synopsys_receive
Improvements to Synopsys EP OUT
2020-06-29 16:02:40 +07:00
Jan Dümpelmann 99df7789a7 Add author name to dcd_synopsys.c 2020-06-29 10:55:03 +02:00
Jan Dümpelmann 4f69bcea7e Remove EP0 remaining bytes manipulation
Renaming edpt_xact to edpt_schedule_packets
2020-06-26 17:18:25 +02:00
Jan Dümpelmann 067287ef91 Add transaction (edpt_xact) as sub transfer
A transfer can have one or multiple transactions.
Usually only EP0 splits one xfer into multiple xact.
2020-06-18 17:18:28 +02:00
Mengsk 9ffb9b69a4 Disable SOF in dcd_stm32_fsdev
Signed-off-by: Mengsk <admin@hifiphile.com>
2020-06-18 14:18:00 +02:00
Mengsk 57b553e023 Fix IAR warnings.
Pa039 : use of address of unaligned structure member.
Pe188: enumerated type mixed with another type.
2020-06-17 10:08:33 +02:00
hathach 667eaa6dd6 fix stm32h743 priority with freeRTOS 2020-06-16 00:03:52 +07:00
hathach 2dd1be13e5 Enhance EP FIFO allocation for both Fullspeed and Highspeed
- Update shared RX FIFO calculation with FS/HS
- IN FIFO EP
  - Interrupt -> use EPSize
  - Bulk/ISO  -> use  max(EPSize, remaining-fifo / non-opened-EPIN)
2020-06-15 23:17:49 +07:00
Jan Dümpelmann 4399dd1b06 cherry pick PR399 commit : Interrupt time improvements 2020-06-14 19:13:31 +07:00
hathach f438aedccb overwrite setup packet 2020-06-14 18:29:38 +07:00
hathach 710c54f8cb allow hs ep open with 512 bytes 2020-06-01 01:36:09 +07:00
hathach f771afe6af fixed EP0 size to 64 since LS is not supported in device mode
- set turn-around and report actual speed in Enum Done
- add dcd_event_bus_reset() helper to report speed
2020-05-31 23:43:29 +07:00
hathach 5ffba8536d able to detect as hs 2020-05-31 19:41:22 +07:00
hathach d4bf777c94 try to get synopsys work with OTG HS + external PHY 2020-05-27 11:01:33 +07:00
hathach 947c3eb10d multiple port support for global otg base 2020-05-26 16:07:48 +07:00
hathach b7ab60aa44 suporting multiple port (OTG FS + HS) for stm32 2020-05-26 15:52:02 +07:00
Jan Dümpelmann 42edbc0006 Allow EP0 to use xfer sizes larger than one packet 2020-05-15 22:26:14 +02:00
Jan Dümpelmann 28696de390 Interrupt time improvements 2020-05-15 18:21:44 +02:00
Jan Dümpelmann 3401e0f6ff Synopsys OUT EP improvements:
- Use register based XFRSIZ to determine transfer complete
  (xfer->queued_len and xfer->short_packet were deleted)
- Pop out as many RxFIFO data entries as available within a IRQ call
- less application interruption due to XFRC calls
2020-05-08 18:10:48 +02:00
Jan Dümpelmann fd69cc3dcc clean up
renaming function and variables
changing indent size
2020-05-04 07:59:13 +02:00
Jan Dümpelmann 59ff208c65 Changed switch into if statements 2020-04-29 12:37:29 +02:00
Jan Dümpelmann 3e6feb7f6d Redesign of Synopsys device transmission
Changes:
  - checking if tx buffer empty interrupt is masked
  - process more than one packet in isr
  - mask tx buffer empty just after all bytes were written
  - use of transmit_fifo_packet instead of transmit_packet
2020-04-29 11:32:22 +02:00
hathach 958b5510cb added comment for hw clearing TXFE 2020-04-27 13:17:47 +07:00
hathach e785b09118 TXFE is read only bit 2020-04-27 12:06:14 +07:00
hathach 8d18d6077b turn off TX FIFO Empty for EPIN if all bytes are written
fix dcd synopsys issue with usbnet #289
2020-04-26 22:14:59 +07:00
Jerzy Kasenberg b949ae596f synopsys: Reduce interrupt time for IN ZLP
For IN endpoints output FIFO is filled in interrupt, therefor before
endpoint is enabled, DIEPTSIZ is set with correct size of packet.
Then endpoint is enabled and FIFO empty interrupt is enabled.

This works fine except for the ZLP. Enabling FIFO empty interrupt
results in interrupt handler being called all the time because
there is nothing to put in the FIFO.
Eventually it ends when IN token is received and empty
packed is transmitted out.

This change does not enable FIFO empty interrupt for ZLP reducing
CPU load.
2020-04-24 17:38:30 +02:00
Jan Dümpelmann 551724498a Added support for STM32F1 Connectivity Line MCU
STM32F105 and STM32F107 are using the Synopsys IP
2020-04-22 17:39:53 +02:00
hathach 1f442c0a9a also add wakeup event 2020-04-18 23:48:36 +07:00
hathach fa71402e17 implement disconnection detection for stm32 synopsys
- disconnection is OTG INT session end bit
- add USE_SOF to disable 1ms interrupt on mcu which isn't used now by
the stack
- add suspend detection
2020-04-18 23:40:27 +07:00
hathach 6f9c256ad0
complete remove dcd_set_config(), fix unit test 2020-04-17 13:52:34 +07:00
hathach 50be9d7c3a
mass rename tud/dcd_irq_handler to tud/dcd_init_handler 2020-04-17 12:27:53 +07:00
Ha Thach 19e2eb66c0
Merge pull request #350 from hathach/synopsys-msp430-dcd-disconnect-connect
Synopsys msp430 dcd disconnect connect
2020-04-17 09:51:15 +07:00
hathach 4c74140b31
stm32 sysnopsys disconnect/connect 2020-04-16 20:20:20 +07:00
Nathan Conrad b0270f499b stm32fsdev: dynamic allocation of PMA. 2020-04-15 11:53:30 -04:00
Nathan Conrad 16f65890eb Merge branch 'master' into edpt_close 2020-04-14 10:22:03 -04:00
Nathan Conrad bbc59f1ceb stm32fsdev: add static assert for PMA size bigger than EP0 size. 2020-04-13 20:50:17 -04:00
Nathan Conrad f8e7487355 edpt_close: Updated based on feedback. 2020-04-13 09:51:46 -04:00
Nathan Conrad 0eeaccaf46 Skeleton, and initial stm32fsdev implementation (that leaks memory) 2020-04-12 21:27:27 -04:00
Ha Thach 04a06ec401
Merge branch 'master' into refactor-irqhandler 2020-04-11 15:49:34 +07:00
Nathan Conrad 5bd9d14fc1 stm32fsdev: set dcd_connect API definitions to strong, Modify documentation. 2020-04-10 10:26:41 -04:00
Nathan Conrad 715c4dbbf8 stm32fsdev: Implement dcd_connect. 2020-04-09 17:03:12 -04:00
hathach 8f17945b67 move irq for stm32 synopsys 2020-04-08 16:37:09 +07:00
hathach 9014ca5528 move irq for stm32 fsdev 2020-04-08 16:26:14 +07:00
Nathan Conrad eaf767b0db STM32FSDEV: Rewrite transfer ISR 2020-03-22 14:26:48 -04:00
hathach e0cdab5bf7 fix stm32 fsdev epdesc 2020-03-08 16:28:21 +07:00
hathach 94e70f9b01 Merge branch 'master' into port-samg55 2019-12-21 23:53:48 +07:00
Ha Thach 7a05b177a4
Merge pull request #236 from jeremyherbert/master
Update dcd_stm32_fsdev.c with note about F042Fx remapping
2019-12-12 10:17:40 +07:00
Jeremy Herbert 9d96b6d66e
Update dcd_stm32_fsdev.c
Add a note about pin remapping for the STM32F042Fx
2019-12-12 09:40:06 +10:00
hathach 96a9eca6a0 move VBUS sense out of dcd_synosys to bsp 2019-12-11 14:03:36 +07:00
hathach 75a2157715 fix samd using TUSB_REQ_SET_ADDRESS in dcd_edpt0_status_complete 2019-12-09 23:20:21 +07:00
hathach 988edce745 fix build 2019-12-09 18:49:38 +07:00
hathach d7558e8a0f use dcd_edpt0_status_complete() to set address without blocking for samd21/samd51/stm32_fsdev 2019-11-28 13:39:29 +07:00
hathach 6bc245cb36 add dcd_edpt0_status_complete() which is useful for several mcu port 2019-11-28 11:46:36 +07:00
hathach 820a3705f5
Merge branch 'master' into develop 2019-10-02 12:13:47 +07:00
hathach 0673be7724 ported stm32f1, tested with f103 blue pill 2019-10-02 12:01:34 +07:00
Nathan Conrad 1e193212d7 Add testcase for EP0 stall recovery to USBTMC test script. 2019-10-02 00:31:47 -04:00
Nathan Conrad e5f38e3e86 Remove references to EP kind. 2019-10-02 00:11:16 -04:00
Nathan Conrad 838cfe02c1 Merge remote-tracking branch 'origin/master' into ST_FSDEV_EP0 2019-10-02 00:09:07 -04:00
hathach 6183dbd0ce add -Wextra for more warnings to example
non-stack warning (probably mcu driver) should be suppressed in the
board.mk
2019-09-27 00:15:43 +07:00
Nathan Conrad f19082f02d Reset TX and RX endpoints to NAK when receiving setup packet. 2019-09-25 20:55:15 -04:00
Nathan Conrad 048e0448c0 ST FSDEV:Remove setting the EP kind, as I think it was causing issues during enumeration (sometimes). Also move a membar. 2019-09-25 20:54:59 -04:00
hathach 7ba8e81852
Merge pull request #177 from cr1901/fifo-fix
dcd_synopsys: Fix off-by-one error in FIFO allocation.
2019-09-22 11:38:54 +07:00
William D. Jones 108f756e22 dcd_synopsys: Fix off-by-one error in FIFO allocation. 2019-09-21 23:01:06 -04:00
Nathan Conrad ce9f133d25 FSDEV: go to NAK when unstalling; on reset, set EP0 to NAK, prioritize reset interrupt, fix small typos. 2019-09-21 12:00:04 -04:00
hathach 94c9cf0eff doc update 2019-09-20 16:14:35 +07:00
hathach 7b2f8cc73a added stm32 L0 support
close #125
2019-09-20 13:49:33 +07:00
Nathan Conrad 525b4cdb72 Use ESOF for wakeup timing. 2019-09-19 09:51:40 -04:00
Nathan Conrad 642afeea8b s/static const/define/ 2019-09-19 09:30:16 -04:00
Nathan Conrad 85623584f9 Remove debug assertions. 2019-09-19 09:24:52 -04:00
Nathan Conrad 89ffe78f84 ST FSDEV: No need to always reset the interrupt priority, also add some synchronization primitives after disabling interrupts. 2019-09-16 22:56:17 -04:00
Nathan Conrad a33a854793 Include board header file... :X 2019-09-16 20:56:57 -04:00
Nathan Conrad d341337c6a Implement remote wakeup + perhaps better sleep? 2019-09-16 20:25:50 -04:00
Nathan Conrad 6b9783cead s/unsigned int/uint32_t/ 2019-09-16 09:20:15 -04:00
Nathan Conrad 05c13342a3 Implement EP with size <64. 2019-09-15 23:51:42 -04:00
Nathan Conrad 18303e742e Covert macros to inline functions. 2019-09-15 23:46:03 -04:00
Nathan Conrad ae873a709e Wrote TX instead of RX. 2019-09-15 23:33:36 -04:00
Nathan Conrad 4ea212a432 This demonstrates that I don't pre-build things before committing them... oops. 2019-09-13 23:52:43 -04:00
Nathan Conrad c831311a12 Off-by-one error in Synopsys assertions. (and move some braces to their own lines. 2019-09-13 23:38:58 -04:00
hathach 986beda9eb adding stm32l4 support, board test run with stm32l476disco, usb doens't work yet 2019-09-13 11:22:44 +07:00
hathach ff7261600c ported stm32f2, added board stm32f207zg nucleo
close #127
2019-09-12 10:41:03 +07:00
Nathan Conrad d3507b0787 Merge remote-tracking branch 'origin/master' into stfsdev_cleanups 2019-09-11 20:36:48 -04:00
Nathan Conrad 3326b9d008 Use types with explicit bit widths. 2019-09-11 20:33:47 -04:00
hathach 7f166d860d stm32f7 work with dcd synopsis
close #124
2019-09-11 22:48:07 +07:00
Nathan Conrad 7b93177890 Use TU_VERIFY_STATIC, use more uint instead of uint8_t/uint16_t. Create reg16_clear_bits function to reduce typec conversion warnings. 2019-09-11 09:45:48 -04:00
Nathan Conrad 784dc52b62 Update header comments. 2019-09-11 09:44:25 -04:00
Nathan Conrad 4cf2b30759 Fix bug where the EPREGs were not being initialized as expected. 2019-09-11 09:43:57 -04:00
hathach 678ba586df
Merge pull request #122 from cr1901/synopsys
Synopsys Refactor
2019-09-11 10:37:49 +07:00
Nathan Conrad 4f6bedeac9 Rename the STM32 MCU options. 2019-09-10 12:57:43 -04:00
Nathan Conrad 23d39f2b15 Remove OPT_MCU_STM for L and G series. 2019-09-10 12:13:36 -04:00
Nathan Conrad 65e72de7ce Move interrupt handler into device driver, and rename the OPT_MCU_STM32 constants. 2019-09-10 09:35:52 -04:00
Nathan Conrad 49c58be4ce Fix silly typo in the F3xx support. 2019-09-10 01:31:14 -04:00
Nathan Conrad bc2a65b20b A few bug fixes, remove the unstested device notices, note supported boards in READMEs, and implement PMA
access stride (used on MCU's with 512 byte USB buffers).
2019-09-10 01:03:24 -04:00
Nathan Conrad f7b0aeec52 Start clock on F0 and F0, and handle USB interrupts. 2019-09-09 19:20:26 -04:00
Nathan Conrad d1976a30b3 Update F3 BSP and create F070RB BSP. Both are untested (but compile). 2019-09-09 16:14:38 -04:00
Nathan Conrad 5ec59c2a30 Add STM32 FSDEV driver. 2019-09-09 14:55:39 -04:00
Nathan Conrad b4c8a09f20 Remove STM32 F3 port. 2019-09-09 13:29:26 -04:00
William D. Jones 1385d7c494 stm32: Refactor so F4 and H7 use a single Synopsys IP source file. 2019-09-09 10:48:14 -04:00
William D. Jones 82cd4b5350 dcd_stm32f4: Merge relevant changes from dcd_stm32h7. 2019-09-09 10:27:46 -04:00
William D. Jones 3efc81b285 dcd_stm32h7: Merge relevant changes from dcd_stm32f4. USB2 -> USB works as alias. 2019-09-09 10:14:20 -04:00
hathach e123cad7bb enhance dcd stm32f4 to support max 4 or 6 endpoints on 407 or 412 2019-09-08 23:10:51 +07:00
hathach 4663f9084d ported board stm32f412g discovery
- added soft connect for enable pull up register dcd stm32f4
2019-09-08 21:57:02 +07:00
hathach 56f1ccd68a fix #97 2019-09-05 21:59:19 +07:00
William D. Jones 8f8ca77a91 stm32h7: Mark USB FIFOs as volatile, otherwise optimizations will remove
reads/writes to the FIFOs.
2019-09-04 01:06:07 -04:00
William D. Jones 910fd867c7 stm32h7: Fix indentation error where OUT XFER interrupt wasn't handled
in the correct scope.
2019-09-03 01:37:44 -04:00
William D. Jones 1a3dc9cba1 stm32h7: USB_OTG_FS -> USB2_OTG_FS. 2019-09-03 01:28:41 -04:00
William D. Jones f703a74daa stm32h7: Implement STALL logic for endpoints. 2019-09-03 01:28:41 -04:00
William D. Jones 28b131ea94 stm32h7: Implement dcd_edpt_open. cdc_msc_hid demo functional. 2019-09-03 00:37:50 -04:00
William D. Jones d4302dacc5 stm32h7: Fix accidental overwrite of STUPCNT field in DOEPTSIZ register. 2019-09-03 00:25:21 -04:00
William D. Jones 9210167603 stm32h7: Implement dcd_set_address. 2019-09-02 21:00:30 -04:00
William D. Jones 0d0b802ee0 stm32h7: Implement IN and OUT receive for EP0; device descriptor returned. 2019-09-02 19:32:11 -04:00
William D. Jones f602534536 stm32h7: Implement setup packet events. 2019-09-02 13:34:33 -04:00
William D. Jones 8b165e1024 stm32h7: Ensure FS (and the only) PHY is selected for OTG_HS2. 2019-08-30 22:07:35 -04:00
William D. Jones 7153561984 stm32h7: Enable USB peripheral (device does not enumerate yet). 2019-08-30 21:57:06 -04:00
William D. Jones 0fb9ab9a09 stm32h7: Add empty template cdc_msc_hid example for STM32H743 Nucleo board that compiles. 2019-08-24 12:40:18 -04:00
hathach ed6fa460e9 stm32 minor change 2019-07-19 10:59:35 +07:00
hathach 73d7ab201e
remove dcd_edpt_busy() 2019-06-10 22:29:18 +07:00
hathach 13e01c7dca
add TU_ prefix to compiler ATTR to prevent name conflict with application 2019-06-06 10:39:37 +07:00
hathach 61ec407752
update license year to 2019 2019-05-14 11:48:05 +07:00
hathach b28cc6ddb1 added dcd_remote_wakeup() stub for all ports 2019-03-30 14:47:11 +07:00
hathach 1c2beba85c working on suspend and resume
change dcd_init signature
2019-03-29 16:23:00 +07:00
hathach 1e9848d917
replace dcd_edpt_(clear)stall by usbd_edpt_(clear)stall
- remove dcd_edpt_stalled() from dcd porting
2019-03-27 16:09:49 +07:00
hathach 4722376654 remove dcd_get_frame_number() 2019-03-27 01:01:48 +07:00
hathach 43eb1a8b16
added stub for dcd_stm32f3 2019-03-22 23:57:56 +07:00
hathach ba1bea5d53
simplify board API, adding stm32f3 discovery
- remove board header since it is not used
2019-03-22 22:06:48 +07:00
hathach c211ee19dd migrate license from BSD 3 clause to MIT 2019-03-20 16:11:42 +07:00
hathach f932cf3854 stm32 update fifo in comment 2019-03-17 15:16:52 +07:00
hathach 5e92d67015 stm32 update TX Fifo for edpt IN, both CDC + MSC work great
- call dcd_event_xfer_complete() when enough bytes received
- add dcd_get_frame_number()
2019-03-15 18:43:09 +07:00
hathach eda56769b9 dcd_set_address include status response, usbd control stall both control in and out 2019-03-13 23:14:48 +07:00
hathach 195a44172a update stm32 dcd stall control endpoint 2019-03-13 16:54:10 +07:00
William D. Jones c95ad426c6 stm32f4: Refactor IN and OUT endpoint interrupt handling into their own functions. 2019-02-27 11:01:08 -05:00
William D. Jones f43161353c stm32f4: Refactor RX FIFO read into its own function; remove RXFLVL
resetting (read only) and masking (no nested ints).
2019-02-27 10:39:37 -05:00
William D. Jones c51b11f103 Move all paths using "stm" to "st" subdirectories, update config.mk. 2019-02-27 09:15:07 -05:00