drm/armada: improve efficiency of armada_drm_plane_calc_addrs()
authorRussell King <rmk+kernel@armlinux.org.uk>
Fri, 8 Dec 2017 12:16:22 +0000 (12:16 +0000)
committerRussell King <rmk+kernel@armlinux.org.uk>
Fri, 8 Dec 2017 12:16:22 +0000 (12:16 +0000)
Lookup the drm_format_info structure once when computing all the
framebuffer plane addresses by using drm_format_info(), rather than
repetitive lookups via drm_format_plane_cpp().

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
drivers/gpu/drm/armada/armada_crtc.c

index 400a133c057681e22f8cbe0e245ae572cc59be7b..7f7b3e738679d0f0a76d3481f2c502c859c1e57d 100644 (file)
@@ -168,8 +168,9 @@ static void armada_drm_crtc_update(struct armada_crtc *dcrtc)
 void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb,
        int x, int y)
 {
+       const struct drm_format_info *format = fb->format;
+       unsigned int num_planes = format->num_planes;
        u32 addr = drm_fb_obj(fb)->dev_addr;
-       int num_planes = fb->format->num_planes;
        int i;
 
        if (num_planes > 3)
@@ -177,7 +178,7 @@ void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb,
 
        for (i = 0; i < num_planes; i++)
                addrs[i] = addr + fb->offsets[i] + y * fb->pitches[i] +
-                            x * fb->format->cpp[i];
+                            x * format->cpp[i];
        for (; i < 3; i++)
                addrs[i] = 0;
 }