Add support for checking gpio keys for magic keypress as well
parent
b8a611f4aa
commit
60e1615193
|
@ -141,5 +141,9 @@ enum {
|
||||||
MX6_PAD_KEY_COL0__KEY_COL0 = IOMUX_PAD(0x474, 0x16c, 0, 0x734, 0, 0),
|
MX6_PAD_KEY_COL0__KEY_COL0 = IOMUX_PAD(0x474, 0x16c, 0, 0x734, 0, 0),
|
||||||
MX6_PAD_KEY_COL1__KEY_COL1 = IOMUX_PAD(0x478, 0x170, 0, 0x738, 0, 0),
|
MX6_PAD_KEY_COL1__KEY_COL1 = IOMUX_PAD(0x478, 0x170, 0, 0x738, 0, 0),
|
||||||
MX6_PAD_KEY_COL2__KEY_COL2 = IOMUX_PAD(0x47c, 0x174, 0, 0x73c, 0, 0),
|
MX6_PAD_KEY_COL2__KEY_COL2 = IOMUX_PAD(0x47c, 0x174, 0, 0x73c, 0, 0),
|
||||||
|
|
||||||
|
MX6_PAD_KEY_COL0__GPIO_3_24 = IOMUX_PAD(0x474, 0x16c, 5, 0x0000, 0, 0),
|
||||||
|
MX6_PAD_KEY_COL1__GPIO_3_26 = IOMUX_PAD(0x478, 0x170, 5, 0x0000, 0, 0),
|
||||||
|
MX6_PAD_KEY_COL2__GPIO_3_28 = IOMUX_PAD(0x47c, 0x174, 5, 0x0000, 0, 0),
|
||||||
};
|
};
|
||||||
#endif /* __ASM_ARCH_MX6_MX6SL_PINS_H__ */
|
#endif /* __ASM_ARCH_MX6_MX6SL_PINS_H__ */
|
||||||
|
|
|
@ -57,6 +57,11 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
#define ETH_PHY_POWER IMX_GPIO_NR(4, 21)
|
#define ETH_PHY_POWER IMX_GPIO_NR(4, 21)
|
||||||
|
|
||||||
|
/* GPIO keys */
|
||||||
|
#define GPIO_KEY_LEFT IMX_GPIO_NR(3, 24)
|
||||||
|
#define GPIO_KEY_HOME IMX_GPIO_NR(3, 26)
|
||||||
|
#define GPIO_KEY_RIGHT IMX_GPIO_NR(3, 28)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For handling the keypad
|
* For handling the keypad
|
||||||
*/
|
*/
|
||||||
|
@ -155,6 +160,12 @@ static iomux_v3_cfg_t const key_pads[] = {
|
||||||
MX6_PAD_KEY_COL2__KEY_COL2 | MUX_PAD_CTRL(NO_PAD_CTRL),
|
MX6_PAD_KEY_COL2__KEY_COL2 | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static iomux_v3_cfg_t const gpio_key_pads[] = {
|
||||||
|
MX6_PAD_KEY_COL0__GPIO_3_24 | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||||
|
MX6_PAD_KEY_COL1__GPIO_3_26 | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||||
|
MX6_PAD_KEY_COL2__GPIO_3_28 | MUX_PAD_CTRL(NO_PAD_CTRL),
|
||||||
|
};
|
||||||
|
|
||||||
static void setup_iomux_uart(void)
|
static void setup_iomux_uart(void)
|
||||||
{
|
{
|
||||||
imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
|
imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
|
||||||
|
@ -415,7 +426,6 @@ static int check_charger_status(void)
|
||||||
return gpio_get_value(BQ24133_CHRGR_OK);
|
return gpio_get_value(BQ24133_CHRGR_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int power_init_board(void)
|
int power_init_board(void)
|
||||||
{
|
{
|
||||||
struct pmic *p;
|
struct pmic *p;
|
||||||
|
@ -573,6 +583,30 @@ int board_early_init_f(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets up GPIO keys and checks for magic key combo
|
||||||
|
*/
|
||||||
|
static int check_gpio_keypress(void)
|
||||||
|
{
|
||||||
|
int left, home, right;
|
||||||
|
|
||||||
|
/* Set up pins */
|
||||||
|
imx_iomux_v3_setup_multiple_pads(gpio_key_pads, ARRAY_SIZE(gpio_key_pads));
|
||||||
|
|
||||||
|
gpio_request(GPIO_KEY_LEFT, "key_left");
|
||||||
|
gpio_direction_input(GPIO_KEY_LEFT);
|
||||||
|
gpio_request(GPIO_KEY_HOME, "key_home");
|
||||||
|
gpio_direction_input(GPIO_KEY_HOME);
|
||||||
|
gpio_request(GPIO_KEY_RIGHT, "key_right");
|
||||||
|
gpio_direction_input(GPIO_KEY_RIGHT);
|
||||||
|
|
||||||
|
left = gpio_get_value(GPIO_KEY_LEFT);
|
||||||
|
home = gpio_get_value(GPIO_KEY_HOME);
|
||||||
|
right = gpio_get_value(GPIO_KEY_RIGHT);
|
||||||
|
|
||||||
|
return !left && home && !right;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets up the keypad and then checks for a magic key combo
|
* Sets up the keypad and then checks for a magic key combo
|
||||||
*/
|
*/
|
||||||
|
@ -676,7 +710,7 @@ int board_init(void)
|
||||||
/* address of boot parameters */
|
/* address of boot parameters */
|
||||||
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
|
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
|
||||||
|
|
||||||
if (check_keypress()) {
|
if (check_keypress() || check_gpio_keypress()) {
|
||||||
printf("Magic key press detected, launching USB download mode\n");
|
printf("Magic key press detected, launching USB download mode\n");
|
||||||
hab_rvt_failsafe(); /* This never returns, hopefully */
|
hab_rvt_failsafe(); /* This never returns, hopefully */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue