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>