summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2005-02-11 13:13:36 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2005-02-11 13:13:36 +0000
commitf48ec1f7fca7b0e12cbcbe4de3dbe21ed5a2edfa (patch)
tree4a7092ef334ba0454efcac931abad19bc5b13e8f /firmware/drivers
parentdd52043cac5659810d6a9c0e7fc1fe7396398a9e (diff)
downloadrockbox-f48ec1f7fca7b0e12cbcbe4de3dbe21ed5a2edfa.zip
rockbox-f48ec1f7fca7b0e12cbcbe4de3dbe21ed5a2edfa.tar.gz
rockbox-f48ec1f7fca7b0e12cbcbe4de3dbe21ed5a2edfa.tar.bz2
rockbox-f48ec1f7fca7b0e12cbcbe4de3dbe21ed5a2edfa.tar.xz
iRiver: Support for remote control buttons
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5909 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/adc.c6
-rw-r--r--firmware/drivers/button.c34
2 files changed, 36 insertions, 4 deletions
diff --git a/firmware/drivers/adc.c b/firmware/drivers/adc.c
index bb8242e..fd79166 100644
--- a/firmware/drivers/adc.c
+++ b/firmware/drivers/adc.c
@@ -171,6 +171,8 @@ unsigned char adc_scan(int channel)
CS_HI;
+ adcdata[channel] = data;
+
return data;
}
@@ -186,7 +188,7 @@ static void adc_tick(void)
if(++adc_counter == HZ)
{
adc_counter = 0;
- adcdata[ADC_BATTERY] = adc_scan(ADC_BATTERY);
+ adc_scan(ADC_BATTERY);
}
}
@@ -201,8 +203,6 @@ void adc_init(void)
GPIO_OUT &= ~0x00400000; /* CLK low */
tick_add_task(adc_tick);
-
- adcdata[3] = adc_scan(3);
}
#elif CONFIG_CPU == TCC730
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 1a0aece..cd44923 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -351,7 +351,7 @@ static int button_read(void)
#if CONFIG_KEYPAD == IRIVER_H100_PAD
- data = adc_scan(0);
+ data = adc_scan(ADC_BUTTONS);
if (data < 0x80)
if (data < 0x30)
@@ -377,6 +377,38 @@ static int button_read(void)
if (data < 0xf0)
btn = BUTTON_REC;
+ data = adc_scan(ADC_REMOTE);
+
+ if (data < 0x74)
+ if (data < 0x40)
+ if (data < 0x20)
+ if(data < 0x10)
+ btn = BUTTON_RC_STOP;
+ else
+ btn = BUTTON_RC_VOL_DOWN;
+ else
+ btn = BUTTON_RC_VOL;
+ else
+ if (data < 0x58)
+ btn = BUTTON_RC_VOL_UP;
+ else
+ btn = BUTTON_RC_BITRATE;
+ else
+ if (data < 0xb0)
+ if (data < 0x88)
+ btn = BUTTON_RC_REC;
+ else
+ btn = BUTTON_RC_SOURCE;
+ else
+ if (data < 0xd8)
+ if(data < 0xc0)
+ btn = BUTTON_RC_FF;
+ else
+ btn = BUTTON_RC_MENU;
+ else
+ if (data < 0xf0)
+ btn = BUTTON_RC_REW;
+
data = GPIO1_READ;
if ((data & 0x20) == 0)
btn |= BUTTON_ON;