/** * Exit partial display mode * * @param lcd_id MAIN_LCD or SUB_LCD * * @return None. */ void lcd_partial_off(kal_uint8 lcd_id) { LSD_TakeControl(LSD_LCDARB_LCD);/*to protect when LCD and MSDC share pins*/ lcd_power_ctrl(KAL_TRUE); switch (lcd_id) { case MAIN_LCD: #if ( !defined(MT6205B) && !defined(MT6208) ) DRV_WriteReg32(LCD_ROI_CMD_ADDR_REG,MAIN_LCD_CMD_ADDR); DRV_WriteReg32(LCD_ROI_DATA_ADDR_REG,MAIN_LCD_DATA_ADDR); #endif if (MainLCD->TurnOffPartialDisplay != NULL) { MainLCD->TurnOffPartialDisplay(); } break; #ifdef DUAL_LCD case SUB_LCD: #if ( !defined(MT6205B) && !defined(MT6208) ) DRV_WriteReg32(LCD_ROI_CMD_ADDR_REG,SUB_LCD_CMD_ADDR); DRV_WriteReg32(LCD_ROI_DATA_ADDR_REG,SUB_LCD_DATA_ADDR); #endif /* MT6218B, MT6219 */ if (SubLCD->TurnOffPartialDisplay != NULL) { SubLCD->TurnOffPartialDisplay(); } break; #endif /* DUAL_LCD */ default: ASSERT(0); break; } lcd_power_ctrl(KAL_FALSE); LSD_GiveControl(LSD_LCDARB_LCD);/*to protect when LCD and MSDC share pins*/ }
/** * Set the brightness of LCM * * @param lcd_id MAIN_LCD or SUB_LCD * @param bright_level brightness level of LCM * * @return None. */ void lcd_bright_level(kal_uint8 lcd_id, kal_uint8 bright_level) { LSD_TakeControl(LSD_LCDARB_LCD);/*to protect when LCD and MSDC share pins*/ lcd_power_ctrl(KAL_TRUE); switch (lcd_id) { case MAIN_LCD: #if ( !defined(MT6205B) && !defined(MT6208) ) DRV_WriteReg32(LCD_ROI_CMD_ADDR_REG,MAIN_LCD_CMD_ADDR); DRV_WriteReg32(LCD_ROI_DATA_ADDR_REG,MAIN_LCD_DATA_ADDR); #endif MainLCD->SetBrightLevel(bright_level); break; #ifdef DUAL_LCD case SUB_LCD: #if ( !defined(MT6205B) && !defined(MT6208) ) DRV_WriteReg32(LCD_ROI_CMD_ADDR_REG,SUB_LCD_CMD_ADDR); DRV_WriteReg32(LCD_ROI_DATA_ADDR_REG,SUB_LCD_DATA_ADDR); #endif SubLCD->SetBrightLevel(bright_level); break; #endif /* DUAL_LCD */ default: ASSERT(0); break; } lcd_power_ctrl(KAL_FALSE); LSD_GiveControl(LSD_LCDARB_LCD);/*to protect when LCD and MSDC share pins*/ }
static int lcd_resume(void *args) { args = args; PRINT_INFO(KERN_INFO "LCD resuming...\n"); lcd_power_ctrl(ON); backlight_power_ctrl(ON); return 0; }
static void backlight_ctrl(s32 value) { int err, ret; if (value) { /* backlight ON */ if (lcd_power == OFF) { ret = lcd_power_ctrl(ON); if (ret != 0) { printk(KERN_ERR "lcd power on control is failed\n"); return; } } if (gpio_is_valid(S3C64XX_GPF(15))) { err = gpio_request(S3C64XX_GPF(15), "GPF"); if (err) { printk(KERN_ERR "failed to request GPF for " "lcd backlight control\n"); } gpio_direction_output(S3C64XX_GPF(15), 1); } s3cfb_set_brightness((int)(value/3)); } else { ret = lcd_power_ctrl(OFF); if (ret != 0) { printk(KERN_ERR "lcd power off control is failed\n"); } /* backlight OFF */ if (gpio_is_valid(S3C64XX_GPF(15))) { err = gpio_request(S3C64XX_GPF(15), "GPF"); if (err) { printk(KERN_ERR "failed to request GPF for " "lcd backlight control\n"); } gpio_direction_output(S3C64XX_GPF(15), 0); } } gpio_free(S3C64XX_GPF(15)); }
static int lcd_suspend(void *args) { args = args; PRINT_INFO(KERN_INFO "LCD suspending...\n"); backlight_power_ctrl(OFF); lcd_power_ctrl(OFF); return 0; }
static int lcd_resume(void *args) { args = args; PRINT_INFO(KERN_INFO "LCD resuming...\n"); lcd_power_ctrl(ON); backlight_power_ctrl(ON); //led_power_ctrl(RED_OFF);//Add by calvin on 16th,Dec 2013 return 0; }
void s3cfb_init_hw(void) { s3cfb_set_fimd_info(); s3cfb_set_gpio(); lcd_gpio_init(); mdelay(100); lcd_power_ctrl(); }