summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/display/panel-s6e8aa0.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/video/display/panel-s6e8aa0.c b/drivers/video/display/panel-s6e8aa0.c
index 1bfa30f0511..9f82a9cc58a 100644
--- a/drivers/video/display/panel-s6e8aa0.c
+++ b/drivers/video/display/panel-s6e8aa0.c
@@ -35,6 +35,7 @@
#include <video/panel-s6e8aa0.h>
#define LDI_MTP_LENGTH 24
+#define MAX_BRIGHTNESS 100
#define GAMMA_LEVEL_NUM 25
#define GAMMA_TABLE_LEN 26
#define S6E8AA0_PANEL_COND_LEN 39
@@ -906,6 +907,16 @@ static int s6e8aa0_get_brightness(struct backlight_device *bd)
return bd->props.brightness;
}
+static int s6e8aa0_convert_brightness(int brightness)
+{
+ if (brightness >= MAX_BRIGHTNESS)
+ return GAMMA_LEVEL_NUM - 1;
+ else if (brightness > 0)
+ return (brightness / 4);
+ else
+ return 0;
+}
+
static int s6e8aa0_update_status(struct backlight_device *bd)
{
struct s6e8aa0 *lcd = bl_get_data(bd);
@@ -914,7 +925,7 @@ static int s6e8aa0_update_status(struct backlight_device *bd)
mutex_lock(&lcd->mutex);
- lcd->brightness = bd->props.brightness;
+ lcd->brightness = s6e8aa0_convert_brightness(bd->props.brightness);
if (lcd->entity.state != DISPLAY_ENTITY_STATE_ON)
goto unlock;
@@ -1342,8 +1353,8 @@ static int s6e8aa0_probe(struct platform_device *pdev)
mutex_init(&lcd->mutex);
- lcd->bd->props.max_brightness = GAMMA_LEVEL_NUM - 1;
- lcd->bd->props.brightness = GAMMA_LEVEL_NUM - 1;
+ lcd->bd->props.max_brightness = MAX_BRIGHTNESS;
+ lcd->bd->props.brightness = MAX_BRIGHTNESS;
lcd->brightness = GAMMA_LEVEL_NUM - 1;
lcd->entity.of_node = pdev->dev.of_node;