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);