From 808da1bce0ba9121b3b573fc2f25917179276cec Mon Sep 17 00:00:00 2001 From: CTCaer Date: Fri, 15 Oct 2021 16:16:24 +0300 Subject: [PATCH] bdk: di: adjust OLED panel brightness curve The Samsung AMOLED panel least legible backlight is at a high duty (45 / 255). Change the linear curve to a more appropriate one. --- bdk/display/di.c | 4 ++++ bdk/display/di.h | 3 +++ 2 files changed, 7 insertions(+) diff --git a/bdk/display/di.c b/bdk/display/di.c index b19a5db..9396e99 100644 --- a/bdk/display/di.c +++ b/bdk/display/di.c @@ -557,6 +557,10 @@ void display_backlight(bool enable) void display_dsi_backlight_brightness(u32 brightness) { + // Normalize brightness value by 82% and a base of 45 duty. + if (brightness) + brightness = (brightness * PANEL_OLED_BL_COEFF / 100) + PANEL_OLED_BL_OFFSET; + u16 bl_ctrl = byte_swap_16((u16)(brightness * 8)); display_dsi_vblank_write(MIPI_DCS_SET_BRIGHTNESS, 2, &bl_ctrl); } diff --git a/bdk/display/di.h b/bdk/display/di.h index 4f75211..1e0f991 100644 --- a/bdk/display/di.h +++ b/bdk/display/di.h @@ -652,6 +652,9 @@ #define DCS_CONTROL_DISPLAY_DIMMING_CTRL BIT(3) #define DCS_CONTROL_DISPLAY_BRIGHTNESS_CTRL BIT(5) +#define PANEL_OLED_BL_COEFF 82 // 82%. +#define PANEL_OLED_BL_OFFSET 45 // Least legible backlight duty. + /* Switch Panels: * * 6.2" panels for Icosa and Iowa skus: