void backlight_ic_set_brightness(int level) { #if defined(CONFIG_BACKLIGHT_KTD253) //ARUBA, ARUBADUOS, KYLEPLUS ktd253_set_brightness(level); #endif #if defined(CONFIG_BACKLIGHT_AAT1401) aat1401_set_brightness(level); #endif }
/* Control function to switch the backlight on/off. May be called by suspend/resume or externally */ static void ktd253_backlight_on_off(struct backlight_device *bd, bool on) { struct ktd253 *pKtd253Data = bl_get_data(bd); dev_dbg(&bd->dev, "%s function enter\n", __func__); if (on){ pKtd253Data->backlight_disabled = false; bd->props.brightness = pKtd253Data->brightness; ktd253_set_brightness(bd); } else { pKtd253Data->backlight_disabled = true; gpio_set_value(pKtd253Data->pd->ctrl_gpio, pKtd253Data->pd->ctrl_low); pKtd253Data->currentRatio = KTD253_BACKLIGHT_OFF; } }
static void mipi_samsung_disp_backlight(struct msm_fb_data_type *mfd) { struct mipi_panel_info *mipi; #ifndef CONFIG_BACKLIGHT_IC_KTD253 struct dcs_cmd_req cmdreq; #endif static int bl_level_old; pr_info("%s Back light level:%d\n", __func__, mfd->bl_level); mipi = &mfd->panel_info.mipi; if (bl_level_old == mfd->bl_level) goto end; if (!msd.mpd->set_brightness_level || !mfd->panel_power_on) goto end; #if defined(CONFIG_BACKLIGHT_IC_KTD253) ktd253_set_brightness(msd.mpd->set_brightness_level(mfd->bl_level)); bl_level_old = mfd->bl_level; #else /*for himax ldi HX8394-A*/ mutex_lock(&dsi_tx_mutex); /* mdp4_dsi_cmd_busy_wait: will turn on dsi clock also */ mipi_dsi_mdp_busy_wait(); WRDISBV[1] = (unsigned char) (msd.mpd->set_brightness_level(mfd->bl_level)); cmdreq.cmds = himax_video_backlight_cmds; cmdreq.cmds_cnt = ARRAY_SIZE(himax_video_backlight_cmds); cmdreq.flags = CMD_REQ_COMMIT; cmdreq.rlen = 0; cmdreq.cb = NULL; mipi_dsi_cmdlist_put(&cmdreq); bl_level_old = mfd->bl_level; mutex_unlock(&dsi_tx_mutex); #endif end: return; }
static void mdss_dsi_panel_bl_ctrl(struct mdss_panel_data *pdata, u32 bl_level) { struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; #if defined(CONFIG_BACKLIGHT_IC_KTD253) static int bl_level_old; #endif #if defined(CONFIG_FB_MSM8x26_MDSS_CHECK_LCD_CONNECTION) if (get_samsung_lcd_attached() == 0) { printk("%s: LCD not connected!\n",__func__); #if defined(CONFIG_BACKLIGHT_IC_KTD2801) gpio_set_value(msd.bl_ap_pwm,0); #else gpio_set_value(12, 0); #endif return; } #endif if (pdata == NULL) { pr_err("%s: Invalid input data\n", __func__); return; } if( msd.mfd->panel_power_on == false){ pr_err("%s: panel power off no bl ctrl\n", __func__); return; } #if defined(CONFIG_ESD_ERR_FG_RECOVERY) if (err_fg_working) { pr_info("[LCD] %s : esd is working!! return.. \n", __func__); return; } #endif ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata, panel_data); switch (ctrl_pdata->bklt_ctrl) { case BL_WLED: led_trigger_event(bl_led_trigger, bl_level); break; case BL_PWM: #if defined(CONFIG_BACKLIGHT_IC_KTD2801) #ifdef EXPRESSWIRED ktd_backlight_set_brightness(bl_level); #else pr_err("[MINO] %s --> bl_level[1] : %d\n",__func__, bl_level ); bl_level=mdss_dsi_panel_pwm_scaling(bl_level); mdss_dsi_panel_bklt_pwm(bl_level); pr_err("[MINO] %s --> bl_level[2] : %d\n",__func__, bl_level ); #endif #else mdss_dsi_panel_bklt_pwm(ctrl_pdata, bl_level); #endif break; case BL_DCS_CMD: mdss_dsi_panel_bklt_dcs(ctrl_pdata, bl_level); break; case BL_GPIO_SWING: #if defined(CONFIG_BACKLIGHT_IC_KTD253) if (bl_level_old == bl_level) return; pr_err("%s: bl_level = %d\n",__func__,bl_level); ktd253_set_brightness(get_candela_index(bl_level),ctrl_pdata); bl_level_old = bl_level; #endif break; default: pr_err("%s: Unknown bl_ctrl configuration\n", __func__); break; } }
static int ktd253_probe(struct platform_device *pdev) { struct backlight_properties props; struct backlight_device *ktd253_backlight_device; struct ktd253 *pKtd253Data; struct ktd253x_bl_platform_data *pd; int ret = 0; dev_dbg(&pdev->dev, "%s function enter\n", __func__); pKtd253Data = kmalloc(sizeof(struct ktd253), GFP_KERNEL); memset(pKtd253Data, 0, sizeof(struct ktd253)); #if 0 // HW request. Down the backlight because of current consumption. pKtd253Data->currentRatio = KTD253_BACKLIGHT_OFF; pKtd253Data->brightness = KTD253_BACKLIGHT_OFF; #else pKtd253Data->currentRatio = 12; pKtd253Data->brightness = 160; #endif pKtd253Data->pd = pdev->dev.platform_data; memset(&props, 0, sizeof(struct backlight_properties)); props.max_brightness = pKtd253Data->pd->max_brightness; props.type = BACKLIGHT_RAW; ktd253_backlight_device = backlight_device_register( "panel", &pdev->dev, pKtd253Data, &ktd253_ops, &props); if (IS_ERR(ktd253_backlight_device)) { dev_info(&pdev->dev, "backlight_device_register() failed\n"); ret = PTR_ERR(ktd253_backlight_device); } else { ktd253_backlight_device->props.power = FB_BLANK_UNBLANK; #if 0 // HW request. Down the backlight because of current consumption. ktd253_backlight_device->props.brightness = ktd253_backlight_device->props.max_brightness; ktd253_set_brightness(ktd253_backlight_device); #endif } #ifdef CONFIG_HAS_EARLYSUSPEND pKtd253Data->earlysuspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB - 1; pKtd253Data->earlysuspend.suspend = ktd253_early_suspend; pKtd253Data->earlysuspend.resume = ktd253_late_resume; register_early_suspend(&pKtd253Data->earlysuspend); pKtd253Data->backlight_disabled = false; #endif pd = pKtd253Data->pd; pd->bd = ktd253_backlight_device; /* If external control of the backlight has been requested, then provide interface function in backlight platform data */ if (pd->external_bl_control) pd->bl_on_off = ktd253_backlight_on_off; dev_dbg(&pdev->dev, "%s function exit\n", __func__); return ret; }
void backlight_ic_set_brightness(int level) { ktd253_set_brightness(level); }
int backlight_ic_set_brightness(int level) { int ret = 0; ret = ktd253_set_brightness(level); return ret; }