Hi,
Here's a small patchset that I created while playing with PostmarketOS
on my Samsung Galaxy S2.
The first two patches update the LD9040 panel driver so that it looks
much better, and supports setting the backlight.
The third patch fixes the size of the panel in the Device Tree. The
previous values were completely bogus and caused Phosh (PmOS' UI) to
display tiny icons and text as it thought the DPI was much lower.
Cheers,
-Paul
Paul Cercueil (3):
drm/panel: ld9040: Use better magic values
drm/panel: ld9040: Register a backlight device
ARM: dts: exynos/i9100: Fix LCD screen's physical size
arch/arm/boot/dts/exynos4210-i9100.dts | 4 +-
drivers/gpu/drm/panel/panel-samsung-ld9040.c | 51 ++++++++++++++++++--
2 files changed, 48 insertions(+), 7 deletions(-)
--
2.40.1
The previous values were completely bogus, and resulted in the computed
DPI ratio being much lower than reality, causing applications and UIs to
misbehave.
Signed-off-by: Paul Cercueil <[email protected]>
Fixes: 8620cc2f99b7 ("ARM: dts: exynos: Add devicetree file for the Galaxy S2")
Cc: <[email protected]> # v5.8+
---
arch/arm/boot/dts/exynos4210-i9100.dts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 37cd4dde53e4..a9ec1f6c1dea 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -207,8 +207,8 @@ lcd@0 {
power-on-delay = <10>;
reset-delay = <10>;
- panel-width-mm = <90>;
- panel-height-mm = <154>;
+ panel-width-mm = <56>;
+ panel-height-mm = <93>;
display-timings {
timing {
--
2.40.1
I have no idea what the prior magic values mean, and I have no idea
what my replacement (extracted from [1]) magic values mean.
What I do know, is that these new values result in a much better
picture, where the blacks are really black (as you would expect on an
AMOLED display) instead of grey-ish.
[1] https://github.com/dorimanx/Dorimanx-SG2-I9100-Kernel/blob/master-jelly-bean/arch/arm/mach-exynos/u1-panel.h
Signed-off-by: Paul Cercueil <[email protected]>
---
drivers/gpu/drm/panel/panel-samsung-ld9040.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-samsung-ld9040.c b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
index 01eb211f32f7..7fd9444b42c5 100644
--- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c
+++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
@@ -180,17 +180,18 @@ static void ld9040_init(struct ld9040 *ctx)
{
ld9040_dcs_write_seq_static(ctx, MCS_USER_SETTING, 0x5a, 0x5a);
ld9040_dcs_write_seq_static(ctx, MCS_PANEL_CONDITION,
- 0x05, 0x65, 0x96, 0x71, 0x7d, 0x19, 0x3b, 0x0d,
- 0x19, 0x7e, 0x0d, 0xe2, 0x00, 0x00, 0x7e, 0x7d,
- 0x07, 0x07, 0x20, 0x20, 0x20, 0x02, 0x02);
+ 0x05, 0x5e, 0x96, 0x6b, 0x7d, 0x0d, 0x3f, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x05, 0x1f, 0x1f, 0x1f, 0x00, 0x00);
ld9040_dcs_write_seq_static(ctx, MCS_DISPCTL,
- 0x02, 0x08, 0x08, 0x10, 0x10);
+ 0x02, 0x06, 0x0a, 0x10, 0x10);
ld9040_dcs_write_seq_static(ctx, MCS_MANPWR, 0x04);
ld9040_dcs_write_seq_static(ctx, MCS_POWER_CTRL,
0x0a, 0x87, 0x25, 0x6a, 0x44, 0x02, 0x88);
- ld9040_dcs_write_seq_static(ctx, MCS_ELVSS_ON, 0x0d, 0x00, 0x16);
+ ld9040_dcs_write_seq_static(ctx, MCS_ELVSS_ON, 0x0f, 0x00, 0x16);
ld9040_dcs_write_seq_static(ctx, MCS_GTCON, 0x09, 0x00, 0x00);
ld9040_brightness_set(ctx);
+
ld9040_dcs_write_seq_static(ctx, MIPI_DCS_EXIT_SLEEP_MODE);
ld9040_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_ON);
}
--
2.40.1
Hi
On 03/07/2023 23:47, Paul Cercueil wrote:
> I have no idea what the prior magic values mean, and I have no idea
> what my replacement (extracted from [1]) magic values mean.
>
> What I do know, is that these new values result in a much better
> picture, where the blacks are really black (as you would expect on an
> AMOLED display) instead of grey-ish.
>
> [1] https://github.com/dorimanx/Dorimanx-SG2-I9100-Kernel/blob/master-jelly-bean/arch/arm/mach-exynos/u1-panel.h
>
> Signed-off-by: Paul Cercueil <[email protected]>
> ---
> drivers/gpu/drm/panel/panel-samsung-ld9040.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-samsung-ld9040.c b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
> index 01eb211f32f7..7fd9444b42c5 100644
> --- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c
> +++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
> @@ -180,17 +180,18 @@ static void ld9040_init(struct ld9040 *ctx)
> {
> ld9040_dcs_write_seq_static(ctx, MCS_USER_SETTING, 0x5a, 0x5a);
> ld9040_dcs_write_seq_static(ctx, MCS_PANEL_CONDITION,
> - 0x05, 0x65, 0x96, 0x71, 0x7d, 0x19, 0x3b, 0x0d,
> - 0x19, 0x7e, 0x0d, 0xe2, 0x00, 0x00, 0x7e, 0x7d,
> - 0x07, 0x07, 0x20, 0x20, 0x20, 0x02, 0x02);
> + 0x05, 0x5e, 0x96, 0x6b, 0x7d, 0x0d, 0x3f, 0x00,
> + 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x07, 0x05, 0x1f, 0x1f, 0x1f, 0x00, 0x00);
> ld9040_dcs_write_seq_static(ctx, MCS_DISPCTL,
> - 0x02, 0x08, 0x08, 0x10, 0x10);
> + 0x02, 0x06, 0x0a, 0x10, 0x10);
> ld9040_dcs_write_seq_static(ctx, MCS_MANPWR, 0x04);
> ld9040_dcs_write_seq_static(ctx, MCS_POWER_CTRL,
> 0x0a, 0x87, 0x25, 0x6a, 0x44, 0x02, 0x88);
> - ld9040_dcs_write_seq_static(ctx, MCS_ELVSS_ON, 0x0d, 0x00, 0x16);
> + ld9040_dcs_write_seq_static(ctx, MCS_ELVSS_ON, 0x0f, 0x00, 0x16);
> ld9040_dcs_write_seq_static(ctx, MCS_GTCON, 0x09, 0x00, 0x00);
> ld9040_brightness_set(ctx);
> +
You can drop this spurious new line for v2
> ld9040_dcs_write_seq_static(ctx, MIPI_DCS_EXIT_SLEEP_MODE);
> ld9040_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_ON);
> }
And add
Reviewed-by: Neil Armstrong <[email protected]>
Neil