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
}
Example #2
0
/* 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;
	}
}
Example #5
0
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;
}