PERFORCE change 210369 for review
Robert Watson
rwatson at FreeBSD.org
Sun Apr 29 18:13:10 UTC 2012
http://p4web.freebsd.org/@@210369?ac=10
Change 210369 by rwatson at rwatson_svr_ctsrd_mipsbuild on 2012/04/29 18:13:09
When adjusting the MTL text frame buffer address register, print a
console warning, as this should not be necessary.
Affected files ...
.. //depot/projects/ctsrd/beribsd/src/sys/dev/terasic/mtl/terasic_mtl.h#3 edit
.. //depot/projects/ctsrd/beribsd/src/sys/dev/terasic/mtl/terasic_mtl_reg.c#3 edit
.. //depot/projects/ctsrd/beribsd/src/sys/dev/terasic/mtl/terasic_mtl_text.c#3 edit
Differences ...
==== //depot/projects/ctsrd/beribsd/src/sys/dev/terasic/mtl/terasic_mtl.h#3 (text+ko) ====
@@ -126,6 +126,8 @@
uint8_t *colp, uint8_t *rowp);
void terasic_mtl_reg_textcursor_set(struct terasic_mtl_softc *sc,
uint8_t col, uint8_t row);
+void terasic_mtl_reg_textframebufaddr_get(struct terasic_mtl_softc *sc,
+ uint32_t *addrp);
void terasic_mtl_reg_textframebufaddr_set(struct terasic_mtl_softc *sc,
uint32_t addr);
==== //depot/projects/ctsrd/beribsd/src/sys/dev/terasic/mtl/terasic_mtl_reg.c#3 (text+ko) ====
@@ -170,6 +170,16 @@
}
void
+terasic_mtl_reg_textframebufaddr_get(struct terasic_mtl_softc *sc,
+ uint32_t *addrp)
+{
+ uint32_t addr;
+
+ addr = bus_read_4(sc->mtl_reg_res, TERASIC_MTL_OFF_TEXTFRAMEBUFADDR);
+ *addrp = le32toh(addr);
+}
+
+void
terasic_mtl_reg_textframebufaddr_set(struct terasic_mtl_softc *sc,
uint32_t addr)
{
==== //depot/projects/ctsrd/beribsd/src/sys/dev/terasic/mtl/terasic_mtl_text.c#3 (text+ko) ====
@@ -154,15 +154,33 @@
bus_write_2(sc->mtl_text_res, offset, v);
}
+/*
+ * XXXRW: Work around a feature in which the default address of the text frame
+ * buffer is not initialised at reset as expected.
+ */
+#define TERASIC_MTL_TEXT_EXPECTED_ADDR 0x0177000
+static void
+terasic_mtl_text_workaround(struct terasic_mtl_softc *sc)
+{
+ uint32_t v;
+
+ terasic_mtl_reg_textframebufaddr_get(sc, &v);
+ if (v == TERASIC_MTL_TEXT_EXPECTED_ADDR)
+ return;
+ device_printf(sc->mtl_dev,
+ "%s: adjusting text frame buffer reg from 0x%x to 0x%x\n",
+ __func__, v, TERASIC_MTL_TEXT_EXPECTED_ADDR);
+ terasic_mtl_reg_textframebufaddr_set(sc,
+ TERASIC_MTL_TEXT_EXPECTED_ADDR);
+}
+
int
terasic_mtl_text_attach(struct terasic_mtl_softc *sc)
{
- /*
- * XXXRW: Work around a feature in which the default address of the
- * text frame buffer is not initialised at reset as expected.
- */
- terasic_mtl_reg_textframebufaddr_set(sc, 0x0177000);
+ /* XXXRW: To go away. */
+ terasic_mtl_text_workaround(sc);
+
sc->mtl_text_cdev = make_dev(&terasic_mtl_text_cdevsw, sc->mtl_unit,
UID_ROOT, GID_WHEEL, 0400, "mtl_text%d", sc->mtl_unit);
if (sc->mtl_text_cdev == NULL) {
More information about the p4-projects
mailing list