[PATCH v5 3/9] drm: verisilicon: add a driver for Verisilicon display controllers

Icenowy Zheng uwu at icenowy.me
Thu Jan 22 01:47:26 PST 2026


在 2026-01-21星期三的 13:56 +0100,Thomas Zimmermann写道:

=================== 8< ====================
> > +void drm_format_to_vs_format(u32 drm_format, struct vs_format
> > *vs_format)
> > +{
> > +       switch (drm_format) {
> > +       case DRM_FORMAT_XRGB4444:
> > +       case DRM_FORMAT_RGBX4444:
> > +       case DRM_FORMAT_XBGR4444:
> > +       case DRM_FORMAT_BGRX4444:
> > +               vs_format->color = VSDC_COLOR_FORMAT_X4R4G4B4;
> > +               break;
> > +       case DRM_FORMAT_ARGB4444:
> > +       case DRM_FORMAT_RGBA4444:
> > +       case DRM_FORMAT_ABGR4444:
> > +       case DRM_FORMAT_BGRA4444:
> > +               vs_format->color = VSDC_COLOR_FORMAT_A4R4G4B4;
> > +               break;
> > +       case DRM_FORMAT_XRGB1555:
> > +       case DRM_FORMAT_RGBX5551:
> > +       case DRM_FORMAT_XBGR1555:
> > +       case DRM_FORMAT_BGRX5551:
> > +               vs_format->color = VSDC_COLOR_FORMAT_X1R5G5B5;
> > +               break;
> > +       case DRM_FORMAT_ARGB1555:
> > +       case DRM_FORMAT_RGBA5551:
> > +       case DRM_FORMAT_ABGR1555:
> > +       case DRM_FORMAT_BGRA5551:
> > +               vs_format->color = VSDC_COLOR_FORMAT_A1R5G5B5;
> > +               break;
> > +       case DRM_FORMAT_RGB565:
> > +       case DRM_FORMAT_BGR565:
> > +               vs_format->color = VSDC_COLOR_FORMAT_R5G6B5;
> > +               break;
> > +       case DRM_FORMAT_XRGB8888:
> > +       case DRM_FORMAT_RGBX8888:
> > +       case DRM_FORMAT_XBGR8888:
> > +       case DRM_FORMAT_BGRX8888:
> > +               vs_format->color = VSDC_COLOR_FORMAT_X8R8G8B8;
> > +               break;
> > +       case DRM_FORMAT_ARGB8888:
> > +       case DRM_FORMAT_RGBA8888:
> > +       case DRM_FORMAT_ABGR8888:
> > +       case DRM_FORMAT_BGRA8888:
> > +               vs_format->color = VSDC_COLOR_FORMAT_A8R8G8B8;
> > +               break;
> > +       case DRM_FORMAT_ARGB2101010:
> > +       case DRM_FORMAT_RGBA1010102:
> > +       case DRM_FORMAT_ABGR2101010:
> > +       case DRM_FORMAT_BGRA1010102:
> > +               vs_format->color = VSDC_COLOR_FORMAT_A2R10G10B10;
> > +               break;
> > +       default:
> > +               DRM_WARN("Unexpected drm format!\n");
> 
> drm_warn(). If this can be invoked from user space,easily, better use
> drm_dbg()

This function is called during atomic_update of planes, and I think in
this case the unknown formats should already be rejected because
they're not advertised for any planes.

Did I get it right on this?

> 
> > +       }
> > +
> > +       switch (drm_format) {
> > +       case DRM_FORMAT_RGBX4444:
> > +       case DRM_FORMAT_RGBA4444:
> > +       case DRM_FORMAT_RGBX5551:
> > +       case DRM_FORMAT_RGBA5551:
> > +       case DRM_FORMAT_RGBX8888:
> > +       case DRM_FORMAT_RGBA8888:
> > +       case DRM_FORMAT_RGBA1010102:
> > +               vs_format->swizzle = VSDC_SWIZZLE_RGBA;
> > +               break;
> > +       case DRM_FORMAT_XBGR4444:
> > +       case DRM_FORMAT_ABGR4444:
> > +       case DRM_FORMAT_XBGR1555:
> > +       case DRM_FORMAT_ABGR1555:
> > +       case DRM_FORMAT_BGR565:
> > +       case DRM_FORMAT_XBGR8888:
> > +       case DRM_FORMAT_ABGR8888:
> > +       case DRM_FORMAT_ABGR2101010:
> > +               vs_format->swizzle = VSDC_SWIZZLE_ABGR;
> > +               break;
> > +       case DRM_FORMAT_BGRX4444:
> > +       case DRM_FORMAT_BGRA4444:
> > +       case DRM_FORMAT_BGRX5551:
> > +       case DRM_FORMAT_BGRA5551:
> > +       case DRM_FORMAT_BGRX8888:
> > +       case DRM_FORMAT_BGRA8888:
> > +       case DRM_FORMAT_BGRA1010102:
> > +               vs_format->swizzle = VSDC_SWIZZLE_BGRA;
> > +               break;
> > +       default:
> > +               /* N/A for YUV formats */
> > +               vs_format->swizzle = VSDC_SWIZZLE_ARGB;
> > +       }
> > +
> > +       /* N/A for non-YUV formats */
> > +       vs_format->uv_swizzle = false;
> > +}


More information about the linux-riscv mailing list