Port-amiga archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Workaround for /dev/grf3 pixel clock only <29Mhz problem.
Hi!
I found a workaround for the problem with /dev/grf3 that text console
pixel clock could be only under 29Mhz.
Below there is a patch, maybe it could be integrated in the source
tree. It is not complete solution, it just makes it work for me.
I don´t know if that 58Mhz limit is smart thing, it´s just invented
value.
Are text console modes real hardware text modes, or are they graphics
modes with bitmapped fonts copied on screen. It would explain a lot.
Those who are interessed about Cirrus Logic 5446 databook may look at:
http://iki.fi/thoron/amiga/gd5446trm.lha (pdf, package about 2,3MB).
See page 8-44 (p. 265 in pdf file).
Happy New Year!
Petri Koistinen
--- /sys/arch/amiga/dev/grf_cl.c,old Wed Dec 20 23:58:03 2000
+++ /sys/arch/amiga/dev/grf_cl.c Wed Dec 27 17:08:45 2000
@@ -1657,11 +1657,31 @@
WCrt(ba, CRT_ID_SYNC_ADJ_GENLOCK, 0x00);
WCrt(ba, CRT_ID_OVERLAY_EXT_CTRL_REG, 0x40);
}
- WCrt(ba, CRT_ID_EXT_DISP_CNTL,
- ((TEXT && gv->pixel_clock > 29000000) ? 0x40 : 0x00) |
- 0x22 |
- ((HDE > 0xff) ? 0x10 : 0x00));
+ /*
+ * Following code tries set fast-page mode after pixel clock
+ * goes over limit. This doesn't work for PicassoIV. Althought
+ * Cirrus Logic claims that 5446 chip can only handle text modes
+ * up to 30Mhz pixel clock, PicassoIV seems to working still with
+ * pixel clock around 58Mhz. After that code will try change to
+ * fast-page mode, but it will fail because there is something
+ * wrong with that code below. (Petri Koistinen, 27.12.2000)
+ *
+ */
+
+ if ((cltype == PICASSO) && (cl_64bit == 1)) { /* Tested on PIV only. */
+ WCrt(ba, CRT_ID_EXT_DISP_CNTL,
+ ((TEXT && gv->pixel_clock > 58000000) ? 0x40 : 0x00) |
+ 0x22 |
+ ((HDE > 0xff) ? 0x10 : 0x00));
+ }
+ else { /* Other cards may work with original code. */
+ WCrt(ba, CRT_ID_EXT_DISP_CNTL,
+ ((TEXT && gv->pixel_clock > 29000000) ? 0x40 : 0x00) |
+ 0x22 |
+ ((HDE > 0xff) ? 0x10 : 0x00));
+ }
+
WAttr(ba, ACT_ID_ATTR_MODE_CNTL, (TEXT ? 0x0a : 0x01));
WAttr(ba, 0x20 | ACT_ID_COLOR_PLANE_ENA,
(gv->depth == 1) ? 0x01 : 0x0f);
Home |
Main Index |
Thread Index |
Old Index