Commit graph

27 commits

Author SHA1 Message Date
Michael Sevakis
cd8e11b463 Tweak some PCM drivers for less typecasting with the data pointer.
Yeah, sizeof (void) here with GCC is 1. If something has a problem
with that, we'll set it straight.

Change-Id: I9ad3eee75dd440f6404a04a501d1533c8bc18ba9
2012-03-04 08:52:50 -05:00
Michael Sevakis
286a4c5caa Revise the PCM callback system after adding multichannel audio.
Additional status callback is added to pcm_play/rec_data instead of
using a special function to set it. Status includes DMA error
reporting to the status callback. Playback and recording callback
become more alike except playback uses "const void **addr" (because
the data should not be altered) and recording  uses "void **addr".
"const" is put in place throughout where appropriate.

Most changes are fairly trivial. One that should be checked in
particular because it isn't so much is telechips, if anyone cares to
bother. PP5002 is not so trivial either but that tested as working.

Change-Id: I4928d69b3b3be7fb93e259f81635232df9bd1df2
Reviewed-on: http://gerrit.rockbox.org/166
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2012-03-03 07:23:38 +01:00
Michael Sevakis
09769827fe Swap red and yellow for green on r31339's cranky builds.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31340 a1c6a512-1295-4272-9138-f99709370657
2011-12-17 07:54:00 +00:00
Michael Sevakis
4db3e89652 Shuffle some functions around so that interfacing with playback.c in particular isn't required. Though playback does finish the audio init, pcm doesn't care who does it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30403 a1c6a512-1295-4272-9138-f99709370657
2011-09-01 12:15:43 +00:00
Michael Sevakis
a2b6703a36 Commit FS#12150 - Fully-functional audio mixer - and finally whip old limitations about playback of voice and other sounds when paused. Channels are independent in state and amplitude. Fade on stop/pause is handled by the channel's volume control rather than global volume which means it now works from anywhere. Opens up the possibility of plugin sounds during music playback by merely adding an additional channel enum. If any PCM drivers were not properly modified, see one of the last comments in the task for a description of the simple change that is expected. Some params are tunable in firmware/export/pcm-mixer.h as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30097 a1c6a512-1295-4272-9138-f99709370657
2011-06-29 06:37:04 +00:00
Andree Buschmann
ba64cf697e Move pcm doublebuffer to IRAM on nano 2G.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28600 a1c6a512-1295-4272-9138-f99709370657
2010-11-14 19:49:20 +00:00
Michael Sparmann
b491421c5a iPod Nano 2G: Fix I2S clocking. All sampling rates should work now.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28581 a1c6a512-1295-4272-9138-f99709370657
2010-11-14 04:46:38 +00:00
Michael Sparmann
23fd886c4f iPod Nano 2G: Finally FIQ-less and glitch-free PCM. This should allow for IRQ latencies high enough to allow re-locking PLLs and changing and stabilizing Vcore when switching CPU frequency.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28580 a1c6a512-1295-4272-9138-f99709370657
2010-11-13 21:08:15 +00:00
Bertrik Sikken
446445e916 ipod nano 2g: make functions/variables static where possible, add missing #includes
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27752 a1c6a512-1295-4272-9138-f99709370657
2010-08-08 10:49:32 +00:00
Michael Sparmann
f2e048493e Remove an unneccessary long call from the S5L8700 PCM FIQ handler
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26781 a1c6a512-1295-4272-9138-f99709370657
2010-06-11 16:20:46 +00:00
Michael Sevakis
9a2b1d612c s5l8700 PCM: Always call dma_callback. (fix r26253 remnants)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26775 a1c6a512-1295-4272-9138-f99709370657
2010-06-11 13:11:00 +00:00
Michael Sevakis
d56999890f Make PCM->driver interface about as simple as it will get. Registered callback, zero data, alignment and stops are handled entirely inside pcm.c; driver merely calls fixed pcm.c callback. Remove pcm_record_more and do it just like playback; the original reason behind it isn't very practical in general. Everything checks out on supported targets. There wer some compat changes I can't check out on many unsupoorted but if there's a problem it will be a minor oops. Plugins become incompatible due to recording tweak-- full update. Sorted API.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26253 a1c6a512-1295-4272-9138-f99709370657
2010-05-24 16:42:32 +00:00
Michael Sevakis
4d04132c76 PCM bottom layer simplification. pcm_rec_peak_addr variable no longer has to be handled there. Driver can just return current pointer for recording peaks. A new define, HAVE_PCM_REC_DMA_ADDRESS, specifies that physical addresses are being used for recording and translation is needed before starting a new block. The drivers need not worry about aligning start and size nor should care if either will be zero. All this will be checked in the logical layer first.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25970 a1c6a512-1295-4272-9138-f99709370657
2010-05-12 14:05:36 +00:00
Rafaël Carré
f830fa79e5 s5l870x / ipod nano2g: include common mmu-arm.h
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25635 a1c6a512-1295-4272-9138-f99709370657
2010-04-13 16:05:11 +00:00
Michael Sparmann
3d7983e5c7 Fix iPod Nano 2G channel swapping issues
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24589 a1c6a512-1295-4272-9138-f99709370657
2010-02-10 21:20:51 +00:00
Andrew Mahone
5e9282829a Label dma_callback in pcm-s5l8700.c as used so that gcc won't discard it, and cause a link failure on eabi.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24487 a1c6a512-1295-4272-9138-f99709370657
2010-02-03 16:36:55 +00:00
Bertrik Sikken
69b7dab5f0 pcm-s5l8700: add missing header file, remove out-of-date comment
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23612 a1c6a512-1295-4272-9138-f99709370657
2009-11-11 20:30:53 +00:00
Michael Sparmann
91d982a1b6 Fix mpegplayer on S5L870x
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23587 a1c6a512-1295-4272-9138-f99709370657
2009-11-09 15:50:13 +00:00
Michael Sparmann
4e617332ff Hide yellow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23327 a1c6a512-1295-4272-9138-f99709370657
2009-10-24 00:05:13 +00:00
Michael Sparmann
16a956c4f3 Finally a click, pop and other distortion free PCM driver for that fishy bufferless S5L870x I2S controller.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23324 a1c6a512-1295-4272-9138-f99709370657
2009-10-23 23:47:38 +00:00
Michael Sparmann
7bff585d83 iPod Nano 2G: "Fix" the latest PCM issues, channel swap and vinyl popping. The latter is a revert of the cache coherency patch for now, we need to find a better solution in the long term...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23308 a1c6a512-1295-4272-9138-f99709370657
2009-10-21 18:52:09 +00:00
Michael Sparmann
bde0231803 Add dcache cleaning to the S5L870x PCM driver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23240 a1c6a512-1295-4272-9138-f99709370657
2009-10-17 23:08:51 +00:00
Michael Sparmann
7a5904cf1c S5L870x: Implement pcm_play_dma_get_peak_buffer
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23129 a1c6a512-1295-4272-9138-f99709370657
2009-10-12 11:58:36 +00:00
Michael Sparmann
c1c86d89c3 Make iPod Nano 2G audio work
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22954 a1c6a512-1295-4272-9138-f99709370657
2009-10-05 12:29:21 +00:00
Dave Chapman
5b3f333dd7 Correct the memory sizes (IRAM and DRAM) for the Nano2G.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22025 a1c6a512-1295-4272-9138-f99709370657
2009-07-25 00:49:13 +00:00
Bertrik Sikken
17b8805b49 S5L8700: fix off-by-one error in kernel timer and fix incorrect interrupt mask in pcm driver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21950 a1c6a512-1295-4272-9138-f99709370657
2009-07-18 11:54:01 +00:00
Bertrik Sikken
9b1c774218 S5L8700: initial framework for PCM (using DMA transfers)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21656 a1c6a512-1295-4272-9138-f99709370657
2009-07-05 13:41:16 +00:00