Module Name:    src
Committed By:   macallan
Date:           Mon Dec 30 08:32:37 UTC 2024

Modified Files:
        src/sys/arch/hppa/dev: summitfb.c

Log Message:
reshuffle summitfb_setup():
- remove magic number inits that are no longer magic
- annotate the remaining inits if we know the register names
- zero the attribute plane
while there, cull excessive calls to summitfb_setup()


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/hppa/dev/summitfb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/hppa/dev/summitfb.c
diff -u src/sys/arch/hppa/dev/summitfb.c:1.24 src/sys/arch/hppa/dev/summitfb.c:1.25
--- src/sys/arch/hppa/dev/summitfb.c:1.24	Sat Dec 28 14:34:49 2024
+++ src/sys/arch/hppa/dev/summitfb.c	Mon Dec 30 08:32:37 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: summitfb.c,v 1.24 2024/12/28 14:34:49 macallan Exp $	*/
+/*	$NetBSD: summitfb.c,v 1.25 2024/12/30 08:32:37 macallan Exp $	*/
 
 /*	$OpenBSD: sti_pci.c,v 1.7 2009/02/06 22:51:04 miod Exp $	*/
 
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: summitfb.c,v 1.24 2024/12/28 14:34:49 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: summitfb.c,v 1.25 2024/12/30 08:32:37 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -273,7 +273,6 @@ summitfb_attach(device_t parent, device_
 
 #ifdef SUMMITFB_DEBUG
 	sc->sc_height -= 200;
-	sc->sc_width -= 200;
 #endif
 
 	sc->sc_defaultscreen_descr = (struct wsscreen_descr){
@@ -307,7 +306,6 @@ summitfb_attach(device_t parent, device_
 #endif
 
 	summitfb_setup(sc);
-	summitfb_setup_fb(sc);
 
 	vcons_init_screen(&sc->vd, &sc->sc_console_screen, 1, &defattr);
 	sc->sc_console_screen.scr_flags |= VCONS_SCREEN_IS_STATIC;
@@ -335,7 +333,6 @@ summitfb_attach(device_t parent, device_
 	    defattr);
 #endif
 
-	summitfb_setup(sc);
 	summitfb_restore_palette(sc);
 	summitfb_rectfill(sc, 0, 0, sc->sc_width, sc->sc_height,
 	    ri->ri_devcmap[(defattr >> 16) & 0xff]);
@@ -702,26 +699,40 @@ summitfb_setup(struct summitfb_softc *sc
 
 	summitfb_wait(sc);
 #if 1
-	summitfb_write4(sc, 0xb08044, 0x1b);
-	summitfb_write4(sc, 0xb08048, 0x1b);
-
-	summitfb_write4(sc, 0x920860, 0xe4);
-	summitfb_write4(sc, VISFX_IBO, 0);
-	summitfb_write4(sc, 0x921114, 0);
-	summitfb_write4(sc, 0x9211d8, 0);
-
-	summitfb_write4(sc, 0xa00404, 0);
-	summitfb_write4(sc, 0xa00818, 0);
-	summitfb_write4(sc, 0xa0081c, 0);	/* fx4 */
-	summitfb_write4(sc, 0xa00850, 0);	/* fx4 */
-	summitfb_write4(sc, 0xa0086c, 0);
+	/* these control byte swapping */
+	summitfb_write4(sc, 0xb08044, 0x1b);	/* MFU_BSCTD */
+	summitfb_write4(sc, 0xb08048, 0x1b);	/* MFU_BSCCTL */
+
+	summitfb_write4(sc, 0x920860, 0xe4);	/* FBC_RBS */
+	summitfb_write4(sc, 0x921114, 0);	/* CPE, ckip plane enable */
+	summitfb_write4(sc, 0x9211d8, 0);	/* FCDA */
+
+	summitfb_write4(sc, 0xa00818, 0);	/* WORG window origin */
+	summitfb_write4(sc, 0xa0081c, 0);	/* FBS front buffer select*/
+	summitfb_write4(sc, 0xa00850, 0);	/* MISC_CTL */
+	summitfb_write4(sc, 0xa0086c, 0);	/* WCE window clipping enable */
 #endif
+	/* initialize drawiing engine */
+	summitfb_wait(sc);
+	summitfb_write4(sc, VISFX_CONTROL, 0);	// clear WFC
+	summitfb_write4(sc, VISFX_APERTURE_ACCESS, VISFX_DEPTH_8);
+	summitfb_write4(sc, VISFX_PIXEL_MASK, 0xffffffff);
+	summitfb_write4(sc, VISFX_PLANE_MASK, 0xffffffff);
+	summitfb_write4(sc, VISFX_FOE, FOE_BLEND_ROP);
+	summitfb_write4(sc, VISFX_IBO, RopSrc);
+	summitfb_write_mode(sc, VISFX_WRITE_MODE_PLAIN);
+	summitfb_write4(sc, VISFX_CLIP_TL, 0);
+	summitfb_write4(sc, VISFX_CLIP_WH,
+	    ((sc->sc_scr.fbwidth) << 16) | (sc->sc_scr.fbheight));
+	/* turn off the cursor sprite */
+	summitfb_write4(sc, VISFX_CURSOR_POS, 0);
+	summitfb_write4(sc, VISFX_TCR, 0x10001000);	/* disable throttling */
 
 	/* make sure the overlay is opaque */
 	summitfb_write4(sc, VISFX_OTR, OTR_T | OTR_L1 | OTR_L0);
+
 	/*
 	 * initialize XLUT
-	 * the whole thing so we don't have to clear the attribute plane
 	 */
 	for (i = 0; i < 16; i++)
 		summitfb_write4(sc, VISFX_IAA(i), IAA_8F | IAA_CFS1); /* RGB, CFS1 */
@@ -730,24 +741,19 @@ summitfb_setup(struct summitfb_softc *sc
 	summitfb_write4(sc, VISFX_CFS(16), CFS_8I | CFS_LUT0);
 	summitfb_write4(sc, VISFX_CFS(17), CFS_8I | CFS_LUT0);
 
+	/* zero the attribute plane */
+	summitfb_write_mode(sc, OTC04 | BINapln);
+	summitfb_wait_fifo(sc, 4);
+	summitfb_write4(sc, VISFX_PLANE_MASK, 0xff);
+	summitfb_write4(sc, VISFX_IBO, 0);
+	summitfb_write4(sc, VISFX_START, 0);
+	summitfb_write4(sc, VISFX_SIZE, (sc->sc_width << 16) | sc->sc_height);
+	summitfb_wait(sc);
+	summitfb_write4(sc, VISFX_PLANE_MASK, 0xffffffff);
+
 	/* turn off force attr so the above takes effect */
 	summitfb_write4(sc, VISFX_FATTR, 0);
 
-	summitfb_write4(sc, VISFX_TCR, 0x10001000);	/* disable throttling */
-
-	summitfb_wait(sc);
-	summitfb_write4(sc, VISFX_CONTROL, 0);	// clear WFC
-	summitfb_write4(sc, VISFX_APERTURE_ACCESS, VISFX_DEPTH_8);
-	summitfb_write4(sc, VISFX_PIXEL_MASK, 0xffffffff);
-	summitfb_write4(sc, VISFX_PLANE_MASK, 0xffffffff);
-	summitfb_write4(sc, VISFX_FOE, FOE_BLEND_ROP);
-	summitfb_write4(sc, VISFX_IBO, RopSrc);
-	summitfb_write_mode(sc, VISFX_WRITE_MODE_PLAIN);
-	summitfb_write4(sc, VISFX_CLIP_TL, 0);
-	summitfb_write4(sc, VISFX_CLIP_WH,
-	    ((sc->sc_scr.fbwidth) << 16) | (sc->sc_scr.fbheight));
-	/* turn off the cursor sprite */
-	summitfb_write4(sc, VISFX_CURSOR_POS, 0);
 	summitfb_setup_fb(sc);
 }
 
@@ -1214,7 +1220,6 @@ summitfb_loadfont(struct summitfb_softc 
 	uint16_t *data16;
 	uint32_t mask;
 
-	summitfb_setup(sc);
 	summitfb_write_mode(sc, VISFX_WRITE_MODE_EXPAND);
 	summitfb_write4(sc, VISFX_IBO, RopSrc);
 	summitfb_write4(sc, VISFX_FG_COLOUR, 0xffffffff);

Reply via email to