summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire/pcm-coldfire.c (follow)
Commit message (Collapse)AuthorAge
* Revise the PCM callback system after adding multichannel audio.Michael Sevakis2012-03-03
| | | | | | | | | | | | | | | | | | 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>
* Shuffle some functions around so that interfacing with playback.c in ↵Michael Sevakis2011-09-01
| | | | | | 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
* Commit FS#12150 - Fully-functional audio mixer - and finally whip old ↵Michael Sevakis2011-06-29
| | | | | | 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
* Coldfire: Fix the modification of IMR. Interrupts must be masked at the core ↵Michael Sevakis2011-06-17
| | | | | | level at at least the level of the interrupt being masked. Not following the datasheet and relying strictly on and/or_l causes unhandled 'Levelx' exceptions (showing itself quite often in PCM mixer work which more greatly stresses PCM lockout). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30009 a1c6a512-1295-4272-9138-f99709370657
* HD200 - Setup codec as I2S master and enable recordingMarcin Bukat2010-07-02
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27250 a1c6a512-1295-4272-9138-f99709370657
* Make PCM->driver interface about as simple as it will get. Registered ↵Michael Sevakis2010-05-24
| | | | | | 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
* PCM bottom layer simplification. pcm_rec_peak_addr variable no longer has to ↵Michael Sevakis2010-05-12
| | | | | | 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
* Add MPIO HD200 port - changed filesMarcin Bukat2010-04-26
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25724 a1c6a512-1295-4272-9138-f99709370657
* Remove experimental check which should only be there if all PCM drivers do ↵Michael Sevakis2009-02-13
| | | | | | it. It's incomplete anyway. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19999 a1c6a512-1295-4272-9138-f99709370657
* Give pcm-coldfire.c a much needed shakedown. Fixes FS#9378 - metronome ↵Michael Sevakis2009-02-12
| | | | | | freezes (works for me now on X5 and H120 after running it at 400bpm for an hour or so). The reason seems to have been DMA_INT in DCR should also be cleared when forcing a channel stop. Also fixes a dodgey keyclick without music playing that I was getting on H120. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19991 a1c6a512-1295-4272-9138-f99709370657
* Bring consistency to pcm implementation and samplerate handling. Less ↵Michael Sevakis2008-12-12
| | | | | | low-level duplication. A small test_sampr fix so it works on coldfire again. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19400 a1c6a512-1295-4272-9138-f99709370657
* Since several S/PDIF sources do not set the valnogood bit properly, ↵Jens Arnold2008-08-19
| | | | | | valnogood shouldn't be considered as an error. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18322 a1c6a512-1295-4272-9138-f99709370657
* Updated our source code header to explicitly mention that we are GPL v2 orDaniel Stenberg2008-06-28
| | | | | | | | | later. We still need to hunt down snippets used that are not. 1324 modified files... http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
* Another round of making local functions static and making sure that source ↵Bertrik Sikken2008-05-03
| | | | | | files are in sync with their header files. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17337 a1c6a512-1295-4272-9138-f99709370657
* Do core interrupt masking in a less general fashion and save some ↵Michael Sevakis2008-03-26
| | | | | | instructions to decrease size and speed things up a little bit. Small fix to a few places where interrupts would get enabled again where they shouldn't have been (context switching calls when disabled). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16811 a1c6a512-1295-4272-9138-f99709370657
* Sound on M3. yay!Jens Arnold2008-03-15
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16679 a1c6a512-1295-4272-9138-f99709370657
* More iAudio M3 work. Target build compiles, but same problem regarding ↵Jens Arnold2008-03-14
| | | | | | plugins as the simulator. Boots to the menu, but it can't be used yet because only main & remote Play button work. USB works. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16660 a1c6a512-1295-4272-9138-f99709370657
* Unify PCM interface just above the hardware driver level for all targets ↵Michael Sevakis2007-10-06
| | | | | | including the sims. Perform lockout of audio callback when changing states. Weird new playback or recording trouble? Check before and after this revision first though things seem quite sound. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15006 a1c6a512-1295-4272-9138-f99709370657
* Temporary fix for FS#7257 and FS#7261 - playback resumes while paused when ↵Robert Keevil2007-07-05
| | | | | | seeking git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13795 a1c6a512-1295-4272-9138-f99709370657
* Straighten out some audio path APIs and misc. audio stuff. Having recording ↵Michael Sevakis2007-06-08
| | | | | | is not a prerequisite to having input/output source selection which is probably most useful when adding a audio input features like FM to a new port without forcing recording to be implemented first. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13599 a1c6a512-1295-4272-9138-f99709370657
* Use bitmasks to define which inputs are available. Makes it easier to remove ↵Michael Sevakis2007-05-20
| | | | | | old assumptions of which are available. Inspired by e200 being unique in having FM Radio and Mic but no Line. Doesn't remove the assumption that Mic is available or that one of Mic and/or Line is available just to avoid excessive #ifdef'ing until needed. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13448 a1c6a512-1295-4272-9138-f99709370657
* always reset the pcm_paused flag when stopping playback. fixes FS #7187Marcoen Hirschberg2007-05-19
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13423 a1c6a512-1295-4272-9138-f99709370657
* H100 S/PDIF recording: Check and clear the correct interrupt bits when ↵Michael Sevakis2007-04-18
| | | | | | recording from digital in. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13198 a1c6a512-1295-4272-9138-f99709370657
* x5/M5: Finally get rid of filter selection aberrations when switching to ↵Michael Sevakis2007-03-14
| | | | | | 88.2kHz sampling rate which affected both the DAC and ADC. Turning off the DAC and ADC before changing the internal codec frequency seems to cure the remaining glitch of the filters not being correctly selected by the TLV320. Some FIFO reset changes that help keep it stable as well. Supporting 88.2KHz on iAudio has been a tricky ordeal. Also made sure to ok the HW tone controls on iRiver. :) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12757 a1c6a512-1295-4272-9138-f99709370657
* H100 Series: Fix FS#6810 - Distortion on Bass/Treble usage. Coldfire PCM ↵Michael Sevakis2007-03-13
| | | | | | needed a refinement in the init sequence for the UDA1380 after audio init changes. Apparently it doesn't like its registers altered before the Coldfire I2S is properly initialized. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12752 a1c6a512-1295-4272-9138-f99709370657
* Audio Init: Just can't stand that heirarchy. Add one level of abstraction. ↵Michael Sevakis2007-03-11
| | | | | | Might come in handy anyhow. Use sound.h instead of the conditional includes for audio hardware headers. If someone doesn't like that, yell at my evil twin. :) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12718 a1c6a512-1295-4272-9138-f99709370657
* Reenable aynchronous audio init stage. Really just single stage with ↵Michael Sevakis2007-03-11
| | | | | | aynchronous enabling of outputs. Keeps audio_init last so prior init steps can use the audiobuffer in any desired way. Audio will be fully initialized by the time the UI is entered. Playback of voice or audio will be delayed properly until audio hardware is ready. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12714 a1c6a512-1295-4272-9138-f99709370657
* Coldfire targets: Shuffle IRQ levels around to have all interaction between ↵Michael Sevakis2007-03-07
| | | | | | low level audio function calls and DMA be atomic. Make recording and playback independently startable and stoppable so one can be running and not interfere with the other. All tests I can do at the moment check out ok (play, record, play+record, FM radio on iRivers, S/PDIF on H120 (w/running optical on/off), and on-the-fly samplerate changes). Recording tested for well over an hour run and no problems. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12658 a1c6a512-1295-4272-9138-f99709370657
* More catching up on old work. Refine audio interface setup on Coldfire. Stop ↵Michael Sevakis2007-03-05
| | | | | | the funky glitching on the iAudio stuff when starting recording esp. at 88.2kHz. (probably due to the bidi interface). iRivers don't seem to care what you do. TLV320 still seems to have a little trouble selecting it's filters correctly for 88.2kHz or it could be some odd phasing effect. Get rid of the horrible reset parameter in pcm_apply_settings as it can decide for itself. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12618 a1c6a512-1295-4272-9138-f99709370657
* Bring up the M5 port to a working stage: Extended numerous explicit checks ↵Jens Arnold2007-03-05
| | | | | | for IAUDIO_X5 to also check for IAUDIO_M5, moved code around the target tree, added preliminary background for the sim. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12610 a1c6a512-1295-4272-9138-f99709370657
* Move the MPARK init to system_init()Linus Nielsen Feltzing2007-02-22
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12452 a1c6a512-1295-4272-9138-f99709370657
* Coldfire: More efficient and compact peaking code. Hope the build doesn't ↵Michael Sevakis2006-12-17
| | | | | | whine about strange asm constraints. GCC's ok with it here. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11786 a1c6a512-1295-4272-9138-f99709370657
* Coldfire: Put DMA1 priority back at level 7 as that seems to be the cause of ↵Michael Sevakis2006-12-12
| | | | | | the stopping during record. Make DMA1 start as it did previously. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11729 a1c6a512-1295-4272-9138-f99709370657
* first step in audio driver unification: renaming the functions to audio_* ↵Marcoen Hirschberg2006-12-06
| | | | | | (missed this one) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11672 a1c6a512-1295-4272-9138-f99709370657
* first step in audio driver unification: renaming the functions to audio_*Marcoen Hirschberg2006-12-06
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11670 a1c6a512-1295-4272-9138-f99709370657
* Small change to PCM recording API for low latency effects. Latency can be as ↵Michael Sevakis2006-12-06
| | | | | | low as 14 samples from input to output including the FIFOs (ColdFire) but 16 is more reasonable an expectation if only tranferring one sample per interrupt (\!). May convert PCM playback to use the same method as it can still be used in the old manner with some slight mods but has the potential to enable new features since it is more flexible. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11668 a1c6a512-1295-4272-9138-f99709370657
* PCM: A few tiny changes. 1) Recording a) Flush all pending files if filename ↵Michael Sevakis2006-11-29
| | | | | | queue is full or else perpetual flushing of 1 will occur at low bitrates and short split times. b) #ifdef out currently unused bits and save little less than 1/2K 2) Cleanup some declarations. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11623 a1c6a512-1295-4272-9138-f99709370657
* iRiver/iAudio: Added audio_set_recording gain and sound_default to plugin ↵Michael Sevakis2006-11-23
| | | | | | API. Simplified plugin recording by target/-ing some audio functions. UDA1380 records with WSPLL as a result. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11577 a1c6a512-1295-4272-9138-f99709370657
* Audio bugfixes. Should wait for voice codec to reload before returning ↵Michael Sevakis2006-11-22
| | | | | | buffer when stealing voice. Certain variables that get or may get used during an IRQ should be declared 'volatile'. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11572 a1c6a512-1295-4272-9138-f99709370657
* Coldfire: Add DMA auto alignment to pcm recording.Michael Sevakis2006-11-21
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11563 a1c6a512-1295-4272-9138-f99709370657
* H100/General: HAL for S/PDIF and refinement/bufixes in optical output ↵Michael Sevakis2006-11-13
| | | | | | powering/source selection. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11523 a1c6a512-1295-4272-9138-f99709370657
* Forgot to use cvs add on a few new files in the fresh checkout I used. woops.Michael Sevakis2006-11-06
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11453 a1c6a512-1295-4272-9138-f99709370657