drm/tegra: Honor pixel-format changes
authorThierry Reding <thierry.reding@avionic-design.de>
Mon, 22 Apr 2013 19:31:15 +0000 (21:31 +0200)
committerThierry Reding <thierry.reding@gmail.com>
Sat, 25 May 2013 10:32:50 +0000 (12:32 +0200)
When using a base mode-set, honor changes in pixel-format since the core
doesn't explicitly check for them as long as they use the same depth.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
drivers/gpu/host1x/drm/dc.c

index 98f60d8..5360e5a 100644 (file)
@@ -143,6 +143,7 @@ static int tegra_dc_add_planes(struct drm_device *drm, struct tegra_dc *dc)
 static int tegra_dc_set_base(struct tegra_dc *dc, int x, int y,
                             struct drm_framebuffer *fb)
 {
+       unsigned int format = tegra_dc_format(fb->pixel_format);
        struct tegra_bo *bo = tegra_fb_get_plane(fb, 0);
        unsigned long value;
 
@@ -153,6 +154,7 @@ static int tegra_dc_set_base(struct tegra_dc *dc, int x, int y,
 
        tegra_dc_writel(dc, bo->paddr + value, DC_WINBUF_START_ADDR);
        tegra_dc_writel(dc, fb->pitches[0], DC_WIN_LINE_STRIDE);
+       tegra_dc_writel(dc, format, DC_WIN_COLOR_DEPTH);
 
        value = GENERAL_UPDATE | WIN_A_UPDATE;
        tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL);