Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Apr 2012 18:13:09 GMT
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 210369 for review
Message-ID:  <201204291813.q3TID9pG006895@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@210369?ac=10

Change 210369 by rwatson@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) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204291813.q3TID9pG006895>