summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Moń <desowin@gmail.com>2011-12-19 06:39:07 +0000
committerTomasz Moń <desowin@gmail.com>2011-12-19 06:39:07 +0000
commitb98d03f4c389dd021ebd6f21ef2e7e993dec0714 (patch)
treee5516874e4a8bd769c1fc9311d1ea249bbef0ba7
parent2d8fd040d804503b3168eceb5ad03a11160969e5 (diff)
downloadrockbox-b98d03f4c389dd021ebd6f21ef2e7e993dec0714.tar.gz
rockbox-b98d03f4c389dd021ebd6f21ef2e7e993dec0714.zip
TMS320DM320: Turn on Image Buffer clock on demand (FS #12462)
This improves battery runtime on Sansa Connect by approximately 40 minutes. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31358 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/tms320dm320/dsp/arm.c16
-rw-r--r--firmware/target/arm/tms320dm320/dsp/arm.h4
-rw-r--r--firmware/target/arm/tms320dm320/dsp/dsp-image.h266
-rw-r--r--firmware/target/arm/tms320dm320/dsp/registers.h2
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c12
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c3
6 files changed, 163 insertions, 140 deletions
diff --git a/firmware/target/arm/tms320dm320/dsp/arm.c b/firmware/target/arm/tms320dm320/dsp/arm.c
index 08fbaa9c12..2469a44eb1 100644
--- a/firmware/target/arm/tms320dm320/dsp/arm.c
+++ b/firmware/target/arm/tms320dm320/dsp/arm.c
@@ -95,3 +95,19 @@ void debugf(const char *fmt, ...) {
95 acked = 2; 95 acked = 2;
96} 96}
97#endif 97#endif
98
99void int_arm(void)
100{
101 /*
102 * ImageBuffer clock enable in ARM's MOD1 is ORed with clock enable
103 * bit in CP_CLKC
104 */
105
106 /* Enable Image Buffer clock */
107 CP_CLKC |= 1 << 0;
108 /* Send interrupt to ARM */
109 CP_INTC = 1 << 3;
110 /* Disable Image Buffer clock */
111 CP_CLKC &= ~(1 << 0);
112}
113
diff --git a/firmware/target/arm/tms320dm320/dsp/arm.h b/firmware/target/arm/tms320dm320/dsp/arm.h
index ff4a9a1c51..e9217f3499 100644
--- a/firmware/target/arm/tms320dm320/dsp/arm.h
+++ b/firmware/target/arm/tms320dm320/dsp/arm.h
@@ -28,8 +28,6 @@ extern volatile struct ipc_message status;
28 28
29void debugf(const char *fmt, ...); 29void debugf(const char *fmt, ...);
30 30
31inline void int_arm(void) { 31void int_arm(void);
32 CP_INTC = 1 << 3;
33}
34 32
35#endif 33#endif
diff --git a/firmware/target/arm/tms320dm320/dsp/dsp-image.h b/firmware/target/arm/tms320dm320/dsp/dsp-image.h
index 3d72e73858..f49704bd7b 100644
--- a/firmware/target/arm/tms320dm320/dsp/dsp-image.h
+++ b/firmware/target/arm/tms320dm320/dsp/dsp-image.h
@@ -20,105 +20,110 @@
20 * 20 *
21 */ 21 */
22static const unsigned short _section_text[] = { 22static const unsigned short _section_text[] = {
23 0xe808, 0x75f8, 0x0008, 0x0280, 0xfc00, 0x4a11, 0x60f8, 0x05a4, 23 0xf495, 0x74f8, 0x0008, 0x0281, 0xf040, 0x0001, 0x75f8, 0x0008,
24 0x0001, 0xfa30, 0x0092, 0xf495, 0xeefe, 0x60f8, 0x05a4, 0x0002, 24 0x0281, 0xe808, 0x75f8, 0x0008, 0x0280, 0x74f8, 0x0008, 0x0281,
25 0xf820, 0x00a7, 0x7711, 0x0054, 0x6881, 0xfffe, 0xf074, 0x02e2, 25 0xf030, 0xfffe, 0x75f8, 0x0008, 0x0281, 0xfc00, 0x4a11, 0x60f8,
26 0xe800, 0x75f8, 0x0008, 0x8006, 0x76f8, 0x05a1, 0x0000, 0x76f8, 26 0x05cb, 0x0001, 0xfa30, 0x00a3, 0xf495, 0xeefe, 0x60f8, 0x05cb,
27 0x05a0, 0x0000, 0x76f8, 0x05a2, 0x0000, 0xf073, 0x0114, 0x10f8, 27 0x0002, 0xf820, 0x00b8, 0x7711, 0x0054, 0x6881, 0xfffe, 0xf074,
28 0x05a1, 0x08f8, 0x059f, 0xf844, 0x00b8, 0x76f8, 0x05a1, 0x0000, 28 0x0309, 0xe800, 0x75f8, 0x0008, 0x8006, 0x76f8, 0x05c8, 0x0000,
29 0x76f8, 0x054b, 0x0002, 0x76f8, 0x05a5, 0x0001, 0xf074, 0x0080, 29 0x76f8, 0x05c7, 0x0000, 0x76f8, 0x05c9, 0x0000, 0xf073, 0x0125,
30 0x10f8, 0x05a5, 0xf844, 0x0114, 0x10f8, 0x059f, 0x00f8, 0x05a0, 30 0x10f8, 0x05c8, 0x08f8, 0x05c6, 0xf844, 0x00c9, 0x76f8, 0x05c8,
31 0x08f8, 0x05a1, 0x8811, 0xf495, 0x7710, 0x1000, 0xf6a9, 0xf820, 31 0x0000, 0x76f8, 0x0572, 0x0002, 0x76f8, 0x05cc, 0x0001, 0xf074,
32 0x00cf, 0xf020, 0x1000, 0xf273, 0x00d3, 0x08f8, 0x05a0, 0x10f8, 32 0x0080, 0x10f8, 0x05cc, 0xf844, 0x0125, 0x10f8, 0x05c6, 0x00f8,
33 0x059f, 0x08f8, 0x05a1, 0x80f8, 0x05a2, 0xf6b8, 0x10f8, 0x05a3, 33 0x05c7, 0x08f8, 0x05c8, 0x8811, 0xf495, 0x7710, 0x1000, 0xf6a9,
34 0xf000, 0x8000, 0x6ff8, 0x05a0, 0x0c1f, 0x75f8, 0x0008, 0x8002, 34 0xf820, 0x00e0, 0xf020, 0x1000, 0xf273, 0x00e4, 0x08f8, 0x05c7,
35 0xe800, 0x75f8, 0x0008, 0x8003, 0x10f8, 0x059d, 0xf1ef, 0xf3e1, 35 0x10f8, 0x05c6, 0x08f8, 0x05c8, 0x80f8, 0x05c9, 0xf6b8, 0x10f8,
36 0x10f8, 0x059e, 0xf2a0, 0x00f8, 0x05a1, 0x4e00, 0xf020, 0xffff, 36 0x05ca, 0xf000, 0x8000, 0x6ff8, 0x05c7, 0x0c1f, 0x75f8, 0x0008,
37 0x5700, 0xf280, 0x75f8, 0x0008, 0x8000, 0x5600, 0xf0f0, 0x75f8, 37 0x8002, 0xe800, 0x75f8, 0x0008, 0x8003, 0x10f8, 0x05c4, 0xf1ef,
38 0x0008, 0x8001, 0xe800, 0x75f8, 0x05a2, 0x8004, 0x75f8, 0x0008, 38 0xf3e1, 0x10f8, 0x05c5, 0xf2a0, 0x00f8, 0x05c8, 0x4e00, 0xf020,
39 0x8005, 0xe801, 0x74f8, 0x054d, 0x8006, 0x74f8, 0x054e, 0x8001, 39 0xffff, 0x5700, 0xf280, 0x75f8, 0x0008, 0x8000, 0x5600, 0xf0f0,
40 0x74f8, 0x054f, 0x8000, 0x74f8, 0x0550, 0x8003, 0x74f8, 0x0551, 40 0x75f8, 0x0008, 0x8001, 0xe800, 0x75f8, 0x05c9, 0x8004, 0x75f8,
41 0x8002, 0x75f8, 0x0008, 0x8006, 0xee02, 0x8a11, 0xfc00, 0xf495, 41 0x0008, 0x8005, 0xe801, 0x74f8, 0x0574, 0x8006, 0x74f8, 0x0575,
42 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 42 0x8001, 0x74f8, 0x0576, 0x8000, 0x74f8, 0x0577, 0x8003, 0x74f8,
43 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 43 0x0578, 0x8002, 0x75f8, 0x0008, 0x8006, 0xee02, 0x8a11, 0xfc00,
44 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8,
45 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc,
46 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0xeeff,
47 0xf020, 0x0800, 0x7681, 0x0040, 0x7711, 0x0055, 0x7681, 0x0000,
48 0x7711, 0x0057, 0x1881, 0x8000, 0xf020, 0x0800, 0x1c00, 0x80f8,
49 0x05a3, 0x76f8, 0x05a0, 0x0000, 0xf074, 0x0085, 0xee01, 0x8a18,
50 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e,
51 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12,
52 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08,
53 0xf4eb, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d,
54 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17,
55 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b,
56 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8,
57 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001,
58 0x4a08, 0x7681, 0x0800, 0x10f8, 0x05a2, 0x00f8, 0x05a0, 0x80f8,
59 0x05a0, 0x10f8, 0x05a2, 0x00f8, 0x05a1, 0x80f8, 0x05a1, 0x7211,
60 0x05a0, 0x7710, 0x1000, 0xf5a9, 0xfa20, 0x01b2, 0xf495, 0xeeff,
61 0xf074, 0x0085, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d,
62 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16,
63 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c,
64 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0x4a11, 0x7711, 0x0054,
65 0x7681, 0x0000, 0x7711, 0x0055, 0x7681, 0x0003, 0x7711, 0x0057,
66 0x7681, 0x2800, 0x7711, 0x0055, 0x7681, 0x0004, 0x7711, 0x0057,
67 0x7681, 0x7141, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711, 0x0057,
68 0x7681, 0x8000, 0x7711, 0x0055, 0x7681, 0x0001, 0x7711, 0x0057,
69 0x7681, 0x0022, 0x7711, 0x0055, 0x7681, 0x0002, 0x7711, 0x0057,
70 0x7681, 0x1000, 0x7711, 0x0054, 0x7681, 0x0080, 0x8a11, 0xfc00,
71 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 44 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10,
72 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 45 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17,
73 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 46 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c,
74 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 47 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d,
75 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 48 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08,
76 0x7681, 0x0001, 0x6bf8, 0x059c, 0x0001, 0x76f8, 0x05a5, 0x0000, 49 0xeeff, 0xf020, 0x0800, 0x7681, 0x0040, 0x7711, 0x0055, 0x7681,
77 0x10f8, 0x05a4, 0xfa44, 0x0245, 0xf495, 0xeeff, 0x7712, 0x0054, 50 0x0000, 0x7711, 0x0057, 0x1881, 0x8000, 0xf020, 0x0800, 0x1c00,
78 0x960f, 0xf830, 0x0245, 0xf074, 0x0085, 0x7711, 0x0054, 0x6981, 51 0x80f8, 0x05ca, 0x76f8, 0x05c7, 0x0000, 0xf074, 0x0096, 0xee01,
79 0x0001, 0xf074, 0x02d7, 0xf073, 0x0247, 0xf074, 0x0085, 0xee01,
80 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 52 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06,
81 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 53 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13,
82 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 54 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09,
83 0x8a08, 0xf4eb, 0xf7be, 0xf6b9, 0xf4a0, 0xf6b7, 0xf6b5, 0xf6b6, 55 0x8a08, 0xf4eb, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c,
84 0xf7b8, 0x7718, 0x034b, 0x6bf8, 0x0018, 0x01ff, 0x68f8, 0x0018, 56 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16,
85 0xfffe, 0xf020, 0x05aa, 0xf100, 0x0001, 0xf84d, 0x028e, 0xf6b8, 57 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d,
86 0xf495, 0xf020, 0x05aa, 0xf073, 0x0288, 0x7ef8, 0x0012, 0xf000, 58 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000,
87 0x0001, 0x47f8, 0x0011, 0x7e92, 0x00f8, 0x0011, 0xf000, 0x0001, 59 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711,
88 0x7ef8, 0x0011, 0xf000, 0x0001, 0x6c89, 0x027d, 0xf7b8, 0xeefc, 60 0x0001, 0x4a08, 0x7681, 0x0800, 0x10f8, 0x05c9, 0x00f8, 0x05c7,
89 0xf020, 0xffff, 0xf100, 0x0001, 0xf84d, 0x02a6, 0xf6b8, 0xf495, 61 0x80f8, 0x05c7, 0x10f8, 0x05c9, 0x00f8, 0x05c8, 0x80f8, 0x05c8,
90 0xf020, 0xffff, 0xf273, 0x02a0, 0x4e02, 0xf495, 0xf5e3, 0x5602, 62 0x7211, 0x05c7, 0x7710, 0x1000, 0xf5a9, 0xfa20, 0x01c3, 0xf495,
91 0x7e00, 0x1100, 0xfa4c, 0x029e, 0x6b03, 0x0001, 0xf6b8, 0xee04, 63 0xeeff, 0xf074, 0x0096, 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b,
92 0xf074, 0x02ed, 0xf074, 0x0310, 0x4a11, 0x7711, 0x0038, 0x7681, 64 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17,
93 0x0000, 0x7711, 0x0039, 0x7681, 0x0000, 0x7711, 0x0038, 0x7681, 65 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d,
94 0x0001, 0x7711, 0x0039, 0x7681, 0x0030, 0x7711, 0x0038, 0x7681, 66 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0x4a11, 0x7711,
95 0x000e, 0x7711, 0x0039, 0x7681, 0x0002, 0x7711, 0x0038, 0x7681, 67 0x0054, 0x7681, 0x0000, 0x7711, 0x0055, 0x7681, 0x0003, 0x7711,
96 0x0004, 0x7711, 0x0039, 0x7681, 0x00a0, 0x7711, 0x0038, 0x7681, 68 0x0057, 0x7681, 0x2800, 0x7711, 0x0055, 0x7681, 0x0004, 0x7711,
97 0x0005, 0x7711, 0x0039, 0x7681, 0x0000, 0x8a11, 0xfc00, 0x4a11, 69 0x0057, 0x7681, 0x7141, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711,
98 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6981, 0x0001, 70 0x0057, 0x7681, 0x8000, 0x7711, 0x0055, 0x7681, 0x0001, 0x7711,
99 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 71 0x0057, 0x7681, 0x0022, 0x7711, 0x0055, 0x7681, 0x0002, 0x7711,
100 0x0039, 0x6881, 0xfffe, 0x8a11, 0xfc00, 0xf6b8, 0xf495, 0xf162, 72 0x0057, 0x7681, 0x1000, 0x7711, 0x0054, 0x7681, 0x0080, 0x8a11,
101 0xffff, 0xf340, 0xffff, 0xf640, 0xf0e0, 0xf010, 0xffff, 0xf061, 73 0xfc00, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d,
102 0xffff, 0xfa44, 0x0301, 0x4a11, 0xeefe, 0xf273, 0x0307, 0xe800, 74 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17,
103 0xe900, 0x8911, 0xf495, 0x4911, 0x1081, 0xf300, 0x0001, 0x8100, 75 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b,
104 0xf074, 0x032c, 0xee02, 0x8a11, 0xfc00, 0xf495, 0xf073, 0x030e, 76 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8,
105 0x4a11, 0x8811, 0x10f8, 0x05a6, 0xf4e3, 0x10f8, 0x05a9, 0xf845, 77 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001,
106 0x031e, 0x11f8, 0x05a9, 0xf7e3, 0xf495, 0x4811, 0x10f8, 0x05a8, 78 0x4a08, 0x7681, 0x0001, 0x6bf8, 0x05c3, 0x0001, 0x76f8, 0x05cc,
107 0xf845, 0x0325, 0x10f8, 0x05a8, 0xf4e3, 0x10f8, 0x05a7, 0xf4e3, 79 0x0000, 0x10f8, 0x05cb, 0xfa44, 0x0256, 0xf495, 0xeeff, 0x7712,
108 0xf074, 0x030d, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0026, 0x7712, 80 0x0054, 0x960f, 0xf830, 0x0256, 0xf074, 0x0096, 0x7711, 0x0054,
109 0x0001, 0x7713, 0x0001, 0x7681, 0x0010, 0x7711, 0x0000, 0x7681, 81 0x6981, 0x0001, 0xf074, 0x02fe, 0xf073, 0x0258, 0xf074, 0x0096,
110 0xffff, 0xe501, 0xf495, 0xf6bb, 0xf074, 0x02ac, 0xf074, 0x01cd, 82 0xee01, 0x8a18, 0xf495, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07,
111 0xf4e1, 0xf495, 0xf073, 0x0340, 0x80f8, 0x05a7, 0xfc00, 0x80f8, 83 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14,
112 0x05a6, 0xfc00, 0xfc00, 84 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a,
85 0x8a09, 0x8a08, 0xf4eb, 0xf495, 0x74f8, 0x0008, 0x0281, 0xf040,
86 0x0001, 0x75f8, 0x0008, 0x0281, 0xe808, 0x75f8, 0x0008, 0x0280,
87 0x74f8, 0x0008, 0x0281, 0xf030, 0xfffe, 0x75f8, 0x0008, 0x0281,
88 0xfc00, 0xf7be, 0xf6b9, 0xf4a0, 0xf6b7, 0xf6b5, 0xf6b6, 0xf7b8,
89 0x7718, 0x0372, 0x6bf8, 0x0018, 0x01ff, 0x68f8, 0x0018, 0xfffe,
90 0xf020, 0x05d1, 0xf100, 0x0001, 0xf84d, 0x02b5, 0xf6b8, 0xf495,
91 0xf020, 0x05d1, 0xf073, 0x02af, 0x7ef8, 0x0012, 0xf000, 0x0001,
92 0x47f8, 0x0011, 0x7e92, 0x00f8, 0x0011, 0xf000, 0x0001, 0x7ef8,
93 0x0011, 0xf000, 0x0001, 0x6c89, 0x02a4, 0xf7b8, 0xeefc, 0xf020,
94 0xffff, 0xf100, 0x0001, 0xf84d, 0x02cd, 0xf6b8, 0xf495, 0xf020,
95 0xffff, 0xf273, 0x02c7, 0x4e02, 0xf495, 0xf5e3, 0x5602, 0x7e00,
96 0x1100, 0xfa4c, 0x02c5, 0x6b03, 0x0001, 0xf6b8, 0xee04, 0xf074,
97 0x0314, 0xf074, 0x0337, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0000,
98 0x7711, 0x0039, 0x7681, 0x0000, 0x7711, 0x0038, 0x7681, 0x0001,
99 0x7711, 0x0039, 0x7681, 0x0030, 0x7711, 0x0038, 0x7681, 0x000e,
100 0x7711, 0x0039, 0x7681, 0x0002, 0x7711, 0x0038, 0x7681, 0x0004,
101 0x7711, 0x0039, 0x7681, 0x00a0, 0x7711, 0x0038, 0x7681, 0x0005,
102 0x7711, 0x0039, 0x7681, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x7711,
103 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6981, 0x0001, 0x8a11,
104 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039,
105 0x6881, 0xfffe, 0x8a11, 0xfc00, 0xf6b8, 0xf495, 0xf162, 0xffff,
106 0xf340, 0xffff, 0xf640, 0xf0e0, 0xf010, 0xffff, 0xf061, 0xffff,
107 0xfa44, 0x0328, 0x4a11, 0xeefe, 0xf273, 0x032e, 0xe800, 0xe900,
108 0x8911, 0xf495, 0x4911, 0x1081, 0xf300, 0x0001, 0x8100, 0xf074,
109 0x0353, 0xee02, 0x8a11, 0xfc00, 0xf495, 0xf073, 0x0335, 0x4a11,
110 0x8811, 0x10f8, 0x05cd, 0xf4e3, 0x10f8, 0x05d0, 0xf845, 0x0345,
111 0x11f8, 0x05d0, 0xf7e3, 0xf495, 0x4811, 0x10f8, 0x05cf, 0xf845,
112 0x034c, 0x10f8, 0x05cf, 0xf4e3, 0x10f8, 0x05ce, 0xf4e3, 0xf074,
113 0x0334, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0026, 0x7712, 0x0001,
114 0x7713, 0x0001, 0x7681, 0x0010, 0x7711, 0x0000, 0x7681, 0xffff,
115 0xe501, 0xf495, 0xf6bb, 0xf074, 0x02d3, 0xf074, 0x01de, 0xf4e1,
116 0xf495, 0xf073, 0x0367, 0x80f8, 0x05ce, 0xfc00, 0x80f8, 0x05cd,
117 0xfc00, 0xfc00,
113}; 118};
114 119
115static const unsigned short _section_cinit[] = { 120static const unsigned short _section_cinit[] = {
116 0x0001, 0x05a6, 0x034a, 0x0001, 0x05a7, 0x034a, 0x0001, 0x05a8, 121 0x0001, 0x05cd, 0x0371, 0x0001, 0x05ce, 0x0371, 0x0001, 0x05cf,
117 0x0000, 0x0001, 0x05a9, 0x0000, 0x0000, 122 0x0000, 0x0001, 0x05d0, 0x0000, 0x0000,
118}; 123};
119 124
120static const unsigned short _section_vectors[] = { 125static const unsigned short _section_vectors[] = {
121 0xf273, 0x0262, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 126 0xf273, 0x0289, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
122 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
123 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
124 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 129 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -126,72 +131,73 @@ static const unsigned short _section_vectors[] = {
126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 133 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
129 0xf273, 0x0200, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 134 0xf273, 0x0211, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
130 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 135 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
131 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 136 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
132 0xf273, 0x0117, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 137 0xf273, 0x0128, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
133 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 138 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
134 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 139 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
135 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 140 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
136 0xf273, 0x0171, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 141 0xf273, 0x0182, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
137 142
138}; 143};
139 144
140/* Program Mapping */ 145/* Program Mapping */
141static const struct dsp_section dsp_image[] = { 146static const struct dsp_section dsp_image[] = {
142 147
143 {_section_text, 0x0080, 0x02cb}, 148 {_section_text, 0x0080, 0x02f2},
144 {_section_cinit, 0x05aa, 0x000d}, 149 {_section_cinit, 0x05d1, 0x000d},
145 {NULL /* .bss */, 0x054b, 0x005f}, 150 {NULL /* .bss */, 0x0572, 0x005f},
146 {NULL /* .stack */, 0x034b, 0x0200}, 151 {NULL /* .stack */, 0x0372, 0x0200},
147 {_section_vectors, 0x7f80, 0x0080}, 152 {_section_vectors, 0x7f80, 0x0080},
148 {NULL /* .dma */, 0x8000, 0x1000}, 153 {NULL /* .dma */, 0x8000, 0x1000},
149 {NULL, 0, 0} 154 {NULL, 0, 0}
150}; 155};
151 156
152/* Symbol table, usable with the DSP_() macro (see dsp-target.h). */ 157/* Symbol table, usable with the DSP_() macro (see dsp-target.h). */
153#define cinit 0x05aa 158#define cinit 0x05d1
154#define ___cinit__ 0x05aa 159#define ___cinit__ 0x05d1
155#define ___text__ 0x0080 160#define ___text__ 0x0080
156#define etext 0x034b 161#define etext 0x0372
157#define ___etext__ 0x034b 162#define ___etext__ 0x0372
158#define ___data__ 0x0080 163#define ___data__ 0x0080
159#define edata 0x0080 164#define edata 0x0080
160#define ___edata__ 0x0080 165#define ___edata__ 0x0080
161#define ___bss__ 0x054b 166#define ___bss__ 0x0572
162#define end 0x05aa 167#define end 0x05d1
163#define ___end__ 0x05aa 168#define ___end__ 0x05d1
164#define _int0_count 0x059c 169#define _int0_count 0x05c3
165#define _status 0x054b 170#define _status 0x0572
166#define _handle_int0 0x0200 171#define _handle_int0 0x0211
167#define _main 0x032c 172#define _int_arm 0x0273
168#define _handle_dmac 0x0171 173#define _main 0x0353
169#define _waiting 0x05a5 174#define _handle_dmac 0x0182
170#define _sdem_addrh 0x059d 175#define _waiting 0x05cc
171#define _sdem_addrl 0x059e 176#define _sdem_addrh 0x05c4
172#define _dma0_stopped 0x05a4 177#define _sdem_addrl 0x05c5
173#define _dma0_unlocked 0x05a3 178#define _dma0_stopped 0x05cb
174#define _sdem_dsp_size 0x059f 179#define _dma0_unlocked 0x05ca
175#define _handle_dma0 0x0117 180#define _sdem_dsp_size 0x05c6
176#define _dsp_level 0x05a0 181#define _handle_dma0 0x0128
177#define _dma_init 0x01cd 182#define _dsp_level 0x05c7
178#define _sdem_level 0x05a1 183#define _dma_init 0x01de
179#define _rebuffer 0x0085 184#define _sdem_level 0x05c8
180#define _last_size 0x05a2 185#define _rebuffer 0x0096
181#define _audiohw_start 0x02d7 186#define _last_size 0x05c9
182#define _audiohw_init 0x02ac 187#define _audiohw_start 0x02fe
183#define _audiohw_stop 0x02e2 188#define _audiohw_init 0x02d3
184#define _c_int00 0x0262 189#define _audiohw_stop 0x0309
185#define __dtors_ptr 0x05a9 190#define _c_int00 0x0289
186#define _abort 0x030d 191#define __dtors_ptr 0x05d0
187#define _exit 0x0310 192#define _abort 0x0334
188#define __cleanup_ptr 0x05a8 193#define _exit 0x0337
189#define __lock 0x05a6 194#define __cleanup_ptr 0x05cf
190#define __register_unlock 0x0344 195#define __lock 0x05cd
191#define __nop 0x034a 196#define __register_unlock 0x036b
192#define __register_lock 0x0347 197#define __nop 0x0371
193#define __unlock 0x05a7 198#define __register_lock 0x036e
194#define __args_main 0x02ed 199#define __unlock 0x05ce
200#define __args_main 0x0314
195 201
196#endif 202#endif
197 203
diff --git a/firmware/target/arm/tms320dm320/dsp/registers.h b/firmware/target/arm/tms320dm320/dsp/registers.h
index edfdeaea88..aeaa7e8616 100644
--- a/firmware/target/arm/tms320dm320/dsp/registers.h
+++ b/firmware/target/arm/tms320dm320/dsp/registers.h
@@ -75,6 +75,8 @@
75/* DM320 */ 75/* DM320 */
76ioport unsigned short port280; 76ioport unsigned short port280;
77#define CP_INTC port280 77#define CP_INTC port280
78ioport unsigned short port281;
79#define CP_CLKC port281
78ioport unsigned short port8000; 80ioport unsigned short port8000;
79#define SDEM_ADDRL port8000 81#define SDEM_ADDRL port8000
80ioport unsigned short port8001; 82ioport unsigned short port8001;
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c
index 898013982b..38631401f9 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c
@@ -324,9 +324,8 @@ static void dma_start_transfer16( char *src, int src_x, int src_y, int stride,
324 src -= CONFIG_SDRAM_START; 324 src -= CONFIG_SDRAM_START;
325 dst -= CONFIG_SDRAM_START; 325 dst -= CONFIG_SDRAM_START;
326 326
327 /* Enable Clocks */ 327 /* Enable Image Buffer clock */
328 bitset16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF); 328 bitset16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF);
329 bitset16(&COP_CP_CLKC, 0x0001);
330 329
331 /* ... */ 330 /* ... */
332 COP_BUF_MUX1 = 0x0005; 331 COP_BUF_MUX1 = 0x0005;
@@ -380,6 +379,9 @@ static void dma_start_transfer16( char *src, int src_x, int src_y, int stride,
380 dst += (stride*pix_width); 379 dst += (stride*pix_width);
381 height--; 380 height--;
382 } while(height>0); 381 } while(height>0);
382
383 /* Disable Image Buffer clock */
384 bitclr16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF);
383} 385}
384#else 386#else
385static void dma_start_transfer16( char *src, int src_x, int src_y, int stride, 387static void dma_start_transfer16( char *src, int src_x, int src_y, int stride,
@@ -401,9 +403,8 @@ static void dma_start_transfer16( char *src, int src_x, int src_y, int stride,
401 src -= CONFIG_SDRAM_START; 403 src -= CONFIG_SDRAM_START;
402 dst -= CONFIG_SDRAM_START; 404 dst -= CONFIG_SDRAM_START;
403 405
404 /* Enable Clocks */ 406 /* Enable Image Buffer clock */
405 bitset16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF); 407 bitset16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF);
406 bitset16(&COP_CP_CLKC, 0x0001);
407 408
408 /* ... */ 409 /* ... */
409 COP_BUF_MUX1 = 0x0005; 410 COP_BUF_MUX1 = 0x0005;
@@ -457,6 +458,9 @@ static void dma_start_transfer16( char *src, int src_x, int src_y, int stride,
457 dst -= (stride*pix_width); 458 dst -= (stride*pix_width);
458 width--; 459 width--;
459 } while(width>0); 460 } while(width>0);
461
462 /* Disable Image Buffer clock */
463 bitclr16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF);
460} 464}
461#endif 465#endif
462#endif 466#endif
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c
index 045f7b0ee9..8b1fbf95e4 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c
@@ -79,9 +79,6 @@ void pcm_play_dma_init(void)
79 /* Enable the HPIB clock */ 79 /* Enable the HPIB clock */
80 bitset16(&IO_CLK_MOD0, (CLK_MOD0_HPIB | CLK_MOD0_DSP)); 80 bitset16(&IO_CLK_MOD0, (CLK_MOD0_HPIB | CLK_MOD0_DSP));
81 81
82 /* Enable IMGBUF clock */
83 bitset16(&IO_CLK_MOD1, CLK_MOD1_IMGBUF);
84
85 dma_channel = dma_request_channel(DMA_PERIPHERAL_DSP, 82 dma_channel = dma_request_channel(DMA_PERIPHERAL_DSP,
86 DMA_MODE_1_BURST); 83 DMA_MODE_1_BURST);
87 84