[PATCH v3 11/13] drm/fb-helper: Fix single-probe color-format selection
Thomas Zimmermann
tzimmermann at suse.de
Fri May 12 14:11:48 UTC 2023
Hi
Am 12.05.23 um 15:20 schrieb Linus Walleij:
> Sorry for late regression detection but this patch regresses
> the Integrator AB IMPD-1 graphics, I bisected down to this
> patch.
[...]
> This is the driver:
> drivers/gpu/drm/pl111/pl111_versatile.c
> with the pl110_impd1 variant, so these are the supported modes:
>
> /* PL110 pixel formats for Integrator, vanilla PL110 */
> static const u32 pl110_integrator_pixel_formats[] = {
> DRM_FORMAT_ABGR8888,
> DRM_FORMAT_XBGR8888,
> DRM_FORMAT_ARGB8888,
> DRM_FORMAT_XRGB8888,
> DRM_FORMAT_ABGR1555,
> DRM_FORMAT_XBGR1555,
> DRM_FORMAT_ARGB1555,
> DRM_FORMAT_XRGB1555,
> };
> (...)
> /*
> * The IM-PD1 variant is a PL110 with a bunch of broken, or not
> * yet implemented features
> */
> static const struct pl111_variant_data pl110_impd1 = {
> .name = "PL110 IM-PD1",
> .is_pl110 = true,
> .broken_clockdivider = true,
> .broken_vblank = true,
> .formats = pl110_integrator_pixel_formats,
> .nformats = ARRAY_SIZE(pl110_integrator_pixel_formats),
> .fb_bpp = 16,
> };
>
> Notice the absence of RGB565!
> Then we initialized the frambuffer like this:
>
> drm_fbdev_dma_setup(drm, priv->variant->fb_bpp);
>
> And as you see priv->variant->fb_bpp will be 16, so we want some
> 16bpp mode however the only supported depth is 15 (the 1555 modes)
> so it would use that by scaling back depth to 15.
>
> However after this patch that doesn't work anymore.
>
> Any hints on how we can fix this?
According to a quick grep for fb_bpp, it's only used for the call to
drm_fbdev_dma_setup(), right? In this case, you should set it to 15 for
the models without rgb565. The switch at [1] should then pick the
correct values.
The preferred_bpp parameter had a change in semantics. It used to be the
number of bits per pixel. But that makes it hard to select between
RGB1555 and RGB565. So it's now a special color-mode value that works
like the kernel's video= parameter. Values of 15 and 32 are different
from the rest. That switch at [1] explains it. Maybe you should rename
fb_bpp to color_mode for clarity.
Let me know if this helps.
Best regards
Thomas
[1]
https://elixir.bootlin.com/linux/v6.4-rc1/source/drivers/gpu/drm/drm_fb_helper.c#L1827
>
> Yours,
> Linus Walleij
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230512/0de9ed6a/attachment-0001.sig>
More information about the dri-devel
mailing list