video: mb862xxfb: use pre-initialized configuration for PCI GDCs
authorAnatolij Gustschin <agust@denx.de>
Fri, 13 May 2011 12:12:15 +0000 (14:12 +0200)
committerAnatolij Gustschin <agust@denx.de>
Tue, 24 May 2011 14:28:51 +0000 (16:28 +0200)
If the bootloader has already initialized the display
controller, do not re-initialize it in the driver. Take over
the bootloader's configuration instead. This is already supported
for non PCI GDCs Lime and Mint. Add this functionality for PCI
GDCs Coral-P and Coral-PA. It is useful to avoid flicker and
also avoids unneeded init delays while booting.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
drivers/video/mb862xx/mb862xxfb.c

index 825795894daa1dfcf6dd110ad527f282841a3312..a1b81e73394c0653f754785bf8730e8a72b570ff 100644 (file)
@@ -746,13 +746,21 @@ static int coralp_init(struct mb862xxfb_par *par)
        cn = (ver & GC_CID_CNAME_MSK) >> 8;
        ver = ver & GC_CID_VERSION_MSK;
        if (cn == 3) {
+               unsigned long reg;
+
                dev_info(par->dev, "Fujitsu Coral-%s GDC Rev.%d found\n",\
                         (ver == 6) ? "P" : (ver == 8) ? "PA" : "?",
                         par->pdev->revision);
-               outreg(host, GC_CCF, GC_CCF_CGE_166 | GC_CCF_COT_133);
-               udelay(200);
-               outreg(host, GC_MMR, GC_MMR_CORALP_EVB_VAL);
-               udelay(10);
+               reg = inreg(disp, GC_DCM1);
+               if (reg & GC_DCM01_DEN && reg & GC_DCM01_L0E)
+                       par->pre_init = 1;
+
+               if (!par->pre_init) {
+                       outreg(host, GC_CCF, GC_CCF_CGE_166 | GC_CCF_COT_133);
+                       udelay(200);
+                       outreg(host, GC_MMR, GC_MMR_CORALP_EVB_VAL);
+                       udelay(10);
+               }
                /* Clear interrupt status */
                outreg(host, GC_IST, 0);
        } else {