video: tegra: add option to autodetect bitdepth from bootloader
authorErik Gilling <konkers@android.com>
Fri, 12 Nov 2010 01:39:04 +0000 (17:39 -0800)
committerErik Gilling <konkers@android.com>
Fri, 12 Nov 2010 02:02:29 +0000 (18:02 -0800)
Change-Id: I5f17ab96323b3d313473622f572006d01b4716f7
Signed-off-by: Erik Gilling <konkers@android.com>
arch/arm/mach-tegra/include/mach/dc.h
drivers/video/tegra/dc/dc.c

index 78a303e1263416d2b52d5faaf1234dd2ae5eebde..7b674220c3eeaf8215a5dfdaaf6a12fda1f04ee7 100644 (file)
@@ -142,7 +142,7 @@ struct tegra_fb_data {
 
        int             xres;
        int             yres;
-       int             bits_per_pixel;
+       int             bits_per_pixel; /* -1 means autodetect */
 
        unsigned long   flags;
 };
index 0011cfbb726c51c5f9823103d21576f737ea8a7f..1c54da6672a51844c893a712d13198726438ea00 100644 (file)
@@ -1046,6 +1046,17 @@ static int tegra_dc_probe(struct nvhost_device *ndev)
        dev_info(&ndev->dev, "probed\n");
 
        if (dc->pdata->fb) {
+               if (dc->pdata->fb->bits_per_pixel == -1) {
+                       unsigned long fmt;
+                       tegra_dc_writel(dc,
+                                       WINDOW_A_SELECT << dc->pdata->fb->win,
+                                       DC_CMD_DISPLAY_WINDOW_HEADER);
+
+                       fmt = tegra_dc_readl(dc, DC_WIN_COLOR_DEPTH);
+                       dc->pdata->fb->bits_per_pixel =
+                               tegra_dc_fmt_bpp(fmt);
+               }
+
                dc->fb = tegra_fb_register(ndev, dc, dc->pdata->fb, fb_mem);
                if (IS_ERR_OR_NULL(dc->fb))
                        dc->fb = NULL;