2023-11-16 18:08:28

by Javier Martinez Canillas

[permalink] [raw]
Subject: [PATCH 1/3] dt-bindings: display: ssd1307fb: Change "solomon,page-offset" default value

This is used to specify the page start address offset of the display RAM.

The value is used as offset when setting the page start address with the
SSD130X_SET_PAGE_RANGE command, and the driver currently sets its value to
1 if the property is not present in the Device Tree.

But the datasheet mentions that the value on reset for the page start is a
0, so it makes more sense to also have 0 as the default value for the page
offset if the property is not present.

In fact, using a default value of 1 leads to the display not working when
the fbdev is attached to the framebuffer console.

Reported-by: Sahaj Sarup <[email protected]>
Signed-off-by: Javier Martinez Canillas <[email protected]>
---

.../devicetree/bindings/display/solomon,ssd1307fb.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
index 3afbb52d1b7f..badd81459aaa 100644
--- a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
+++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
@@ -35,7 +35,7 @@ properties:

solomon,page-offset:
$ref: /schemas/types.yaml#/definitions/uint32
- default: 1
+ default: 0
description:
Offset of pages (band of 8 pixels) that the screen is mapped to

--
2.41.0


2023-11-16 18:08:31

by Javier Martinez Canillas

[permalink] [raw]
Subject: [PATCH 3/3] drm/ssd130x: Change "solomon,page-offset" property default value

This is used to specify the page start address offset of the display RAM.

The value is used as offset when setting the page start address with the
SSD130X_SET_PAGE_RANGE command, and the driver currently sets its value to
1 if the property is not present in the Device Tree.

But the datasheet mentions that the value on reset for the page start is a
0, so it makes more sense to also have 0 as the default value for the page
offset if the property is not present.

In fact, using a default value of 1 leads to the display not working when
the emulated fbdev is attached to the framebuffer console.

Reported-by: Sahaj Sarup <[email protected]>
Signed-off-by: Javier Martinez Canillas <[email protected]>
---

drivers/gpu/drm/solomon/ssd130x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c
index bef293922b98..8944129a8e0b 100644
--- a/drivers/gpu/drm/solomon/ssd130x.c
+++ b/drivers/gpu/drm/solomon/ssd130x.c
@@ -1453,7 +1453,7 @@ static void ssd130x_parse_properties(struct ssd130x_device *ssd130x)
ssd130x->height = ssd130x->device_info->default_height;

if (device_property_read_u32(dev, "solomon,page-offset", &ssd130x->page_offset))
- ssd130x->page_offset = 1;
+ ssd130x->page_offset = 0;

if (device_property_read_u32(dev, "solomon,col-offset", &ssd130x->col_offset))
ssd130x->col_offset = 0;
--
2.41.0

2023-11-17 08:38:31

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH 3/3] drm/ssd130x: Change "solomon,page-offset" property default value

On Thu, Nov 16, 2023 at 07:07:39PM +0100, Javier Martinez Canillas wrote:
> This is used to specify the page start address offset of the display RAM.
>
> The value is used as offset when setting the page start address with the
> SSD130X_SET_PAGE_RANGE command, and the driver currently sets its value to
> 1 if the property is not present in the Device Tree.
>
> But the datasheet mentions that the value on reset for the page start is a
> 0, so it makes more sense to also have 0 as the default value for the page
> offset if the property is not present.

I can see the argument, but that's a DT ABI breaking change.

> In fact, using a default value of 1 leads to the display not working when
> the emulated fbdev is attached to the framebuffer console.

Could we fix that one instead? What is the issue about, exactly

Maxime


Attachments:
(No filename) (850.00 B)
signature.asc (235.00 B)
Download all attachments

2023-11-17 08:59:45

by Javier Martinez Canillas

[permalink] [raw]
Subject: Re: [PATCH 3/3] drm/ssd130x: Change "solomon,page-offset" property default value

Maxime Ripard <[email protected]> writes:

Hello Maxime,

> On Thu, Nov 16, 2023 at 07:07:39PM +0100, Javier Martinez Canillas wrote:
>> This is used to specify the page start address offset of the display RAM.
>>
>> The value is used as offset when setting the page start address with the
>> SSD130X_SET_PAGE_RANGE command, and the driver currently sets its value to
>> 1 if the property is not present in the Device Tree.
>>
>> But the datasheet mentions that the value on reset for the page start is a
>> 0, so it makes more sense to also have 0 as the default value for the page
>> offset if the property is not present.
>
> I can see the argument, but that's a DT ABI breaking change.
>

Yes, I know it's a DT ABI breaking change but what I'm trying to argue is
that the DT binding schema isn't correct to start with. Even the RPi DTBO
for this device (which I guess is used by most people with a SSD1306) has
a property to explicitly set this to 0:

ssd1306: oled@3c{
...
solomon,page-offset = <0>;
...
};

https://github.com/raspberrypi/linux/blob/rpi-6.1.y/arch/arm/boot/dts/overlays/ssd1306-overlay.dts

>> In fact, using a default value of 1 leads to the display not working when
>> the emulated fbdev is attached to the framebuffer console.
>
> Could we fix that one instead? What is the issue about, exactly
>

This is the issue that Sahaj reported:

https://twitter.com/sahajsarup/status/1725088484736766364

I can try to figure out how to make the fbcon to work with a page-offset=1
but didn't investigate since thought that 0 is a much better default. Just
like the maximum resolution is the default if no width and height are set.

> Maxime

--
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat

2023-11-20 15:54:05

by Conor Dooley

[permalink] [raw]
Subject: Re: [PATCH 1/3] dt-bindings: display: ssd1307fb: Change "solomon,page-offset" default value

On Thu, Nov 16, 2023 at 07:07:37PM +0100, Javier Martinez Canillas wrote:
> This is used to specify the page start address offset of the display RAM.
>
> The value is used as offset when setting the page start address with the
> SSD130X_SET_PAGE_RANGE command, and the driver currently sets its value to
> 1 if the property is not present in the Device Tree.
>
> But the datasheet mentions that the value on reset for the page start is a
> 0, so it makes more sense to also have 0 as the default value for the page
> offset if the property is not present.
>
> In fact, using a default value of 1 leads to the display not working when
> the fbdev is attached to the framebuffer console.
>
> Reported-by: Sahaj Sarup <[email protected]>
> Signed-off-by: Javier Martinez Canillas <[email protected]>
> ---
>
> .../devicetree/bindings/display/solomon,ssd1307fb.yaml | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
> index 3afbb52d1b7f..badd81459aaa 100644
> --- a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
> +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
> @@ -35,7 +35,7 @@ properties:
>
> solomon,page-offset:
> $ref: /schemas/types.yaml#/definitions/uint32
> - default: 1
> + default: 0

I think I saw it pointed out by Maxime elsewhere that this breaks the
ABI. It would be nice if DT defaults matched the hardware's, but I don't
really think it is worth breaking the ABI here. Expanding the property
description to explain the impact of the particular values might help
with incorrect usage.

Thanks,
Conor.

> description:
> Offset of pages (band of 8 pixels) that the screen is mapped to
>
> --
> 2.41.0
>


Attachments:
(No filename) (1.87 kB)
signature.asc (235.00 B)
Download all attachments

2023-11-20 19:37:47

by Javier Martinez Canillas

[permalink] [raw]
Subject: Re: [PATCH 1/3] dt-bindings: display: ssd1307fb: Change "solomon,page-offset" default value

Conor Dooley <[email protected]> writes:

Hello Connor,

> On Thu, Nov 16, 2023 at 07:07:37PM +0100, Javier Martinez Canillas wrote:
>> This is used to specify the page start address offset of the display RAM.
>>
>> The value is used as offset when setting the page start address with the
>> SSD130X_SET_PAGE_RANGE command, and the driver currently sets its value to
>> 1 if the property is not present in the Device Tree.
>>
>> But the datasheet mentions that the value on reset for the page start is a
>> 0, so it makes more sense to also have 0 as the default value for the page
>> offset if the property is not present.
>>
>> In fact, using a default value of 1 leads to the display not working when
>> the fbdev is attached to the framebuffer console.
>>
>> Reported-by: Sahaj Sarup <[email protected]>
>> Signed-off-by: Javier Martinez Canillas <[email protected]>
>> ---
>>
>> .../devicetree/bindings/display/solomon,ssd1307fb.yaml | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
>> index 3afbb52d1b7f..badd81459aaa 100644
>> --- a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
>> +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
>> @@ -35,7 +35,7 @@ properties:
>>
>> solomon,page-offset:
>> $ref: /schemas/types.yaml#/definitions/uint32
>> - default: 1
>> + default: 0
>
> I think I saw it pointed out by Maxime elsewhere that this breaks the
> ABI. It would be nice if DT defaults matched the hardware's, but I don't
> really think it is worth breaking the ABI here. Expanding the property


Yes, Maxime also agrees with you as you mentioned. It's fair to say that
this may affect potential users even when I honestly think that's unlikely.

I'll just discard these patches and point out to people reporting the same
problem than Sahaj, that they need to add a "solomon,page-offset" property.

> description to explain the impact of the particular values might help
> with incorrect usage.
>

I'm unsure how much that would help to be honest but I might post a patch.

> Thanks,
> Conor.
>

--
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat