drm: tilcdc: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 17 Oct 2016 22:41:14 +0000 (01:41 +0300)
committerArchit Taneja <architt@codeaurora.org>
Tue, 18 Oct 2016 09:51:57 +0000 (15:21 +0530)
The driver needs the number of bytes per pixel, not the bpp and depth
info meant for fbdev compatibility. Use the right API.

In the tilcdc_crtc_mode_set() function compute the hardware register
value directly from the pixel format instead of computing the number of
bits per pixels first.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1476744081-24485-7-git-send-email-laurent.pinchart@ideasonboard.com
drivers/gpu/drm/tilcdc/tilcdc_crtc.c
drivers/gpu/drm/tilcdc/tilcdc_plane.c

index 52ebe8f..822531e 100644 (file)
@@ -72,16 +72,14 @@ static void set_scanout(struct drm_crtc *crtc, struct drm_framebuffer *fb)
        struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc);
        struct drm_device *dev = crtc->dev;
        struct drm_gem_cma_object *gem;
-       unsigned int depth, bpp;
        dma_addr_t start, end;
        u64 dma_base_and_ceiling;
 
-       drm_fb_get_bpp_depth(fb->pixel_format, &depth, &bpp);
        gem = drm_fb_cma_get_gem_obj(fb, 0);
 
        start = gem->paddr + fb->offsets[0] +
                crtc->y * fb->pitches[0] +
-               crtc->x * bpp / 8;
+               crtc->x * drm_format_plane_cpp(fb->pixel_format, 0);
 
        end = start + (crtc->mode.vdisplay * fb->pitches[0]);
 
@@ -461,16 +459,16 @@ static void tilcdc_crtc_mode_set_nofb(struct drm_crtc *crtc)
        if (info->tft_alt_mode)
                reg |= LCDC_TFT_ALT_ENABLE;
        if (priv->rev == 2) {
-               unsigned int depth, bpp;
-
-               drm_fb_get_bpp_depth(fb->pixel_format, &depth, &bpp);
-               switch (bpp) {
-               case 16:
+               switch (fb->pixel_format) {
+               case DRM_FORMAT_BGR565:
+               case DRM_FORMAT_RGB565:
                        break;
-               case 32:
+               case DRM_FORMAT_XBGR8888:
+               case DRM_FORMAT_XRGB8888:
                        reg |= LCDC_V2_TFT_24BPP_UNPACK;
                        /* fallthrough */
-               case 24:
+               case DRM_FORMAT_BGR888:
+               case DRM_FORMAT_RGB888:
                        reg |= LCDC_V2_TFT_24BPP_MODE;
                        break;
                default:
index 74c65fa..8a6a50d 100644 (file)
@@ -39,7 +39,7 @@ static int tilcdc_plane_atomic_check(struct drm_plane *plane,
 {
        struct drm_crtc_state *crtc_state;
        struct drm_plane_state *old_state = plane->state;
-       unsigned int depth, bpp;
+       unsigned int pitch;
 
        if (!state->crtc)
                return 0;
@@ -68,8 +68,9 @@ static int tilcdc_plane_atomic_check(struct drm_plane *plane,
                return -EINVAL;
        }
 
-       drm_fb_get_bpp_depth(state->fb->pixel_format, &depth, &bpp);
-       if (state->fb->pitches[0] != crtc_state->mode.hdisplay * bpp / 8) {
+       pitch = crtc_state->mode.hdisplay *
+               drm_format_plane_cpp(state->fb->pixel_format, 0);
+       if (state->fb->pitches[0] != pitch) {
                dev_err(plane->dev->dev,
                        "Invalid pitch: fb and crtc widths must be the same");
                return -EINVAL;