2023-07-08 08:46:00

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v2 0/3] Galaxy S2 (i9100) panel updates v2

Hi,

Follow-up on my patchset that fixes the display of the Samsung Galaxy S2
when running PostmarketOS.

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.

Changes since V1:
[1/3]: Remove spurious new line
[2/3]: Remove .get_brightness() callback, use bl_get_data() and
backlight_get_brightness()

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 | 42 +++++++++++++++++---
2 files changed, 38 insertions(+), 8 deletions(-)

--
2.40.1



2023-07-08 08:58:12

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v2 2/3] drm/panel: ld9040: Register a backlight device

Register a backlight device to be able to switch between all the gamma
levels.

v2: Remove .get_brightness() callback, use bl_get_data() and
backlight_get_brightness()

Signed-off-by: Paul Cercueil <[email protected]>
---
drivers/gpu/drm/panel/panel-samsung-ld9040.c | 32 +++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/panel/panel-samsung-ld9040.c b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
index f39f999c21af..ad5ed635f592 100644
--- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c
+++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
@@ -8,6 +8,7 @@
* Andrzej Hajda <[email protected]>
*/

+#include <linux/backlight.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/module.h>
@@ -310,8 +311,30 @@ static int ld9040_parse_dt(struct ld9040 *ctx)
return 0;
}

+static int ld9040_bl_update_status(struct backlight_device *dev)
+{
+ struct ld9040 *ctx = bl_get_data(dev);
+
+ ctx->brightness = backlight_get_brightness(dev);
+ ld9040_brightness_set(ctx);
+
+ return 0;
+}
+
+static const struct backlight_ops ld9040_bl_ops = {
+ .update_status = ld9040_bl_update_status,
+};
+
+static const struct backlight_properties ld9040_bl_props = {
+ .type = BACKLIGHT_RAW,
+ .scale = BACKLIGHT_SCALE_NON_LINEAR,
+ .max_brightness = ARRAY_SIZE(ld9040_gammas) - 1,
+ .brightness = ARRAY_SIZE(ld9040_gammas) - 1,
+};
+
static int ld9040_probe(struct spi_device *spi)
{
+ struct backlight_device *bldev;
struct device *dev = &spi->dev;
struct ld9040 *ctx;
int ret;
@@ -323,7 +346,7 @@ static int ld9040_probe(struct spi_device *spi)
spi_set_drvdata(spi, ctx);

ctx->dev = dev;
- ctx->brightness = ARRAY_SIZE(ld9040_gammas) - 1;
+ ctx->brightness = ld9040_bl_props.brightness;

ret = ld9040_parse_dt(ctx);
if (ret < 0)
@@ -353,6 +376,13 @@ static int ld9040_probe(struct spi_device *spi)
drm_panel_init(&ctx->panel, dev, &ld9040_drm_funcs,
DRM_MODE_CONNECTOR_DPI);

+
+ bldev = devm_backlight_device_register(dev, dev_name(dev), dev,
+ ctx, &ld9040_bl_ops,
+ &ld9040_bl_props);
+ if (IS_ERR(bldev))
+ return PTR_ERR(bldev);
+
drm_panel_add(&ctx->panel);

return 0;
--
2.40.1


2023-07-08 08:58:15

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v2 1/3] drm/panel: ld9040: Use better magic values

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

v2: Remove spurious new line

Signed-off-by: Paul Cercueil <[email protected]>
Reviewed-by: Neil Armstrong <[email protected]>
---
drivers/gpu/drm/panel/panel-samsung-ld9040.c | 10 +++++-----
1 file changed, 5 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..f39f999c21af 100644
--- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c
+++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
@@ -180,15 +180,15 @@ 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);
--
2.40.1


2023-07-08 08:58:20

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v2 3/3] ARM: dts: exynos/i9100: Fix LCD screen's physical size

The previous values were completely bogus, and resulted in the computed
DPI ratio being much lower than reality, causing applications and UIs to
misbehave.

The new values were measured by myself with a ruler.

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


2023-07-08 10:46:00

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] Galaxy S2 (i9100) panel updates v2

Hi Paul.

On Sat, Jul 08, 2023 at 10:40:24AM +0200, Paul Cercueil wrote:
> Hi,
>
> Follow-up on my patchset that fixes the display of the Samsung Galaxy S2
> when running PostmarketOS.
>
> 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.
>
> Changes since V1:
> [1/3]: Remove spurious new line
> [2/3]: Remove .get_brightness() callback, use bl_get_data() and
> backlight_get_brightness()
>
> 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

The series looks good.

The first two patches are:
Reviewed-by: Sam Ravnborg <[email protected]>

The third patch are:
Acked-by: Sam Ravnborg <[email protected]>

(I was not sure if I could/should stamp it r-b, so decided for the a-b).

Sam


2023-07-10 07:27:15

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: exynos/i9100: Fix LCD screen's physical size

On 08/07/2023 10:40, Paul Cercueil wrote:
> The previous values were completely bogus, and resulted in the computed
> DPI ratio being much lower than reality, causing applications and UIs to
> misbehave.
>
> The new values were measured by myself with a ruler.
>
> Signed-off-by: Paul Cercueil <[email protected]>
> Fixes: 8620cc2f99b7 ("ARM: dts: exynos: Add devicetree file for the Galaxy S2")
> Cc: <[email protected]> # v5.8+
> ---

