diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500')
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; |