diff options
author | Mark Arigo <markarigo@gmail.com> | 2009-06-19 02:48:15 +0000 |
---|---|---|
committer | Mark Arigo <markarigo@gmail.com> | 2009-06-19 02:48:15 +0000 |
commit | 4c58ad26ba462309f95790c32421130a73909f05 (patch) | |
tree | 96af9c1cda5f21e5af6443b13171ed66ccb1d9d1 /firmware/target/arm/olympus/mrobe-100 | |
parent | 753064fccf270643edc8d60e46886e327b099c49 (diff) | |
download | rockbox-4c58ad26ba462309f95790c32421130a73909f05.tar.gz rockbox-4c58ad26ba462309f95790c32421130a73909f05.zip |
Clean up the Synaptics touchpad driver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21344 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/olympus/mrobe-100')
-rw-r--r-- | firmware/target/arm/olympus/mrobe-100/button-mr100.c | 95 | ||||
-rw-r--r-- | firmware/target/arm/olympus/mrobe-100/button-target.h | 4 |
2 files changed, 30 insertions, 69 deletions
diff --git a/firmware/target/arm/olympus/mrobe-100/button-mr100.c b/firmware/target/arm/olympus/mrobe-100/button-mr100.c index 130c32739a..d4479278ef 100644 --- a/firmware/target/arm/olympus/mrobe-100/button-mr100.c +++ b/firmware/target/arm/olympus/mrobe-100/button-mr100.c @@ -28,10 +28,6 @@ #define LOGF_ENABLE #include "logf.h" -#define MEP_BUTTON_HEADER 0x1a -#define MEP_BUTTON_ID 0x9 -#define MEP_ABSOLUTE_HEADER 0x0b - static int int_btn = BUTTON_NONE; #ifndef BOOTLOADER @@ -56,9 +52,9 @@ void button_init_device(void) GPIOD_OUTPUT_EN |= 0x4; /* DATA */ GPIOD_OUTPUT_VAL |= 0x4; /* high */ - if (!syn_init()) + if (!touchpad_init()) { - logf("button_init_dev: touchpad not ready"); + logf("touchpad not ready"); } } @@ -67,73 +63,34 @@ void button_init_device(void) */ void button_int(void) { - int data[4]; - int val, id; + char data[4]; + int val; int_btn = BUTTON_NONE; - if (syn_get_status()) + val = touchpad_read_device(data, 4); + + if (val == MEP_BUTTON_HEADER) + { + /* Buttons packet - touched one of the 5 "buttons" */ + if (data[1] & 0x1) int_btn |= BUTTON_PLAY; + if (data[1] & 0x2) int_btn |= BUTTON_MENU; + if (data[1] & 0x4) int_btn |= BUTTON_LEFT; + if (data[1] & 0x8) int_btn |= BUTTON_DISPLAY; + if (data[2] & 0x1) int_btn |= BUTTON_RIGHT; + } + else if (val == MEP_ABSOLUTE_HEADER) { - /* disable interrupt while we read the touchpad */ - syn_int_enable(false); - - val = syn_read(data, 4); - if (val > 0) - { - val = data[0] & 0xff; /* packet header */ - id = (data[1] >> 4) & 0xf; /* packet id */ - - logf("button_read_device..."); - logf(" data[0] = 0x%08x", data[0]); - logf(" data[1] = 0x%08x", data[1]); - logf(" data[2] = 0x%08x", data[2]); - logf(" data[3] = 0x%08x", data[3]); - - if ((val == MEP_BUTTON_HEADER) && (id == MEP_BUTTON_ID)) - { - /* Buttons packet - touched one of the 5 "buttons" */ - if (data[1] & 0x1) - int_btn |= BUTTON_PLAY; - if (data[1] & 0x2) - int_btn |= BUTTON_MENU; - if (data[1] & 0x4) - int_btn |= BUTTON_LEFT; - if (data[1] & 0x8) - int_btn |= BUTTON_DISPLAY; - if (data[2] & 0x1) - int_btn |= BUTTON_RIGHT; - - /* An Absolute packet should follow which we ignore */ - val = syn_read(data, 4); - - logf(" int_btn = 0x%04x", int_btn); - } - else if (val == MEP_ABSOLUTE_HEADER) - { - /* Absolute packet - the finger is on the vertical strip. - Position ranges from 1-4095, with 1 at the bottom. */ - val = ((data[1] >> 4) << 8) | data[2]; /* position */ - - logf(" pos %d", val); - logf(" z %d", data[3]); - logf(" finger %d", data[1] & 0x1); - logf(" gesture %d", data[1] & 0x2); - logf(" RelPosVld %d", data[1] & 0x4); - - if(data[1] & 0x1) /* if finger on touch strip */ - { - if ((val > 0) && (val <= 1365)) - int_btn |= BUTTON_DOWN; - else if ((val > 1365) && (val <= 2730)) - int_btn |= BUTTON_SELECT; - else if ((val > 2730) && (val <= 4095)) - int_btn |= BUTTON_UP; - } - } - } - - /* re-enable interrupts */ - syn_int_enable(true); + /* Absolute packet - the finger is on the vertical strip. + Position ranges from 1-4095, with 1 at the bottom. */ + val = ((data[1] >> 4) << 8) | data[2]; /* position */ + + if ((val > 0) && (val <= 1365)) + int_btn |= BUTTON_DOWN; + else if ((val > 1365) && (val <= 2730)) + int_btn |= BUTTON_SELECT; + else if ((val > 2730) && (val <= 4095)) + int_btn |= BUTTON_UP; } } #else diff --git a/firmware/target/arm/olympus/mrobe-100/button-target.h b/firmware/target/arm/olympus/mrobe-100/button-target.h index c6b2c1067f..900211ebe4 100644 --- a/firmware/target/arm/olympus/mrobe-100/button-target.h +++ b/firmware/target/arm/olympus/mrobe-100/button-target.h @@ -25,6 +25,10 @@ #include <stdbool.h> #include "config.h" +#define MEP_BUTTON_HEADER 0x1a +#define MEP_BUTTON_ID 0x09 +#define MEP_ABSOLUTE_HEADER 0x0b + #define HAS_BUTTON_HOLD bool button_hold(void); |