diff --git a/arch/arm/mach-msm/board-8930-display.c b/arch/arm/mach-msm/board-8930-display.c index 488c93cdd11..fc0c638fefc 100644 --- a/arch/arm/mach-msm/board-8930-display.c +++ b/arch/arm/mach-msm/board-8930-display.c @@ -124,6 +124,15 @@ static struct platform_device msm_fb_device = { }; static bool dsi_power_on; +static struct mipi_dsi_panel_platform_data novatek_pdata; +static void pm8917_gpio_set_backlight(int bl_level) +{ + int gpio24 = PM8917_GPIO_PM_TO_SYS(24); + if (bl_level > 0) + gpio_set_value_cansleep(gpio24, 1); + else + gpio_set_value_cansleep(gpio24, 0); +} /* * TODO: When physical 8930/PM8038 hardware becomes @@ -206,9 +215,13 @@ static int mipi_dsi_cdp_panel_power(int on) rc); return -ENODEV; } + gpio_set_value_cansleep(gpio24, 0); + novatek_pdata.gpio_set_backlight = + pm8917_gpio_set_backlight; } dsi_power_on = true; } + if (on) { rc = regulator_set_optimum_mode(reg_l8, 100000); if (rc < 0) { @@ -248,8 +261,6 @@ static int mipi_dsi_cdp_panel_power(int on) gpio_set_value(DISP_RST_GPIO, 1); gpio_set_value(DISP_3D_2D_MODE, 1); usleep(20); - if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) - gpio_set_value_cansleep(gpio24, 1); } else { gpio_set_value(DISP_RST_GPIO, 0); @@ -286,8 +297,6 @@ static int mipi_dsi_cdp_panel_power(int on) } gpio_set_value(DISP_3D_2D_MODE, 0); usleep(20); - if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) - gpio_set_value_cansleep(gpio24, 0); } return 0; } diff --git a/arch/arm/mach-msm/include/mach/board.h b/arch/arm/mach-msm/include/mach/board.h index 306011ab065..18b23e3a0e0 100644 --- a/arch/arm/mach-msm/include/mach/board.h +++ b/arch/arm/mach-msm/include/mach/board.h @@ -457,6 +457,7 @@ struct mipi_dsi_panel_platform_data { char dlane_swap; void (*dsi_pwm_cfg)(void); char enable_wled_bl_ctrl; + void (*gpio_set_backlight)(int bl_level); }; struct lvds_panel_platform_data {