1
0
Fork 0
forked from len0rd/rockbox

Add support for the NWZ-A860

Change-Id: Ibf0c5168ac31d4ba2aeaa86cbeca37a1011b75fa
This commit is contained in:
Amaury Pouly 2017-09-10 21:55:35 +02:00
parent f22ccabac3
commit ac57f96838
10 changed files with 419 additions and 10 deletions

View file

@ -18,7 +18,7 @@
*
****************************************************************************/
#include "button.h"
#define LOGF_ENABLE
//#define LOGF_ENABLE
#include "logf.h"
#include "panic.h"
#include "backlight.h"
@ -192,6 +192,19 @@ static void open_input_device(const char *path)
poll_nfds++;
}
#if defined(SONY_NWZA860)
/* keycode -> rockbox button mapping */
static int button_map[NWZ_KEY_MASK + 1] =
{
[0 ... NWZ_KEY_MASK] = 0,
[NWZ_KEY_PLAY] = BUTTON_PLAY,
[NWZ_KEY_RIGHT] = BUTTON_FF,
[NWZ_KEY_LEFT] = BUTTON_REW,
[NWZ_KEY_VOL_DOWN] = BUTTON_VOL_DOWN,
[NWZ_KEY_VOL_UP] = BUTTON_VOL_UP,
[NWZ_KEY_BACK] = BUTTON_BACK,
};
#else /* SONY_NWZA860 */
/* keycode -> rockbox button mapping */
static int button_map[NWZ_KEY_MASK + 1] =
{
@ -214,6 +227,7 @@ static int button_map[NWZ_KEY_MASK + 1] =
[NWZ_KEY_AD1_6] = 0,
[NWZ_KEY_AD1_7] = 0,
};
#endif /* SONY_NWZA860 */
static void handle_key(struct input_event evt)
{
@ -296,11 +310,16 @@ int button_read_device(
#endif
}
}
int btns = button_bitmap;
#ifdef HAVE_TOUCHSCREEN
/* WARNING we must call touchscreen_to_pixels even if there is no touch,
* otherwsise *data is not filled with the last position and it breaks
* everything */
int touch_bitmap = touchscreen_to_pixels(touch_x, touch_y, data);
if(touch_detect)
button_bitmap |= touchscreen_to_pixels(touch_x, touch_y, data);
btns |= touch_bitmap;
#endif
return hold_status ? 0 : button_bitmap;
return hold_status ? 0 : btns;
}
void nwz_button_reload_after_suspend(void)

View file

@ -24,6 +24,40 @@
#include <stdbool.h>
#include "config.h"
/* The NWZ-A860 is completely different, it has a touchscreen and some but not
* all keys of the other others */
#if defined(SONY_NWZA860)
/* Main unit's buttons */
#define BUTTON_BACK 0x00000001 /* HOME */
#define BUTTON_PLAY 0x00000002
#define BUTTON_REW 0x00000004
#define BUTTON_FF 0x00000008
#define BUTTON_VOL_DOWN 0x00000010
#define BUTTON_VOL_UP 0x00000020
/* For compatibility */
#define BUTTON_LEFT BUTTON_MIDLEFT
#define BUTTON_RIGHT BUTTON_MIDRIGHT
#define BUTTON_UP BUTTON_TOPMIDDLE
#define BUTTON_DOWN BUTTON_BOTTOMMIDDLE
/* Touch Screen Area Buttons */
#define BUTTON_TOPLEFT 0x00000040
#define BUTTON_TOPMIDDLE 0x00000080
#define BUTTON_TOPRIGHT 0x00000100
#define BUTTON_MIDLEFT 0x00000200
#define BUTTON_CENTER 0x00000400
#define BUTTON_MIDRIGHT 0x00000800
#define BUTTON_BOTTOMLEFT 0x00001000
#define BUTTON_BOTTOMMIDDLE 0x00002000
#define BUTTON_BOTTOMRIGHT 0x00004000
#define BUTTON_MAIN 0x7fff
#define POWEROFF_BUTTON BUTTON_BACK
#else /* SONY_NWZA860 */
/* Main unit's buttons */
#define BUTTON_POWER 0x00000001
#define BUTTON_BACK 0x00000002
@ -37,8 +71,11 @@
#define BUTTON_MAIN 0x000001ff
#define POWEROFF_BUTTON BUTTON_POWER
#endif /* SONY_NWZA860 */
/* Software power-off */
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
/* force driver to reload button state (useful after suspend) */