void s3cfb_early_suspend(struct early_suspend *h) { struct s3cfb_global *fbdev = container_of(h, struct s3cfb_global, early_suspend); pr_debug("s3cfb_early_suspend is called\n"); #ifdef CONFIG_SCREEN_DIMMER if (!screen_is_dimmed()) { s3cfb_display_off(fbdev); clk_disable(fbdev->clock); #if defined(CONFIG_FB_S3C_TL2796) lcd_cfg_gpio_early_suspend(); #endif regulator_disable(fbdev->vlcd); regulator_disable(fbdev->vcc_lcd); regulator_disable(fbdev->regulator); } #else s3cfb_display_off(fbdev); clk_disable(fbdev->clock); #if defined(CONFIG_FB_S3C_TL2796) lcd_cfg_gpio_early_suspend(); #endif regulator_disable(fbdev->vlcd); regulator_disable(fbdev->vcc_lcd); regulator_disable(fbdev->regulator); #endif return ; }
static irqreturn_t touchkey_interrupt_thread(int irq, void *touchkey_devdata) { u8 data; int i; int ret; int scancode; struct cypress_touchkey_devdata *devdata = touchkey_devdata; ret = i2c_touchkey_read_byte(devdata, &data); if (ret || (data & ESD_STATE_MASK)) { ret = recovery_routine(devdata); if (ret) { dev_err(&devdata->client->dev, "%s: touchkey recovery " "failed!\n", __func__); goto err; } } if (devdata->has_legacy_keycode) { scancode = (data & SCANCODE_MASK) - 1; if (scancode < 0 || scancode >= devdata->pdata->keycode_cnt) { dev_err(&devdata->client->dev, "%s: scancode is out of " "range\n", __func__); goto err; } #ifdef CONFIG_SCREEN_DIMMER #ifdef CONFIG_TOUCH_WAKE if (!device_is_suspended() && !screen_is_dimmed()) #else if (!screen_is_dimmed()) #endif #else #ifdef CONFIG_TOUCH_WAKE if (!device_is_suspended()) #endif #endif { input_report_key(devdata->input_dev, devdata->pdata->keycode[scancode], !(data & UPDOWN_EVENT_MASK)); } #if defined(CONFIG_TOUCH_WAKE) || defined(CONFIG_SCREEN_DIMMER) || defined(CONFIG_BLD) if (!(data & UPDOWN_EVENT_MASK)) { #ifdef CONFIG_BLD touchkey_pressed(); #endif #ifdef CONFIG_SCREEN_DIMMER touchscreen_pressed(); #endif #ifdef CONFIG_TOUCH_WAKE touch_press(); #endif } #endif } else { #ifdef CONFIG_SCREEN_DIMMER #ifdef CONFIG_TOUCH_WAKE if (!device_is_suspended() && !screen_is_dimmed()) #else if (!screen_is_dimmed()) #endif #else #ifdef CONFIG_TOUCH_WAKE if (!device_is_suspended()) #endif #endif { for (i = 0; i < devdata->pdata->keycode_cnt; i++) input_report_key(devdata->input_dev, devdata->pdata->keycode[i], !!(data & (1U << i))); } #if defined(CONFIG_TOUCH_WAKE) || defined(CONFIG_SCREEN_DIMMER) || defined(CONFIG_BLD) for (i = 0; i < devdata->pdata->keycode_cnt; i++) { if(!!(data & (1U << i))) { #ifdef CONFIG_BLD touchkey_pressed(); #endif #ifdef CONFIG_SCREEN_DIMMER touchscreen_pressed(); #endif #ifdef CONFIG_TOUCH_WAKE touch_press(); #endif break; } } #endif } input_sync(devdata->input_dev); err: return IRQ_HANDLED; }