This does not apply. You rebased your work on some older version/tree,
without new layout. Please work on linux-next.

Best regards,
Krzysztof


2023-07-10 08:04:25

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: exynos/i9100: Fix LCD screen's physical size

On 10/07/2023 09:35, Paul Cercueil wrote:
> Hi Krzysztof,
>
> Le lundi 10 juillet 2023 à 08:59 +0200, Krzysztof Kozlowski a écrit :
>> On 08/07/2023 10:40, Paul Cercueil wrote:
>>> The previous values were completely bogus, and resulted in the
>>> computed
>>> DPI ratio being much lower than reality, causing applications and
>>> UIs to
>>> misbehave.
>>>
>>> The new values were measured by myself with a ruler.
>>>
>>> Signed-off-by: Paul Cercueil <[email protected]>
>>> Fixes: 8620cc2f99b7 ("ARM: dts: exynos: Add devicetree file for the
>>> Galaxy S2")
>>> Cc: <[email protected]> # v5.8+
>>> ---
>>
>> This does not apply. You rebased your work on some older
>> version/tree,
>> without new layout. Please work on linux-next.
>
> This patchset was based on drm-misc-next, because that's where I was
> planning to apply it; and it was extremely unlikely (but not
> impossible, apparently) that the i9100.dts would be modified in the
> meantime.
>
> I can rebase on linux-next, the problem then is that I then don't know
> how/where to apply the patchset.

DTS cannot go via drm-misc-next, so if that's your intention please
always split the patchset into separate ones. *Always*.

Best regards,
Krzysztof


2023-07-10 08:07:15

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: exynos/i9100: Fix LCD screen's physical size

Hi Krzysztof,

Le lundi 10 juillet 2023 à 08:59 +0200, Krzysztof Kozlowski a écrit :
> On 08/07/2023 10:40, Paul Cercueil wrote:
> > The previous values were completely bogus, and resulted in the
> > computed
> > DPI ratio being much lower than reality, causing applications and
> > UIs to
> > misbehave.
> >
> > The new values were measured by myself with a ruler.
> >
> > Signed-off-by: Paul Cercueil <[email protected]>
> > Fixes: 8620cc2f99b7 ("ARM: dts: exynos: Add devicetree file for the
> > Galaxy S2")
> > Cc: <[email protected]> # v5.8+
> > ---
>
> This does not apply. You rebased your work on some older
> version/tree,
> without new layout. Please work on linux-next.

This patchset was based on drm-misc-next, because that's where I was
planning to apply it; and it was extremely unlikely (but not
impossible, apparently) that the i9100.dts would be modified in the
meantime.

I can rebase on linux-next, the problem then is that I then don't know
how/where to apply the patchset.

Cheers,
-Paul

2023-07-10 08:27:49

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: exynos/i9100: Fix LCD screen's physical size

Le lundi 10 juillet 2023 à 09:45 +0200, Krzysztof Kozlowski a écrit :
> On 10/07/2023 09:35, Paul Cercueil wrote:
> > Hi Krzysztof,
> >
> > Le lundi 10 juillet 2023 à 08:59 +0200, Krzysztof Kozlowski a
> > écrit :
> > > On 08/07/2023 10:40, Paul Cercueil wrote:
> > > > The previous values were completely bogus, and resulted in the
> > > > computed
> > > > DPI ratio being much lower than reality, causing applications
> > > > and
> > > > UIs to
> > > > misbehave.
> > > >
> > > > The new values were measured by myself with a ruler.
> > > >
> > > > Signed-off-by: Paul Cercueil <[email protected]>
> > > > Fixes: 8620cc2f99b7 ("ARM: dts: exynos: Add devicetree file for
> > > > the
> > > > Galaxy S2")
> > > > Cc: <[email protected]> # v5.8+
> > > > ---
> > >
> > > This does not apply. You rebased your work on some older
> > > version/tree,
> > > without new layout. Please work on linux-next.
> >
> > This patchset was based on drm-misc-next, because that's where I
> > was
> > planning to apply it; and it was extremely unlikely (but not
> > impossible, apparently) that the i9100.dts would be modified in the
> > meantime.
> >
> > I can rebase on linux-next, the problem then is that I then don't
> > know
> > how/where to apply the patchset.
>
> DTS cannot go via drm-misc-next, so if that's your intention please
> always split the patchset into separate ones. *Always*.

Noted.

Then I'll apply the patches [1/3] and [2/3] to drm-misc-next since I
have my ACKs, and re-send patch [3/3] as standalone and rebased on
linux-next.

Cheers,
-Paul

2023-07-14 08:37:30

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] Galaxy S2 (i9100) panel updates v2

Patches 1/3 and 2/3 applied to drm-misc-next.

I'll resend patch 3/3 as standalone.

Cheers,
-Paul

Le samedi 08 juillet 2023 à 10:40 +0200, Paul Cercueil a écrit :
> Hi,
>
> Follow-up on my patchset that fixes the display of the Samsung Galaxy
> S2
> when running PostmarketOS.
>
> 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.
>
> Changes since V1:
> [1/3]: Remove spurious new line
> [2/3]: Remove .get_brightness() callback, use bl_get_data() and
>        backlight_get_brightness()
>
> 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 | 42 +++++++++++++++++-
> --
>  2 files changed, 38 insertions(+), 8 deletions(-)
>