Commit Graph

3686 Commits

Author SHA1 Message Date
hathach d41248900b Merge branch 'uac2' of https://github.com/PanRe/tinyusb into PanRe-uac2 2020-10-06 22:32:22 +07:00
Jean Gressmann 1730a5dcba D5035-01 bsp: fix paths, default to hw rev 1 (automated build) 2020-10-05 20:30:04 +02:00
Jean Gressmann 862f6ac81e Update Microchip submodule commit 2020-10-05 20:17:27 +02:00
Ha Thach 0686bd9369
Merge pull request #516 from PanRe/tusb_fifo_unmaksed_pointers
Tusb fifo unmaksed pointers
2020-10-06 00:01:51 +07:00
Jean Gressmann 61aacf07d6 Adds files for the open source D5035-01 hardware
The board's files are here:

	https://github.com/RudolphRiedel/USB_CAN-FD
2020-10-05 18:35:35 +02:00
Niklas Hauser 788dcc200d Change CFG_TUSB_CONFIG_FILE mechanism to improve header file scanning 2020-10-03 20:17:53 +02:00
Niklas Hauser e41d9202b8 Allow overwriting TU_ASSERT etc macros 2020-10-03 20:17:53 +02:00
Niklas Hauser 51fb659533 Use tu_printf instead of printf 2020-10-03 20:17:53 +02:00
Niklas Hauser 78477077b4 Use C++11 static_assert when available 2020-10-03 20:17:36 +02:00
Reinhard Panhuber 2050dc0dc7 Revert #define CFG_TUSB_DEBUG 2 to #define CFG_TUSB_DEBUG 0
Change 1 << 31 to 0x100000000 in audio.h
2020-10-03 09:46:22 +02:00
Zachery Littell 081af79009 fix simple pull request comments. Implement descriptor index hack. 2020-10-02 16:02:00 -05:00
Ha Thach 9c4aceaaa8
Merge pull request #518 from kasjer/kasjer/nrf5x-iso-support
nrf5x iso support
2020-10-02 21:17:24 +07:00
Zachery Littell 34775d909d Add pipeline task for example 2020-10-01 13:37:54 -05:00
Zachery Littell e21ab8d4a9 create hid multiple interface example 2020-10-01 13:15:37 -05:00
Zachery Littell b7208d6f7e add index to report descriptor callback. this is breaking and needs to be reviewed 2020-10-01 12:51:48 -05:00
Zachery Littell 849681724a create N functions and inlines for multi hid interfaces 2020-10-01 11:51:33 -05:00
Reinhard Panhuber 603ce17696 Change AUDIO_CS_INTERFACE_HEADER to AUDIO_CS_AC_INTERFACE_HEADER 2020-10-01 17:49:30 +02:00
Jerzy Kasenberg 96da1ca4b8 nrf5x: Add support for ISO endpoints
ISO endpoints were not covered so far by the driver code.
This adds support for ISO IN and OUT endpoint handling.
Registers for ISO IN(OUT) endpoints are placed just after normal IN(OUT)
so in some cases common code could be used for handling all type of
transfers.
Generally code synchronizes ISO endpoint handling to SOF interrupt.
This code does not change the way of how non-ISO endpoints are treated.

Code uses strategy outlined in nRF52840 Produce Specification v1.0
sections 6.35.11.1 and 6.35.11.2.
2020-10-01 09:22:55 +02:00
Jerzy Kasenberg 6f5ee09511 nrf5x: Increase size of mps to 16 bits
msp stores max packet size.
For ISO endpoints 8 bits is not enough so it's changed to 16 bits.
2020-10-01 09:22:55 +02:00
Jerzy Kasenberg fceb8853c7 nrf5x: Add dcd_edpt_close
Closing endpoints can be important when there are alternate
instances. This adds functionality of closing endpoints
similar to what exists in other drivers.
2020-10-01 09:22:55 +02:00
Jerzy Kasenberg b2ce7a39b0 device: Make number of endpoints configurable
Currently number of endpoints was hard coded to 8.
NRF52 has 9 IN and 9 OUT endpoints.
ISO endpoints are 0x08 and 0x88 and without this change those
two ISO endpoint could not be used.
2020-10-01 09:22:49 +02:00
Reinhard Panhuber 13a9cbde79 Change AUDIO_FUNC_PROTOCOL_CODE_UNDEF for midi in usbd.h 2020-09-29 23:30:35 +02:00
Reinhard Panhuber da1c3c226b Change AUDIO_PROTOCOL_V1 to AUDIO_FUNC_PROTOCOL_CODE_UNDEF in midi.c.
The USB specification does not define any AUDIO_PROTOCOL_V1!
2020-09-28 22:44:09 +02:00
Reinhard Panhuber 9c837300f1 Fix minor issue.
- Change set_EP0_max_pkt_size() to set_EP0_max_pkt_size(void).
2020-09-28 19:23:38 +02:00
Reinhard Panhuber 529622710c Cleanup for PR. 2020-09-28 18:10:57 +02:00
Reinhard Panhuber 142871654e Merge remote-tracking branch 'upstream/master' into uac2 2020-09-28 18:08:39 +02:00
PanRe 2196b0724f
Merge pull request #2 from kasjer/kasjer/uac2
UAC2 pre-master
2020-09-28 14:23:58 +02:00
Jerzy Kasenberg f55437d889 audio: Add descriptor for mono speaker
This provides descriptor for mono speaker with
explicit feedback.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 642a8b00c8 synopsys: Fix odd/even frame handling for ISO
Current implementation always sets odd/even bit for ISO transactions.
This is a good strategy only if interval is 1.
For ISO endpoint interval in (micro)frames is computed as
2^(interval-1), which means that odd/frame number should stay
same for interval values > 1.
With this change only when interval is 1 odd/even bit is modified.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 2ace98e943 audio_device: Update explicit feedback support
Feedback can be specified by the user code and will be
sent at feedback endpoint specified interval.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 6b52330969 synopsys: Remove compilation warning in dcd_edpt_close
dcd_edpt_close() no longer modifies FIFO distribution.
Code that that was commented out is removed along with
variables that are no longer used.
FIFO distribution among endpoints is handled upfront
and does not need to be modified in open and close endpoint
functions.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 759d530506 audio_device: Allow one FIFO for N channels
This allow to build with single FIFO for devices with multiple channels.
Having just one FIFO greatly reduces time needed to feed endpoint.

