示例#1
0
static void lms500_suspend (struct clk *clk)
{
	u32 val;
	
	gpio_set_value(TT_VGPIO_LCD_ON, 0);
	gpio_direction_input(TT_VGPIO_LCD_ON);
	panel_sleep(150);			/* T5-T4 should be greater than 6 frames */

	/* disabling clk, CNTL_LCDPWR and CNTL_LCDEN before suspend 
	 * doesn't happen in bcm4760_clcd.c that's why it's added
	 * here to be compliant with LCM power sequence specs
	 */

	val = readl(IO_ADDRESS(LCD_REG_BASE_ADDR + CLCD_CNTL));
	if (val & CNTL_LCDPWR){
		val &= ~CNTL_LCDPWR;
		writel(val, IO_ADDRESS(LCD_REG_BASE_ADDR + CLCD_CNTL));
		panel_sleep(20);
	}
	if (val & CNTL_LCDEN) {
		val &= ~CNTL_LCDEN;
		writel(val, IO_ADDRESS(LCD_REG_BASE_ADDR + CLCD_CNTL));
	}
	clk_disable( clk);
}
示例#2
0
static void lms500_resume (struct clk *clk)
{
	gpio_direction_output(TT_VGPIO_LCD_ON, 0);
	panel_sleep(200);			/* T3 should be greater than 11 frames */

	/* enabling clk, CNTL_LCDPWR and CNTL_LCDEN after resume happens in bcm4760_clcd.c */
}
示例#3
0
/* TODO: correct init procedure according to spec */
static int mendoza_gpio_setup(struct platform_device *pdev)
{
	unsigned int cfg;
	int i;
	
	/* select TFT LCD type (RGB I/F) */
	cfg = readl(S5P64XX_SPC_BASE);
	cfg &= ~S5P6450_SPCON_LCD_SEL_MASK;
	cfg |= S5P6450_SPCON_LCD_SEL_RGB;
	writel(cfg, S5P64XX_SPC_BASE);

	for (i = 0; i < 16; i++)
		s3c_gpio_cfgpin(S5P6450_GPI(i), S3C_GPIO_SFN(2));

	for (i = 0; i < 12; i++)
		s3c_gpio_cfgpin(S5P6450_GPJ(i), S3C_GPIO_SFN(2));
	
        if (gpio_request(TT_VGPIO_LCM_PWR_EN, "TT_VGPIO_LCM_PWR_EN") ||
        	gpio_request(TT_VGPIO_DISP_ON, "TT_VGPIO_DISP_ON")) {
        	printk("LCD: Failed to request gpio\n");
        } else {
        	gpio_direction_output(TT_VGPIO_LCM_PWR_EN, 1);
        	gpio_direction_output(TT_VGPIO_DISP_ON, 1);
        }
        panel_sleep(100);

        return 0;
}
示例#4
0
static int mendoza_fb_reboot(struct notifier_block *block, unsigned long code, void *null)
{
	pr_emerg("LCD: Shutting off LCM\n");
	gpio_set_value(TT_VGPIO_DISP_ON, 0);
	panel_sleep(100);
	return 0;
}
示例#5
0
static void panel_disable(struct omap_dss_device *disp)
{
	struct panel_data *td = dev_get_drvdata(&disp->dev);

	if (disp->platform_disable)
		disp->platform_disable(disp);
	else
		panel_sleep(1);

	td->enabled = 0;

}
示例#6
0
static int panel_enable(struct omap_dss_device *disp)
{
	struct panel_data *td = dev_get_drvdata(&disp->dev);
	int ret = 0;
	
	printk("panel enable\n");

	if (disp->platform_enable)
		ret = disp->platform_enable(disp);
	if (ret < 0)
		return ret;
	
	panel_initial_settings();
	panel_sleep(0);

	td->enabled = 1;

	return 0;
}
示例#7
0
static void lms500_disable (struct clk *clk)
{
	gpio_set_value(TT_VGPIO_LCD_ON, 0);	/* T5-T4 should be greater than 6 frames */
	panel_sleep(150);
}