diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320/dsp/arm.c')
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/arm.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/firmware/target/arm/tms320dm320/dsp/arm.c b/firmware/target/arm/tms320dm320/dsp/arm.c index a9d9d800e4..58162990cc 100644 --- a/firmware/target/arm/tms320dm320/dsp/arm.c +++ b/firmware/target/arm/tms320dm320/dsp/arm.c | |||
@@ -27,18 +27,26 @@ | |||
27 | 27 | ||
28 | volatile struct ipc_message status; | 28 | volatile struct ipc_message status; |
29 | 29 | ||
30 | extern int waiting; | ||
30 | volatile int acked; | 31 | volatile int acked; |
31 | interrupt void handle_int0(void) { | 32 | interrupt void handle_int0(void) { |
32 | IFR = 1; | 33 | IFR = 1; |
33 | acked = 1; | 34 | acked = 1; |
35 | waiting = 0; | ||
36 | rebuffer(); | ||
34 | } | 37 | } |
35 | 38 | ||
36 | void waitforack(void) | 39 | void startack(void) |
37 | { | 40 | { |
38 | /* Wait until ARM has picked up data. */ | ||
39 | acked = 0; | 41 | acked = 0; |
40 | int_arm(); | 42 | int_arm(); |
41 | while (!acked) { | 43 | } |
44 | |||
45 | void waitack(void) | ||
46 | { | ||
47 | /* Wait until ARM has picked up data. */ | ||
48 | while (!acked) | ||
49 | { | ||
42 | /* IDLE alone never seems to wake up :( */ | 50 | /* IDLE alone never seems to wake up :( */ |
43 | asm(" IDLE 1"); | 51 | asm(" IDLE 1"); |
44 | asm(" NOP"); | 52 | asm(" NOP"); |
@@ -52,7 +60,8 @@ void debugf(const char *fmt, ...) { | |||
52 | vsnprintf((char *)status.payload.debugf.buffer, sizeof(status), fmt, args); | 60 | vsnprintf((char *)status.payload.debugf.buffer, sizeof(status), fmt, args); |
53 | va_end(args); | 61 | va_end(args); |
54 | 62 | ||
55 | waitforack(); | 63 | startack(); |
64 | waitack(); | ||
56 | 65 | ||
57 | acked = 2; | 66 | acked = 2; |
58 | } | 67 | } |