From 25ebc858428b123aa03e816fe15e02991c91c4f6 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Mon, 14 Apr 2008 04:22:47 +0000 Subject: Oops...simple math proves elusive at times. Get the array calcs right. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17104 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/imx31/gigabeat-s/adc-imx31.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/firmware/target/arm/imx31/gigabeat-s/adc-imx31.c b/firmware/target/arm/imx31/gigabeat-s/adc-imx31.c index b1b79a7989..dfaaab9177 100644 --- a/firmware/target/arm/imx31/gigabeat-s/adc-imx31.c +++ b/firmware/target/arm/imx31/gigabeat-s/adc-imx31.c @@ -23,19 +23,15 @@ #include "kernel.h" /* Do this so we may read all channels in a single SPI message */ -static const unsigned char reg_array[NUM_ADC_CHANNELS/2] = +static const unsigned char reg_array[4] = { MC13783_ADC2, MC13783_ADC2, MC13783_ADC2, MC13783_ADC2, - MC13783_ADC2, - MC13783_ADC2, - MC13783_ADC2, - MC13783_ADC2, }; -static uint32_t channels[2][NUM_ADC_CHANNELS/2]; +static uint32_t channels[2][4]; static struct wakeup adc_wake; static struct mutex adc_mtx; static long last_adc_read[2]; /* One for each input group */ @@ -49,10 +45,10 @@ unsigned short adc_read(int channel) if ((unsigned)channel >= NUM_ADC_CHANNELS) return ADC_READ_ERROR; - mutex_lock(&adc_mtx); - input_select = channel >> 3; + mutex_lock(&adc_mtx); + /* Limit the traffic through here */ if (TIME_AFTER(current_tick, last_adc_read[input_select])) { @@ -72,13 +68,12 @@ unsigned short adc_read(int channel) /* Read all 8 channels that are converted - two channels in each * word. */ - mc13783_read_regset(reg_array, channels[input_select], - NUM_ADC_CHANNELS/2); + mc13783_read_regset(reg_array, channels[input_select], 4); last_adc_read[input_select] = current_tick; } - data = channels[input_select][channel & 7]; + data = channels[input_select][(channel >> 1) & 3]; mutex_unlock(&adc_mtx); -- cgit v1.2.3