Exemplo n.º 1
0
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 ;
}
Exemplo n.º 2
0
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;
}