Hi Yannick,
On Wed, Dec 15, 2021 at 10:48:43PM +0100, Yannick Fertre wrote:
This patch adds the following YCbCr input pixel formats on the latest LTDC hardware version:
1 plane (co-planar) : YUYV, YVYU, UYVY, VYUY 2 planes (semi-planar): NV12, NV21 3 planes (full-planar): YU12=I420=DRM YUV420, YV12=DRM YVU420
Signed-off-by: Yannick Fertre yannick.fertre@foss.st.com
<snip>
+static inline void ltdc_set_ycbcr_config(struct drm_plane *plane, u32 drm_pix_fmt) +{
- struct ltdc_device *ldev = plane_to_ltdc(plane);
- struct drm_plane_state *state = plane->state;
- u32 lofs = plane->index * LAY_OFS;
- u32 val;
- switch (drm_pix_fmt) {
- case DRM_FORMAT_YUYV:
val = (YCM_I << 4) | LxPCR_YF | LxPCR_CBF;
break;
- case DRM_FORMAT_YVYU:
val = (YCM_I << 4) | LxPCR_YF;
break;
- case DRM_FORMAT_UYVY:
val = (YCM_I << 4) | LxPCR_CBF;
break;
- case DRM_FORMAT_VYUY:
val = (YCM_I << 4);
break;
- case DRM_FORMAT_NV12:
val = (YCM_SP << 4) | LxPCR_CBF;
break;
- case DRM_FORMAT_NV21:
val = (YCM_SP << 4);
break;
- case DRM_FORMAT_YUV420:
- case DRM_FORMAT_YVU420:
val = (YCM_FP << 4);
break;
- default:
/* RGB or not a YCbCr supported format */
break;
- }
- /* Enable limited range */
- if (state->color_range == DRM_COLOR_YCBCR_LIMITED_RANGE)
val |= LxPCR_YREN;
- /* enable ycbcr conversion */
- val |= LxPCR_YCEN;
- regmap_write(ldev->regmap, LTDC_L1PCR + lofs, val);
+}
This patch as commit 484e72d3146b ("drm/stm: ltdc: add support of ycbcr pixel formats") in -next introduced the following clang warning:
drivers/gpu/drm/stm/ltdc.c:625:2: warning: variable 'val' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] default: ^~~~~~~ drivers/gpu/drm/stm/ltdc.c:635:2: note: uninitialized use occurs here val |= LxPCR_YCEN; ^~~ drivers/gpu/drm/stm/ltdc.c:600:9: note: initialize the variable 'val' to silence this warning u32 val; ^ = 0 1 warning generated.
Would it be okay to just return in the default case (maybe with a message about an unsupported format?) or should there be another fix?
Cheers,