|
@@ -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 {
|