static int matrix_keypad_suspend(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct matrix_keypad *keypad = platform_get_drvdata(pdev); matrix_keypad_stop(keypad->input_dev); if (device_may_wakeup(&pdev->dev)) matrix_keypad_enable_wakeup(keypad); return 0; }
static int matrix_keypad_suspend(struct platform_device *pdev, pm_message_t state) { struct matrix_keypad *keypad = platform_get_drvdata(pdev); const struct matrix_keypad_platform_data *pdata = keypad->pdata; int i; matrix_keypad_stop(keypad->input_dev); if (device_may_wakeup(&pdev->dev)) for (i = 0; i < pdata->num_row_gpios; i++) enable_irq_wake(gpio_to_irq(pdata->row_gpios[i])); return 0; }
static int matrix_keypad_suspend(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct matrix_keypad *keypad = platform_get_drvdata(pdev); const struct matrix_keypad_platform_data *pdata = keypad->pdata; int i; matrix_keypad_stop(keypad->input_dev); if (device_may_wakeup(&pdev->dev)) { for (i = 0; i < pdata->num_row_gpios; i++) { if (!test_bit(i, keypad->disabled_gpios)) { unsigned int gpio = pdata->row_gpios[i]; if (enable_irq_wake(gpio_to_irq(gpio)) == 0) __set_bit(i, keypad->disabled_gpios); } } } return 0; }