diff options
author | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-03-23 11:13:17 +0000 |
---|---|---|
committer | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-03-23 11:13:17 +0000 |
commit | c4e4ffb5418afce2602a2310747676647ee04ddf (patch) | |
tree | 3e26d05e501bdf1c6d4ea5ed6f7013968226fd59 /firmware/target/arm/as3525/ascodec-as3525.c | |
parent | f5988d4fbd7150e59f0ea9e4f3f0bd61bbcb0bf9 (diff) | |
download | rockbox-c4e4ffb5418afce2602a2310747676647ee04ddf.tar.gz rockbox-c4e4ffb5418afce2602a2310747676647ee04ddf.zip |
Limit AUDIO_IRQ handling to AS3525, since it doesn't work on the newer SoC in SANSA_CLIPPLUS yet.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25305 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/ascodec-as3525.c')
-rw-r--r-- | firmware/target/arm/as3525/ascodec-as3525.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/firmware/target/arm/as3525/ascodec-as3525.c b/firmware/target/arm/as3525/ascodec-as3525.c index 441008493c..ed7aa962e7 100644 --- a/firmware/target/arm/as3525/ascodec-as3525.c +++ b/firmware/target/arm/as3525/ascodec-as3525.c | |||
@@ -96,7 +96,9 @@ static unsigned char *req_data_ptr = NULL; | |||
96 | static struct ascodec_request *req_head = NULL; | 96 | static struct ascodec_request *req_head = NULL; |
97 | static struct ascodec_request *req_tail = NULL; | 97 | static struct ascodec_request *req_tail = NULL; |
98 | 98 | ||
99 | #if CONFIG_CPU == AS3525 | ||
99 | static struct wakeup adc_wkup; | 100 | static struct wakeup adc_wkup; |
101 | static struct ascodec_request as_audio_req; | ||
100 | 102 | ||
101 | #ifdef DEBUG | 103 | #ifdef DEBUG |
102 | static int int_audio_ctr = 0; | 104 | static int int_audio_ctr = 0; |
@@ -107,15 +109,16 @@ static int int_usb_insert = 0; | |||
107 | static int int_usb_remove = 0; | 109 | static int int_usb_remove = 0; |
108 | static int int_rtc = 0; | 110 | static int int_rtc = 0; |
109 | static int int_adc = 0; | 111 | static int int_adc = 0; |
110 | #endif | 112 | #endif /* DEBUG */ |
111 | 113 | ||
112 | static struct ascodec_request as_audio_req; | 114 | static void ascodec_read_cb(unsigned const char *data, unsigned int len); |
115 | #endif /* CONFIG_CPU == AS3525 */ | ||
113 | 116 | ||
114 | static void ascodec_start_req(struct ascodec_request *req); | 117 | static void ascodec_start_req(struct ascodec_request *req); |
115 | static int ascodec_continue_req(struct ascodec_request *req, int irq_status); | 118 | static int ascodec_continue_req(struct ascodec_request *req, int irq_status); |
116 | static void ascodec_finish_req(struct ascodec_request *req); | 119 | static void ascodec_finish_req(struct ascodec_request *req); |
117 | static void ascodec_read_cb(unsigned const char *data, unsigned int len); | ||
118 | 120 | ||
121 | #if CONFIG_CPU == AS3525 | ||
119 | void INT_AUDIO(void) | 122 | void INT_AUDIO(void) |
120 | { | 123 | { |
121 | VIC_INT_EN_CLEAR = INTERRUPT_AUDIO; | 124 | VIC_INT_EN_CLEAR = INTERRUPT_AUDIO; |
@@ -123,6 +126,7 @@ void INT_AUDIO(void) | |||
123 | 126 | ||
124 | ascodec_async_read(AS3514_IRQ_ENRD0, 3, &as_audio_req, ascodec_read_cb); | 127 | ascodec_async_read(AS3514_IRQ_ENRD0, 3, &as_audio_req, ascodec_read_cb); |
125 | } | 128 | } |
129 | #endif /* CONFIG_CPU == AS3525 */ | ||
126 | 130 | ||
127 | void INT_I2C_AUDIO(void) | 131 | void INT_I2C_AUDIO(void) |
128 | { | 132 | { |
@@ -162,7 +166,9 @@ void ascodec_init(void) | |||
162 | int prescaler; | 166 | int prescaler; |
163 | 167 | ||
164 | mutex_init(&as_mtx); | 168 | mutex_init(&as_mtx); |
169 | #if CONFIG_CPU == AS3525 | ||
165 | wakeup_init(&adc_wkup); | 170 | wakeup_init(&adc_wkup); |
171 | #endif | ||
166 | 172 | ||
167 | /* enable clock */ | 173 | /* enable clock */ |
168 | CGU_PERI |= CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE; | 174 | CGU_PERI |= CGU_I2C_AUDIO_MASTER_CLOCK_ENABLE; |
@@ -423,6 +429,7 @@ int ascodec_readbytes(unsigned int index, unsigned int len, unsigned char *data) | |||
423 | return i; | 429 | return i; |
424 | } | 430 | } |
425 | 431 | ||
432 | #if CONFIG_CPU == AS3525 | ||
426 | static void ascodec_read_cb(unsigned const char *data, unsigned int len) | 433 | static void ascodec_read_cb(unsigned const char *data, unsigned int len) |
427 | { | 434 | { |
428 | if (len != 3) /* some error happened? */ | 435 | if (len != 3) /* some error happened? */ |
@@ -465,6 +472,7 @@ void ascodec_wait_adc_finished(void) | |||
465 | { | 472 | { |
466 | wakeup_wait(&adc_wkup, TIMEOUT_BLOCK); | 473 | wakeup_wait(&adc_wkup, TIMEOUT_BLOCK); |
467 | } | 474 | } |
475 | #endif /* CONFIG_CPU == AS3525 */ | ||
468 | 476 | ||
469 | 477 | ||
470 | void ascodec_enable_endofch_irq(void) | 478 | void ascodec_enable_endofch_irq(void) |