mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-10-10 08:03:04 -04:00
Implement the USB Audio Class DAC on the HiBy R1 and R3ProII, driven by the usb_audio setting from the scaffolding patch: the host plays audio over USB and the player's CS43131 renders it. The vendor kernel provides a UAC gadget function "uac_sa" whose char device /dev/uac_sa delivers the host's PCM: the isochronous OUT frames are converted to left-justified S16-in-S32 stereo and queued in a kernel ring, drained with a non-blocking read(). The data path lives in usb-dac-hiby.c -- a pump thread drains /dev/uac_sa into a small single-producer/single-consumer ring and the mixer callback hands that PCM to the codec through the normal ALSA output path. No resampling is needed because Rockbox clocks the codec at the host-negotiated rate. The DAC is built on the existing configfs gadget and binds the UDC like ADB, while usb_power_only keeps the USB thread out of the way. In charge mode it is a standalone self-bound gadget. In adb mode it is composed alongside adb on one gadget so the host gets a sound card and adb at once; uac_sa must be the first-linked function (audio interfaces 0-1) because the vendor function hard-codes its interface numbers. The pump is hardware-only, so usb-dac-hiby.c is excluded from simulator builds; the usb_audio_get_active() playback-interlock stub lives with the scaffolding. The R3ProII shares this hosted HiBy port and the same userspace gadget, and the data path is codec-agnostic, so nothing here is R1-specific. Only the R1 has been validated on-device. Co-Authored-By: Claude Opus 4.8 Change-Id: I64c57ede27f411a2c61d41a7e0fa127b51a7b5b9 |
||
|---|---|---|
| android | ||
| apps | ||
| backdrops | ||
| bootloader | ||
| docs | ||
| firmware | ||
| fonts | ||
| icons | ||
| lib | ||
| manual | ||
| packaging | ||
| tools | ||
| uisimulator | ||
| utils | ||
| wps | ||
| .gitattributes | ||
| .gitignore | ||
| .gitreview | ||
__________ __ ___.
Open \______ \ ____ ____ | | _\_ |__ _______ ___
Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
\/ \/ \/ \/ \/
Build Your Own Rockbox
1. Clone 'rockbox' from git (or extract a downloaded archive).
$ git clone git://git.rockbox.org/rockbox
or
$ tar xJf rockbox.tar.xz
2. Create a build directory, preferably in the same directory as the firmware/
and apps/ directories. This is where all generated files will be written.
$ cd rockbox
$ mkdir build
$ cd build
3. Make sure you have mips/m68k/arm-elf-gcc and siblings in the PATH. Make sure
that you have 'perl' in your PATH too. Your gcc cross compiler needs to be
a particular version depending on what player you are compiling for. These
can be generated using the rockboxdev.sh script in the /tools/ folder of the
source.
$ which arm-elf-eabi-gcc
$ which perl
4. In your build directory, run the 'tools/configure' script and enter what
target you want to build for and if you want a debug version or not (and a
few more questions). It'll prompt you. The debug version is for making a
gdb version out of it. It is only useful if you run gdb towards your target
Archos.
$ ../tools/configure
5. *ploink*. Now you have got a Makefile generated for you.
6. Run 'make' and soon the necessary pieces from the firmware and the apps
directories have been compiled, linked and scrambled for you.
$ make
$ make zip
7. unzip the rockbox.zip on your music player, reboot it and
*smile*.
If you want to build for more than one target, just create several build
directories and create a setup for each target:
$ mkdir build-fuzeplus
$ cd build-fuzeplus
$ ../tools/configure
$ mkdir build-xduoox3
$ cd build-xduoox3
$ ../tools/configure
Questions anyone? Ask on the mailing list or on IRC. We'll be happy to help you!