示例#1
0
static int hdmi1280x720_set_power(struct lcd_panel *panel, int on)
{
	struct lcd_platform_data *pdata = panel->dev->platform_data;

#if 0
	printk("%s\n", __func__);
	
	mutex_lock(&panel_lock);
	if (on) {
		gpio_set_value(pdata->power_on, 1);
		gpio_set_value(pdata->reset, 1);
		msleep(10);
		lcdc_initialize(panel);
		LCDC_IO_Set(1, panel->bus_width);
		msleep(16);

		gpio_set_value(pdata->display_on, 1);
	}
	else 
	{
		gpio_set_value(pdata->display_on, 0);
		msleep(10);
		gpio_set_value(pdata->reset, 0);
		gpio_set_value(pdata->power_on, 0);

		LCDC_IO_Disable(0, panel->bus_width);
	}
	mutex_unlock(&panel_lock);
#endif /* 0 */

	return 0;
}
示例#2
0
static int hdmi1280x720_set_power(struct lcd_panel *panel, int on)
{
	struct lcd_platform_data *pdata = &(panel->dev);

	printf("%s : %d \n", __func__, on);
	if (on) {
		tcclcd_gpio_set_value(pdata->power_on, 1);
		tcclcd_gpio_set_value(pdata->reset, 1);

		mdelay(10);
		lcdc_initialize(1, panel);
		
		LCDC_IO_Set(1, panel->bus_width);

		mdelay(16);
		
		tcclcd_gpio_set_value(pdata->display_on, 1);

	}
	else 
	{

		tcclcd_gpio_set_value(pdata->display_on, 0);
		mdelay(10);
		tcclcd_gpio_set_value(pdata->reset, 0);
		tcclcd_gpio_set_value(pdata->power_on, 0);
		LCDC_IO_Disable(0, panel->bus_width);
	}

	return 0;
}
示例#3
0
static int tm070rdh11_set_power(struct lcd_panel *panel, int on)
{
	struct lcd_platform_data *pdata = &(panel->dev);

	printf("%s : %d ~ \n", __func__, on);

	if (on) {
		tcclcd_gpio_set_value(pdata->reset, 1);
		lcd_delay_us(1000);

		tcclcd_gpio_set_value(pdata->power_on, 1);
		lcd_delay_us(1000);
		tcclcd_gpio_set_value(pdata->reset, 0);
		lcd_delay_us(1000);
		tcclcd_gpio_set_value(pdata->reset, 1);

		mdelay(10);

		lcdc_initialize(pdata->lcdc_num, panel);

		LCDC_IO_Set(pdata->lcdc_num, panel->bus_width);

		// lcd port current 
		BITCSET(HwGPIOC->GPCD0,0xFFFFFFFF, 0xAAAAAAAA);		
		BITCSET(HwGPIOC->GPCD1,0x00FFFFFF, 0x00FFAAAA);

		BITCSET(HwGPIOC->GPFN3, HwPORTCFG_GPFN0_MASK , HwPORTCFG_GPFN0(0));
		BITCSET(HwGPIOC->GPEN, Hw24 ,Hw24);
		BITCSET(HwGPIOC->GPDAT, Hw24 ,0);

		mdelay(16);

	}
	else 
	{
		tcclcd_gpio_set_value(pdata->display_on, 0);
		mdelay(10);
		tcclcd_gpio_set_value(pdata->reset, 0);
		tcclcd_gpio_set_value(pdata->power_on, 0);
		LCDC_IO_Disable(pdata->lcdc_num, panel->bus_width);
	}

	return 0;
}
示例#4
0
static int tm070rdh11_set_power(struct lcd_panel *panel, int on, unsigned int lcd_num)
{
	struct lcd_platform_data *pdata = panel->dev->platform_data;

	printk("%s : %d %d  \n", __func__, on, panel->bl_level);

	mutex_lock(&panel_lock);
	panel->state = on;

	if (on) {

		
		gpio_set_value(pdata->power_on, 1);
		udelay(100);

		gpio_set_value(pdata->reset, 1);
		mdelay(20);

		lcdc_initialize(panel, lcd_num);
		LCDC_IO_Set(1, panel->bus_width);

		if(panel->bl_level)		{
			msleep(80); 	
			tcc_gpio_config(pdata->bl_on, GPIO_FN(2));
		}
		else		{
			msleep(80);
		}
		
	}
	else 
	{
		msleep(10);
		gpio_set_value(pdata->reset, 0);

		gpio_set_value(pdata->power_on, 0);

		LCDC_IO_Disable(1, panel->bus_width);
	}
	mutex_unlock(&panel_lock);

	return 0;
}
示例#5
0
static int at070tn93_set_power(struct lcd_panel *panel, int on, unsigned int lcd_num)
{
	struct lcd_platform_data *pdata = panel->dev->platform_data;



	if(!on && panel->bl_level)
		panel->set_backlight_level(panel , 0);
	
	mutex_lock(&panel_lock);
	panel->state = on;

	printk("%s : %d %d  lcd number = (%d) \n", __func__, on, panel->bl_level, lcd_num);

	if (on) {
		gpio_set_value(pdata->power_on, 1);
		udelay(100);

		gpio_set_value(pdata->reset, 1);
		msleep(20);

		lcdc_initialize(panel, lcd_num);
		LCDC_IO_Set(lcd_num, panel->bus_width);
		msleep(100);
	}
	else 
	{
		msleep(10);
		gpio_set_value(pdata->reset, 0);
		gpio_set_value(pdata->power_on, 0);

		LCDC_IO_Disable(lcd_num, panel->bus_width);

	}
	mutex_unlock(&panel_lock);

	if(on && panel->bl_level)
		panel->set_backlight_level(panel , panel->bl_level);	

	return 0;
}
static int hm8369_set_power(struct lcd_panel *panel, int on)
{
    struct lcd_platform_data *pdata = &(panel->dev);

    dprintf(0,"hm8369_set_power, on=%d\n", on);


    if (on) {
        tcclcd_gpio_set_value(pdata->reset, 1);
#if defined(_M801_88_)
        lcd_delay_us(1000*10);
#else
        lcd_delay_us(1000);
#endif
        tcclcd_gpio_set_value(pdata->power_on, 1);
        lcd_delay_us(1000);
        tcclcd_gpio_set_value(pdata->reset, 0);
        lcd_delay_us(1000);
        tcclcd_gpio_set_value(pdata->reset, 1);

        tcclcd_gpio_set_value(pdata->display_on, 1);
        mdelay(10);

        lcdc_initialize(pdata->lcdc_num, panel);

        LCDC_IO_Set(pdata->lcdc_num, panel->bus_width);

        LCDC_IO_SetCurrent(pdata->lcdc_num, panel->bus_width);

        mdelay(16);
    }
    else
    {
        tcclcd_gpio_set_value(pdata->display_on, 0);
        mdelay(10);
        tcclcd_gpio_set_value(pdata->reset, 0);
        tcclcd_gpio_set_value(pdata->power_on, 0);
        LCDC_IO_Disable(pdata->lcdc_num, panel->bus_width);
    }
    return 0;
}
示例#7
0
static void lcdc_io_init_component(unsigned char lcdc_num, unsigned char type)
{
	unsigned int lcd_reg = 0;
	unsigned int width, height;
	stCOMPONENT_SPEC spec;
	stLTIMING		ComponentTiming;
	stLCDCTR		LcdCtrlParam;
	PVIOC_DISP		pDISPBase;
	PVIOC_WMIX		pWIXBase;
	PDDICONFIG 		pDDICfg = (PDDICONFIG)HwDDI_CONFIG_BASE;
	PNTSCPAL 		pTVE = (PNTSCPAL)HwNTSCPAL_BASE;
	PGPIO 			pGPIO = (PGPIO)HwGPIO_BASE;
	struct fbcon_config *fb_con;

	printf("%s, lcdc_num=%d, type=%d\n", __func__, lcdc_num, type);
		
	if(type >= LCDC_COMPONENT_MAX)
		type = defalut_component_resolution;

	#if defined(COMPONENT_CHIP_THS8200)
		#if defined(TARGET_BOARD_STB)
			/* THS8200 Power Control - GPIO_F16 */
			gpio_set(TCC_GPF(16), 1);
		#else
		#endif
	#endif

	#ifndef DEFAULT_DISPLAY_OUTPUT_DUAL
		BITSET(pTVE->DACPD, HwTVEDACPD_PD_EN);
	#endif
		
	component_get_spec(type, &spec);
	
	LCDC_IO_Set(lcdc_num, spec.component_bus_width);

	fb_con = &fb_cfg;
			
	if(lcdc_num)	
	{
		pDISPBase = (VIOC_DISP *)HwVIOC_DISP1;
		pWIXBase =(VIOC_WMIX *)HwVIOC_WMIX1; 
		tca_ckc_setperi(PERI_LCD1, ENABLE, spec.component_clock*spec.component_divider);
		//VIOC_OUTCFG_SetOutConfig(VIOC_OUTCFG_MRGB, VIOC_OUTCFG_DISP1);
	}
	else
	{
		pDISPBase = (VIOC_DISP *)HwVIOC_DISP0;
		pWIXBase =(VIOC_WMIX *)HwVIOC_WMIX0; 
		tca_ckc_setperi(PERI_LCD0, ENABLE, spec.component_clock*spec.component_divider);
		//VIOC_OUTCFG_SetOutConfig(VIOC_OUTCFG_MRGB, VIOC_OUTCFG_DISP0);
	}

	printf("LCDC0 clk:%d, LCDC1 clk:%d, PLL:%d, divide:%d\n", tca_ckc_getperi(PERI_LCD0), tca_ckc_getperi(PERI_LCD1), tca_ckc_getpll(PCDIRECTPLL0), spec.component_divider);
	
	width = spec.component_width;
	height = spec.component_height;

 	lcdc_set_logo(lcdc_num, width, height, fb_con);
	
	ComponentTiming.lpw = spec.component_LPW;
	ComponentTiming.lpc = spec.component_LPC + 1;
	ComponentTiming.lswc = spec.component_LSWC + 1;
	ComponentTiming.lewc = spec.component_LEWC + 1;
	
	ComponentTiming.vdb = spec.component_VDB;
	ComponentTiming.vdf = spec.component_VDF;
	ComponentTiming.fpw = spec.component_FPW1;
	ComponentTiming.flc = spec.component_FLC1;
	ComponentTiming.fswc = spec.component_FSWC1;
	ComponentTiming.fewc = spec.component_FEWC1;
	ComponentTiming.fpw2 = spec.component_FPW2;
	ComponentTiming.flc2 = spec.component_FLC2;
	ComponentTiming.fswc2 = spec.component_FSWC2;
	ComponentTiming.fewc2 = spec.component_FEWC2;

	VIOC_DISP_SetTimingParam(pDISPBase, &ComponentTiming);
 
	memset(&LcdCtrlParam, NULL, sizeof(LcdCtrlParam));

	switch(type)
	{
		case LCDC_COMPONENT_480I_NTSC:
		case LCDC_COMPONENT_576I_PAL:
			break;

		case LCDC_COMPONENT_720P:
			LcdCtrlParam.r2ymd = 3;
			LcdCtrlParam.ckg = 1;
			LcdCtrlParam.id= 0;
			LcdCtrlParam.iv = 1;
			LcdCtrlParam.ih = 1;
			LcdCtrlParam.ip = 0;
			LcdCtrlParam.pxdw = 12;
			LcdCtrlParam.ni = 1;
			break;

		case LCDC_COMPONENT_1080I:
			LcdCtrlParam.r2ymd = 3;
			LcdCtrlParam.ckg = 1;
			LcdCtrlParam.id= 1;
			LcdCtrlParam.iv = 1;
			LcdCtrlParam.ih = 0;
			LcdCtrlParam.ip = 1;
			LcdCtrlParam.pxdw = 12;
			LcdCtrlParam.ni = 0;
			LcdCtrlParam.tv = 1;
			break;

		default:
			break;
	}
	
	VIOC_DISP_SetControlConfigure(pDISPBase, &LcdCtrlParam);

	VIOC_DISP_SetSize(pDISPBase, width, height);
	VIOC_DISP_SetBGColor(pDISPBase, 0, 0 , 0);

	VIOC_WMIX_SetOverlayPriority(pWIXBase, 0);
	VIOC_WMIX_SetBGColor(pWIXBase, 0x00, 0x00, 0x00, 0xff);
	VIOC_WMIX_SetSize(pWIXBase, width, height);
	VIOC_WMIX_SetUpdate(pWIXBase);

	#if defined(TARGET_BOARD_STB)
		/* VE_FIELD: GPIO_E27 */
		gpio_config(TCC_GPE(27), GPIO_FN0|GPIO_OUTPUT|GPIO_HIGH);
	#endif
	
	/* Enable Component Chip */
	#if defined(COMPONENT_CHIP_CS4954)
		if(type == LCDC_COMPONENT_480I_NTSC)
			cs4954_enable(COMPONENT_MODE_NTSC_M); // NTSC_M
		else
			cs4954_enable(COMPONENT_MODE_PAL_B); // PAL_B
	#elif defined(COMPONENT_CHIP_THS8200)
		if(type == LCDC_COMPONENT_720P)
			ths8200_enable(COMPONENT_MODE_720P); // 720P
		else
			ths8200_enable(COMPONENT_MODE_1080I); // 1080I
	#endif

	VIOC_DISP_TurnOn(pDISPBase);
}