Re: [PATCH 0/8] drm: fb-helper/ssd130x: Add support for DRM_FORMAT_R1

From: Javier Martinez Canillas
Date: Sun Jul 16 2023 - 09:32:19 EST


Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> writes:

Hello Geert,

> Hi all,
>
> The native display format of ssd1306 OLED displays is monochrome
> light-on-dark (R1). This patch series adds support for the R1 buffer
> format to both the ssd130x DRM driver and the FB helpers, so monochrome
> applications (including fbdev emulation and the text console) can avoid
> the overhead of back-and-forth conversions between R1 and XR24.
>

I've tested your series on a ssd1306 I2C OLED panel and fbcon did work for
me, but had some issues when trying to run your fbtest suite. Because the
test005 gets killed with a SIGSEGV.

$ ./fbtest -d
fb_init()
fb_open()
fb_get_var()
fb_get_fix()
fb_map()
fb_start = 0, fb_offset = 0, fb_len = 1000
fb_save()
fb_clear()
Using drawops planar (monochrome and (interleaved) bitplanes)
Available visuals:
Monochrome
Grayscale 2
Using visops monochrome
Running all tests
Running test test001
test001: PASSED
Running test test002
test002: PASSED
Running test test003
Requirement num_colors >= 16 not met
Running test test004
test004: PASSED
Running test test005
Caught signal 11. Exiting
fb_cleanup()
fb_restore()
fb_unmap()
fb_set_var()
fb_get_var()
fb_get_fix()
fb_close()

Maybe more tests are missing the minimum num_colors requirement? Also, the
penguin in test004 is not displayed correctly. I was expecting that to be
working correctly since you mentioned to be using the Linux logo on boot.

Another question, do you know if is possible to change the default format?
I believe that fbset won't work because the DRM fbdev emulation layer does
not implement mode settings but I thought that changing the mode using the
atomic KMS API would work.

$ modetest -M ssd130x -P 31@33:128x64@XR24 -a
$ echo $?
0

but after that I still get:

$ fbset -i

mode "128x64"
geometry 128 64 128 64 1
timings 0 0 0 0 0 0 0
rgba 1/0,1/0,1/0,0/0
endmode

Frame buffer device information:
Name : ssd130xdrmfb
Address : (nil)
Size : 4096
Type : PACKED PIXELS
Visual : MONO10
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 16
Accelerator : No

Maybe I'm doing something wrong or misunderstading about how should work?

--
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat