rockbox/firmware/drivers
Dana Conrad 9ce66e088e Add USB Audio 1.0 support
Original commit credit to Amaury Pouly, Moshe Piekarski
Pushed across the finish line by Dana Conrad

To enable, see setting under General Settings --> System --> USB-DAC.
On devices with few endpoints, this may not work while HID and/or
mass storage is enabled.

Adds new dedicated mixer channel.

setting usb-dac can have values:
- never (0)
- always (1)
- while_charge_only (2)
- while_mass_storage (3)

Relevant devices are DWC2 and ARC usb controller devices. That being:
x1000 Native targets (m3k, erosqnative, q1, others...?),
sansac200, creativezenxfi2, vibe500, ipodmini2g,
ipod4g, creativezenxfi, creativezenxfi3, sansaview, ipodcolor,
creativezenxfistyle, samsungypz5, sansafuzeplus, iriverh10_5gb,
tatungtpj1022, gigabeats, faketarget, samsungyh820, gogearhdd1630, samsungyh925, ipodmini1g, ipodvideo, creativezenmozaic, sonynwze370, creativezen, gogearsa9200, gogearhdd6330, sonynwze360, sansae200, mrobe100, iriverh10, creativezenv, ipodnano1g, samsungyh920

USB Driver-wise, it should be noted that this patch requires some
slight changes:
- proper blocking on control OUT transfers, to make sure the data is
  received *before* using it, the usb_core should probably use that too
- drivers can now support interface alternate settings
- drivers can be notified of completion by a new fast handler, which
  is called directly from the driver; this is is necessary for
  isochronous transfers because going through the usb queue is way too
  slow

Designware changes:

- enable for USBOTG_DESIGNWARE
- set maxpacketsize to 1023 for ISO endpoints

Change-Id: I570871884a4e4820b4312b203b07701f06ecacc6
2025-11-15 07:30:15 -05:00
..
audio 3ds: 3ds port sources. Second set of two. 2025-10-23 20:09:12 -04:00
libertas Sansa Connect: Initial libertas WiFi driver port 2021-07-04 07:41:44 +00:00
rtc misc: Fix up more gcc9 warnings 2025-09-21 09:03:00 -04:00
tuner Remove NVRAM infavor of a separate cfg file 2025-01-21 00:04:32 -05:00
adc-as3514.c AMS: Return ascodec to interrupt-based I2C2 driver 2017-01-25 00:05:13 +01:00
ata-common.c storage: Misc corrections and cleanups 2024-11-26 08:37:55 -05:00
ata.c ipod: Turn on SMART support for all PP502x-based iPods 2025-09-16 10:59:57 -04:00
axp-2101.c erosqnative: hw4 units prefer egauge battery percentage 2025-01-19 17:30:21 -05:00
axp-pmu.c erosqnative hw1/hw2: Check for DAC in bootloader 2024-12-06 11:39:24 -05:00
button.c build: Enforce -Wundef on all targets. 2025-10-12 16:12:56 -04:00
button_queue.c New port: Anbernic RG Nano 2025-07-29 21:01:53 -04:00
cw2015.c New port: Shanling Q1 native 2021-07-13 22:01:33 +01:00
eeprom_24cxx.c Various files: make function implementations consistent with their declaration in the header file or static if 2009-01-31 23:51:11 +00:00
ft6x06.c Shanling Q1: enable multi-touch reporting 2021-11-24 18:49:03 -05:00
generic_i2c.c Sansa Connect: Use deviceid in USB Serial Number 2021-07-10 08:56:32 +02:00
i2c-async.c Add asynchronous I2C bus API 2021-03-23 15:42:54 +00:00
isp1362.c Updated our source code header to explicitly mention that we are GPL v2 or 2008-06-28 18:10:04 +00:00
isp1583.c usb: introduce new control request API 2021-10-16 15:58:43 -04:00
lcd-1bit-vert.c Asan fix warning for 1-bit vert #2 2025-03-11 01:21:05 -04:00
lcd-2bit-horz.c lcd: Fix bug in grayscale clear_display() implementation 2022-10-12 07:58:57 -04:00
lcd-2bit-vert.c lcd: Fix bug in grayscale clear_display() implementation 2022-10-12 07:58:57 -04:00
lcd-2bit-vi.c lcd: Fix bug in grayscale clear_display() implementation 2022-10-12 07:58:57 -04:00
lcd-16bit-common.c Optimize 16 bit lcd_fillrect() 2024-12-21 18:19:38 -05:00
lcd-16bit-vert.c Sansa e200v2: bootloader: fit size 2024-04-01 11:02:04 -04:00
lcd-16bit.c arm: enable unified assembly syntax in more files 2025-04-18 10:26:02 -04:00
lcd-24bit.c Sansa e200v2: bootloader: fit size 2024-04-01 11:02:04 -04:00
lcd-bitmap-common.c unicode: Support characters beyond the first unicode plane 2025-09-12 09:24:30 -04:00
lcd-color-common.c Sansa e200v2: bootloader: fit size 2024-04-01 11:02:04 -04:00
lcd-memframe.c Revert "Remove YUV blitting functions and LCD modes" 2022-10-13 11:08:06 -04:00
lcd-remote-1bit-v.c lcd drivers: Convert lcd_[remote_]framebuffer to a pointer 2012-02-28 11:44:59 +11:00
lcd-remote-2bit-vi.c lcd drivers: Convert lcd_[remote_]framebuffer to a pointer 2012-02-28 11:44:59 +11:00
lcd-scroll.c [Bugfix] Scroll engine, backwards scrolling causes display corruption 2025-03-09 09:16:07 -04:00
led.c YH92x: Use the led near the lcd as the ATA led, instead of shine all the time. 2014-06-18 18:06:17 +00:00
m5636.c Updated our source code header to explicitly mention that we are GPL v2 or 2008-06-28 18:10:04 +00:00
m66591.c usb: introduce new control request API 2021-10-16 15:58:43 -04:00
nand_id.c Add cleaned-up xDuoo X3 support 2018-07-28 10:56:31 -04:00
pca9555.c Introduce HiFi E.T MA9 port. 2013-05-06 14:09:24 +04:00
pcf50605.c Ensure consistency between header file and implementation for iPod drivers, by #including the appropriate header file and #ifdef'fing out unused code 2008-07-16 11:02:14 +00:00
pcf50606.c tcc77x targets: various minor cleanups 2010-08-28 10:17:19 +00:00
pcf50635.c Commit FS#12352 by Stanislav Chizhik. Add support for the PCF50635. Enables detection of USB power sources. 2011-11-15 20:37:47 +00:00
qt1106.c Make the meizu m3 load from flash, so interrupts work. More work is needed to get the m6sl "working" again 2008-10-18 22:28:59 +00:00
ramdisk.c storage: Make ramdisk use the global SECTOR_SIZE definition 2024-11-04 21:10:51 -05:00
rds.c rds: make newly added function static 2022-03-16 11:54:26 -04:00
sd.c SD: Move sd_parse_csd() into common sdmmc code 2025-08-22 14:48:28 -04:00
serial.c serial: Add serial_tx_raw() function for sending raw bytes to the serial port 2025-01-20 08:17:48 -05:00
sw_i2c.c Updated our source code header to explicitly mention that we are GPL v2 or 2008-06-28 18:10:04 +00:00
synaptics-mep.c misc: Fix some compile warnings when logf is enabled 2024-11-12 08:11:18 -05:00
touchpad.c touch devices: Disable touch on softlock. 2013-09-05 20:02:07 +02:00
touchscreen.c Introducing Targets iBasso DX50 & iBasso DX90 2014-09-18 18:19:01 +02:00
tsc200x.c Touchscreen support for newer Cowon D2+ hardware revisions (using TSC200x touchscreen controller). 2009-10-15 20:13:29 +00:00
tsc2100.c TSC2100: Sample multiple times and provide an average to clean up touch detection. 2011-02-06 19:26:31 +00:00
usb-designware.c Add USB Audio 1.0 support 2025-11-15 07:30:15 -05:00