Hi Javier, On Sun, Jul 16, 2023 at 3:30 PM Javier Martinez Canillas <javierm@xxxxxxxxxx> wrote: > Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> writes: > > 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 Thanks, due to the limited userspace environment on my RV32 test system, I didn't run fbtest myself. > 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 [...] > Running test test005 > Caught signal 11. Exiting Strange. > Maybe more tests are missing the minimum num_colors requirement? Also, the On monochrome, test005 should make the left half of the screen black, and the right half white. It works on ARAnyM, and there don't seem to be off-by-one errors in the call to fill_rect(). Can you please run this under gdb or valgrind? > 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. Linux has logos for displays using 2, 16, and 256 colors. Note that the default logos are 80x80, which is larger than your display, so no logo is drawn. Fbtest has only the full color logo, so it will look bad on a monochrome display. > Another question, do you know if is possible to change the default format? AFAIK DRM does not support that. > 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 Correct. > 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? Do you need the "-d" option (drop master after mode set) of modetest? Still, that would only impact DRM. The fbdev emulation on top of DRM has already been initialized before, and is never reinitialized. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds