]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
Revert "Revert "dc: tegra: disable prism at low brightness""
authorRobert Shih <rshih@nvidia.com>
Thu, 6 Nov 2014 05:08:11 +0000 (13:08 +0800)
committerTodd Poynter <tpoynter@nvidia.com>
Mon, 10 Nov 2014 02:06:53 +0000 (18:06 -0800)
This reverts commit 313c1675fe3c2cadef882d84590ab0bf82c4ca8b.

bug 1536020

Change-Id: I0f4d1b4f92ed95155dd90a0970511a3fd7afc470
Signed-off-by: Robert Shih <rshih@nvidia.com>
Reviewed-on: http://git-master/r/594717
GVS: Gerrit_Virtual_Submit
Reviewed-by: Arun Swain <arswain@nvidia.com>
Tested-by: Arun Swain <arswain@nvidia.com>
Reviewed-by: Todd Poynter <tpoynter@nvidia.com>
arch/arm/mach-tegra/panel-a-1200-1920-8-0.c

index 5f18b2b64f3ccc018f7c37ac3808389b0743128b..d8782336d01b2f7905b8f30ad27b954e6aad476c 100644 (file)
 #define DC_CTRL_MODE   (TEGRA_DC_OUT_CONTINUOUS_MODE  |\
                        TEGRA_DC_OUT_INITIALIZED_MODE)
 
+#define PRISM_THRESHOLD                50
+#define HYST_VAL               25
+
 static bool reg_requested;
 static bool gpio_requested;
 static struct platform_device *disp_device;
 static struct regulator *avdd_lcd_3v3;
 static struct regulator *vdd_lcd_bl_en;
 static struct regulator *dvdd_lcd_1v8;
+static struct device *dc_dev;
 
 static struct tegra_dc_sd_settings dsi_a_1200_1920_8_0_sd_settings = {
        .enable = 0, /* disabled by default. */
+       .enable_int = 0, /* disabled by default. */
        .use_auto_pwm = false,
        .hw_update_delay = 0,
        .bin_width = -1,
@@ -309,7 +314,7 @@ static int dsi_a_1200_1920_8_0_enable(struct device *dev)
                msleep(20);
        }
 #endif
-
+       dc_dev = dev;
        return 0;
 fail:
        return err;
@@ -334,6 +339,7 @@ static int dsi_a_1200_1920_8_0_disable(void)
        if (dvdd_lcd_1v8)
                regulator_disable(dvdd_lcd_1v8);
 
+       dc_dev = NULL;
        return 0;
 }
 
@@ -529,11 +535,17 @@ static struct tegra_dc_cmu dsi_a_1200_1920_8_0_cmu = {
 
 static int dsi_a_1200_1920_8_0_bl_notify(struct device *unused, int brightness)
 {
-       int cur_sd_brightness = atomic_read(&sd_brightness);
+       int cur_sd_brightness;
 
        /* apply the non-linear curve adjustment */
        brightness = dsi_a_1200_1920_8_0_bl_nonlinear[brightness];
-
+       if (dc_dev) {
+               if (brightness <= PRISM_THRESHOLD)
+                       nvsd_enbl_dsbl_prism(dc_dev, false);
+               else if (brightness > PRISM_THRESHOLD + HYST_VAL)
+                       nvsd_enbl_dsbl_prism(dc_dev, true);
+       }
+       cur_sd_brightness = atomic_read(&sd_brightness);
        /* SD brightness is a percentage */
        brightness = (brightness * cur_sd_brightness) / 255;