#include <linux/input.h>
#include <linux/gpio_keys.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/mux.h>
+#include <mach/gpio.h>
+#include <mach/mux.h>
#define SW_ENTER_GPIO16 16
#define SW_UP_GPIO17 17
#define SW_DOWN_GPIO58 58
+#define SW_LEFT_GPIO95 95
+#define SW_RIGHT_GPIO96 96
+#define SW_ESC_GPIO97 97
+
+extern int apollon_plus(void);
static struct gpio_keys_button apollon_gpio_keys_buttons[] = {
[0] = {
- .keycode = KEY_ENTER,
+ .code = KEY_ENTER,
.gpio = SW_ENTER_GPIO16,
.desc = "enter sw",
},
[1] = {
- .keycode = KEY_UP,
+ .code = KEY_UP,
.gpio = SW_UP_GPIO17,
.desc = "up sw",
},
[2] = {
- .keycode = KEY_DOWN,
+ .code = KEY_DOWN,
.gpio = SW_DOWN_GPIO58,
.desc = "down sw",
},
+ [3] = {
+ .code = KEY_LEFT,
+ .gpio = SW_LEFT_GPIO95,
+ .desc = "left sw",
+ },
+ [4] = {
+ .code = KEY_RIGHT,
+ .gpio = SW_RIGHT_GPIO96,
+ .desc = "right sw",
+ },
+ [5] = {
+ .code = KEY_ESC,
+ .gpio = SW_ESC_GPIO97,
+ .desc = "esc sw",
+ },
};
static struct gpio_keys_platform_data apollon_gpio_keys = {
{
/* Enter SW - Y11 */
omap_cfg_reg(Y11_242X_GPIO16);
- omap_request_gpio(SW_ENTER_GPIO16);
- omap_set_gpio_direction(SW_ENTER_GPIO16, 1);
/* Up SW - AA12 */
omap_cfg_reg(AA12_242X_GPIO17);
- omap_request_gpio(SW_UP_GPIO17);
- omap_set_gpio_direction(SW_UP_GPIO17, 1);
/* Down SW - AA8 */
omap_cfg_reg(AA8_242X_GPIO58);
- omap_request_gpio(SW_DOWN_GPIO58);
- omap_set_gpio_direction(SW_DOWN_GPIO58, 1);
+
+ if (apollon_plus()) {
+ /* Left SW - P18 */
+ omap_cfg_reg(P18_24XX_GPIO95);
+ /* Right SW - M18 */
+ omap_cfg_reg(M18_24XX_GPIO96);
+ /* Esc SW - L14 */
+ omap_cfg_reg(L14_24XX_GPIO97);
+ } else
+ apollon_gpio_keys.nbuttons = 3;
}
static int __init omap_apollon_keys_init(void)