This change also allows to have one FIFO with 24 bit samples that
is not rounded up to 32 bit elements.
CFG_TUD_AUDIO_RX_ITEMSIZE and CFG_TUD_AUDIO_TX_ITEMSIZE can be manually
defined. This allows to use FIFO more efficiently when 24 bits samples
are already using 3 bytes, in this case there is no need to put them
into FIFO one by one.
For 8, 16, 32 bits samples size efficient FIFO access is always used
when single FIFO is selected.

This also changes FIFO element size to 1, FIFO usage was confusing
in some place it treated content as byte base in other it looked like
ITEM size is to be used. Also bufsize that in most (maybe all) cases
was really meaning item count.
bufsize now mean buffer size in bytes so there is no confusion.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 28cf63c7db audio_device: Fix tud_audio_n_read_flush TU_VERIFY usage
void function used TU_VERIFY in a way that returned bool value.
It would not compile.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg ca4a42156c audio_device: Fix audio_rx_done_type_I_pcm_ff_cb bufor size check
Function was not checking buffer size correctly due missing parenthesis.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 66b091282f audio_device: Fix audio_rx_done_type_I_pcm_ff_cb prototype
Function prototype did not have return type specified by mistake.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg e67fc808aa audio_device: Store rhport in interface data
Some API uses interface number as argument, some wants to have
rhport.
To accommodate need of rhport for functions that don't have it
rhport can be extracted from interface data.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg f4a44ee063 audio: Update ISO endpoint attributes
Explicit feedback attribute was missing.
No synchronization now also has definition.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 5ad2f8efc6 audio_device: Fix inline function specifiers
Having just inline keyword for function specified in header
may not be enough to generate code for function.

Adding static solves this problem.
static inline is used in all other inline functions in TinyUSB.
2020-09-28 08:41:17 +02:00
Jerzy Kasenberg 6f3d0af1e6 synopsys: Fix fifo allocation schema
Recommended FIFO allocation schema includes 2 maximum endpoint sizes.
Comment suggested that this is the case while it would work according
to this description only in checked endpoints were ascending sizes.
Also two same size endpoints would be counted as one.
That is fixed by way sz is filled.

Calculation used too much modulo operation while single division was enough
to account for odd FIFO sizes.

Extra space that is evenly distributed between Bulk and control endpoints
was incorrectly calculated it could prevent allocation of ISO endpoint FIFO
when bulk endpoints existed with smaller endpoint numbers.

Minimum endpoint FIFO size is 16 32bit words, FIFO space requirement is
now observed.
2020-09-28 08:41:17 +02:00
Reinhard Panhuber 8dcb104933 Change modulo substitute to while ( idx >= depth) idx -= depth; 2020-09-26 11:00:31 +02:00
Reinhard Panhuber 9ddcfc09d7 Fix wrong comments, rename pos to offset, rename overflow(). 2020-09-25 15:58:28 +02:00
Reinhard Panhuber 52c9a467b4 Fix bug in modulo substitute. 2020-09-23 21:36:30 +02:00
Reinhard Panhuber 9bdeafb295 Change maximum depth to 2^15 which allows for a fast modulo substitute.
Thus, however, overflows are detectable only for one time FIFO depth.
2020-09-23 20:48:03 +02:00
Ha Thach 8b2c822557
Merge pull request #512 from mzero/fix-midi-sysex
Fix a bug in writing SysEx messages.
2020-09-23 11:23:53 +07:00
Reinhard Panhuber 21299f90fa Final cleanup. 2020-09-19 11:46:43 +02:00
Reinhard Panhuber 9dfb78e9d8 Tested, working. 2020-09-15 20:40:41 +02:00
Ha Thach 9a0a78c52e
Merge pull request #514 from kasjer/kasjer/fix-nrf52-edpt_dma_start
nrf52: Fix edpt_dma_start() wrong condition check
2020-09-16 00:43:21 +07:00
Jerzy Kasenberg 62a76c0e04 nrf52: Fix edpt_dma_start() wrong condition check
Operator < used in while condition was obviously incorrect.
Loop starts with checking if unsigned variable is less then 0.
This condition is always false.

This reverses condition to follow intention of of the code.
2020-09-15 16:08:23 +02:00
Ha Thach 745c15d5b5
Merge pull request #508 from hathach/fix-edpt-race
Fix edpt xfer race condition
2020-09-14 23:56:21 +07:00
Reinhard Panhuber 349c0f640e Implementation done, yet to be tested. 2020-09-14 18:24:08 +02:00