> Replace uses of struct drm_format_info's cpp with appropriate interfaces. > The cpp field contains the characters per pixel. It is deprecated and > should be avoided. > > Calculate the line width in bytes with drm_format_info_min_pitch(). This > is the preferred way of getting pixel and line sizes. > > Program HIB_CRT_DISP_CTL_FORMAT from the format's 4CC code instead of > calculating the field's value from the cpp. > > v4: > - introduce fb variable in separate patch (Yongbang) > > Signed-off-by: Thomas Zimmermann <[email protected]> > --- > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > index 19cb16a7daf9..fe73b365e547 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c > @@ -119,7 +119,7 @@ static void hibmc_plane_atomic_update(struct drm_plane > *plane, > > writel(gpu_addr, priv->mmio + HIBMC_CRT_FB_ADDRESS); > > - reg = fb->width * fb->format->cpp[0]; > + reg = drm_format_info_min_pitch(fb->format, 0, fb->width); > > line_l = fb->pitches[0]; > writel(HIBMC_FIELD(HIBMC_CRT_FB_WIDTH_WIDTH, reg) | > @@ -129,7 +129,14 @@ static void hibmc_plane_atomic_update(struct drm_plane > *plane, > /* SET PIXEL FORMAT */ > reg = readl(priv->mmio + HIBMC_CRT_DISP_CTL); > reg &= ~HIBMC_CRT_DISP_CTL_FORMAT_MASK; > - reg |= HIBMC_FIELD(HIBMC_CRT_DISP_CTL_FORMAT, fb->format->cpp[0] * 8 / > 16); > + switch (fb->format->format) { > + case DRM_FORMAT_XRGB8888: > + reg |= HIBMC_FIELD(HIBMC_CRT_DISP_CTL_FORMAT, 2); > + break; > + case DRM_FORMAT_RGB565: > + reg |= HIBMC_FIELD(HIBMC_CRT_DISP_CTL_FORMAT, 1); > + break; > + } > writel(reg, priv->mmio + HIBMC_CRT_DISP_CTL); > } >
Reviewed-by: Yongbang Shi <[email protected]> Thanks, Yongbang.
