summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-12-12 18:36:52 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-12-12 18:36:52 +0000
commite087751b107982eeaa001e92c2dd1f24f1af6809 (patch)
tree05b984cc09e7e268d1885d9ee06c7274fbc4b4e2 /firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c
parentde159ceb3d1b852ee97be15ae707056ec995bf2d (diff)
downloadrockbox-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.c29
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