From: terry Date: Sat, 13 Jul 2019 07:05:43 +0000 (+0800) Subject: WakeUp: add WOL_WAKEUP event support X-Git-Tag: khadas-vims-v0.9.6-release~543 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=383d8705574ae5912d607e29951c924704b3524e;p=platform%2Fkernel%2Flinux-amlogic.git WakeUp: add WOL_WAKEUP event support --- diff --git a/drivers/amlogic/input/keyboard/gpio_keypad.c b/drivers/amlogic/input/keyboard/gpio_keypad.c index 33abc17..d8d49cd 100644 --- a/drivers/amlogic/input/keyboard/gpio_keypad.c +++ b/drivers/amlogic/input/keyboard/gpio_keypad.c @@ -52,6 +52,22 @@ struct gpio_keypad { struct input_dev *input_dev; }; +static struct input_dev *g_input_dev; +void send_power_key(int state) +{ + if (!g_input_dev) + return; + if (state) { + input_report_key(g_input_dev, KEY_POWER, 1); + input_sync(g_input_dev); + } else { + input_report_key(g_input_dev, KEY_POWER, 0); + input_sync(g_input_dev); + } +} + +EXPORT_SYMBOL(send_power_key); + static irqreturn_t gpio_irq_handler(int irq, void *data) { struct gpio_keypad *keypad; @@ -234,6 +250,7 @@ static int meson_gpio_kp_probe(struct platform_device *pdev) platform_set_drvdata(pdev, keypad); keypad->count = 0; keypad->index = -1; + g_input_dev = input_dev; setup_timer(&(keypad->polling_timer), polling_timer_handler, (unsigned long) keypad); if (keypad->use_irq) { diff --git a/drivers/misc/khadas-mcu.c b/drivers/misc/khadas-mcu.c index aa90e12..6d4f14f 100644 --- a/drivers/misc/khadas-mcu.c +++ b/drivers/misc/khadas-mcu.c @@ -20,6 +20,7 @@ #include #include #include +#include @@ -100,6 +101,7 @@ struct mcu_data { struct mcu_data *g_mcu_data; +extern void send_power_key(int state); extern void realtek_enable_wol(int enable, bool is_shutdown); void mcu_enable_wol(int enable, bool is_shutdown) { @@ -678,6 +680,10 @@ static int khadas_fan_resume(struct device *dev) { khadas_fan_set(&g_mcu_data->fan_data); + if (get_resume_method() == WOL_WAKEUP) { + send_power_key(1); + send_power_key(0); + } return 0; } diff --git a/include/linux/amlogic/pm.h b/include/linux/amlogic/pm.h index 2d71273..284a06f 100644 --- a/include/linux/amlogic/pm.h +++ b/include/linux/amlogic/pm.h @@ -31,6 +31,7 @@ #define CEC_WAKEUP 8 #define REMOTE_CUS_WAKEUP 9 #define ETH_PHY_WAKEUP 10 +#define WOL_WAKEUP 13 extern unsigned int get_resume_method(void); extern unsigned int is_pm_freeze_mode(void);