summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/mrobe-500
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500')
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/adc-mr500.c29
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c2
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c5
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c17
4 files changed, 18 insertions, 35 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
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
index 7d9a43f902..3aa6009c9e 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
@@ -128,7 +128,7 @@ int button_read_device(int *data)
128 button_read |= touchscreen_to_pixels(touch_x, touch_y, data); 128 button_read |= touchscreen_to_pixels(touch_x, touch_y, data);
129 } 129 }
130 130
131 tsc2100_set_mode(true, 0x01); 131 tsc2100_set_mode(true, 0x02);
132 132
133 /* Handle power button */ 133 /* Handle power button */
134 if ((IO_GIO_BITSET0&0x01) == 0) { 134 if ((IO_GIO_BITSET0&0x01) == 0) {
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c
index cdec2ab77c..02294100ac 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c
@@ -61,6 +61,9 @@ void pcm_play_dma_init(void)
61 IO_INTC_IRQ0 = 1 << 11; 61 IO_INTC_IRQ0 = 1 << 11;
62 IO_INTC_EINT0 |= 1 << 11; 62 IO_INTC_EINT0 |= 1 << 11;
63 63
64 /* Set this as a FIQ */
65 IO_INTC_FISEL0 |= 1 << 11;
66
64 IO_DSPC_HPIB_CONTROL = 1 << 10 | 1 << 9 | 1 << 8 | 1 << 7 | 1 << 3 | 1 << 0; 67 IO_DSPC_HPIB_CONTROL = 1 << 10 | 1 << 9 | 1 << 8 | 1 << 7 | 1 << 3 | 1 << 0;
65 68
66 dsp_reset(); 69 dsp_reset();
@@ -133,7 +136,7 @@ void DSPHINT(void)
133 136
134 unsigned int i; 137 unsigned int i;
135 138
136 IO_INTC_IRQ0 = 1 << 11; 139 IO_INTC_FIQ0 = 1 << 11;
137 140
138 switch (dsp_message.msg) 141 switch (dsp_message.msg)
139 { 142 {
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
index 6e361aac15..d0f1a0bf59 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
@@ -68,17 +68,14 @@ unsigned int battery_adc_voltage(void)
68 current_bat2=((short)((int)(bat2<<10)/4096*6*2.5)); 68 current_bat2=((short)((int)(bat2<<10)/4096*6*2.5));
69 current_aux=((short)((int)(aux<<10)/4096*6*2.5)); 69 current_aux=((short)((int)(aux<<10)/4096*6*2.5));
70 } 70 }
71 71
72 if (TIME_BEFORE(last_tick+2*HZ, current_tick) || last_tick==0) 72 tsadc=tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS);
73
74 /* Set the TSC2100 to read voltages if not busy with pen */
75 if(!(tsadc & TSADC_PSTCM))
73 { 76 {
74 tsadc=tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); 77 tsc2100_set_mode(true, 0x0B);
75 78 last_tick = current_tick;
76 /* Set the TSC2100 to read voltages if not busy with pen */
77 if(!(tsadc & TSADC_PSTCM))
78 {
79 tsc2100_set_mode(true, 0x0B);
80 last_tick = current_tick;
81 }
82 } 79 }
83 80
84 return current_voltage; 81 return current_voltage;