static int hall_suspend(struct device *dev) { struct hall_drvdata *ddata = dev_get_drvdata(dev); struct input_dev *input = ddata->input; printk("%s start\n", __func__); /* need to be change */ /* Without below one line, it is not able to get the irq during freezing */ #ifdef CONFIG_SENSORS_HALL_IRQ_CTRL /* gsm_area can be controlled only in hall_irq_set */ if (!g_drvdata->cover_state && g_drvdata->gsm_area) disable_irq_wake(ddata->irq_flip_cover); else enable_irq_wake(ddata->irq_flip_cover); #else enable_irq_wake(ddata->irq_flip_cover); #endif if (device_may_wakeup(dev)) { enable_irq_wake(ddata->irq_flip_cover); } else { mutex_lock(&input->mutex); if (input->users) hall_close(input); mutex_unlock(&input->mutex); } return 0; }
static int hall_suspend(struct device *dev) { struct hall_drvdata *ddata = dev_get_drvdata(dev); struct input_dev *input = ddata->input; printk("%s start\n", __func__); enable_irq_wake(ddata->irq_accessory); if (device_may_wakeup(dev)) { enable_irq_wake(ddata->irq_accessory); } else { mutex_lock(&input->mutex); if (input->users) hall_close(input); mutex_unlock(&input->mutex); } return 0; }
static int hall_suspend(struct device *dev) { struct hall_drvdata *ddata = dev_get_drvdata(dev); struct input_dev *input = ddata->input; printk("%s start\n", __func__); /* need to be change */ /* Without below one line, it is not able to get the irq during freezing */ enable_irq_wake(ddata->irq_flip_cover); if (device_may_wakeup(dev)) { enable_irq_wake(ddata->irq_flip_cover); } else { mutex_lock(&input->mutex); if (input->users) hall_close(input); mutex_unlock(&input->mutex); } return 0; }