int flashlight_control(int mode)
{
#ifdef CONFIG_FLASHLIGHT_TPS61310
/* HTC_START Turn off backlight when flash on */
	int	rc;
	static int brightness = 255;
	static int backlight_off = 0;

	pr_info("[CAM] %s, linear led, mode %d backlight_off %d", __func__, mode, backlight_off);

	if (mode != FL_MODE_PRE_FLASH && mode != FL_MODE_OFF) {
		if (!backlight_off) {
			/* restore backlight brightness value first */
			brightness = led_brightness_value_get("lcd-backlight");
			if (brightness >= 0 && brightness <= 255) {
				pr_info("[CAM] %s, Turn off backlight before flashlight, brightness %d", __func__, brightness);
				led_brightness_value_set("lcd-backlight", 0);
				backlight_off = 1;
			} else
				pr_err("[CAM] %s, Invalid brightness value!! brightness %d", __func__, brightness);
		}
	}

	rc = tps61310_flashlight_control(mode);

	if (mode == FL_MODE_PRE_FLASH || mode == FL_MODE_OFF) {
		if(backlight_off) {
			pr_info("[CAM] %s, Turn on backlight after flashlight, brightness %d", __func__, brightness);
			led_brightness_value_set("lcd-backlight", brightness);
			backlight_off = 0;
		}
	}

	return rc;
/* HTC_END */
#else
	return 0;
#endif
}
static void shooter_u_3Dpanel_off(void)
{
	int rc;
	pwm_gpio_config.output_value = 0;
	rc = pm8xxx_gpio_config(PM8058_GPIO_PM_TO_SYS(SHOOTER_U_3DLCM_PD), &pwm_gpio_config);
	if (rc < 0)
		pr_err("%s pmic gpio config gpio %d failed\n", __func__, SHOOTER_U_3DLCM_PD);

	mdp4_dsi_color_enhancement(mdp_sharp_barrier_off, ARRAY_SIZE(mdp_sharp_barrier_off));
	pwm_disable(pwm_3d);

	rc = pm8xxx_gpio_config(PM8058_GPIO_PM_TO_SYS(SHOOTER_U_3DCLK), &clk_gpio_config_off);
	if (rc < 0)
		pr_err("%s pmic gpio config gpio %d failed\n", __func__, SHOOTER_U_3DCLK);
	gpio_set_value(SHOOTER_U_CTL_3D_1, 0);
	gpio_set_value(SHOOTER_U_CTL_3D_2, 0);
	gpio_set_value(SHOOTER_U_CTL_3D_3, 0);
	gpio_set_value(SHOOTER_U_CTL_3D_4, 0);
	led_brightness_value_set("lcd-backlight", last_br_2d);
}
static void shooter_u_3Dpanel_on(bool bLandscape)
{
	struct pm8058_pwm_period pwm_conf;
	int rc;

	led_brightness_value_set("lcd-backlight", 255);

	pwm_gpio_config.output_value = 1;
	rc = pm8xxx_gpio_config(PM8058_GPIO_PM_TO_SYS(SHOOTER_U_3DLCM_PD), &pwm_gpio_config);
	if (rc < 0)
		pr_err("%s pmic gpio config gpio %d failed\n", __func__, PM8058_GPIO_PM_TO_SYS(SHOOTER_U_3DLCM_PD));

	rc = pm8xxx_gpio_config(PM8058_GPIO_PM_TO_SYS(SHOOTER_U_3DCLK), &clk_gpio_config_on);
	if (rc < 0)
		pr_err("%s pmic gpio config gpio %d failed\n", __func__, SHOOTER_U_3DCLK);

	pwm_disable(pwm_3d);
	pwm_conf.pwm_size = 9;
	pwm_conf.clk = PM_PWM_CLK_19P2MHZ;
	pwm_conf.pre_div = PM_PWM_PREDIVIDE_3;
	pwm_conf.pre_div_exp = 6;
	rc = pwm_configure(pwm_3d, &pwm_conf, 1, 255);
	if (rc < 0)
		pr_err("%s pmic configure %d\n", __func__, rc);
	pwm_enable(pwm_3d);

	if(bLandscape) {
		mdp4_dsi_color_enhancement(mdp_sharp_barrier_on, ARRAY_SIZE(mdp_sharp_barrier_on));
		gpio_set_value(SHOOTER_U_CTL_3D_1, 1);
		gpio_set_value(SHOOTER_U_CTL_3D_2, 1);
		gpio_set_value(SHOOTER_U_CTL_3D_3, 1);
		gpio_set_value(SHOOTER_U_CTL_3D_4, 0);
	} else {
		mdp4_dsi_color_enhancement(mdp_sharp_barrier_on, ARRAY_SIZE(mdp_sharp_barrier_on));
		gpio_set_value(SHOOTER_U_CTL_3D_1, 1);
		gpio_set_value(SHOOTER_U_CTL_3D_2, 1);
		gpio_set_value(SHOOTER_U_CTL_3D_3, 0);
		gpio_set_value(SHOOTER_U_CTL_3D_4, 1);
	}
}