diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-12-12 18:36:52 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-12-12 18:36:52 +0000 |
commit | e087751b107982eeaa001e92c2dd1f24f1af6809 (patch) | |
tree | 05b984cc09e7e268d1885d9ee06c7274fbc4b4e2 /firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c | |
parent | de159ceb3d1b852ee97be15ae707056ec995bf2d (diff) | |
download | rockbox-e087751b107982eeaa001e92c2dd1f24f1af6809.tar.gz rockbox-e087751b107982eeaa001e92c2dd1f24f1af6809.zip |
M:Robe 500: Fix FIQ's and make the audio DMA a FIQ, simplify the ADC code and make it more reliable. Fix ADC problems on initial boot.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23948 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c')
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c index 5df764620d..2acce7a695 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c | |||
@@ -42,6 +42,9 @@ void adc_init(void) | |||
42 | 42 | ||
43 | /* Enable the tsc2100 interrupt */ | 43 | /* Enable the tsc2100 interrupt */ |
44 | IO_INTC_EINT2 |= (1<<3); /* IRQ_GIO14 */ | 44 | IO_INTC_EINT2 |= (1<<3); /* IRQ_GIO14 */ |
45 | |||
46 | /* Read all registers to make sure they are clear */ | ||
47 | tsc2100_read_data(); | ||
45 | } | 48 | } |
46 | 49 | ||
47 | /* Touchscreen data available interupt */ | 50 | /* Touchscreen data available interupt */ |
@@ -49,31 +52,11 @@ void GIO14(void) | |||
49 | { | 52 | { |
50 | /* Interrupts work properly when cleared first */ | 53 | /* Interrupts work properly when cleared first */ |
51 | IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ | 54 | IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ |
52 | 55 | ||
53 | short tsadc = tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); | ||
54 | short adscm = (tsadc&TSADC_ADSCM_MASK)>>TSADC_ADSCM_SHIFT; | ||
55 | |||
56 | /* Always read all registers in one go to clear any missed flags */ | 56 | /* Always read all registers in one go to clear any missed flags */ |
57 | tsc2100_read_data(); | 57 | tsc2100_read_data(); |
58 | 58 | ||
59 | switch (adscm) | 59 | /* Stop the scan, firmware will initiate another scan with a mode set */ |
60 | { | 60 | tsc2100_set_mode(true, 0x00); |
61 | case 0x01: | ||
62 | case 0x02: | ||
63 | case 0x03: | ||
64 | case 0x04: | ||
65 | case 0x05: | ||
66 | /* do a battery read - this will shutdown the adc till the next tick | ||
67 | */ | ||
68 | // tsc2100_set_mode(true, 0x0B); | ||
69 | break; | ||
70 | case 0x06: | ||
71 | case 0x07: | ||
72 | case 0x08: | ||
73 | case 0x09: | ||
74 | case 0x0B: | ||
75 | tsc2100_set_mode(true, 0x01); | ||
76 | break; | ||
77 | } | ||
78 | } | 61 | } |
79 | 62 | ||