summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire/system-target.h
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-03-07 06:23:02 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-03-07 06:23:02 +0000
commit633f3880024a2f83a21dd96368aa397940bc9ad6 (patch)
tree7c4319b1715c5c86252fd816764fdf53435163fb /firmware/target/coldfire/system-target.h
parent2c94c1afc377c6605772008e6c27b06d579cecf4 (diff)
downloadrockbox-633f3880024a2f83a21dd96368aa397940bc9ad6.tar.gz
rockbox-633f3880024a2f83a21dd96368aa397940bc9ad6.zip
Coldfire targets: Shuffle IRQ levels around to have all interaction between 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
Diffstat (limited to 'firmware/target/coldfire/system-target.h')
-rw-r--r--firmware/target/coldfire/system-target.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/firmware/target/coldfire/system-target.h b/firmware/target/coldfire/system-target.h
index 31947a2883..97d096f0e8 100644
--- a/firmware/target/coldfire/system-target.h
+++ b/firmware/target/coldfire/system-target.h
@@ -57,7 +57,16 @@ static inline unsigned long coldfire_get_macsr(void)
57 return m; 57 return m;
58} 58}
59 59
60#define HIGHEST_IRQ_LEVEL (7<<8) 60/* ColdFire IRQ Levels/Priorities in Rockbox summary:
61 * DMA0 - level 6, priority 0 (playback)
62 * DMA1 - level 6, priority 1 (recording)
63 * TIMER1 - level 4, priority 0 (timers)
64 * TIMER0 - level 3, priority 0 (ticks)
65 * GPI0 - level 3, priority 0 (pcf50606 PMU, secondary controller)
66 */
67#define HIGHEST_IRQ_LEVEL (5<<8) /* Disable all but DMA and higher */
68#define DMA_IRQ_LEVEL (6<<8) /* Disable DMA and lower */
69#define DISABLE_INTERRUPTS (7<<8) /* Disable all but NMIs */
61static inline int set_irq_level(int level) 70static inline int set_irq_level(int level)
62{ 71{
63 int oldlevel; 72 int oldlevel;