summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBo Kim <bok@nvidia.com>2013-07-10 20:46:08 +0900
committerGabby Lee <galee@nvidia.com>2013-07-11 17:11:02 -0700
commit699c43bcf501c9140db118058cf27198c40695be (patch)
tree76f3f0e341be31af44cd1b035ef852516c224b5b /drivers
parentfa0de3be28fd1fe1f14a80291a4e5c3af7f0023c (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.c28
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");