diff options
author | Bo Kim <bok@nvidia.com> | 2013-07-10 20:46:08 +0900 |
---|---|---|
committer | Gabby Lee <galee@nvidia.com> | 2013-07-11 17:11:02 -0700 |
commit | 699c43bcf501c9140db118058cf27198c40695be (patch) | |
tree | 76f3f0e341be31af44cd1b035ef852516c224b5b /drivers | |
parent | fa0de3be28fd1fe1f14a80291a4e5c3af7f0023c (diff) |
backlight: pwm_bl: Selectable edp throttlling
Backlight EDP throttling could be selectable by platform data.
Bug 1316595
Bug 1318582
Bug 1319905
Bug 1310789
Change-Id: Idcf0893ac7554d4a525028703592b2e4954c30d2
Signed-off-by: Bo Kim <bok@nvidia.com>
Reviewed-on: http://git-master/r/246997
Reviewed-by: Hyong Bin Kim <hyongbink@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Gabby Lee <galee@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/backlight/pwm_bl.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c index 10a6b9b8ef39..841c8bc924e9 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -37,6 +37,7 @@ struct pwm_bl_data { unsigned int period; unsigned int lth_brightness; unsigned int pwm_gpio; + bool disable_edp_throttle; struct edp_client *tegra_pwm_bl_edp_client; int *edp_brightness_states; int (*notify)(struct device *, @@ -212,11 +213,20 @@ static int pwm_backlight_probe(struct platform_device *pdev) pb->tegra_pwm_bl_edp_client->name[EDP_NAME_LEN - 1] = '\0'; pb->tegra_pwm_bl_edp_client->states = data->edp_states; pb->tegra_pwm_bl_edp_client->num_states = TEGRA_PWM_BL_EDP_NUM_STATES; - pb->tegra_pwm_bl_edp_client->e0_index = TEGRA_PWM_BL_EDP_ZERO; + pb->disable_edp_throttle = data->disable_edp_throttle; + if (pb->disable_edp_throttle == true) { + pb->tegra_pwm_bl_edp_client->e0_index = TEGRA_PWM_BL_EDP_NEG_3; + pb->tegra_pwm_bl_edp_client->priority = EDP_MAX_PRIO + 1; + pb->tegra_pwm_bl_edp_client->throttle = NULL; + pb->tegra_pwm_bl_edp_client->notify_promotion = NULL; + } else { + pb->tegra_pwm_bl_edp_client->e0_index = TEGRA_PWM_BL_EDP_ZERO; + pb->tegra_pwm_bl_edp_client->priority = EDP_MAX_PRIO + 2; + pb->tegra_pwm_bl_edp_client->throttle = pwm_backlight_edpcb; + pb->tegra_pwm_bl_edp_client->notify_promotion = + pwm_backlight_edpcb; + } pb->tegra_pwm_bl_edp_client->private_data = bl; - pb->tegra_pwm_bl_edp_client->priority = EDP_MAX_PRIO + 2; - pb->tegra_pwm_bl_edp_client->throttle = pwm_backlight_edpcb; - pb->tegra_pwm_bl_edp_client->notify_promotion = pwm_backlight_edpcb; battery_manager = edp_get_manager("battery"); if (!battery_manager) { @@ -227,9 +237,15 @@ static int pwm_backlight_probe(struct platform_device *pdev) if (ret) { dev_err(&pdev->dev, "unable to register edp client\n"); } else { - ret = edp_update_client_request( - pb->tegra_pwm_bl_edp_client, + if (pb->disable_edp_throttle == true) { + ret = edp_update_client_request( + pb->tegra_pwm_bl_edp_client, TEGRA_PWM_BL_EDP_ZERO, NULL); + } else { + ret = edp_update_client_request( + pb->tegra_pwm_bl_edp_client, + TEGRA_PWM_BL_EDP_NEG_3, NULL); + } if (ret) { dev_err(&pdev->dev, "unable to set E0 EDP state\n"); |