From owner-p4-projects@FreeBSD.ORG Sun Apr 29 18:13:10 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0287C1065673; Sun, 29 Apr 2012 18:13:10 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B74FC1065670 for ; Sun, 29 Apr 2012 18:13:09 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 868CA8FC0A for ; Sun, 29 Apr 2012 18:13:09 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q3TID9Me006898 for ; Sun, 29 Apr 2012 18:13:09 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q3TID9pG006895 for perforce@freebsd.org; Sun, 29 Apr 2012 18:13:09 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 29 Apr 2012 18:13:09 GMT Message-Id: <201204291813.q3TID9pG006895@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 210369 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2012 18:13:10 -0000 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) {