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; }
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; }
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; }
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; }
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; }
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); }