mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 13:12:37 -05:00
touch devices: Disable touch on softlock.
Target that have a touchpad/touchscreen should disable it while being locked (In order to avoid LCD to drain battery power due to "key locked" constant reporting messages. If they a have a keylock button this was already handled at driver level. If not (e.g. fuze+), they will have to implement a switch at driver level that action.c can operate on softlock. This patch does the following for any target having a touchpad or a touchscreen and no HAS_BUTTON_HOLD (ie any softlock target) 1) it implements the code to call button_enable_touch(bool en) in action.c. 2) button_enable_touch is implemented in button.c and call either touchpad_enable or touchscreen_enable 3) those two function are implemented respectively in touchscreen.c and a new touchpad.c file. They provide a generic way to silents touch's device and call a function at driver level where target specific code can be implemented if possible/needed (for power saving for instance). Those function name are touchpad_enable_device and touchscreen_enable_device 4) we implement an empty function at driver level of targets that need it to have them still being able to compiled. Change-Id: I9ead78a25bd33466a8533f5b9f259b395cb5ce49 Reviewed-on: http://gerrit.rockbox.org/569 Reviewed-by: Thomas Martitz <kugel@rockbox.org> Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
This commit is contained in:
parent
ef2dd06d5e
commit
df6eb82f51
15 changed files with 174 additions and 6 deletions
|
|
@ -66,7 +66,7 @@ void button_init_device(void)
|
|||
|
||||
bottomright.px_x = LCD_WIDTH;
|
||||
bottomright.px_y = LCD_HEIGHT;
|
||||
|
||||
|
||||
imx233_touchscreen_init();
|
||||
imx233_touchscreen_enable(true);
|
||||
|
||||
|
|
@ -104,6 +104,11 @@ static int touch_to_pixels(int *val_x, int *val_y)
|
|||
return (x<<16)|y;
|
||||
}
|
||||
|
||||
void touchscreen_enable_device(bool en)
|
||||
{
|
||||
imx233_touchscreen_enable(en);
|
||||
}
|
||||
|
||||
static int touchscreen_read_device(int *data)
|
||||
{
|
||||
int x, y;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include "string.h"
|
||||
#include "usb.h"
|
||||
#include "power-imx233.h"
|
||||
#include "touchpad.h"
|
||||
|
||||
#ifndef BOOTLOADER
|
||||
|
||||
|
|
@ -274,7 +275,7 @@ static void do_interrupt(void)
|
|||
imx233_pinctrl_setup_irq(0, 27, true, true, false, &rmi_attn_cb, 0);
|
||||
}
|
||||
|
||||
void touchdev_enable(bool en)
|
||||
void touchpad_enable_device(bool en)
|
||||
{
|
||||
t_enable = en;
|
||||
queue_post(&rmi_queue, RMI_SET_SLEEP_MODE, en ? RMI_SLEEP_MODE_LOW_POWER : RMI_SLEEP_MODE_SENSOR_SLEEP);
|
||||
|
|
@ -433,5 +434,5 @@ int button_read_device(void)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
return res | touchpad_read_device();
|
||||
return res | touchpad_filter(touchpad_read_device());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
#include <stdbool.h>
|
||||
bool button_debug_screen(void);
|
||||
void touchpad_set_sensitivity(int level);
|
||||
void touchdev_enable(bool en);
|
||||
void touchpad_enable_device(bool en);
|
||||
|
||||
/* Main unit's buttons */
|
||||
#define BUTTON_POWER 0x00000001
|
||||
|
|
@ -47,6 +47,10 @@ void touchdev_enable(bool en);
|
|||
BUTTON_PLAYPAUSE|BUTTON_BACK| \
|
||||
BUTTON_BOTTOMRIGHT|BUTTON_BOTTOMLEFT)
|
||||
|
||||
#define BUTTON_TOUCHPAD (BUTTON_LEFT|BUTTON_UP|BUTTON_RIGHT|BUTTON_DOWN| \
|
||||
BUTTON_SELECT|BUTTON_PLAYPAUSE|BUTTON_BACK| \
|
||||
BUTTON_BOTTOMRIGHT|BUTTON_BOTTOMLEFT)
|
||||
|
||||
/* Software power-off */
|
||||
#define POWEROFF_BUTTON BUTTON_POWER
|
||||
#define POWEROFF_COUNT 10
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue