CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: thorpej Date: Mon Jan 4 15:29:34 UTC 2021 Modified Files: src/sys/arch/sparc/dev: tctrl.c Log Message: Use sel{record,remove}_knote(). To generate a diff of this commit: cvs rdiff -u -r1.62 -r1.63 src/sys/arch/sparc/dev/tctrl.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/sparc/dev/tctrl.c diff -u src/sys/arch/sparc/dev/tctrl.c:1.62 src/sys/arch/sparc/dev/tctrl.c:1.63 --- src/sys/arch/sparc/dev/tctrl.c:1.62 Sat Jun 13 05:31:28 2020 +++ src/sys/arch/sparc/dev/tctrl.c Mon Jan 4 15:29:34 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tctrl.c,v 1.62 2020/06/13 05:31:28 jdc Exp $ */ +/* $NetBSD: tctrl.c,v 1.63 2021/01/04 15:29:34 thorpej Exp $ */ /*- * Copyright (c) 1998, 2005, 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.62 2020/06/13 05:31:28 jdc Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.63 2021/01/04 15:29:34 thorpej Exp $"); #include #include @@ -1218,7 +1218,7 @@ filt_tctrlrdetach(struct knote *kn) int s; s = splts102(); - SLIST_REMOVE(&sc->sc_rsel.sel_klist, kn, knote, kn_selnext); + selremove_knote(&sc->sc_rsel, kn); splx(s); } @@ -1243,12 +1243,10 @@ tctrlkqfilter(dev_t dev, struct knote *k { struct tctrl_softc *sc = device_lookup_private(&tctrl_cd, TCTRL_STD_DEV); - struct klist *klist; int s; switch (kn->kn_filter) { case EVFILT_READ: - klist = &sc->sc_rsel.sel_klist; kn->kn_fop = &tctrlread_filtops; break; @@ -1259,7 +1257,7 @@ tctrlkqfilter(dev_t dev, struct knote *k kn->kn_hook = sc; s = splts102(); - SLIST_INSERT_HEAD(klist, kn, kn_selnext); + selrecord_knote(&sc->sc_rsel, kn); splx(s); return (0);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jdc Date: Fri Jun 11 04:58:30 UTC 2021 Modified Files: src/sys/arch/sparc/dev: ts102.c Log Message: During slot enable and disable, make sure that the card Access and VCC controls are enabled and disabled at the same time. Also remove the software reset during slot enable (we are already in reset because of the earlier Access and VCC changes). While here, convert DELAY() to delay() and tsleep(), like nell(4). To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/arch/sparc/dev/ts102.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/sparc/dev/ts102.c diff -u src/sys/arch/sparc/dev/ts102.c:1.19 src/sys/arch/sparc/dev/ts102.c:1.20 --- src/sys/arch/sparc/dev/ts102.c:1.19 Sat Apr 24 23:36:49 2021 +++ src/sys/arch/sparc/dev/ts102.c Fri Jun 11 04:58:30 2021 @@ -1,5 +1,5 @@ /* $OpenBSD: ts102.c,v 1.14 2005/01/27 17:03:23 millert Exp $ */ -/* $NetBSD: ts102.c,v 1.19 2021/04/24 23:36:49 thorpej Exp $ */ +/* $NetBSD: ts102.c,v 1.20 2021/06/11 04:58:30 jdc Exp $ */ /* * Copyright (c) 2003, 2004, Miodrag Vallat. * Copyright (c) 2005, Michael Lorenz. @@ -182,6 +182,7 @@ static void tslot_slot_intr(struct tslot static void tslot_slot_settype(pcmcia_chipset_handle_t, int); static void tslot_update_lcd(struct tslot_softc *, int, int); static void tslot_intr_dispatch(void *arg); +void tslot_delay(struct tslot_softc *sc, unsigned int ms); CFATTACH_DECL_NEW(tslot, sizeof(struct tslot_softc), tslot_match, tslot_attach, NULL, NULL); @@ -620,22 +621,35 @@ static void tslot_slot_disable(pcmcia_chipset_handle_t pch) { struct tslot_data *td = (struct tslot_data *)pch; + int status; + #ifdef TSLOT_DEBUG printf("%s: disable slot %d\n", device_xname(td->td_parent->sc_dev), td->td_slot); #endif - /* - * Disable card access. - */ - TSLOT_WRITE(td, TS102_REG_CARD_A_STS, - TSLOT_READ(td, TS102_REG_CARD_A_STS) & ~TS102_CARD_STS_ACEN); + status = TSLOT_READ(td, TS102_REG_CARD_A_STS); + + status &= ~TS102_CARD_STS_ACEN; /* * Disable interrupts, except for insertion. */ TSLOT_WRITE(td, TS102_REG_CARD_A_INT, TS102_CARD_INT_MASK_CARDDETECT_STATUS); + + /* + * Power down the socket and disable access + */ + status &= ~TS102_CARD_STS_ACEN; + status &= ~(TS102_CARD_STS_VPP1_MASK | TS102_CARD_STS_VPP2_MASK); + status |= TS102_CARD_STS_VCCEN; + TSLOT_WRITE(td, TS102_REG_CARD_A_STS, status); + + /* + * wait 300ms until power fails (Tpf). + */ + tslot_delay(td->td_parent, 300); } static void @@ -652,18 +666,23 @@ tslot_slot_enable(pcmcia_chipset_handle_ /* Power down the socket to reset it */ status = TSLOT_READ(td, TS102_REG_CARD_A_STS); TSPRINTF("status: %x\n", status); - TSLOT_WRITE(td, TS102_REG_CARD_A_STS, status | TS102_CARD_STS_VCCEN); + + status &= ~TS102_CARD_STS_ACEN; + status &= ~(TS102_CARD_STS_VPP1_MASK | TS102_CARD_STS_VPP2_MASK); + status |= TS102_CARD_STS_VCCEN; + TSLOT_WRITE(td, TS102_REG_CARD_A_STS, status); /* * wait 300ms until power fails (Tpf). Then, wait 100ms since we * are changing Vcc (Toff). */ - DELAY((300 + 100) * 1000); + tslot_delay(td->td_parent, 300 + 100); /* * Power on the card if not already done, and enable card access */ status |= TS102_CARD_STS_ACEN; + status |= TS102_CARD_STS_VPP1_VCC; status &= ~TS102_CARD_STS_VCCEN; TSLOT_WRITE(td, TS102_REG_CARD_A_STS, status); @@ -671,22 +690,18 @@ tslot_slot_enable(pcmcia_chipset_handle_ * wait 100ms until power raise (Tpr) and 20ms to become * stable (Tsu(Vcc)). */ - DELAY((100 + 20) * 1000); - - status &= ~TS102_CARD_STS_VPP1_MASK; - status |= TS102_CARD_STS_VPP1_VCC; - TSLOT_WRITE(td, TS102_REG_CARD_A_STS, status); + tslot_delay(td->td_parent, 100 + 20); /* * hold RESET at least 20us. */ intr = TSLOT_READ(td, TS102_REG_CARD_A_INT); - TSLOT_WRITE(td, TS102_REG_CARD_A_INT, TS102_CARD_INT_SOFT_RESET); - DELAY(20); - TSLOT_WRITE(td, TS102_REG_CARD_A_INT, intr); + delay(20); + TSLOT_WRITE(td, TS102_REG_CARD_A_INT, + intr & ~TS102_CARD_INT_SOFT_RESET); /* wait 20ms as per pc card standard (r2.01) section 4.3.6 */ - DELAY(20 * 1000); + tslot_delay(td->td_parent, 20); /* We need level-triggered interrupts for PC Card hardware */ TSLOT_WRITE(td, TS102_REG_CARD_A_STS, @@ -709,7 +724,7 @@ tslot_slot_enable(pcmcia_chipset_handle_ if (status & TS102_CARD_STS_RDY) break; else - DELAY(100); + delay(100); } if (i == 0) { @@ -1020,3 +1035,24 @@ tslot_update_lcd(struct tslot_softc *sc, } #endif } + +/* + * Delay and possibly yield CPU. + * XXX - assumes a context + */ +void +tslot_delay(struct tslot_softc *sc, unsigned int ms) +{ + unsigned int ticks = mstohz(ms); + + if (cold || ticks == 0) { + delay(ms); + return; + } + +#ifdef DIAGNOSTIC + if (ticks > 60*hz) + panic("tslot: preposterous delay: %u", ticks); +#endif + tsleep(sc, 0, "tslotdel", ticks);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Aug 27 20:52:18 UTC 2009 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: use vcons_replay_msgbuf() To generate a diff of this commit: cvs rdiff -u -r1.61 -r1.62 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.61 src/sys/arch/sparc/dev/cgfourteen.c:1.62 --- src/sys/arch/sparc/dev/cgfourteen.c:1.61 Tue Jul 14 20:57:22 2009 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Aug 27 20:52:18 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.61 2009/07/14 20:57:22 apb Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.62 2009/08/27 20:52:18 macallan Exp $ */ /* * Copyright (c) 1996 @@ -834,6 +834,7 @@ sc->sc_defaultscreen_descr.ncols = ri->ri_cols; wsdisplay_cnattach(&sc->sc_defaultscreen_descr, ri, 0, 0, defattr); + vcons_replay_msgbuf(&sc->sc_console_screen); } else { /* * since we're not the console we can postpone the rest
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Thu Sep 17 12:38:11 UTC 2009 Modified Files: src/sys/arch/sparc/dev: audioamd.c Log Message: Use device_t, cfdriver_t, device_private(), device_xname(), and appropriate types and variables for device_t/softc. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sparc/dev/audioamd.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/sparc/dev/audioamd.c diff -u src/sys/arch/sparc/dev/audioamd.c:1.23 src/sys/arch/sparc/dev/audioamd.c:1.24 --- src/sys/arch/sparc/dev/audioamd.c:1.23 Mon Dec 3 15:34:20 2007 +++ src/sys/arch/sparc/dev/audioamd.c Thu Sep 17 12:38:11 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: audioamd.c,v 1.23 2007/12/03 15:34:20 ad Exp $ */ +/* $NetBSD: audioamd.c,v 1.24 2009/09/17 12:38:11 tsutsui Exp $ */ /* NetBSD: am7930_sparc.c,v 1.44 1999/03/14 22:29:00 jonathan Exp */ /* @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.23 2007/12/03 15:34:20 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.24 2009/09/17 12:38:11 tsutsui Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -100,12 +100,12 @@ kmutex_t sc_lock; }; -void audioamd_mainbus_attach(struct device *, struct device *, void *); -int audioamd_mainbus_match(struct device *, struct cfdata *, void *); -void audioamd_obio_attach(struct device *, struct device *, void *); -int audioamd_obio_match(struct device *, struct cfdata *, void *); -void audioamd_sbus_attach(struct device *, struct device *, void *); -int audioamd_sbus_match(struct device *, struct cfdata *, void *); +int audioamd_mainbus_match(device_t, cfdata_t, void *); +void audioamd_mainbus_attach(device_t, device_t, void *); +int audioamd_obio_match(device_t, cfdata_t, void *); +void audioamd_obio_attach(device_t, device_t, void *); +int audioamd_sbus_match(device_t, cfdata_t, void *); +void audioamd_sbus_attach(device_t, device_t, void *); void audioamd_attach(struct audioamd_softc *, int); CFATTACH_DECL(audioamd_mainbus, sizeof(struct audioamd_softc), @@ -187,7 +187,7 @@ int -audioamd_mainbus_match(struct device *parent, struct cfdata *cf, void *aux) +audioamd_mainbus_match(device_t parent, cfdata_t cf, void *aux) { struct mainbus_attach_args *ma; @@ -198,7 +198,7 @@ } int -audioamd_obio_match(struct device *parent, struct cfdata *cf, void *aux) +audioamd_obio_match(device_t parent, cfdata_t cf, void *aux) { union obio_attach_args *uoba; @@ -210,7 +210,7 @@ } int -audioamd_sbus_match(struct device *parent, struct cfdata *cf, void *aux) +audioamd_sbus_match(device_t parent, cfdata_t cf, void *aux) { struct sbus_attach_args *sa; @@ -219,14 +219,14 @@ } void -audioamd_mainbus_attach(struct device *parent, struct device *self, void *aux) +audioamd_mainbus_attach(device_t parent, device_t self, void *aux) { struct mainbus_attach_args *ma; struct audioamd_softc *sc; bus_space_handle_t bh; ma = aux; - sc = (struct audioamd_softc *)self; + sc = device_private(self); sc->sc_bt = ma->ma_bustag; if (bus_space_map( @@ -235,7 +235,7 @@ AM7930_DREG_SIZE, BUS_SPACE_MAP_LINEAR, &bh) != 0) { - printf("%s: cannot map registers\n", self->dv_xname); + printf("%s: cannot map registers\n", device_xname(self)); return; } sc->sc_bh = bh; @@ -243,7 +243,7 @@ } void -audioamd_obio_attach(struct device *parent, struct device *self, void *aux) +audioamd_obio_attach(device_t parent, device_t self, void *aux) { union obio_attach_args *uoba; struct sbus_attach_args *sa; @@ -252,14 +252,14 @@ uoba = aux; sa = &uoba->uoba_sbus; - sc = (struct audioamd_softc *)self; + sc = device_private(self); sc->sc_bt = sa->sa_bustag; if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, sa->sa_offset, AM7930_DREG_SIZE, 0, &bh) != 0) { - printf("%s: cannot map registers\n", self->dv_xname); + printf("%s: cannot map registers\n", device_xname(self)); return; } sc->sc_bh = bh; @@ -267,21 +267,21 @@ } void -audioamd_sbus_attach(struct device *parent, struct device *self, void *aux) +audioamd_sbus_attach(device_t parent, device_t self, void *aux) { struct sbus_attach_args *sa; struct audioamd_softc *sc; bus_space_handle_t bh; sa = aux; - sc = (struct audioamd_softc *)self; + sc = device_private(self); sc->sc_bt = sa->sa_bustag; if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, sa->sa_offset, AM7930_DREG_SIZE, 0, &bh) != 0) { - printf("%s: cannot map registers\n", self->dv_xname); + printf("%s: cannot map registers\n", device_xname(self)); return; } sc->sc_bh = bh; @@ -291,10 +291,12 @@ void audioamd_attach(struct audioamd_softc *sc, int pri) { + device_t self; /* * Set up glue for MI code early; we use some of it here. */ + self = &sc->sc_am7930.sc_dev; sc->sc_am7930.sc_glue = &audioamd_glue; mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_H
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Sun Sep 20 16:18:21 UTC 2009 Modified Files: src/sys/arch/sparc/dev: bootbus.c ebus.c if_ie_obio.c rtc.c vme_machdep.c Log Message: - use device_t and cfdriver_t - use device_private() and device_xname() - use proper types or variables for device_t/softc To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/sparc/dev/bootbus.c cvs rdiff -u -r1.30 -r1.31 src/sys/arch/sparc/dev/ebus.c cvs rdiff -u -r1.36 -r1.37 src/sys/arch/sparc/dev/if_ie_obio.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sparc/dev/rtc.c cvs rdiff -u -r1.59 -r1.60 src/sys/arch/sparc/dev/vme_machdep.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/sparc/dev/bootbus.c diff -u src/sys/arch/sparc/dev/bootbus.c:1.16 src/sys/arch/sparc/dev/bootbus.c:1.17 --- src/sys/arch/sparc/dev/bootbus.c:1.16 Mon Apr 28 20:23:35 2008 +++ src/sys/arch/sparc/dev/bootbus.c Sun Sep 20 16:18:21 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: bootbus.c,v 1.16 2008/04/28 20:23:35 martin Exp $ */ +/* $NetBSD: bootbus.c,v 1.17 2009/09/20 16:18:21 tsutsui Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: bootbus.c,v 1.16 2008/04/28 20:23:35 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bootbus.c,v 1.17 2009/09/20 16:18:21 tsutsui Exp $"); #include #include @@ -57,8 +57,8 @@ bus_space_tag_t sc_bustag; /* passed on to children */ }; -static int bootbus_match(struct device *, struct cfdata *, void *); -static void bootbus_attach(struct device *, struct device *, void *); +static int bootbus_match(device_t, cfdata_t, void *); +static void bootbus_attach(device_t, device_t, void *); CFATTACH_DECL(bootbus, sizeof(struct bootbus_softc), bootbus_match, bootbus_attach, NULL, NULL); @@ -72,7 +72,7 @@ static void bootbus_destroy_attach_args(struct bootbus_attach_args *); static int -bootbus_match(struct device *parent, struct cfdata *cf, void *aux) +bootbus_match(device_t parent, cfdata_t cf, void *aux) { struct cpuunit_attach_args *cpua = aux; @@ -83,9 +83,9 @@ } static void -bootbus_attach(struct device *parent, struct device *self, void *aux) +bootbus_attach(device_t parent, device_t self, void *aux) { - struct bootbus_softc *sc = (void *) self; + struct bootbus_softc *sc = device_private(self); struct cpuunit_attach_args *cpua = aux; int node, error; @@ -112,7 +112,7 @@ &sc->sc_bustag->ranges); if (error) { printf("%s: error %d getting \"ranges\" property\n", - sc->sc_dev.dv_xname, error); + device_xname(self), error); panic("bootbus_attach"); } @@ -124,7 +124,7 @@ if (bootbus_setup_attach_args(sc, sc->sc_bustag, node, &baa)) panic("bootbus_attach: failed to set up attach args"); - (void) config_found_sm_loc(&sc->sc_dev, "bootbus", NULL, &baa, + (void) config_found_sm_loc(self, "bootbus", NULL, &baa, bootbus_print, bootbus_submatch); bootbus_destroy_attach_args(&baa); @@ -132,8 +132,7 @@ } static int -bootbus_submatch(struct device *parent, struct cfdata *cf, - const int *ldesc, void *aux) +bootbus_submatch(device_t parent, cfdata_t cf, const int *ldesc, void *aux) { struct bootbus_attach_args *baa = aux; Index: src/sys/arch/sparc/dev/ebus.c diff -u src/sys/arch/sparc/dev/ebus.c:1.30 src/sys/arch/sparc/dev/ebus.c:1.31 --- src/sys/arch/sparc/dev/ebus.c:1.30 Thu May 29 14:51:26 2008 +++ src/sys/arch/sparc/dev/ebus.c Sun Sep 20 16:18:21 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: ebus.c,v 1.30 2008/05/29 14:51:26 mrg Exp $ */ +/* $NetBSD: ebus.c,v 1.31 2009/09/20 16:18:21 tsutsui Exp $ */ /* * Copyright (c) 1999, 2000 Matthew R. Green @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ebus.c,v 1.30 2008/05/29 14:51:26 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ebus.c,v 1.31 2009/09/20 16:18:21 tsutsui Exp $"); #if defined(DEBUG) && !defined(EBUS_DEBUG) #define EBUS_DEBUG @@ -83,7 +83,7 @@ struct ebus_softc { struct device sc_dev; - struct device *sc_parent; /* PCI bus */ + device_t sc_parent; /* PCI bus */ intsc_node; /* PROM node */ @@ -97,8 +97,8 @@ intsc_nreg; }; -static int ebus_match(struct device *, struct cfdata *, void *); -static void ebus_attach(struct device *, struct device *, void *); +static int ebus_match(device_t, cfdata_t, void *); +static void ebus_attach(device_t, device_t, void *); CFATTACH_DECL(ebus, sizeof(struct ebus_softc), ebus_match, ebus_attach, NULL, NULL); @@ -181,7 +181,7 @@ static int -ebus_match(struct device *parent, struct cfdata *match, void *aux) +ebus_match(device_t parent, cfdata_t cf, void *aux) { struct pci_attach_args *pa = aux; char name[10]; @@ -212,7 +212,7 @@ if (wiring_map != NULL) { printf("%s: global ebus wiring map already initalized\n", - sc->sc_dev.dv_xname); + device_xname(&sc->sc_
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Sun Jan 17 16:23:43 UTC 2010 Modified Files: src/sys/arch/sparc/dev: zs.c Log Message: Make sure to set ZS_HWFLAG_USE_CONSDEV and zs_consdev into zsc_args passed to child devices even in !(NWSKBD == 0) case so that zs console functions are actually used rather than the default prom console. Fixes stray interrupts on MP machines running GENERIC.MP kernel with zs serial console. Ok'ed by m...@. To generate a diff of this commit: cvs rdiff -u -r1.116 -r1.117 src/sys/arch/sparc/dev/zs.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/sparc/dev/zs.c diff -u src/sys/arch/sparc/dev/zs.c:1.116 src/sys/arch/sparc/dev/zs.c:1.117 --- src/sys/arch/sparc/dev/zs.c:1.116 Sun May 31 17:09:03 2009 +++ src/sys/arch/sparc/dev/zs.c Sun Jan 17 16:23:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: zs.c,v 1.116 2009/05/31 17:09:03 martin Exp $ */ +/* $NetBSD: zs.c,v 1.117 2010/01/17 16:23:43 tsutsui Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.116 2009/05/31 17:09:03 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.117 2010/01/17 16:23:43 tsutsui Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -464,6 +464,10 @@ } } else { zsc_args.hwflags = hwflags; + if (zsc_args.hwflags & ZS_HWFLAG_CONSOLE) { +zsc_args.hwflags |= ZS_HWFLAG_USE_CONSDEV; +zsc_args.consdev = &zs_consdev; + } } #endif if ((zsc_args.hwflags & ZS_HWFLAG_CONSOLE_INPUT) != 0) {
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Jun 8 06:30:42 UTC 2010 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: get rid of the cg3/cg8 'emulation' kludge since we have the xf86-video-suncg14 driver now this will probably need some work in cgfourteenmmap() to match what the driver expects from a cg14 To generate a diff of this commit: cvs rdiff -u -r1.62 -r1.63 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.62 src/sys/arch/sparc/dev/cgfourteen.c:1.63 --- src/sys/arch/sparc/dev/cgfourteen.c:1.62 Thu Aug 27 20:52:18 2009 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Jun 8 06:30:41 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.62 2009/08/27 20:52:18 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.63 2010/06/08 06:30:41 macallan Exp $ */ /* * Copyright (c) 1996 @@ -68,13 +68,6 @@ */ #undef CG14_MAP_REGS -/* - * The following enables 24-bit operation: when opened, the framebuffer - * will switch to 24-bit mode (actually 32-bit mode), and provide a - * simple cg8 emulation. - */ -#define CG14_CG8 - #include #include #include @@ -250,16 +243,9 @@ /* Mask out invalid flags from the user. */ fb->fb_flags = device_cfdata(sc->sc_dev)->cf_flags & FB_USERMASK; - /* - * We're emulating a cg3/8, so represent ourselves as one - */ -#ifdef CG14_CG8 - fb->fb_type.fb_type = FBTYPE_MEMCOLOR; + fb->fb_type.fb_type = FBTYPE_MDICOLOR; fb->fb_type.fb_depth = 32; -#else - fb->fb_type.fb_type = FBTYPE_SUN3COLOR; - fb->fb_type.fb_depth = 8; -#endif + fb_setsize_obp(fb, sc->sc_fb.fb_type.fb_depth, 1152, 900, node); ramsize = roundup(fb->fb_type.fb_height * fb->fb_linebytes, NBPG); @@ -308,13 +294,9 @@ /* * Let the user know that we're here */ -#ifdef CG14_CG8 - printf(": cgeight emulated at %dx%dx24bpp", - fb->fb_type.fb_width, fb->fb_type.fb_height); -#else - printf(": cgthree emulated at %dx%dx8bpp", + printf(": %dx%d", fb->fb_type.fb_width, fb->fb_type.fb_height); -#endif + /* * Enable the video. */ @@ -474,9 +456,6 @@ case FBIOPUTCMAP: /* copy to software map */ #define p ((struct fbcmap *)data) -#ifdef CG14_CG8 - p->index &= 0xff; -#endif error = cg14_put_cmap(p, &sc->sc_cmap, CG14_CLUT_SIZE); if (error) return (error); @@ -633,25 +612,11 @@ sc->sc_savexlut[i] = xlut[i]; } -#ifdef CG14_CG8 - /* - * Enable the video, and put in 24 bit mode. - */ - sc->sc_ctl->ctl_mctl = CG14_MCTL_ENABLEVID | CG14_MCTL_PIXMODE_32 | - CG14_MCTL_POWERCTL; - - /* - * Zero the xlut to enable direct-color mode - */ - for (i = 0; i < CG14_CLUT_SIZE; i++) - sc->sc_xlut->xlut_lut[i] = 0; -#else /* * Enable the video and put it in 8 bit mode */ sc->sc_ctl->ctl_mctl = CG14_MCTL_ENABLEVID | CG14_MCTL_PIXMODE_8 | CG14_MCTL_POWERCTL; -#endif } static void @@ -930,6 +895,7 @@ return 0; } + static int cg14_ioctl(void *v, void *vs, u_long cmd, void *data, int flag, struct lwp *l)
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Jun 10 13:21:13 UTC 2010 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c cgfourteenvar.h Log Message: Add a couple more hw offset definitions, add an ioctl() to set colour depth which works like Solaris and Linux, and finally make mmap() behave like an actual CG14. This should be all we need to get Xorg's suncg14 driver going. To generate a diff of this commit: cvs rdiff -u -r1.63 -r1.64 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.11 -r1.12 src/sys/arch/sparc/dev/cgfourteenvar.h 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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.63 src/sys/arch/sparc/dev/cgfourteen.c:1.64 --- src/sys/arch/sparc/dev/cgfourteen.c:1.63 Tue Jun 8 06:30:41 2010 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Jun 10 13:21:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.63 2010/06/08 06:30:41 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.64 2010/06/10 13:21:13 macallan Exp $ */ /* * Copyright (c) 1996 @@ -281,7 +281,10 @@ return; } sc->sc_regh = bh; - + sc->sc_regaddr = BUS_ADDR(sa->sa_slot, sa->sa_offset); + sc->sc_fbaddr = BUS_ADDR(sc->sc_physadr[CG14_PXL_IDX].sbr_slot, +sc->sc_physadr[CG14_PXL_IDX].sbr_offset); + sc->sc_ctl = (struct cg14ctl *) (bh); sc->sc_hwc = (struct cg14curs *) (bh + CG14_OFFSET_CURS); sc->sc_dac = (struct cg14dac *) (bh + CG14_OFFSET_DAC); @@ -473,6 +476,25 @@ cg14_set_video(sc, *(int *)data); break; + case CG14_SET_PIXELMODE: { + int depth = *(int *)data; + + switch (depth) { + case 8: + bus_space_write_1(sc->sc_bustag, sc->sc_regh, + CG14_MCTL, CG14_MCTL_ENABLEVID | + CG14_MCTL_PIXMODE_8 | CG14_MCTL_POWERCTL); + break; + case 32: + bus_space_write_1(sc->sc_bustag, sc->sc_regh, + CG14_MCTL, CG14_MCTL_ENABLEVID | + CG14_MCTL_PIXMODE_32 | CG14_MCTL_POWERCTL); + break; + default: + return EINVAL; + } + } + break; default: return (ENOTTY); } @@ -501,34 +523,13 @@ /* * Return the address that would map the given device at the given * offset, allowing for the given protection, or return -1 for error. - * - * Since we're pretending to be a cg8, we put the main video RAM at the - * same place the cg8 does, at offset 256k. The cg8 has an enable - * plane in the 256k space; our "enable" plane works differently. We - * can't emulate the enable plane very well, but all X uses it for is - * to clear it at startup - so we map the first page of video RAM over - * and over to fill that 256k space. We also map some other views of - * the video RAM space. - * - * Our memory map thus looks like - * - * mmap range space base offset - * -0004 vram 0 (multi-mapped - see above) - * 0004-00434800 vram - * 0100-0140 vram 0100 - * 0200-0220 vram 0200 - * 0280-02a0 vram 0280 - * 0300-0310 vram 0300 - * 0340-0350 vram 0340 - * 0380-0390 vram 0380 - * 03c0-03d0 vram 03c0 - * 1000-1001 regs (only if CG14_MAP_REGS) - */ + */ paddr_t cgfourteenmmap(dev_t dev, off_t off, int prot) { struct cgfourteen_softc *sc = device_lookup_private(&cgfourteen_cd, minor(dev)); + off_t offset = -1; if (off & PGOFSET) panic("cgfourteenmmap"); @@ -536,43 +537,40 @@ if (off < 0) return (-1); -#if defined(CG14_MAP_REGS) /* XXX: security hole */ - /* - * Map the control registers into user space. Should only be - * used for debugging! - */ - if ((u_int)off >= 0x1000 && (u_int)off < 0x1000 + 16*4096) { - off -= 0x1000; - return (bus_space_mmap(sc->sc_bustag, - BUS_ADDR(sc->sc_physadr[CG14_CTL_IDX].sbr_slot, - sc->sc_physadr[CG14_CTL_IDX].sbr_offset), - off, prot, BUS_SPACE_MAP_LINEAR)); - } -#endif - - if (off < COLOUR_OFFSET) - off = 0; - else if (off < COLOUR_OFFSET+(1152*900*4)) - off -= COLOUR_OFFSET; - else { - switch (off >> 20) { - case 0x010: case 0x011: case 0x012: case 0x013: - case 0x020: case 0x021: - case 0x028: case 0x029: - case 0x030: - case 0x034: - case 0x038: - case 0x03c: -break; - default: -return(-1); - } - } - - return (bus_space_mmap(sc->sc_bustag, - BUS_ADDR(sc->sc_physadr[CG14_PXL_IDX].sbr_slot, - sc->sc_physadr[CG14_PXL_IDX].sbr_offset), - off, prot, BUS_SPACE_MAP_LINEAR)); + if (off >= 0 && off < 0x1) { + offset = sc->sc_regaddr; + } else if (off >= CG14_CURSOR_VOFF && + off < (CG14_CURSOR_VOFF + 0x1000)) { + offset = sc->sc_regaddr + CG14_OFFSET_CURS; + off -= CG14_CURSOR_VOFF; + } else if (off >= CG14_DIRECT_VOFF && + off < (CG14_DIRECT_VOFF + sc->sc_vramsize)) { + offset = sc->sc_fbaddr + CG14_FB_VRAM; + off -= CG14_DIRECT_VOFF; + } else if (off >= CG14_BGR_VOFF && + off < (CG14_BGR_VOFF + sc->sc_vramsize)) { + offset = sc->sc_fbaddr
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Sat Jun 12 21:25:56 UTC 2010 Modified Files: src/sys/arch/sparc/dev: cgfourteenreg.h Log Message: add some more offsets this should have been committed with the previous, noticed by he To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/sparc/dev/cgfourteenreg.h 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/sparc/dev/cgfourteenreg.h diff -u src/sys/arch/sparc/dev/cgfourteenreg.h:1.6 src/sys/arch/sparc/dev/cgfourteenreg.h:1.7 --- src/sys/arch/sparc/dev/cgfourteenreg.h:1.6 Wed Oct 17 19:57:12 2007 +++ src/sys/arch/sparc/dev/cgfourteenreg.h Sat Jun 12 21:25:56 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteenreg.h,v 1.6 2007/10/17 19:57:12 garbled Exp $ */ +/* $NetBSD: cgfourteenreg.h,v 1.7 2010/06/12 21:25:56 macallan Exp $ */ /* * Copyright (c) 1996 @@ -62,7 +62,9 @@ #define CG14_FB_VRAM 0x #define CG14_FB_CBGR 0x0100 #define CG14_FB_PX32 0x0300 +#define CG14_FB_PB32 0x0340 #define CG14_FB_PG32 0x0380 +#define CG14_FB_PR32 0x03c0 /* Main control register set */ struct cg14ctl {
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Sat Jun 26 01:42:57 UTC 2010 Modified Files: src/sys/arch/sparc/dev: zs.c Log Message: Establish interrupt handlers with proper softc per each zs device rather than sharing them among all zs devices and searching softc in handlers. The latter method is derived from ancient sun3 zs driver which tried to reduce overhead on autovectored interrupts, but nowadays such hack might cause recursive global locks on modern SMP capable framework. Fixes "5.99.30 sparc panic during startup" reported by Hauke Fath on tech-kern@: http://mail-index.NetBSD.org/tech-kern/2010/06/19/msg008374.html and also tested by Jochen Kunz on SS20 with both serial and kbd console. Ok'ed by mrg@ and dyo...@. To generate a diff of this commit: cvs rdiff -u -r1.118 -r1.119 src/sys/arch/sparc/dev/zs.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/sparc/dev/zs.c diff -u src/sys/arch/sparc/dev/zs.c:1.118 src/sys/arch/sparc/dev/zs.c:1.119 --- src/sys/arch/sparc/dev/zs.c:1.118 Fri Jun 4 06:04:15 2010 +++ src/sys/arch/sparc/dev/zs.c Sat Jun 26 01:42:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: zs.c,v 1.118 2010/06/04 06:04:15 macallan Exp $ */ +/* $NetBSD: zs.c,v 1.119 2010/06/26 01:42:57 tsutsui Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.118 2010/06/04 06:04:15 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.119 2010/06/26 01:42:57 tsutsui Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -171,12 +171,8 @@ extern struct cfdriver zs_cd; -/* softintr(9) cookie, shared by all instances of this driver */ -static void *zs_sicookie; - /* Interrupt handlers. */ static int zshard(void *); -static void zssoft(void *); static int zs_get_speed(struct zs_chanstate *); @@ -396,7 +392,6 @@ struct zsc_attach_args zsc_args; struct zs_chanstate *cs; int channel; - static int didintr, prevpri; #if (NKBD > 0) || (NMS > 0) int ch0_is_cons = 0; #endif @@ -407,12 +402,11 @@ return; } - if (!didintr) { - zs_sicookie = softint_establish(SOFTINT_SERIAL, zssoft, NULL); - if (zs_sicookie == NULL) { - aprint_error(": cannot establish soft int handler\n"); - return; - } + zsc->zsc_sicookie = softint_establish(SOFTINT_SERIAL, + (void (*)(void *))zsc_intr_soft, zsc); + if (zsc->zsc_sicookie == NULL) { + aprint_error(": cannot establish soft int handler\n"); + return; } aprint_normal(" softpri %d\n", IPL_SOFTSERIAL); @@ -566,17 +560,9 @@ } /* - * Now safe to install interrupt handlers. Note the arguments - * to the interrupt handlers aren't used. Note, we only do this - * once since both SCCs interrupt at the same level and vector. + * Now safe to install interrupt handlers. */ - if (!didintr) { - didintr = 1; - prevpri = pri; - bus_intr_establish(zsc->zsc_bustag, pri, IPL_SERIAL, - zshard, NULL); - } else if (pri != prevpri) - panic("broken zs interrupt scheme"); + bus_intr_establish(zsc->zsc_bustag, pri, IPL_SERIAL, zshard, zsc); evcnt_attach_dynamic(&zsc->zsc_intrcnt, EVCNT_TYPE_INTR, NULL, device_xname(zsc->zsc_dev), "intr"); @@ -625,81 +611,29 @@ static volatile int zssoftpending; /* - * Our ZS chips all share a common, autovectored interrupt, - * so we have to look at all of them on each interrupt. + * Our ZS chips all share a common interrupt level, + * but we establish zshard handler per each ZS chips + * to avoid holding unnecessary locks in interrupt context. */ static int zshard(void *arg) { - struct zsc_softc *zsc; - int unit, rr3, rval, softreq; + struct zsc_softc *zsc = arg; + int rr3, rval; - rval = softreq = 0; - for (unit = 0; unit < zs_cd.cd_ndevs; unit++) { - struct zs_chanstate *cs; - - zsc = device_lookup_private(&zs_cd, unit); - if (zsc == NULL) - continue; - rr3 = zsc_intr_hard(zsc); - /* Count up the interrupts. */ - if (rr3) { - rval |= rr3; - zsc->zsc_intrcnt.ev_count++; - } - if ((cs = zsc->zsc_cs[0]) != NULL) - softreq |= cs->cs_softreq; - if ((cs = zsc->zsc_cs[1]) != NULL) - softreq |= cs->cs_softreq; - } - - /* We are at splzs here, so no need to lock. */ - if (softreq && (zssoftpending == 0)) { - zssoftpending = 1; - softint_schedule(zs_sicookie); + rval = 0; + rr3 = zsc_intr_hard(zsc); + /* Count up the interrupts. */ + if (rr3) { + rval = rr3; + zsc->zsc_intrcnt.ev_count++; } + if (zsc->zsc_cs[0]->cs_softreq || zsc->zsc_cs[1]->cs_softreq) + softint_schedule(zsc->zsc_sicookie); return (rval); } /* - * Similar scheme as for zshard (look at all of them) - */ -static void -zssoft(void *arg) -{ - struct zsc_softc *zsc; - int unit; - - /* This is not the only ISR on this IPL. */ - if (zssoftpending == 0) - return; - - /* - * The soft intr. bit will be set by zshard only if - * the variable zssoftpending is zero. The order of - * these next
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Sat Jun 26 03:39:54 UTC 2010 Modified Files: src/sys/arch/sparc/dev: zs.c Log Message: Remove an unused variable. To generate a diff of this commit: cvs rdiff -u -r1.119 -r1.120 src/sys/arch/sparc/dev/zs.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/sparc/dev/zs.c diff -u src/sys/arch/sparc/dev/zs.c:1.119 src/sys/arch/sparc/dev/zs.c:1.120 --- src/sys/arch/sparc/dev/zs.c:1.119 Sat Jun 26 01:42:57 2010 +++ src/sys/arch/sparc/dev/zs.c Sat Jun 26 03:39:53 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: zs.c,v 1.119 2010/06/26 01:42:57 tsutsui Exp $ */ +/* $NetBSD: zs.c,v 1.120 2010/06/26 03:39:53 tsutsui Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.119 2010/06/26 01:42:57 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.120 2010/06/26 03:39:53 tsutsui Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -608,8 +608,6 @@ return (UNCONF); } -static volatile int zssoftpending; - /* * Our ZS chips all share a common interrupt level, * but we establish zshard handler per each ZS chips
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Aug 31 21:14:58 UTC 2010 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c cgfourteenvar.h Log Message: remove shadow framebuffer support, use VCONS_DONT_READ instead To generate a diff of this commit: cvs rdiff -u -r1.64 -r1.65 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/sparc/dev/cgfourteenvar.h 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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.64 src/sys/arch/sparc/dev/cgfourteen.c:1.65 --- src/sys/arch/sparc/dev/cgfourteen.c:1.64 Thu Jun 10 13:21:13 2010 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Aug 31 21:14:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.64 2010/06/10 13:21:13 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.65 2010/08/31 21:14:57 macallan Exp $ */ /* * Copyright (c) 1996 @@ -366,8 +366,6 @@ sc->sc_fb.fb_pixels = (void *)fbva[1]; } - sc->sc_shadowfb = kmem_alloc(ramsize, KM_NOSLEEP); - if (isconsole) printf(" (console)\n"); else @@ -785,10 +783,6 @@ memset(sc->sc_fb.fb_pixels, (defattr >> 16) & 0xff, ri->ri_stride * ri->ri_height); - if (sc->sc_shadowfb != NULL) - memset(sc->sc_shadowfb, - (defattr >> 16) & 0xff, - ri->ri_stride * ri->ri_height); sc->sc_console_screen.scr_flags |= VCONS_SCREEN_IS_STATIC; sc->sc_defaultscreen_descr.textops = &ri->ri_ops; @@ -1019,11 +1013,8 @@ ri->ri_stride = ri->ri_width; ri->ri_flg = RI_CENTER | RI_FULLCLEAR; - if (sc->sc_shadowfb != NULL) { - ri->ri_bits = sc->sc_shadowfb; - ri->ri_hwbits = (char *)sc->sc_fb.fb_pixels; - } else - ri->ri_bits = (char *)sc->sc_fb.fb_pixels; + ri->ri_bits = (char *)sc->sc_fb.fb_pixels; + scr->scr_flags |= VCONS_DONT_READ; if (existing) { ri->ri_flg |= RI_CLEAR; Index: src/sys/arch/sparc/dev/cgfourteenvar.h diff -u src/sys/arch/sparc/dev/cgfourteenvar.h:1.12 src/sys/arch/sparc/dev/cgfourteenvar.h:1.13 --- src/sys/arch/sparc/dev/cgfourteenvar.h:1.12 Thu Jun 10 13:21:13 2010 +++ src/sys/arch/sparc/dev/cgfourteenvar.h Tue Aug 31 21:14:57 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteenvar.h,v 1.12 2010/06/10 13:21:13 macallan Exp $ */ +/* $NetBSD: cgfourteenvar.h,v 1.13 2010/08/31 21:14:57 macallan Exp $ */ /* * Copyright (c) 1996 @@ -87,15 +87,14 @@ struct cg14_cursor sc_cursor; /* Hardware cursor state */ union cg14cmap sc_saveclut; /* a place to stash PROM state */ size_t sc_vramsize; + int sc_depth; /* current colour depth */ #if NWSDISPLAY > 0 struct vcons_data sc_vd; - struct vcons_screen sc_console_screen; - struct wsscreen_descr sc_defaultscreen_descr; + struct vcons_screen sc_console_screen; + struct wsscreen_descr sc_defaultscreen_descr; const struct wsscreen_descr *sc_screens[1]; - struct wsscreen_list sc_screenlist; - void *sc_shadowfb; - int sc_mode; /* wsdisplay mode - EMUL, DUMB etc. */ - int sc_depth; /* current colour depth */ + struct wsscreen_list sc_screenlist; + int sc_mode; /* wsdisplay mode - EMUL, DUMB etc. */ #endif uint8_t sc_savexlut[256];
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Apr 16 16:57:21 UTC 2009 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: use sparc_bus_map_large() to map the framebuffer if we can't find a PROM mapping - now we won't exhaust the IODEV range and thus prevent other graphics devices from working. To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.57 src/sys/arch/sparc/dev/cgfourteen.c:1.58 --- src/sys/arch/sparc/dev/cgfourteen.c:1.57 Wed Mar 18 17:06:46 2009 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Apr 16 16:57:21 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.57 2009/03/18 17:06:46 cegger Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.58 2009/04/16 16:57:21 macallan Exp $ */ /* * Copyright (c) 1996 @@ -367,11 +367,12 @@ #if NWSDISPLAY > 0 prom_getprop(sa->sa_node, "address", 4, &items, &ptr); if (fbva[1] == 0) { - if (sbus_bus_map( sc->sc_bustag, + if (sparc_bus_map_large( sc->sc_bustag, sc->sc_physadr[CG14_PXL_IDX].sbr_slot, sc->sc_physadr[CG14_PXL_IDX].sbr_offset, ramsize, BUS_SPACE_MAP_LINEAR, &bh) != 0) { - printf("%s: cannot map pixels\n", device_xname(sc->sc_dev)); + printf("%s: cannot map pixels\n", +device_xname(sc->sc_dev)); return; } sc->sc_fb.fb_pixels = bus_space_vaddr(sc->sc_bustag, bh);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: cegger Date: Sat May 16 16:55:24 UTC 2009 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c zs.c zs_kgdb.c Log Message: KNF, same object code generated To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.113 -r1.114 src/sys/arch/sparc/dev/zs.c cvs rdiff -u -r1.20 -r1.21 src/sys/arch/sparc/dev/zs_kgdb.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.58 src/sys/arch/sparc/dev/cgfourteen.c:1.59 --- src/sys/arch/sparc/dev/cgfourteen.c:1.58 Thu Apr 16 16:57:21 2009 +++ src/sys/arch/sparc/dev/cgfourteen.c Sat May 16 16:55:24 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.58 2009/04/16 16:57:21 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.59 2009/05/16 16:55:24 cegger Exp $ */ /* * Copyright (c) 1996 @@ -271,7 +271,7 @@ self->dv_xname, sa->sa_nreg); return; } - memcpy( sc->sc_physadr, sa->sa_reg, + memcpy(sc->sc_physadr, sa->sa_reg, sa->sa_nreg * sizeof(struct sbus_reg)); sc->sc_vramsize = sc->sc_physadr[CG14_PXL_IDX].sbr_size; Index: src/sys/arch/sparc/dev/zs.c diff -u src/sys/arch/sparc/dev/zs.c:1.113 src/sys/arch/sparc/dev/zs.c:1.114 --- src/sys/arch/sparc/dev/zs.c:1.113 Wed Mar 18 17:06:46 2009 +++ src/sys/arch/sparc/dev/zs.c Sat May 16 16:55:24 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: zs.c,v 1.113 2009/03/18 17:06:46 cegger Exp $ */ +/* $NetBSD: zs.c,v 1.114 2009/05/16 16:55:24 cegger Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.113 2009/03/18 17:06:46 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.114 2009/05/16 16:55:24 cegger Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -475,8 +475,8 @@ cs->cs_reg_csr = &zc->zc_csr; cs->cs_reg_data = &zc->zc_data; - memcpy( cs->cs_creg, zs_init_reg, 16); - memcpy( cs->cs_preg, zs_init_reg, 16); + memcpy(cs->cs_creg, zs_init_reg, 16); + memcpy(cs->cs_preg, zs_init_reg, 16); /* XXX: Consult PROM properties for this?! */ cs->cs_defspeed = zs_get_speed(cs); Index: src/sys/arch/sparc/dev/zs_kgdb.c diff -u src/sys/arch/sparc/dev/zs_kgdb.c:1.20 src/sys/arch/sparc/dev/zs_kgdb.c:1.21 --- src/sys/arch/sparc/dev/zs_kgdb.c:1.20 Wed Mar 18 17:06:46 2009 +++ src/sys/arch/sparc/dev/zs_kgdb.c Sat May 16 16:55:24 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: zs_kgdb.c,v 1.20 2009/03/18 17:06:46 cegger Exp $ */ +/* $NetBSD: zs_kgdb.c,v 1.21 2009/05/16 16:55:24 cegger Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -41,7 +41,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs_kgdb.c,v 1.20 2009/03/18 17:06:46 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs_kgdb.c,v 1.21 2009/05/16 16:55:24 cegger Exp $"); #include "opt_kgdb.h" @@ -111,7 +111,7 @@ { int s, tconst; - memcpy( cs->cs_preg, zs_kgdb_regs, 16); + memcpy(cs->cs_preg, zs_kgdb_regs, 16); if (iena) { cs->cs_preg[1] = ZSWR1_RIE | ZSWR1_SIE;
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jnemeth Date: Mon May 25 19:22:54 UTC 2009 Modified Files: src/sys/arch/sparc/dev: fd.c Log Message: Convert shutdownhook_establish() to pmf_device_register1(). XXX This should be done as part of an overall plan to support power management and device detachment. However, in order to do that, I would first have to invent sbus_intr_disestablish(). This is being done at this time in order to aid in the effort to eliminate shutdownhook_establish(). This was based on the sys/arch/sparc64/fd.c change. Thanks to jdc@ for testing this version. To generate a diff of this commit: cvs rdiff -u -r1.145 -r1.146 src/sys/arch/sparc/dev/fd.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/sparc/dev/fd.c diff -u src/sys/arch/sparc/dev/fd.c:1.145 src/sys/arch/sparc/dev/fd.c:1.146 --- src/sys/arch/sparc/dev/fd.c:1.145 Wed Mar 18 16:00:14 2009 +++ src/sys/arch/sparc/dev/fd.c Mon May 25 19:22:53 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: fd.c,v 1.145 2009/03/18 16:00:14 cegger Exp $ */ +/* $NetBSD: fd.c,v 1.146 2009/05/25 19:22:53 jnemeth Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -101,7 +101,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.145 2009/03/18 16:00:14 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.146 2009/05/25 19:22:53 jnemeth Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -282,8 +282,6 @@ int sc_cylin; /* where we think the head is */ int sc_opts; /* user-set options */ - void *sc_sdhook; /* shutdownhook cookie */ - TAILQ_ENTRY(fd_softc) sc_drivechain; int sc_ops; /* I/O ops since last switch */ struct bufq_state *sc_q;/* pending I/O requests */ @@ -293,6 +291,8 @@ /* floppy driver configuration */ int fdmatch(struct device *, struct cfdata *, void *); void fdattach(struct device *, struct device *, void *); +bool fdshutdown(device_t, int); +bool fdsuspend(device_t PMF_FN_PROTO); CFATTACH_DECL(fd, sizeof(struct fd_softc), fdmatch, fdattach, NULL, NULL); @@ -791,9 +791,25 @@ mountroothook_establish(fd_mountroot_hook, &fd->sc_dv); /* Make sure the drive motor gets turned off at shutdown time. */ - fd->sc_sdhook = shutdownhook_establish(fd_motor_off, fd); + if (!pmf_device_register1(self, fdsuspend, NULL, fdshutdown)) + aprint_error_dev(self, "couldn't establish power handler\n"); +} + +bool fdshutdown(device_t self, int how) +{ + struct fd_softc *fd = device_private(self); + + fd_motor_off(fd); + return true; } +bool fdsuspend(device_t self PMF_FN_ARGS) +{ + + return fdshutdown(self, boothowto); +} + + inline struct fd_type * fd_dev_to_type(struct fd_softc *fd, dev_t dev) {
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue May 26 03:31:12 UTC 2009 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: use BUS_SPACE_MAP_LARGE to map the framebuffer To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.59 src/sys/arch/sparc/dev/cgfourteen.c:1.60 --- src/sys/arch/sparc/dev/cgfourteen.c:1.59 Sat May 16 16:55:24 2009 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue May 26 03:31:12 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.59 2009/05/16 16:55:24 cegger Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.60 2009/05/26 03:31:12 macallan Exp $ */ /* * Copyright (c) 1996 @@ -367,10 +367,11 @@ #if NWSDISPLAY > 0 prom_getprop(sa->sa_node, "address", 4, &items, &ptr); if (fbva[1] == 0) { - if (sparc_bus_map_large( sc->sc_bustag, + if (sbus_bus_map( sc->sc_bustag, sc->sc_physadr[CG14_PXL_IDX].sbr_slot, sc->sc_physadr[CG14_PXL_IDX].sbr_offset, - ramsize, BUS_SPACE_MAP_LINEAR, &bh) != 0) { + ramsize, BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_LARGE, + &bh) != 0) { printf("%s: cannot map pixels\n", device_xname(sc->sc_dev)); return;
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: martin Date: Sun May 31 17:09:03 UTC 2009 Modified Files: src/sys/arch/sparc/dev: zs.c Log Message: Properly initialize child attach args to zero - we could end up with various devices having different ideas about being console otherwise. To generate a diff of this commit: cvs rdiff -u -r1.115 -r1.116 src/sys/arch/sparc/dev/zs.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/sparc/dev/zs.c diff -u src/sys/arch/sparc/dev/zs.c:1.115 src/sys/arch/sparc/dev/zs.c:1.116 --- src/sys/arch/sparc/dev/zs.c:1.115 Fri May 22 03:51:30 2009 +++ src/sys/arch/sparc/dev/zs.c Sun May 31 17:09:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: zs.c,v 1.115 2009/05/22 03:51:30 mrg Exp $ */ +/* $NetBSD: zs.c,v 1.116 2009/05/31 17:09:03 martin Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.115 2009/05/22 03:51:30 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.116 2009/05/31 17:09:03 martin Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -401,6 +401,7 @@ int ch0_is_cons = 0; #endif + memset(&zsc_args, 0, sizeof zsc_args); if (zsd == NULL) { aprint_error(": configuration incomplete\n"); return; @@ -424,6 +425,7 @@ int hwflags; zsc_args.channel = channel; + zsc_args.hwflags = 0; cs = &zsc->zsc_cs_store[channel]; zsc->zsc_cs[channel] = cs;
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: apb Date: Tue Jul 14 20:57:22 UTC 2009 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: Enclose the argument to #error in quotes, to protect an embedded single quote. Part of PR 41255 from Kurt Lidl. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.60 src/sys/arch/sparc/dev/cgfourteen.c:1.61 --- src/sys/arch/sparc/dev/cgfourteen.c:1.60 Tue May 26 03:31:12 2009 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Jul 14 20:57:22 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.60 2009/05/26 03:31:12 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.61 2009/07/14 20:57:22 apb Exp $ */ /* * Copyright (c) 1996 @@ -157,7 +157,7 @@ #endif #if defined(RASTERCONSOLE) && (NWSDISPLAY > 0) -#error You can't have it both ways - either RASTERCONSOLE or wsdisplay +#error "You can't have it both ways - either RASTERCONSOLE or wsdisplay" #endif /*
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Jun 4 06:04:15 UTC 2010 Modified Files: src/sys/arch/sparc/dev: zs.c Log Message: make sure we pass a valid consdev pointer to the console keyboard so kbd knows it's console and passes the right flags to wskbd, now the wskbd will not drop off the mux when leaving event mode. Symptoms: now the keyboard should no longer be dead when leaving X and there should be no more panics caused by it I tested this on an SS5 and an SS20, may need some more attention and zs.c sure could use some cleanup - there are a few differences to sparc64 that really don't make much sense to me, like not passing console flags to zstty which sparc64 does but sparc avoids, which caused this problem in the first place. To generate a diff of this commit: cvs rdiff -u -r1.117 -r1.118 src/sys/arch/sparc/dev/zs.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/sparc/dev/zs.c diff -u src/sys/arch/sparc/dev/zs.c:1.117 src/sys/arch/sparc/dev/zs.c:1.118 --- src/sys/arch/sparc/dev/zs.c:1.117 Sun Jan 17 16:23:43 2010 +++ src/sys/arch/sparc/dev/zs.c Fri Jun 4 06:04:15 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: zs.c,v 1.117 2010/01/17 16:23:43 tsutsui Exp $ */ +/* $NetBSD: zs.c,v 1.118 2010/06/04 06:04:15 macallan Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.117 2010/01/17 16:23:43 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.118 2010/06/04 06:04:15 macallan Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -454,6 +454,9 @@ * mouse line disciplines for SUN4 machines below. * Also, don't set the console flags, otherwise we * tell zstty_attach() to attach as console. + * XXX + * is this still necessary? sparc64 passes the console flags to + * zstty etc. */ if (zsc->zsc_promunit == 1) { if ((hwflags & ZS_HWFLAG_CONSOLE_INPUT) != 0 && @@ -535,8 +538,16 @@ struct tty *tp = zstty_get_tty_from_dev(child); kma.kmta_tp = tp; kma.kmta_dev = tp->t_dev; - kma.kmta_consdev = zsc_args.consdev; + /* + * we need to pass a consdev since that's how kbd knows + * it's the console keyboard + */ + if (hwflags & ZS_HWFLAG_CONSOLE_INPUT) { +kma.kmta_consdev = &zs_consdev; + } else +kma.kmta_consdev = zsc_args.consdev; + /* Attach 'em if we got 'em. */ #if (NKBD > 0) if (channel == 0) {
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Sat Dec 19 10:34:18 UTC 2009 Modified Files: src/sys/arch/sparc/dev: audioamd.c fd.c Log Message: Disable "fast trap" handlers which invoke software interrupts in sparc/amd7930intr.s and sparc/bsd_fdintr.s until they are rewritten to adapt new MI softint(9) API. No particular comments on PR port-sparc/42192, but this fixes timeout problem on floppy access on my SPARCstation 1+. XXX: floppy support on sun4m seems to have another problem (data overrun). To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/arch/sparc/dev/audioamd.c cvs rdiff -u -r1.146 -r1.147 src/sys/arch/sparc/dev/fd.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/sparc/dev/audioamd.c diff -u src/sys/arch/sparc/dev/audioamd.c:1.24 src/sys/arch/sparc/dev/audioamd.c:1.25 --- src/sys/arch/sparc/dev/audioamd.c:1.24 Thu Sep 17 12:38:11 2009 +++ src/sys/arch/sparc/dev/audioamd.c Sat Dec 19 10:34:18 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: audioamd.c,v 1.24 2009/09/17 12:38:11 tsutsui Exp $ */ +/* $NetBSD: audioamd.c,v 1.25 2009/12/19 10:34:18 tsutsui Exp $ */ /* NetBSD: am7930_sparc.c,v 1.44 1999/03/14 22:29:00 jonathan Exp */ /* @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.24 2009/09/17 12:38:11 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audioamd.c,v 1.25 2009/12/19 10:34:18 tsutsui Exp $"); #include "audio.h" #if NAUDIO > 0 @@ -308,7 +308,13 @@ sc->sc_au.au_bt = sc->sc_bt; sc->sc_au.au_bh = sc->sc_bh; (void)bus_intr_establish2(sc->sc_bt, pri, IPL_HIGH, - am7930hwintr, sc, amd7930_trap); + am7930hwintr, sc, +#ifdef notyet /* XXX amd7930intr.s needs to be fixed for MI softint(9) */ + amd7930_trap +#else + NULL +#endif + ); sc->sc_sicookie = softint_establish(SOFTINT_SERIAL, am7930swintr, sc); if (sc->sc_sicookie == NULL) { Index: src/sys/arch/sparc/dev/fd.c diff -u src/sys/arch/sparc/dev/fd.c:1.146 src/sys/arch/sparc/dev/fd.c:1.147 --- src/sys/arch/sparc/dev/fd.c:1.146 Mon May 25 19:22:53 2009 +++ src/sys/arch/sparc/dev/fd.c Sat Dec 19 10:34:18 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: fd.c,v 1.146 2009/05/25 19:22:53 jnemeth Exp $ */ +/* $NetBSD: fd.c,v 1.147 2009/12/19 10:34:18 tsutsui Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -101,7 +101,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.146 2009/05/25 19:22:53 jnemeth Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.147 2009/12/19 10:34:18 tsutsui Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -639,7 +639,13 @@ fdciop = &fdc->sc_io; if (bus_intr_establish2(fdc->sc_bustag, pri, 0, -fdc_c_hwintr, fdc, fdchwintr) == NULL) { +fdc_c_hwintr, fdc, +#ifdef notyet /* XXX bsd_fdintr.s needs to be fixed for MI softint(9) */ +fdchwintr +#else +NULL +#endif +) == NULL) { printf("\n%s: cannot register interrupt handler\n", fdc->sc_dev.dv_xname); return (-1);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Feb 5 21:45:40 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c cgfourteenvar.h Log Message: throw out RASTERCONSOLE goo To generate a diff of this commit: cvs rdiff -u -r1.68 -r1.69 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/sparc/dev/cgfourteenvar.h 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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.68 src/sys/arch/sparc/dev/cgfourteen.c:1.69 --- src/sys/arch/sparc/dev/cgfourteen.c:1.68 Sat Oct 27 17:18:11 2012 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Feb 5 21:45:39 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.68 2012/10/27 17:18:11 chs Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.69 2013/02/05 21:45:39 macallan Exp $ */ /* * Copyright (c) 1996 @@ -128,8 +128,6 @@ static struct fbdriver cgfourteenfbdrive cgfourteenpoll, cgfourteenmmap, nokqfilter }; -extern struct tty *fbconstty; - static void cg14_set_video(struct cgfourteen_softc *, int); static int cg14_get_video(struct cgfourteen_softc *); static int cg14_get_cmap(struct fbcmap *, union cg14cmap *, int); @@ -149,10 +147,6 @@ static int cg14_do_cursor(struct cgfour struct wsdisplay_cursor *); #endif -#if defined(RASTERCONSOLE) && (NWSDISPLAY > 0) -#error "You can't have it both ways - either RASTERCONSOLE or wsdisplay" -#endif - /* * Match a cgfourteen. */ @@ -184,18 +178,6 @@ cgfourteenmatch(device_t parent, struct */ #define COLOUR_OFFSET (256*1024) -#ifdef RASTERCONSOLE -static void cg14_set_rcons_luts(struct cgfourteen_softc *sc) -{ - int i; - - for (i=0;isc_xlut->xlut_lut[i] = 0x22; - for (i=0;isc_clut2->clut_lut[i] = 0x00ff; - sc->sc_clut2->clut_lut[0] = 0x00ff; - sc->sc_clut2->clut_lut[255] = 0; -} -#endif /* RASTERCONSOLE */ - #if NWSDISPLAY > 0 static int cg14_ioctl(void *, void *, u_long, void *, int, struct lwp *); static paddr_t cg14_mmap(void *, void *, off_t, int); @@ -315,40 +297,6 @@ cgfourteenattach(device_t parent, device /* See if we're the console */ isconsole = fb_is_console(node); -#if defined(RASTERCONSOLE) - if (isconsole) { - printf(" (console)\n"); - /* *sbus*_bus_map? but that's how we map the regs... */ - if (sbus_bus_map( sc->sc_bustag, - sc->sc_physadr[CG14_PXL_IDX].sbr_slot, - sc->sc_physadr[CG14_PXL_IDX].sbr_offset + -0x0380, - 1152 * 900, BUS_SPACE_MAP_LINEAR, - &bh) != 0) { - printf("%s: cannot map pixels\n", - device_xname(sc->sc_dev)); - return; - } - sc->sc_rcfb = sc->sc_fb; - sc->sc_rcfb.fb_type.fb_type = FBTYPE_SUN3COLOR; - sc->sc_rcfb.fb_type.fb_depth = 8; - sc->sc_rcfb.fb_linebytes = 1152; - sc->sc_rcfb.fb_type.fb_size = roundup(1152*900,NBPG); - sc->sc_rcfb.fb_pixels = (void *)bh; - - printf("vram at %p\n",(void *)bh); - /* XXX should use actual screen size */ - - for (i = 0; i < ramsize; i++) - ((unsigned char *)bh)[i] = 0; - fbrcons_init(&sc->sc_rcfb); - cg14_set_rcons_luts(sc); - sc->sc_ctl->ctl_mctl = CG14_MCTL_ENABLEVID | - CG14_MCTL_PIXMODE_32 | CG14_MCTL_POWERCTL; - } else - printf("\n"); -#endif - #if NWSDISPLAY > 0 prom_getprop(sa->sa_node, "address", 4, &items, &ptr); if (fbva[1] == 0) { Index: src/sys/arch/sparc/dev/cgfourteenvar.h diff -u src/sys/arch/sparc/dev/cgfourteenvar.h:1.13 src/sys/arch/sparc/dev/cgfourteenvar.h:1.14 --- src/sys/arch/sparc/dev/cgfourteenvar.h:1.13 Tue Aug 31 21:14:57 2010 +++ src/sys/arch/sparc/dev/cgfourteenvar.h Tue Feb 5 21:45:39 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteenvar.h,v 1.13 2010/08/31 21:14:57 macallan Exp $ */ +/* $NetBSD: cgfourteenvar.h,v 1.14 2013/02/05 21:45:39 macallan Exp $ */ /* * Copyright (c) 1996 @@ -74,9 +74,6 @@ struct cg14_cursor { /* cg14 hardware c struct cgfourteen_softc { device_t sc_dev; /* base device */ struct fbdevice sc_fb; /* frame buffer device */ -#ifdef RASTERCONSOLE - struct fbdevice sc_rcfb; /* sc_fb variant for rcons */ -#endif bus_space_tag_t sc_bustag; struct sbus_reg sc_physadr[2]; /* phys addrs of h/w */ bus_space_handle_t sc_regh; /* register space */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Feb 6 04:06:29 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sx.c sxreg.h Log Message: fix typos, deal with hardware insanity To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sparc/dev/sx.c \ src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sx.c diff -u src/sys/arch/sparc/dev/sx.c:1.1 src/sys/arch/sparc/dev/sx.c:1.2 --- src/sys/arch/sparc/dev/sx.c:1.1 Tue Feb 5 21:52:48 2013 +++ src/sys/arch/sparc/dev/sx.c Wed Feb 6 04:06:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sx.c,v 1.1 2013/02/05 21:52:48 macallan Exp $ */ +/* $NetBSD: sx.c,v 1.2 2013/02/06 04:06:29 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.1 2013/02/05 21:52:48 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.2 2013/02/06 04:06:29 macallan Exp $"); #include "locators.h" @@ -50,8 +50,6 @@ __KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.1 2 #include #include - - /* autoconfiguration driver */ static int sx_match(device_t, struct cfdata *, void *); static void sx_attach(device_t, device_t, void *); @@ -111,11 +109,11 @@ sx_attach(device_t parent, device_t self sx_write(sc, SX_CONTROL_STATUS, SX_PB | SX_GO); #ifdef SX_DEBUG - sta(0xfc00, ASI_SX, SX_LD(8, 31)); + sta(0xfc00, ASI_SX, SX_LD(8, 31, 0)); for (i = 1; i < 60; i++) - sta(0xfc00 + (i * 1280), ASI_SX, SX_ST(8, 31)); + sta(0xfc00 + (i * 1280), ASI_SX, SX_ST(8, 31, 0)); for (i = 900; i < 1000; i++) - sta(0xfc00 + (i * 1280) + 600, ASI_SX, SX_ST(0, 31)); + sta(0xfc00 + (i * 1280) + 600, ASI_SX, SX_ST(0, 31, 0)); for (i = 0; i < 0x30; i+= 16) { printf("%08x:", i); Index: src/sys/arch/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.1 src/sys/arch/sparc/dev/sxreg.h:1.2 --- src/sys/arch/sparc/dev/sxreg.h:1.1 Tue Feb 5 21:52:48 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Feb 6 04:06:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.1 2013/02/05 21:52:48 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.2 2013/02/06 04:06:29 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -53,6 +53,12 @@ /* write registers via pseudo instructions */ #define SX_QUEUED_R0 0x0300 #define SX_QUEUED_R1 0x0304 /* and so on until R127 */ +#define SX_QUEUED(r) (0x300 + (r << 2)) + +/* special purpose registers */ +#define R_ZERO 0 +#define R_SCAM 1 +#define R_MASK 2 /* bitmask for SX_STORE_SELECT */ /* * registers are repeated at 0x1000 with certain parts read only @@ -99,7 +105,7 @@ #define SX_STORE_COND (0x4 << 19) /* conditional write with mask */ #define SX_STORE_CLAMP (0x2 << 19) #define SX_STORE_MASK (0x1 << 19) /* apply plane mask */ -#define SX_STORE_SELECT (0x9 << 19) /* expand with plane reg dest[0]/dest[1] */ +#define SX_STORE_SELECT (0x8 << 19) /* expand with plane reg dest[0]/dest[1] */ #define SX_LOAD (0xa << 19) #define SX_STORE (0x0 << 19) @@ -138,13 +144,21 @@ #define SX_PACKED (0x1f << 14) -#define SX_LD(dreg, cnt) (0x8000 | (cnt << 23) | SX_STORE | SX_LONG | (dreg << 7)) -#define SX_LDB(dreg, cnt) (0x8000 | (cnt << 23) | SX_STORE | SX_UBYTE_0 | (dreg << 7)) -#define SX_LDP(dreg, cnt) (0x8000 | (cnt << 23) | SX_STORE | SX_PACKED | (dreg << 7)) -#define SX_ST(sreg, cnt) (0x8000 | (cnt << 23) | SX_LOAD | SX_LONG | (sreg << 7)) -#define SX_STB(sreg, cnt) (0x8000 | (cnt << 23) | SX_LOAD | SX_UBYTE_0 | (sreg << 7)) -#define SX_STP(sreg, cnt) (0x8000 | (cnt << 23) | SX_LOAD | SX_PACKED | (sreg << 7)) -#define SX_STS(sreg, cnt) (0x8000 | (cnt << 23) | SX_STORE_SELECT | SX_LONG | (sreg << 7)) -#define SX_STBS(reg, cnt) (0x8000 | (cnt << 23) | SX_STORE_SELECT | SX_UBYTE_0 | (reg << 7)) +#define SX_LD(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_LONG | (dreg << 7) | (o)) +#define SX_LDB(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UBYTE_0 | (dreg << 7) | (o)) +#define SX_LDP(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_PACKED | (dreg << 7) | (o)) +#define SX_ST(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_LONG | (sreg << 7) | (o)) +#define SX_STB(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UBYTE_0 | (sreg << 7) | (o)) +#define SX_STP(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_PACKED | (sreg << 7) | (o)) +#define SX_STS(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_SELECT \ +| SX_LONG | (sreg << 7) | (o)) +#define SX_STBS(reg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_SELECT \ +| SX_UBYTE_0 | (reg << 7) | (o)) #endif /* SXREG_H */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Feb 6 04:10:55 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c cgfourteenvar.h Log Message: use SX for basic hardware acceleration not quite complete yet but good enough to be useful missing things include: - backwards blits - ROP support - the cursor is still drawn by software To generate a diff of this commit: cvs rdiff -u -r1.69 -r1.70 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sparc/dev/cgfourteenvar.h 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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.69 src/sys/arch/sparc/dev/cgfourteen.c:1.70 --- src/sys/arch/sparc/dev/cgfourteen.c:1.69 Tue Feb 5 21:45:39 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Wed Feb 6 04:10:54 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.69 2013/02/05 21:45:39 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.70 2013/02/06 04:10:54 macallan Exp $ */ /* * Copyright (c) 1996 @@ -53,8 +53,6 @@ /* * Driver for Campus-II on-board mbus-based video (cgfourteen). - * Provides minimum emulation of a Sun cgthree 8-bit framebuffer to - * allow X to run. * * Does not handle interrupts, even though they can occur. * @@ -68,6 +66,9 @@ */ #undef CG14_MAP_REGS +#include "opt_wsemul.h" +#include "sx.h" + #include #include #include @@ -96,10 +97,11 @@ #include +#include #include #include - -#include "opt_wsemul.h" +#include +#include /* autoconfiguration driver */ static int cgfourteenmatch(device_t, struct cfdata *, void *); @@ -145,6 +147,23 @@ static void cg14_set_depth(struct cgfour static void cg14_move_cursor(struct cgfourteen_softc *, int, int); static int cg14_do_cursor(struct cgfourteen_softc *, struct wsdisplay_cursor *); + +#if NSX > 0 +static void cg14_wait_idle(struct cgfourteen_softc *); +static void cg14_rectfill(struct cgfourteen_softc *, int, int, int, int, uint32_t); +static void cg14_bitblt(void *, int, int, int, int, int, int, int); + +#if 0 +static void cg14_cursor(void *, int, int, int); +static void cg14_putchar_aa(void *, int, int, u_int, long); +#endif +static void cg14_putchar(void *, int, int, u_int, long); +static void cg14_copycols(void *, int, int, int, int); +static void cg14_erasecols(void *, int, int, int, long); +static void cg14_copyrows(void *, int, int, int); +static void cg14_eraserows(void *, int, int, long); +#endif /* NSX > 0 */ + #endif /* @@ -212,6 +231,10 @@ cgfourteenattach(device_t parent, device int i, isconsole, items; uint32_t fbva[2] = {0, 0}; uint32_t *ptr = fbva; +#if NSX > 0 + device_t dv; + deviter_t di; +#endif sc->sc_dev = self; sc->sc_opens = 0; @@ -320,6 +343,32 @@ cgfourteenattach(device_t parent, device printf("\n"); sc->sc_depth = 8; + +#if NSX > 0 + /* see if we've got an SX to help us */ + sc->sc_sx = NULL; + for (dv = deviter_first(&di, DEVITER_F_ROOT_FIRST); + dv != NULL; + dv = deviter_next(&di)) { + if (device_is_a(dv, "sx")) { + sc->sc_sx = device_private(dv); + } + } + deviter_release(&di); + if (sc->sc_sx != NULL) { + sc->sc_fb_paddr = bus_space_mmap(sc->sc_bustag, + sc->sc_fbaddr, 0, 0, 0) & 0xf000; + aprint_normal_dev(sc->sc_dev, "using %s\n", + device_xname(sc->sc_sx->sc_dev)); + aprint_normal_dev(sc->sc_dev, "fb paddr: %08x\n", + sc->sc_fb_paddr); +#if 0 + sx_write(sc->sc_sx, SX_PAGE_BOUND_LOWER, sc->sc_fb_paddr); + sx_write(sc->sc_sx, SX_PAGE_BOUND_UPPER, + sc->sc_fb_paddr + 0x03ff); +#endif + } +#endif cg14_setup_wsdisplay(sc, isconsole); #endif @@ -962,6 +1011,9 @@ cg14_init_screen(void *cookie, struct vc ri->ri_flg = RI_CENTER | RI_FULLCLEAR; ri->ri_bits = (char *)sc->sc_fb.fb_pixels; +#if NSX > 0 + if (sc->sc_sx == NULL) +#endif scr->scr_flags |= VCONS_DONT_READ; if (existing) { @@ -976,6 +1028,21 @@ cg14_init_screen(void *cookie, struct vc sc->sc_fb.fb_type.fb_width / ri->ri_font->fontwidth); ri->ri_hw = scr; +#if NSX > 0 + if (sc->sc_sx != NULL) { + ri->ri_ops.copyrows = cg14_copyrows; + ri->ri_ops.copycols = cg14_copycols; + ri->ri_ops.eraserows = cg14_eraserows; + ri->ri_ops.erasecols = cg14_erasecols; +#if 0 + ri->ri_ops.cursor = cg14_cursor; + if (FONT_IS_ALPHA(ri->ri_font)) { + ri->ri_ops.putchar = cg14_putchar_aa; + } else +#endif + ri->ri_ops.putchar = cg14_putchar; + } +#endif /* NSX > 0 */ } static void @@ -1104,4 +1171,405 @@ cg14_do_cursor(struct cgfourteen_softc * } return 0; } + +#if NSX > 0 + +static void +cg14_wait_idle(struct cgfourteen_softc *sc) +{ +} + +static void +cg14_rectfill(struct cgfourteen_softc *sc, int x, int y, int wi, int he, + uint32_t colour) +{ + uint32_t addr, pptr; + int line, cnt; + int stride = sc->sc_fb.fb_type.fb_width; + + addr = sc->sc_fb_paddr + x + stride * y; + sx_write(sc->sc_sx, SX_
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Feb 6 20:39:03 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add SX_ROP instruction To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.2 src/sys/arch/sparc/dev/sxreg.h:1.3 --- src/sys/arch/sparc/dev/sxreg.h:1.2 Wed Feb 6 04:06:29 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Feb 6 20:39:03 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.2 2013/02/06 04:06:29 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.3 2013/02/06 20:39:03 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -161,4 +161,14 @@ #define SX_STBS(reg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_SELECT \ | SX_UBYTE_0 | (reg << 7) | (o)) +/* ROP instruction */ +#define SX_ROPB (0x0 << 21) /* mask bits apply to bytes */ +#define SX_ROPM (0x1 << 21) /* mask bits apply to each bit */ +#define SX_ROPL (0x2 << 21) /* mask bits apply per register */ +#define SX_SELB (0x4 << 21) /* byte select scalar */ +#define SX_SELV (0x6 << 21) /* register select vector */ +#define SX_SELS (0x7 << 21) /* register select scalar */ + +#define SX_ROP(sa, sb, d, cnt) (0x9000 | ((cnt) << 24) | SX_ROPL | \ + ((sa) << 14) | (sb) | ((d) << 7)) #endif /* SXREG_H */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Feb 7 16:14:30 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: - implement buttom-up copies in cg14_bitblt() so scrolling down works now - use more registers when copying - use hardware to draw the cursor - use putchar() for horizontal scrolling since byte-wise overlapping copy ops wouldn't be any faster anyway To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.71 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.70 src/sys/arch/sparc/dev/cgfourteen.c:1.71 --- src/sys/arch/sparc/dev/cgfourteen.c:1.70 Wed Feb 6 04:10:54 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Feb 7 16:14:30 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.70 2013/02/06 04:10:54 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.71 2013/02/07 16:14:30 macallan Exp $ */ /* * Copyright (c) 1996 @@ -151,12 +151,13 @@ static int cg14_do_cursor(struct cgfour #if NSX > 0 static void cg14_wait_idle(struct cgfourteen_softc *); static void cg14_rectfill(struct cgfourteen_softc *, int, int, int, int, uint32_t); +static void cg14_invert(struct cgfourteen_softc *, int, int, int, int); static void cg14_bitblt(void *, int, int, int, int, int, int, int); #if 0 -static void cg14_cursor(void *, int, int, int); static void cg14_putchar_aa(void *, int, int, u_int, long); #endif +static void cg14_cursor(void *, int, int, int); static void cg14_putchar(void *, int, int, u_int, long); static void cg14_copycols(void *, int, int, int, int); static void cg14_erasecols(void *, int, int, int, long); @@ -360,14 +361,13 @@ cgfourteenattach(device_t parent, device sc->sc_fbaddr, 0, 0, 0) & 0xf000; aprint_normal_dev(sc->sc_dev, "using %s\n", device_xname(sc->sc_sx->sc_dev)); - aprint_normal_dev(sc->sc_dev, "fb paddr: %08x\n", + aprint_debug_dev(sc->sc_dev, "fb paddr: %08x\n", sc->sc_fb_paddr); -#if 0 sx_write(sc->sc_sx, SX_PAGE_BOUND_LOWER, sc->sc_fb_paddr); sx_write(sc->sc_sx, SX_PAGE_BOUND_UPPER, sc->sc_fb_paddr + 0x03ff); -#endif } + cg14_wait_idle(sc); #endif cg14_setup_wsdisplay(sc, isconsole); #endif @@ -1012,7 +1012,13 @@ cg14_init_screen(void *cookie, struct vc ri->ri_bits = (char *)sc->sc_fb.fb_pixels; #if NSX > 0 - if (sc->sc_sx == NULL) + /* + * unaligned copies with horizontal overlap are slow, so don't bother + * handling them in cg14_bitblt() and use putchar() instead + */ + if (sc->sc_sx != NULL) { + scr->scr_flags |= VCONS_NO_COPYCOLS; + } else #endif scr->scr_flags |= VCONS_DONT_READ; @@ -1034,8 +1040,8 @@ cg14_init_screen(void *cookie, struct vc ri->ri_ops.copycols = cg14_copycols; ri->ri_ops.eraserows = cg14_eraserows; ri->ri_ops.erasecols = cg14_erasecols; -#if 0 ri->ri_ops.cursor = cg14_cursor; +#if 0 if (FONT_IS_ALPHA(ri->ri_font)) { ri->ri_ops.putchar = cg14_putchar_aa; } else @@ -1184,25 +1190,112 @@ cg14_rectfill(struct cgfourteen_softc *s uint32_t colour) { uint32_t addr, pptr; - int line, cnt; + int line, cnt, pre, words; int stride = sc->sc_fb.fb_type.fb_width; addr = sc->sc_fb_paddr + x + stride * y; sx_write(sc->sc_sx, SX_QUEUED(8), colour); sx_write(sc->sc_sx, SX_QUEUED(9), colour); + /* + * Calculate the number of pixels we need to do one by one + * until we're 32bit aligned, then do the rest in 32bit + * mode. Assumes that stride is always a multiple of 4. + */ + pre = addr & 3; + if (pre != 0) pre = 4 - pre; for (line = 0; line < he; line++) { pptr = addr; cnt = wi; - while(cnt > 32) { - sta(pptr, ASI_SX, SX_STBS(8, 31, pptr & 7)); - pptr += 32; - cnt -= 32; + if (pre) { + sta(pptr, ASI_SX, SX_STBS(8, pre - 1, pptr & 7)); + pptr += pre; + cnt -= pre; } + /* now do the aligned pixels in 32bit chunks */ + while(cnt > 31) { + words = min(32, cnt >> 2); + sta(pptr, ASI_SX, SX_STS(8, words - 1, pptr & 7)); + pptr += words << 2; + cnt -= words << 2; + } + /* do any remaining pixels byte-wise again */ if (cnt > 0) sta(pptr, ASI_SX, SX_STBS(8, cnt - 1, pptr & 7)); addr += stride; } - cg14_wait_idle(sc); +} + +static void +cg14_invert(struct cgfourteen_softc *sc, int x, int y, int wi, int he) +{ + uint32_t addr, pptr; + int line, cnt, pre, words; + int stride = sc->sc_fb.fb_type.fb_width; + + addr = sc->sc_fb_paddr + x + stride * y; + sx_write(sc->sc_sx, SX_ROP_CONTROL, 0x33); /* ~src a */ + /* + * Calculate the number of pixels we need to do one by one + * until we're 32bit aligned, then do the rest in 32bit + * mode. Assumes that stride is always a multiple of 4. + */ + pre = addr & 3; + if (pre != 0) pre = 4 - pre; + for (line = 0; line < he; line++) { + pptr = addr; + cnt = wi; + if (pre) { + sta(pptr, ASI_SX, SX_LDB(8, pre - 1, p
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jakllsch Date: Thu Sep 8 15:34:07 UTC 2011 Modified Files: src/sys/arch/sparc/dev: ms_pckbport.c Log Message: Correct copy/paste of function name in error printf. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/sparc/dev/ms_pckbport.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/sparc/dev/ms_pckbport.c diff -u src/sys/arch/sparc/dev/ms_pckbport.c:1.6 src/sys/arch/sparc/dev/ms_pckbport.c:1.7 --- src/sys/arch/sparc/dev/ms_pckbport.c:1.6 Fri Jul 1 18:50:41 2011 +++ src/sys/arch/sparc/dev/ms_pckbport.c Thu Sep 8 15:34:07 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ms_pckbport.c,v 1.6 2011/07/01 18:50:41 dyoung Exp $ */ +/* $NetBSD: ms_pckbport.c,v 1.7 2011/09/08 15:34:07 jakllsch Exp $ */ /* * Copyright (c) 2002 Valeriy E. Ushakov @@ -27,7 +27,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: ms_pckbport.c,v 1.6 2011/07/01 18:50:41 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ms_pckbport.c,v 1.7 2011/09/08 15:34:07 jakllsch Exp $"); /* * Attach PS/2 mouse at pckbport aux port @@ -152,7 +152,7 @@ res = pckbport_enqueue_cmd(sc->sc_kbctag, sc->sc_kbcslot, cmd, 1, 0, 1, NULL); if (res) { - printf("pms_enable: command error\n"); + printf("%s: command error\n", __func__); return (res); }
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jakllsch Date: Thu Sep 8 15:36:42 UTC 2011 Modified Files: src/sys/arch/sparc/dev: ms_pckbport.c Log Message: Another copy/paste problem with a function name in a error printf. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/sparc/dev/ms_pckbport.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/sparc/dev/ms_pckbport.c diff -u src/sys/arch/sparc/dev/ms_pckbport.c:1.7 src/sys/arch/sparc/dev/ms_pckbport.c:1.8 --- src/sys/arch/sparc/dev/ms_pckbport.c:1.7 Thu Sep 8 15:34:07 2011 +++ src/sys/arch/sparc/dev/ms_pckbport.c Thu Sep 8 15:36:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ms_pckbport.c,v 1.7 2011/09/08 15:34:07 jakllsch Exp $ */ +/* $NetBSD: ms_pckbport.c,v 1.8 2011/09/08 15:36:42 jakllsch Exp $ */ /* * Copyright (c) 2002 Valeriy E. Ushakov @@ -27,7 +27,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: ms_pckbport.c,v 1.7 2011/09/08 15:34:07 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ms_pckbport.c,v 1.8 2011/09/08 15:36:42 jakllsch Exp $"); /* * Attach PS/2 mouse at pckbport aux port @@ -172,7 +172,7 @@ res = pckbport_enqueue_cmd(sc->sc_kbctag, sc->sc_kbcslot, cmd, 1, 0, 1, NULL); if (res) - printf("pms_disable: command error\n"); + printf("%s: command error\n", __func__); pckbport_slot_enable(sc->sc_kbctag, sc->sc_kbcslot, 0);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: dyoung Date: Fri Jul 1 18:50:42 UTC 2011 Modified Files: src/sys/arch/sparc/dev: bootbus.c cgsix_obio.c com_ebus.c com_obio.c dma_obio.c ebus.c esp_obio.c if_ie_obio.c if_le_obio.c kbd_pckbport.c ms_pckbport.c obio.c rtc.c sbus.c sw.c tctrl.c ts102.c vme_machdep.c Log Message: #include instead of . To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/sparc/dev/bootbus.c cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sparc/dev/cgsix_obio.c \ src/sys/arch/sparc/dev/com_obio.c src/sys/arch/sparc/dev/esp_obio.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/sparc/dev/com_ebus.c cvs rdiff -u -r1.11 -r1.12 src/sys/arch/sparc/dev/dma_obio.c cvs rdiff -u -r1.31 -r1.32 src/sys/arch/sparc/dev/ebus.c cvs rdiff -u -r1.39 -r1.40 src/sys/arch/sparc/dev/if_ie_obio.c cvs rdiff -u -r1.26 -r1.27 src/sys/arch/sparc/dev/if_le_obio.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/sparc/dev/kbd_pckbport.c \ src/sys/arch/sparc/dev/ms_pckbport.c cvs rdiff -u -r1.71 -r1.72 src/sys/arch/sparc/dev/obio.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/sparc/dev/rtc.c cvs rdiff -u -r1.74 -r1.75 src/sys/arch/sparc/dev/sbus.c cvs rdiff -u -r1.22 -r1.23 src/sys/arch/sparc/dev/sw.c cvs rdiff -u -r1.51 -r1.52 src/sys/arch/sparc/dev/tctrl.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sparc/dev/ts102.c cvs rdiff -u -r1.63 -r1.64 src/sys/arch/sparc/dev/vme_machdep.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/sparc/dev/bootbus.c diff -u src/sys/arch/sparc/dev/bootbus.c:1.17 src/sys/arch/sparc/dev/bootbus.c:1.18 --- src/sys/arch/sparc/dev/bootbus.c:1.17 Sun Sep 20 16:18:21 2009 +++ src/sys/arch/sparc/dev/bootbus.c Fri Jul 1 18:50:41 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: bootbus.c,v 1.17 2009/09/20 16:18:21 tsutsui Exp $ */ +/* $NetBSD: bootbus.c,v 1.18 2011/07/01 18:50:41 dyoung Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: bootbus.c,v 1.17 2009/09/20 16:18:21 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bootbus.c,v 1.18 2011/07/01 18:50:41 dyoung Exp $"); #include #include @@ -42,7 +42,7 @@ #include #include -#include +#include #include #include Index: src/sys/arch/sparc/dev/cgsix_obio.c diff -u src/sys/arch/sparc/dev/cgsix_obio.c:1.23 src/sys/arch/sparc/dev/cgsix_obio.c:1.24 --- src/sys/arch/sparc/dev/cgsix_obio.c:1.23 Fri Dec 12 18:50:13 2008 +++ src/sys/arch/sparc/dev/cgsix_obio.c Fri Jul 1 18:50:41 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cgsix_obio.c,v 1.23 2008/12/12 18:50:13 macallan Exp $ */ +/* $NetBSD: cgsix_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cgsix_obio.c,v 1.23 2008/12/12 18:50:13 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cgsix_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $"); #include #include @@ -51,7 +51,7 @@ #include #endif -#include +#include #include #include Index: src/sys/arch/sparc/dev/com_obio.c diff -u src/sys/arch/sparc/dev/com_obio.c:1.23 src/sys/arch/sparc/dev/com_obio.c:1.24 --- src/sys/arch/sparc/dev/com_obio.c:1.23 Sat Nov 21 04:16:51 2009 +++ src/sys/arch/sparc/dev/com_obio.c Fri Jul 1 18:50:41 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: com_obio.c,v 1.23 2009/11/21 04:16:51 rmind Exp $ */ +/* $NetBSD: com_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: com_obio.c,v 1.23 2009/11/21 04:16:51 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $"); #include #include @@ -78,7 +78,7 @@ #include #include -#include +#include #include #include Index: src/sys/arch/sparc/dev/esp_obio.c diff -u src/sys/arch/sparc/dev/esp_obio.c:1.23 src/sys/arch/sparc/dev/esp_obio.c:1.24 --- src/sys/arch/sparc/dev/esp_obio.c:1.23 Mon Apr 28 20:23:35 2008 +++ src/sys/arch/sparc/dev/esp_obio.c Fri Jul 1 18:50:41 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: esp_obio.c,v 1.23 2008/04/28 20:23:35 martin Exp $ */ +/* $NetBSD: esp_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: esp_obio.c,v 1.23 2008/04/28 20:23:35 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: esp_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $"); #include #include @@ -46,7 +46,7 @@ #include #include -#include +#include #include #include Index: src/sys/arch/sparc/dev/com_ebus.c diff -u src/sys/arch/sparc/dev/com_ebus.c:1.15 src/sys/arch/sparc/dev/com_ebus.c:1.16 --- src/sys/arch/sparc/dev/com_ebus.c:1.15 Mon Apr 28 20:23:35 2008 +++ src/sys/arch/sparc/dev/com_ebus.c Fri Jul 1 18:50:41 2011 @@ -1,4 +1,4 @@ -/* $NetBSD:
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: mrg Date: Mon Jul 18 00:05:35 UTC 2011 Modified Files: src/sys/arch/sparc/dev: cgeight.c cgfour.c cgtwo.c Log Message: convert to use device_t, cfdata_t and CFATTACH_DECL_NEW(). XXX: compile time tested only. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/arch/sparc/dev/cgeight.c cvs rdiff -u -r1.45 -r1.46 src/sys/arch/sparc/dev/cgfour.c cvs rdiff -u -r1.54 -r1.55 src/sys/arch/sparc/dev/cgtwo.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/sparc/dev/cgeight.c diff -u src/sys/arch/sparc/dev/cgeight.c:1.46 src/sys/arch/sparc/dev/cgeight.c:1.47 --- src/sys/arch/sparc/dev/cgeight.c:1.46 Wed Jun 11 21:25:31 2008 +++ src/sys/arch/sparc/dev/cgeight.c Mon Jul 18 00:05:35 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cgeight.c,v 1.46 2008/06/11 21:25:31 drochner Exp $ */ +/* $NetBSD: cgeight.c,v 1.47 2011/07/18 00:05:35 mrg Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -102,7 +102,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cgeight.c,v 1.46 2008/06/11 21:25:31 drochner Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cgeight.c,v 1.47 2011/07/18 00:05:35 mrg Exp $"); #include #include @@ -127,7 +127,6 @@ /* per-display variables */ struct cgeight_softc { - struct device sc_dev; /* base device */ struct fbdevice sc_fb; /* frame buffer device */ bus_space_tag_t sc_bustag; bus_addr_t sc_paddr; /* phys address for device mmap() */ @@ -137,15 +136,15 @@ }; /* autoconfiguration driver */ -static void cgeightattach(struct device *, struct device *, void *); -static int cgeightmatch(struct device *, struct cfdata *, void *); +static void cgeightattach(device_t, device_t, void *); +static int cgeightmatch(device_t, cfdata_t, void *); #if defined(SUN4) -static void cgeightunblank(struct device *); +static void cgeightunblank(device_t); #endif static int cg8_pfour_probe(void *, void *); -CFATTACH_DECL(cgeight, sizeof(struct cgeight_softc), +CFATTACH_DECL_NEW(cgeight, sizeof(struct cgeight_softc), cgeightmatch, cgeightattach, NULL, NULL); extern struct cfdriver cgeight_cd; @@ -175,7 +174,7 @@ * Match a cgeight. */ static int -cgeightmatch(struct device *parent, struct cfdata *cf, void *aux) +cgeightmatch(device_t parent, cfdata_t cf, void *aux) { union obio_attach_args *uoba = aux; struct obio4_attach_args *oba; @@ -202,7 +201,7 @@ * Attach a display. We need to notice if it is the console, too. */ static void -cgeightattach(struct device *parent, struct device *self, void *aux) +cgeightattach(device_t parent, device_t self, void *aux) { #if defined(SUN4) union obio_attach_args *uoba = aux; @@ -221,15 +220,16 @@ sizeof(uint32_t), BUS_SPACE_MAP_LINEAR, &bh) != 0) { - printf("%s: cannot map pfour register\n", self->dv_xname); + printf("%s: cannot map pfour register\n", + device_xname(self)); return; } fb->fb_pfour = (volatile uint32_t *)bh; fb->fb_driver = &cgeightfbdriver; - fb->fb_device = &sc->sc_dev; + fb->fb_device = self; fb->fb_type.fb_type = FBTYPE_MEMCOLOR; - fb->fb_flags = device_cfdata(&sc->sc_dev)->cf_flags & FB_USERMASK; + fb->fb_flags = device_cfdata(self)->cf_flags & FB_USERMASK; fb->fb_flags |= FB_PFOUR; ramsize = PFOUR_COLOR_OFF_END - PFOUR_COLOR_OFF_OVERLAY; @@ -285,7 +285,8 @@ sizeof(struct fbcontrol), BUS_SPACE_MAP_LINEAR, &bh) != 0) { - printf("%s: cannot map control registers\n", self->dv_xname); + printf("%s: cannot map control registers\n", + device_xname(self)); return; } sc->sc_fbc = (volatile struct fbcontrol *)bh; @@ -481,7 +482,7 @@ * Undo the effect of an FBIOSVIDEO that turns the video off. */ static void -cgeightunblank(struct device *dev) +cgeightunblank(device_t dev) { cgeight_set_video(device_private(dev), 1); Index: src/sys/arch/sparc/dev/cgfour.c diff -u src/sys/arch/sparc/dev/cgfour.c:1.45 src/sys/arch/sparc/dev/cgfour.c:1.46 --- src/sys/arch/sparc/dev/cgfour.c:1.45 Wed Jun 11 21:25:31 2008 +++ src/sys/arch/sparc/dev/cgfour.c Mon Jul 18 00:05:35 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfour.c,v 1.45 2008/06/11 21:25:31 drochner Exp $ */ +/* $NetBSD: cgfour.c,v 1.46 2011/07/18 00:05:35 mrg Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -102,7 +102,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cgfour.c,v 1.45 2008/06/11 21:25:31 drochner Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cgfour.c,v 1.46 2011/07/18 00:05:35 mrg Exp $"); #include #include @@ -125,7 +125,6 @@ /* per-display variables */ struct cgfour_softc { - struct device sc_dev; /* base device */ struct fbdevice sc_fb; /* frame buffer device */ bus_space_tag_t sc_bustag; bus_addr_t sc_paddr; /* phys address for device mmap() */ @@ -135,8 +134,8 @@ }; /* autoconfiguration driver */ -static int cgfourmatch(struct device *, struct cfdata *, void *); -static vo
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: mrg Date: Mon Jul 18 00:31:13 UTC 2011 Modified Files: src/sys/arch/sparc/dev: bootbus.c cgsix_obio.c ebus.c rtc.c tctrl.c vme_machdep.c Log Message: convert the remaining sparc drivers to CFATTACH_DECL_NEW/cfdata_t/device_t. (cgsix_obio.c was only partially converted with the rest of the cgsix code when it was changed some time ago.) To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/sparc/dev/bootbus.c cvs rdiff -u -r1.24 -r1.25 src/sys/arch/sparc/dev/cgsix_obio.c cvs rdiff -u -r1.32 -r1.33 src/sys/arch/sparc/dev/ebus.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/sparc/dev/rtc.c cvs rdiff -u -r1.52 -r1.53 src/sys/arch/sparc/dev/tctrl.c cvs rdiff -u -r1.64 -r1.65 src/sys/arch/sparc/dev/vme_machdep.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/sparc/dev/bootbus.c diff -u src/sys/arch/sparc/dev/bootbus.c:1.18 src/sys/arch/sparc/dev/bootbus.c:1.19 --- src/sys/arch/sparc/dev/bootbus.c:1.18 Fri Jul 1 18:50:41 2011 +++ src/sys/arch/sparc/dev/bootbus.c Mon Jul 18 00:31:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: bootbus.c,v 1.18 2011/07/01 18:50:41 dyoung Exp $ */ +/* $NetBSD: bootbus.c,v 1.19 2011/07/18 00:31:13 mrg Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: bootbus.c,v 1.18 2011/07/01 18:50:41 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bootbus.c,v 1.19 2011/07/18 00:31:13 mrg Exp $"); #include #include @@ -50,7 +50,6 @@ #include "locators.h" struct bootbus_softc { - struct device sc_dev; int sc_node;/* our OBP node */ bus_space_tag_t sc_st; /* ours */ @@ -60,11 +59,10 @@ static int bootbus_match(device_t, cfdata_t, void *); static void bootbus_attach(device_t, device_t, void *); -CFATTACH_DECL(bootbus, sizeof(struct bootbus_softc), +CFATTACH_DECL_NEW(bootbus, sizeof(struct bootbus_softc), bootbus_match, bootbus_attach, NULL, NULL); -static int bootbus_submatch(struct device *, struct cfdata *, - const int *, void *); +static int bootbus_submatch(device_t, cfdata_t, const int *, void *); static int bootbus_print(void *, const char *); static int bootbus_setup_attach_args(struct bootbus_softc *, bus_space_tag_t, Index: src/sys/arch/sparc/dev/cgsix_obio.c diff -u src/sys/arch/sparc/dev/cgsix_obio.c:1.24 src/sys/arch/sparc/dev/cgsix_obio.c:1.25 --- src/sys/arch/sparc/dev/cgsix_obio.c:1.24 Fri Jul 1 18:50:41 2011 +++ src/sys/arch/sparc/dev/cgsix_obio.c Mon Jul 18 00:31:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cgsix_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $ */ +/* $NetBSD: cgsix_obio.c,v 1.25 2011/07/18 00:31:13 mrg Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cgsix_obio.c,v 1.24 2011/07/01 18:50:41 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cgsix_obio.c,v 1.25 2011/07/18 00:31:13 mrg Exp $"); #include #include @@ -68,7 +68,7 @@ static void cgsixattach(device_t, device_t, void *); static int cg6_pfour_probe(void *, void *); -CFATTACH_DECL(cgsix_obio, sizeof(struct cgsix_softc), +CFATTACH_DECL_NEW(cgsix_obio, sizeof(struct cgsix_softc), cgsixmatch, cgsixattach, NULL, NULL); /* Index: src/sys/arch/sparc/dev/ebus.c diff -u src/sys/arch/sparc/dev/ebus.c:1.32 src/sys/arch/sparc/dev/ebus.c:1.33 --- src/sys/arch/sparc/dev/ebus.c:1.32 Fri Jul 1 18:50:41 2011 +++ src/sys/arch/sparc/dev/ebus.c Mon Jul 18 00:31:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ebus.c,v 1.32 2011/07/01 18:50:41 dyoung Exp $ */ +/* $NetBSD: ebus.c,v 1.33 2011/07/18 00:31:13 mrg Exp $ */ /* * Copyright (c) 1999, 2000 Matthew R. Green @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ebus.c,v 1.32 2011/07/01 18:50:41 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ebus.c,v 1.33 2011/07/18 00:31:13 mrg Exp $"); #if defined(DEBUG) && !defined(EBUS_DEBUG) #define EBUS_DEBUG @@ -82,7 +82,7 @@ #endif struct ebus_softc { - struct device sc_dev; + device_t sc_dev; device_t sc_parent; /* PCI bus */ intsc_node; /* PROM node */ @@ -100,7 +100,7 @@ static int ebus_match(device_t, cfdata_t, void *); static void ebus_attach(device_t, device_t, void *); -CFATTACH_DECL(ebus, sizeof(struct ebus_softc), +CFATTACH_DECL_NEW(ebus, sizeof(struct ebus_softc), ebus_match, ebus_attach, NULL, NULL); static int ebus_setup_attach_args(struct ebus_softc *, bus_space_tag_t, @@ -212,7 +212,7 @@ if (wiring_map != NULL) { printf("%s: global ebus wiring map already initalized\n", - device_xname(&sc->sc_dev)); + device_xname(sc->sc_dev)); return (0); } @@ -250,6 +250,8 @@ int node, error; char devinfo[256]; + sc->sc_dev = self; + #ifdef BLINK callout_init(&ebus_blink_ch, 0); #endif Index: src/sys/arch/sparc/dev/rtc.c diff -u src/sys/arch/sparc/dev/rtc.c:1.17 src/sys/arch/sparc/de
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: martin Date: Sun Mar 25 08:48:40 UTC 2012 Modified Files: src/sys/arch/sparc/dev: tctrl.c Log Message: Make explicitly clear that we mean raw I/O on device passthru, not just generic passthru. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/arch/sparc/dev/tctrl.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/sparc/dev/tctrl.c diff -u src/sys/arch/sparc/dev/tctrl.c:1.54 src/sys/arch/sparc/dev/tctrl.c:1.55 --- src/sys/arch/sparc/dev/tctrl.c:1.54 Tue Mar 13 18:40:28 2012 +++ src/sys/arch/sparc/dev/tctrl.c Sun Mar 25 08:48:40 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: tctrl.c,v 1.54 2012/03/13 18:40:28 elad Exp $ */ +/* $NetBSD: tctrl.c,v 1.55 2012/03/25 08:48:40 martin Exp $ */ /*- * Copyright (c) 1998, 2005, 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.54 2012/03/13 18:40:28 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.55 2012/03/25 08:48:40 martin Exp $"); #include #include @@ -1150,7 +1150,7 @@ tctrlioctl(dev_t dev, u_long cmd, void * case TCTRL_CMD_REQ: reqn = (struct tctrl_req *)data; if ((i = kauth_authorize_device_passthru(l->l_cred, - dev, KAUTH_REQ_DEVICE_PASSTHRU_ALL, data)) != 0 && + dev, KAUTH_REQ_DEVICE_RAWIO_PASSTHRU_ALL, data)) != 0 && (reqn->cmdbuf[0] == TS102_OP_CTL_BITPORT || (reqn->cmdbuf[0] >= TS102_OP_CTL_WATCHDOG && reqn->cmdbuf[0] <= TS102_OP_CTL_SECURITY_KEY) ||
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Apr 13 23:31:25 UTC 2011 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: use the same function whenever we change colour depth also, when opening the fb device switch to 32bit and back to 8 on close, not the other way around To generate a diff of this commit: cvs rdiff -u -r1.65 -r1.66 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.65 src/sys/arch/sparc/dev/cgfourteen.c:1.66 --- src/sys/arch/sparc/dev/cgfourteen.c:1.65 Tue Aug 31 21:14:57 2010 +++ src/sys/arch/sparc/dev/cgfourteen.c Wed Apr 13 23:31:25 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.65 2010/08/31 21:14:57 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.66 2011/04/13 23:31:25 macallan Exp $ */ /* * Copyright (c) 1996 @@ -477,20 +477,10 @@ case CG14_SET_PIXELMODE: { int depth = *(int *)data; - switch (depth) { - case 8: - bus_space_write_1(sc->sc_bustag, sc->sc_regh, - CG14_MCTL, CG14_MCTL_ENABLEVID | - CG14_MCTL_PIXMODE_8 | CG14_MCTL_POWERCTL); - break; - case 32: - bus_space_write_1(sc->sc_bustag, sc->sc_regh, - CG14_MCTL, CG14_MCTL_ENABLEVID | - CG14_MCTL_PIXMODE_32 | CG14_MCTL_POWERCTL); - break; - default: + if (sc->sc_mode == WSDISPLAYIO_MODE_EMUL) return EINVAL; - } + + cg14_set_depth(sc, depth); } break; default: @@ -586,6 +576,7 @@ static void cg14_init(struct cgfourteen_softc *sc) { +#if 0 volatile uint32_t *clut; volatile uint8_t *xlut; int i; @@ -613,12 +604,16 @@ */ sc->sc_ctl->ctl_mctl = CG14_MCTL_ENABLEVID | CG14_MCTL_PIXMODE_8 | CG14_MCTL_POWERCTL; +#else + cg14_set_depth(sc, 32); +#endif } static void /* Restore the state saved on cg14_init */ cg14_reset(struct cgfourteen_softc *sc) { +#if 0 volatile uint32_t *clut; volatile uint8_t *xlut; int i; @@ -646,6 +641,9 @@ clut[i] = sc->sc_saveclut.cm_chip[i]; xlut[i] = sc->sc_savexlut[i]; } +#else + cg14_set_depth(sc, 8); +#endif } /* Enable/disable video display; power down monitor if DPMS-capable */ @@ -932,10 +930,12 @@ bus_space_write_1(sc->sc_bustag, sc->sc_regh, CG14_CURSOR_CONTROL, 0); + cg14_set_depth(sc, 8); cg14_init_cmap(sc); vcons_redraw_screen(ms); } else { + cg14_set_depth(sc, 32); } } @@ -1038,6 +1038,7 @@ if (sc->sc_depth == depth) return; + switch (depth) { case 8: bus_space_write_1(sc->sc_bustag, sc->sc_regh,
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: pgoyette Date: Mon Jun 20 16:33:42 UTC 2011 Modified Files: src/sys/arch/sparc/dev: tctrl.c Log Message: Initialize sensor states before registering To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/sys/arch/sparc/dev/tctrl.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/sparc/dev/tctrl.c diff -u src/sys/arch/sparc/dev/tctrl.c:1.50 src/sys/arch/sparc/dev/tctrl.c:1.51 --- src/sys/arch/sparc/dev/tctrl.c:1.50 Sat Nov 21 04:16:51 2009 +++ src/sys/arch/sparc/dev/tctrl.c Mon Jun 20 16:33:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: tctrl.c,v 1.50 2009/11/21 04:16:51 rmind Exp $ */ +/* $NetBSD: tctrl.c,v 1.51 2011/06/20 16:33:42 pgoyette Exp $ */ /*- * Copyright (c) 1998, 2005, 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.50 2009/11/21 04:16:51 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.51 2011/06/20 16:33:42 pgoyette Exp $"); #include #include @@ -1261,16 +1261,19 @@ (void)strlcpy(sc->sc_sensor[0].desc, "Case temperature", sizeof(sc->sc_sensor[0].desc)); sc->sc_sensor[0].units = ENVSYS_STEMP; + sc->sc_sensor[0].state = ENVSYS_SINVALID; /* battery voltage */ (void)strlcpy(sc->sc_sensor[1].desc, "Internal battery voltage", sizeof(sc->sc_sensor[1].desc)); sc->sc_sensor[1].units = ENVSYS_SVOLTS_DC; + sc->sc_sensor[1].state = ENVSYS_SINVALID; /* DC voltage */ (void)strlcpy(sc->sc_sensor[2].desc, "DC-In voltage", sizeof(sc->sc_sensor[2].desc)); sc->sc_sensor[2].units = ENVSYS_SVOLTS_DC; + sc->sc_sensor[2].state = ENVSYS_SINVALID; for (i = 0; i < ENVSYS_NUMSENSORS; i++) { if (sysmon_envsys_sensor_attach(sc->sc_sme,
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Jan 11 15:54:44 UTC 2012 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: use rasops_init(0, 0) To generate a diff of this commit: cvs rdiff -u -r1.66 -r1.67 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.66 src/sys/arch/sparc/dev/cgfourteen.c:1.67 --- src/sys/arch/sparc/dev/cgfourteen.c:1.66 Wed Apr 13 23:31:25 2011 +++ src/sys/arch/sparc/dev/cgfourteen.c Wed Jan 11 15:54:44 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.66 2011/04/13 23:31:25 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.67 2012/01/11 15:54:44 macallan Exp $ */ /* * Copyright (c) 1996 @@ -1020,8 +1020,7 @@ cg14_init_screen(void *cookie, struct vc ri->ri_flg |= RI_CLEAR; } - rasops_init(ri, sc->sc_fb.fb_type.fb_height / 8, - sc->sc_fb.fb_type.fb_width / 8); + rasops_init(ri, 0, 0); ri->ri_caps = WSSCREEN_WSCOLORS; rasops_reconfig(ri,
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jdc Date: Sun Sep 23 09:54:04 UTC 2012 Modified Files: src/sys/arch/sparc/dev: sbus.c Log Message: Wrap sbuserr_handler and sbus_error with: #if (defined(SUN4M) && !defined(MSIIEP)) || defined(SUN4D) to give them the same scope as the definitions in ../sparc/intr.c. Allows SUN4C-only kernels to compile. OK mrg To generate a diff of this commit: cvs rdiff -u -r1.77 -r1.78 src/sys/arch/sparc/dev/sbus.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/sparc/dev/sbus.c diff -u src/sys/arch/sparc/dev/sbus.c:1.77 src/sys/arch/sparc/dev/sbus.c:1.78 --- src/sys/arch/sparc/dev/sbus.c:1.77 Sun Jul 29 00:04:05 2012 +++ src/sys/arch/sparc/dev/sbus.c Sun Sep 23 09:54:04 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: sbus.c,v 1.77 2012/07/29 00:04:05 matt Exp $ */ +/* $NetBSD: sbus.c,v 1.78 2012/09/23 09:54:04 jdc Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -74,7 +74,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sbus.c,v 1.77 2012/07/29 00:04:05 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sbus.c,v 1.78 2012/09/23 09:54:04 jdc Exp $"); #include #include @@ -113,8 +113,10 @@ void sbus_attach_mainbus(device_t, devic void sbus_attach_iommu(device_t, device_t, void *); void sbus_attach_xbox(device_t, device_t, void *); +#if (defined(SUN4M) && !defined(MSIIEP)) || defined(SUN4D) static int sbus_error(void); extern int (*sbuserr_handler)(void); +#endif CFATTACH_DECL_NEW(sbus_mainbus, sizeof(struct sbus_softc), sbus_match_mainbus, sbus_attach_mainbus, NULL, NULL); @@ -311,7 +313,9 @@ sbus_attach_iommu(device_t parent, devic printf(": clock = %s MHz\n", clockfreq(sc->sc_clockfreq)); sbus_sc = sc; +#if (defined(SUN4M) && !defined(MSIIEP)) || defined(SUN4D) sbuserr_handler = sbus_error; +#endif sbus_attach_common(sc, "sbus", node, NULL); } @@ -594,6 +598,7 @@ sbus_intr_establish(bus_space_tag_t t, i return (ih); } +#if (defined(SUN4M) && !defined(MSIIEP)) || defined(SUN4D) static int sbus_error(void) { @@ -625,3 +630,4 @@ static int straytime, nstray; return (0); } +#endif
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Apr 21 17:59:18 UTC 2016 Modified Files: src/sys/arch/sparc/dev: cgsix_obio.c Log Message: RASTERCONSOLE is no more To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/sys/arch/sparc/dev/cgsix_obio.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/sparc/dev/cgsix_obio.c diff -u src/sys/arch/sparc/dev/cgsix_obio.c:1.26 src/sys/arch/sparc/dev/cgsix_obio.c:1.27 --- src/sys/arch/sparc/dev/cgsix_obio.c:1.26 Sat Oct 27 17:18:11 2012 +++ src/sys/arch/sparc/dev/cgsix_obio.c Thu Apr 21 17:59:18 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: cgsix_obio.c,v 1.26 2012/10/27 17:18:11 chs Exp $ */ +/* $NetBSD: cgsix_obio.c,v 1.27 2016/04/21 17:59:18 macallan Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cgsix_obio.c,v 1.26 2012/10/27 17:18:11 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cgsix_obio.c,v 1.27 2016/04/21 17:59:18 macallan Exp $"); #include #include @@ -204,17 +204,15 @@ cgsixattach(device_t parent, device_t se else isconsole = 0; - if (isconsole && cgsix_use_rasterconsole) { - if (bus_space_map(oba->oba_bustag, - oba->oba_paddr + CGSIX_RAM_OFFSET, - sc->sc_ramsize, - BUS_SPACE_MAP_LINEAR, - &bh) != 0) { - printf("%s: cannot map pixels\n", device_xname(self)); - return; - } - sc->sc_fb.fb_pixels = (void *)bh; + if (bus_space_map(oba->oba_bustag, + oba->oba_paddr + CGSIX_RAM_OFFSET, + sc->sc_ramsize, + BUS_SPACE_MAP_LINEAR, + &bh) != 0) { + printf("%s: cannot map pixels\n", device_xname(self)); + return; } + sc->sc_fb.fb_pixels = (void *)bh; cg6attach(sc, name, isconsole); }
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Sat Apr 30 05:22:19 UTC 2016 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: sprinkle ()s in macros To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.11 src/sys/arch/sparc/dev/sxreg.h:1.12 --- src/sys/arch/sparc/dev/sxreg.h:1.11 Wed Jun 19 00:41:16 2013 +++ src/sys/arch/sparc/dev/sxreg.h Sat Apr 30 05:22:19 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.11 2013/06/19 00:41:16 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.12 2016/04/30 05:22:19 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -53,7 +53,7 @@ /* write registers via pseudo instructions */ #define SX_QUEUED_R0 0x0300 #define SX_QUEUED_R1 0x0304 /* and so on until R127 */ -#define SX_QUEUED(r) (0x300 + (r << 2)) +#define SX_QUEUED(r) (0x300 + ((r) << 2)) /* special purpose registers */ #define R_ZERO 0
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Sat Apr 30 05:23:03 UTC 2016 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c cgfourteenvar.h Log Message: support anti-aliased fonts, glyphcache etc. To generate a diff of this commit: cvs rdiff -u -r1.79 -r1.80 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.17 -r1.18 src/sys/arch/sparc/dev/cgfourteenvar.h 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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.79 src/sys/arch/sparc/dev/cgfourteen.c:1.80 --- src/sys/arch/sparc/dev/cgfourteen.c:1.79 Fri Jul 25 08:10:34 2014 +++ src/sys/arch/sparc/dev/cgfourteen.c Sat Apr 30 05:23:03 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.79 2014/07/25 08:10:34 dholland Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.80 2016/04/30 05:23:03 macallan Exp $ */ /* * Copyright (c) 1996 @@ -96,6 +96,7 @@ #include #include +#include #include #include @@ -164,10 +165,9 @@ static void cg14_rectfill(struct cgfourt uint32_t); static void cg14_invert(struct cgfourteen_softc *, int, int, int, int); static void cg14_bitblt(void *, int, int, int, int, int, int, int); +static void cg14_bitblt_gc(void *, int, int, int, int, int, int, int); -#if 0 static void cg14_putchar_aa(void *, int, int, u_int, long); -#endif static void cg14_cursor(void *, int, int, int); static void cg14_putchar(void *, int, int, u_int, long); static void cg14_copycols(void *, int, int, int, int); @@ -595,74 +595,14 @@ cgfourteenpoll(dev_t dev, int events, st static void cg14_init(struct cgfourteen_softc *sc) { -#if 0 - volatile uint32_t *clut; - volatile uint8_t *xlut; - int i; - - /* - * We stash away the following to restore on close: - * - * color look-up table 1 (sc->sc_saveclut) - * x look-up table (sc->sc_savexlut) - * control register (sc->sc_savectl) - * cursor control register (sc->sc_savehwc) - */ - sc->sc_savectl = sc->sc_ctl->ctl_mctl; - sc->sc_savehwc = sc->sc_hwc->curs_ctl; - - clut = (volatile uint32_t *) sc->sc_clut1->clut_lut; - xlut = (volatile uint8_t *) sc->sc_xlut->xlut_lut; - for (i = 0; i < CG14_CLUT_SIZE; i++) { - sc->sc_saveclut.cm_chip[i] = clut[i]; - sc->sc_savexlut[i] = xlut[i]; - } - - /* - * Enable the video and put it in 8 bit mode - */ - sc->sc_ctl->ctl_mctl = CG14_MCTL_ENABLEVID | CG14_MCTL_PIXMODE_8 | - CG14_MCTL_POWERCTL; -#else cg14_set_depth(sc, 32); -#endif } static void /* Restore the state saved on cg14_init */ cg14_reset(struct cgfourteen_softc *sc) { -#if 0 - volatile uint32_t *clut; - volatile uint8_t *xlut; - int i; - - /* - * We restore the following, saved in cg14_init: - * - * color look-up table 1 (sc->sc_saveclut) - * x look-up table (sc->sc_savexlut) - * control register (sc->sc_savectl) - * cursor control register (sc->sc_savehwc) - * - * Note that we don't touch the video enable bits in the - * control register; otherwise, screenblank wouldn't work. - */ - sc->sc_ctl->ctl_mctl = (sc->sc_ctl->ctl_mctl & (CG14_MCTL_ENABLEVID | - CG14_MCTL_POWERCTL)) | -(sc->sc_savectl & ~(CG14_MCTL_ENABLEVID | - CG14_MCTL_POWERCTL)); - sc->sc_hwc->curs_ctl = sc->sc_savehwc; - - clut = sc->sc_clut1->clut_lut; - xlut = sc->sc_xlut->xlut_lut; - for (i = 0; i < CG14_CLUT_SIZE; i++) { - clut[i] = sc->sc_saveclut.cm_chip[i]; - xlut[i] = sc->sc_savexlut[i]; - } -#else cg14_set_depth(sc, 8); -#endif } /* Enable/disable video display; power down monitor if DPMS-capable */ @@ -767,7 +707,6 @@ cg14_load_hwcmap(struct cgfourteen_softc *lutp++ = *colp++; } -#if NWSDISPLAY > 0 static void cg14_setup_wsdisplay(struct cgfourteen_softc *sc, int is_cons) { @@ -793,20 +732,35 @@ cg14_setup_wsdisplay(struct cgfourteen_s ri = &sc->sc_console_screen.scr_ri; + sc->sc_gc.gc_bitblt = cg14_bitblt_gc; + sc->sc_gc.gc_blitcookie = sc; + sc->sc_gc.gc_rop = 0xc; if (is_cons) { vcons_init_screen(&sc->sc_vd, &sc->sc_console_screen, 1, &defattr); /* clear the screen with the default background colour */ - memset(sc->sc_fb.fb_pixels, - (defattr >> 16) & 0xff, - ri->ri_stride * ri->ri_height); + if (sc->sc_sx != NULL) { + cg14_rectfill(sc, 0, 0, ri->ri_width, ri->ri_height, +ri->ri_devcmap[(defattr >> 16) & 0xf]); + } else { + memset(sc->sc_fb.fb_pixels, + ri->ri_devcmap[(defattr >> 16) & 0xf], + ri->ri_stride * ri->ri_height); + } sc->sc_console_screen.scr_flags |= VCONS_SCREEN_IS_STATIC; sc->sc_defaultscreen_descr.textops = &ri->ri_ops; sc->sc_defaultscreen_descr.capabilities = ri->ri_caps; sc->sc_defaultscreen_descr.nrows = ri->ri_rows; sc->sc_defaultscreen_descr.ncols = ri->ri_cols; + glyphcache_init(&sc->sc_gc, sc->sc_fb.fb_type.fb_height + 5, + (sc->sc_vramsize / sc->sc_fb.fb_type.fb_width) - + sc->sc_fb.fb_type.fb_height - 5, + sc->sc_fb.fb_type.fb_width, + ri->ri_fo
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: christos Date: Sun Dec 11 16:25:54 UTC 2016 Modified Files: src/sys/arch/sparc/dev: tctrl.c Log Message: catch up with sd changes. To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/arch/sparc/dev/tctrl.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/sparc/dev/tctrl.c diff -u src/sys/arch/sparc/dev/tctrl.c:1.59 src/sys/arch/sparc/dev/tctrl.c:1.60 --- src/sys/arch/sparc/dev/tctrl.c:1.59 Fri Jul 25 04:10:34 2014 +++ src/sys/arch/sparc/dev/tctrl.c Sun Dec 11 11:25:54 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: tctrl.c,v 1.59 2014/07/25 08:10:34 dholland Exp $ */ +/* $NetBSD: tctrl.c,v 1.60 2016/12/11 16:25:54 christos Exp $ */ /*- * Copyright (c) 1998, 2005, 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.59 2014/07/25 08:10:34 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.60 2016/12/11 16:25:54 christos Exp $"); #include #include @@ -1447,42 +1447,43 @@ tctrl_event_thread(void *v) { struct tctrl_softc *sc = v; device_t dv; - struct sd_softc *sd = NULL; - struct lance_softc *le = NULL; - int ticks = hz/2; - int rcount, wcount; - int s; + struct sd_softc *sd; - while (sd == NULL) { + for (sd = NULL; sd == NULL;) { dv = device_find_by_xname("sd0"); if (dv != NULL) sd = device_private(dv); else tsleep(&sc->sc_events, PWAIT, "probe_disk", hz); } + dv = device_find_by_xname("le0"); - if (dv != NULL) - le = device_private(dv); - printf("found %s\n", device_xname(sd->sc_dev)); - rcount = sd->sc_dk.dk_stats->io_rxfer; - wcount = sd->sc_dk.dk_stats->io_wxfer; + + struct lance_softc *le = dv != NULL ? device_private(dv) : NULL; + struct dk_softc *dk = &sd->sc_dksc; + printf("found %s\n", device_xname(dk->sc_dev)); + + struct io_stats *io = dk->sc_dkdev.dk_stats; + int rcount = io->io_rxfer; + int wcount = io->io_wxfer; tctrl_read_event_status(sc); - while (1) { + int ticks = hz / 2; + for (;;) { tsleep(&sc->sc_events, PWAIT, "tctrl_event", ticks); - s = splhigh(); - if ((rcount != sd->sc_dk.dk_stats->io_rxfer) || - (wcount != sd->sc_dk.dk_stats->io_wxfer)) { - rcount = sd->sc_dk.dk_stats->io_rxfer; - wcount = sd->sc_dk.dk_stats->io_wxfer; + int s = splhigh(); + if ((rcount != io->io_rxfer) || (wcount != io->io_wxfer)) { + rcount = io->io_rxfer; + wcount = io->io_wxfer; sc->sc_lcdwanted |= TS102_LCD_DISK_ACTIVE; } else sc->sc_lcdwanted &= ~TS102_LCD_DISK_ACTIVE; + if (le != NULL) { - if (le->sc_havecarrier != 0) { + if (le->sc_havecarrier != 0) sc->sc_lcdwanted |= TS102_LCD_LAN_ACTIVE; - } else + else sc->sc_lcdwanted &= ~TS102_LCD_LAN_ACTIVE; } splx(s);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Jun 2 21:19:24 UTC 2016 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: use DEFATTR if we're not the console and can't init defattr. should appease clang TODO: we should really init the glyphcache whith the first screen To generate a diff of this commit: cvs rdiff -u -r1.80 -r1.81 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.80 src/sys/arch/sparc/dev/cgfourteen.c:1.81 --- src/sys/arch/sparc/dev/cgfourteen.c:1.80 Sat Apr 30 05:23:03 2016 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Jun 2 21:19:24 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.80 2016/04/30 05:23:03 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.81 2016/06/02 21:19:24 macallan Exp $ */ /* * Copyright (c) 1996 @@ -775,7 +775,7 @@ cg14_setup_wsdisplay(struct cgfourteen_s sc->sc_fb.fb_type.fb_width, ri->ri_font->fontwidth, ri->ri_font->fontheight, - defattr); + DEFATTR); } cg14_init_cmap(sc);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Sep 16 22:39:36 UTC 2016 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: wipe glyph cache as needed when re-entering text mode now the console is readable again when leaving X To generate a diff of this commit: cvs rdiff -u -r1.81 -r1.82 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.81 src/sys/arch/sparc/dev/cgfourteen.c:1.82 --- src/sys/arch/sparc/dev/cgfourteen.c:1.81 Thu Jun 2 21:19:24 2016 +++ src/sys/arch/sparc/dev/cgfourteen.c Fri Sep 16 22:39:35 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.81 2016/06/02 21:19:24 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.82 2016/09/16 22:39:35 macallan Exp $ */ /* * Copyright (c) 1996 @@ -418,9 +418,13 @@ cgfourteenclose(dev_t dev, int flags, in /* * Restore video state to make the PROM happy, on last close. */ - if (opens == 0) + if (opens == 0) { cg14_reset(sc); - +#if NSX > 0 + if (sc->sc_sx) + glyphcache_wipe(&sc->sc_gc); +#endif + } return (0); } @@ -918,6 +922,10 @@ cg14_ioctl(void *v, void *vs, u_long cmd cg14_set_depth(sc, 8); cg14_init_cmap(sc); +#if NSX > 0 + if (sc->sc_sx) + glyphcache_wipe(&sc->sc_gc); +#endif vcons_redraw_screen(ms); } else {
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Feb 12 22:24:48 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: break some more long lines To generate a diff of this commit: cvs rdiff -u -r1.71 -r1.72 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.71 src/sys/arch/sparc/dev/cgfourteen.c:1.72 --- src/sys/arch/sparc/dev/cgfourteen.c:1.71 Thu Feb 7 16:14:30 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Feb 12 22:24:47 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.71 2013/02/07 16:14:30 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.72 2013/02/12 22:24:47 macallan Exp $ */ /* * Copyright (c) 1996 @@ -150,7 +150,8 @@ static int cg14_do_cursor(struct cgfour #if NSX > 0 static void cg14_wait_idle(struct cgfourteen_softc *); -static void cg14_rectfill(struct cgfourteen_softc *, int, int, int, int, uint32_t); +static void cg14_rectfill(struct cgfourteen_softc *, int, int, int, int, +uint32_t); static void cg14_invert(struct cgfourteen_softc *, int, int, int, int); static void cg14_bitblt(void *, int, int, int, int, int, int, int); @@ -283,7 +284,8 @@ cgfourteenattach(device_t parent, device sa->sa_size, 0 /*BUS_SPACE_MAP_LINEAR*/, &bh) != 0) { - printf("%s: cannot map control registers\n", device_xname(self)); + printf("%s: cannot map control registers\n", + device_xname(self)); return; } sc->sc_regh = bh; @@ -1326,8 +1328,10 @@ cg14_bitblt(void *cookie, int xs, int ys dptr = daddr; cnt = wi; if (pre > 0) { -sta(sptr, ASI_SX, SX_LDB(32, pre - 1, sptr & 7)); -sta(dptr, ASI_SX, SX_STB(32, pre - 1, dptr & 7)); +sta(sptr, ASI_SX, +SX_LDB(32, pre - 1, sptr & 7)); +sta(dptr, ASI_SX, +SX_STB(32, pre - 1, dptr & 7)); cnt -= pre; sptr += pre; dptr += pre; @@ -1342,8 +1346,10 @@ cg14_bitblt(void *cookie, int xs, int ys cnt -= num << 2; } if (cnt > 0) { -sta(sptr, ASI_SX, SX_LDB(32, cnt - 1, sptr & 7)); -sta(dptr, ASI_SX, SX_STB(32, cnt - 1, dptr & 7)); +sta(sptr, ASI_SX, +SX_LDB(32, cnt - 1, sptr & 7)); +sta(dptr, ASI_SX, +SX_STB(32, cnt - 1, dptr & 7)); } saddr += skip; daddr += skip; @@ -1362,8 +1368,10 @@ cg14_bitblt(void *cookie, int xs, int ys cnt -= 32; } if (cnt > 0) { -sta(sptr, ASI_SX, SX_LDB(32, cnt - 1, sptr & 7)); -sta(dptr, ASI_SX, SX_STB(32, cnt - 1, dptr & 7)); +sta(sptr, ASI_SX, +SX_LDB(32, cnt - 1, sptr & 7)); +sta(dptr, ASI_SX, +SX_STB(32, cnt - 1, dptr & 7)); } saddr += skip; daddr += skip; @@ -1416,7 +1424,8 @@ cg14_putchar(void *cookie, int row, int uint32_t reg; for (i = 0; i < he; i++) { reg = *data8; -sx_write(sc->sc_sx, SX_QUEUED(R_MASK), reg << 24); +sx_write(sc->sc_sx, SX_QUEUED(R_MASK), +reg << 24); sta(addr, ASI_SX, SX_STBS(8, wi - 1, addr & 7)); data8++; addr += stride; @@ -1428,7 +1437,8 @@ cg14_putchar(void *cookie, int row, int uint32_t reg; for (i = 0; i < he; i++) { reg = *data16; -sx_write(sc->sc_sx, SX_QUEUED(R_MASK), reg << 16); +sx_write(sc->sc_sx, SX_QUEUED(R_MASK), +reg << 16); sta(addr, ASI_SX, SX_STBS(8, wi - 1, addr & 7)); data16++; addr += stride;
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jdc Date: Sun Mar 24 17:50:26 UTC 2013 Modified Files: src/sys/arch/sparc/dev: obio.c Log Message: Check if sbus is defined in the kernel configuration before using it. >From Taylor R Campbell. To generate a diff of this commit: cvs rdiff -u -r1.73 -r1.74 src/sys/arch/sparc/dev/obio.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/sparc/dev/obio.c diff -u src/sys/arch/sparc/dev/obio.c:1.73 src/sys/arch/sparc/dev/obio.c:1.74 --- src/sys/arch/sparc/dev/obio.c:1.73 Sat Oct 27 17:18:11 2012 +++ src/sys/arch/sparc/dev/obio.c Sun Mar 24 17:50:26 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: obio.c,v 1.73 2012/10/27 17:18:11 chs Exp $ */ +/* $NetBSD: obio.c,v 1.74 2013/03/24 17:50:26 jdc Exp $ */ /*- * Copyright (c) 1997,1998 The NetBSD Foundation, Inc. @@ -30,10 +30,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.73 2012/10/27 17:18:11 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.74 2013/03/24 17:50:26 jdc Exp $"); #include "locators.h" +#ifdef _KERNEL_OPT +#include "sbus.h" +#endif + #include #include #include @@ -47,7 +51,9 @@ __KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.7 #include #include +#if NSBUS > 0 #include +#endif #include #include #include @@ -64,7 +70,9 @@ struct obio4_softc { union obio_softc { struct obio4_softc sc_obio; /* sun4 obio */ +#if NSBUS > 0 struct sbus_softc sc_sbus; /* sun4m obio is another sbus slot */ +#endif }; @@ -97,6 +105,7 @@ static int _obio_bus_map(bus_space_tag_t static struct sparc_bus_space_tag obio_space_tag; #endif +#if NSBUS > 0 /* * Translate obio `interrupts' property value to processor IPL (see sbus.c) * Apparently, the `interrupts' property on obio devices is just @@ -105,6 +114,7 @@ static struct sparc_bus_space_tag obio_s static int intr_obio2ipl[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; +#endif static int obiomatch(device_t parent, struct cfdata *cf, void *aux) @@ -163,6 +173,7 @@ obioattach(device_t parent, device_t sel #endif return; } else if (CPU_ISSUN4M) { +#if NSBUS > 0 /* * Attach the on-board I/O bus at on a sun4m. * In this case we treat the obio bus as another sbus slot. @@ -189,6 +200,7 @@ obioattach(device_t parent, device_t sel sc->sc_intr2ipl = intr_obio2ipl; sbus_attach_common(sc, "obio", ma->ma_node, special4m); +#endif } else { printf("obio on this machine?\n"); }
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Tue Aug 19 14:43:41 UTC 2014 Modified Files: src/sys/arch/sparc/dev: fd.c Log Message: Fix panic() on opening fd(4), caused by a wrong pointer passed to memset(). I'm not sure why this 18 year old bug didn't cause problem before (at least my old 5.99.23 kernel worked), but probably it's triggered by new gcc 4.8 which might do more aggressive memory allocation. The problem is found by Nobuyoshi Sato on trying eject(1) against fd(4). Should be pulled up to netbsd-7. To generate a diff of this commit: cvs rdiff -u -r1.154 -r1.155 src/sys/arch/sparc/dev/fd.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/sparc/dev/fd.c diff -u src/sys/arch/sparc/dev/fd.c:1.154 src/sys/arch/sparc/dev/fd.c:1.155 --- src/sys/arch/sparc/dev/fd.c:1.154 Fri Jul 25 08:10:34 2014 +++ src/sys/arch/sparc/dev/fd.c Tue Aug 19 14:43:41 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: fd.c,v 1.154 2014/07/25 08:10:34 dholland Exp $ */ +/* $NetBSD: fd.c,v 1.155 2014/08/19 14:43:41 tsutsui Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -101,7 +101,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.154 2014/07/25 08:10:34 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.155 2014/08/19 14:43:41 tsutsui Exp $"); #include "opt_ddb.h" #include "opt_md.h" @@ -2244,7 +2244,7 @@ fdgetdisklabel(dev_t dev) struct cpu_disklabel *clp = fd->sc_dk.dk_cpulabel; memset(lp, 0, sizeof(struct disklabel)); - memset(lp, 0, sizeof(struct cpu_disklabel)); + memset(clp, 0, sizeof(struct cpu_disklabel)); lp->d_type = DTYPE_FLOPPY; lp->d_secsize = FD_BSIZE(fd);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: tsutsui Date: Sun Jun 29 03:57:10 UTC 2014 Modified Files: src/sys/arch/sparc/dev: sxvar.h Log Message: Add a newline at end of file. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sparc/dev/sxvar.h 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/sparc/dev/sxvar.h diff -u src/sys/arch/sparc/dev/sxvar.h:1.2 src/sys/arch/sparc/dev/sxvar.h:1.3 --- src/sys/arch/sparc/dev/sxvar.h:1.2 Tue Apr 15 10:24:54 2014 +++ src/sys/arch/sparc/dev/sxvar.h Sun Jun 29 03:57:10 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sxvar.h,v 1.2 2014/04/15 10:24:54 macallan Exp $ */ +/* $NetBSD: sxvar.h,v 1.3 2014/06/29 03:57:10 tsutsui Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,4 +51,4 @@ sx_read(struct sx_softc *sc, int addr) return bus_space_read_4(sc->sc_tag, sc->sc_regh, addr); } -#endif \ No newline at end of file +#endif
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed May 29 22:25:23 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: fix a typo To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.3 src/sys/arch/sparc/dev/sxreg.h:1.4 --- src/sys/arch/sparc/dev/sxreg.h:1.3 Wed Feb 6 20:39:03 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed May 29 22:25:23 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.3 2013/02/06 20:39:03 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.4 2013/05/29 22:25:23 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ /* * registers are repeated at 0x1000 with certain parts read only - * ( like the PAGE_BOUND registers ) which userlanf has no business writing to + * ( like the PAGE_BOUND registers ) which userland has no business writing to */ /* SX_CONTROL_STATUS */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed May 29 22:26:39 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c cgfourteenvar.h Log Message: allow userland to map SX registers and IO space To generate a diff of this commit: cvs rdiff -u -r1.72 -r1.73 src/sys/arch/sparc/dev/cgfourteen.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/sparc/dev/cgfourteenvar.h 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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.72 src/sys/arch/sparc/dev/cgfourteen.c:1.73 --- src/sys/arch/sparc/dev/cgfourteen.c:1.72 Tue Feb 12 22:24:47 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Wed May 29 22:26:39 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.72 2013/02/12 22:24:47 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.73 2013/05/29 22:26:39 macallan Exp $ */ /* * Copyright (c) 1996 @@ -554,8 +554,26 @@ cgfourteenmmap(dev_t dev, off_t off, int off < CG14_R32_VOFF + (sc->sc_vramsize >> 2)) { offset = sc->sc_fbaddr + CG14_FB_PR32; off -= CG14_R32_VOFF; +#if NSX > 0 + } else if (sc->sc_sx == NULL) { + return -1; + } else if (off >= CG14_SXREG_VOFF && + off < (CG14_SXREG_VOFF + 0x400)) { + return (bus_space_mmap(sc->sc_sx->sc_tag, sc->sc_sx->sc_uregs, + 0, prot, BUS_SPACE_MAP_LINEAR)); + } else if (off >= CG14_SXIO_VOFF && + off < (CG14_SXIO_VOFF + 0x03ff)) { + return (bus_space_mmap(sc->sc_sx->sc_tag, 0x8LL, + sc->sc_fb_paddr, prot, BUS_SPACE_MAP_LINEAR)); +#endif } else return -1; + /* + * for convenience we also map the SX ranges here: + * - one page userland registers + * - CG14-sized IO space at 0x8 ( not a typo, it's above 4GB ) + * bus_space_mmap() should accept 64bit bus_addr_t's by the look of it + */ return (bus_space_mmap(sc->sc_bustag, offset, off, prot, BUS_SPACE_MAP_LINEAR)); } @@ -1203,6 +1221,7 @@ cg14_rectfill(struct cgfourteen_softc *s * until we're 32bit aligned, then do the rest in 32bit * mode. Assumes that stride is always a multiple of 4. */ + /* TODO: use 32bit writes with byte mask instead */ pre = addr & 3; if (pre != 0) pre = 4 - pre; for (line = 0; line < he; line++) { @@ -1241,6 +1260,7 @@ cg14_invert(struct cgfourteen_softc *sc, * until we're 32bit aligned, then do the rest in 32bit * mode. Assumes that stride is always a multiple of 4. */ + /* TODO: use 32bit writes with byte mask instead */ pre = addr & 3; if (pre != 0) pre = 4 - pre; for (line = 0; line < he; line++) { @@ -1356,6 +1376,7 @@ cg14_bitblt(void *cookie, int xs, int ys } } else { /* unaligned, have to use byte mode */ + /* funnel shifter & byte mask trickery? */ for (line = 0; line < he; line++) { sptr = saddr; dptr = daddr; Index: src/sys/arch/sparc/dev/cgfourteenvar.h diff -u src/sys/arch/sparc/dev/cgfourteenvar.h:1.15 src/sys/arch/sparc/dev/cgfourteenvar.h:1.16 --- src/sys/arch/sparc/dev/cgfourteenvar.h:1.15 Wed Feb 6 04:10:54 2013 +++ src/sys/arch/sparc/dev/cgfourteenvar.h Wed May 29 22:26:39 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteenvar.h,v 1.15 2013/02/06 04:10:54 macallan Exp $ */ +/* $NetBSD: cgfourteenvar.h,v 1.16 2013/05/29 22:26:39 macallan Exp $ */ /* * Copyright (c) 1996 @@ -120,6 +120,7 @@ struct cgfourteen_softc { #define CG14_CLUT1_VOFF 0x4000 /* Color Look Up Table */ #define CG14_CLUT2_VOFF 0x5000 /* Color Look Up Table */ #define CG14_CLUT3_VOFF 0x6000 /* Color Look Up Table */ +#define CG14_SXREG_VOFF 0x0001 /* SX userspace registers */ #define CG14_DIRECT_VOFF 0x1000 #define CG14_CTLREG_VOFF 0x2000 #define CG14_CURSOR_VOFF 0x3000 @@ -132,3 +133,4 @@ struct cgfourteen_softc { #define CG14_B32_VOFF 0xa000 #define CG14_G32_VOFF 0xb000 #define CG14_R32_VOFF 0xc000 +#define CG14_SXIO_VOFF 0xd000
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu May 30 20:09:23 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add SX_SELECT_S instruction To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.4 src/sys/arch/sparc/dev/sxreg.h:1.5 --- src/sys/arch/sparc/dev/sxreg.h:1.4 Wed May 29 22:25:23 2013 +++ src/sys/arch/sparc/dev/sxreg.h Thu May 30 20:09:23 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.4 2013/05/29 22:25:23 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.5 2013/05/30 20:09:23 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -171,4 +171,6 @@ #define SX_ROP(sa, sb, d, cnt) (0x9000 | ((cnt) << 24) | SX_ROPL | \ ((sa) << 14) | (sb) | ((d) << 7)) +#define SX_SELECT_S(sa, sb, d, cnt) (0x9000 | ((cnt) << 24) | SX_SELS | \ + ((sa) << 14) | (sb) | ((d) << 7)) #endif /* SXREG_H */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Jun 4 13:42:37 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: actually map the whole SX IO space instead of just the first page over and over again (doh) To generate a diff of this commit: cvs rdiff -u -r1.73 -r1.74 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.73 src/sys/arch/sparc/dev/cgfourteen.c:1.74 --- src/sys/arch/sparc/dev/cgfourteen.c:1.73 Wed May 29 22:26:39 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Jun 4 13:42:37 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.73 2013/05/29 22:26:39 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.74 2013/06/04 13:42:37 macallan Exp $ */ /* * Copyright (c) 1996 @@ -564,7 +564,8 @@ cgfourteenmmap(dev_t dev, off_t off, int } else if (off >= CG14_SXIO_VOFF && off < (CG14_SXIO_VOFF + 0x03ff)) { return (bus_space_mmap(sc->sc_sx->sc_tag, 0x8LL, - sc->sc_fb_paddr, prot, BUS_SPACE_MAP_LINEAR)); + sc->sc_fb_paddr + (off - CG14_SXIO_VOFF), + prot, BUS_SPACE_MAP_LINEAR)); #endif } else return -1;
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Jun 4 22:30:30 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add STore with (plane) Mask instruction To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.5 src/sys/arch/sparc/dev/sxreg.h:1.6 --- src/sys/arch/sparc/dev/sxreg.h:1.5 Thu May 30 20:09:23 2013 +++ src/sys/arch/sparc/dev/sxreg.h Tue Jun 4 22:30:30 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.5 2013/05/30 20:09:23 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.6 2013/06/04 22:30:30 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -152,6 +152,8 @@ SX_PACKED | (dreg << 7) | (o)) #define SX_ST(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_LONG | (sreg << 7) | (o)) +#define SX_STM(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_MASK | \ +SX_LONG | (sreg << 7) | (o)) #define SX_STB(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_UBYTE_0 | (sreg << 7) | (o)) #define SX_STP(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Jun 4 22:31:30 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: report actual VRAM size in fb_type.fb_size To generate a diff of this commit: cvs rdiff -u -r1.74 -r1.75 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.74 src/sys/arch/sparc/dev/cgfourteen.c:1.75 --- src/sys/arch/sparc/dev/cgfourteen.c:1.74 Tue Jun 4 13:42:37 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Tue Jun 4 22:31:30 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.74 2013/06/04 13:42:37 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.75 2013/06/04 22:31:30 macallan Exp $ */ /* * Copyright (c) 1996 @@ -228,7 +228,7 @@ cgfourteenattach(device_t parent, device struct cgfourteen_softc *sc = device_private(self); struct fbdevice *fb = &sc->sc_fb; bus_space_handle_t bh; - int node, ramsize; + int node; volatile uint32_t *lut; int i, isconsole, items; uint32_t fbva[2] = {0, 0}; @@ -254,10 +254,8 @@ cgfourteenattach(device_t parent, device fb->fb_type.fb_depth = 32; fb_setsize_obp(fb, sc->sc_fb.fb_type.fb_depth, 1152, 900, node); - ramsize = roundup(fb->fb_type.fb_height * fb->fb_linebytes, NBPG); fb->fb_type.fb_cmsize = CG14_CLUT_SIZE; - fb->fb_type.fb_size = ramsize + COLOUR_OFFSET; if (sa->sa_nreg < 2) { printf("%s: only %d register sets\n", @@ -268,6 +266,7 @@ cgfourteenattach(device_t parent, device sa->sa_nreg * sizeof(struct sbus_reg)); sc->sc_vramsize = sc->sc_physadr[CG14_PXL_IDX].sbr_size; + fb->fb_type.fb_size = sc->sc_vramsize; printf(": %d MB VRAM", (uint32_t)(sc->sc_vramsize >> 20)); /* @@ -329,7 +328,7 @@ cgfourteenattach(device_t parent, device if (sbus_bus_map( sc->sc_bustag, sc->sc_physadr[CG14_PXL_IDX].sbr_slot, sc->sc_physadr[CG14_PXL_IDX].sbr_offset, - ramsize, BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_LARGE, + sc->sc_vramsize, BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_LARGE, &bh) != 0) { printf("%s: cannot map pixels\n", device_xname(sc->sc_dev));
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Jun 5 18:15:06 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add a bunch more instructions ( still not complete but we're getting there ) To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.6 src/sys/arch/sparc/dev/sxreg.h:1.7 --- src/sys/arch/sparc/dev/sxreg.h:1.6 Tue Jun 4 22:30:30 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Jun 5 18:15:06 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.6 2013/06/04 22:30:30 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.7 2013/06/05 18:15:06 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -150,6 +150,14 @@ SX_UBYTE_0 | (dreg << 7) | (o)) #define SX_LDP(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ SX_PACKED | (dreg << 7) | (o)) +#define SX_LDUQ0(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UQUAD_0 | (dreg << 7) | (o)) +#define SX_LDUQ8(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UQUAD_8 | (dreg << 7) | (o)) +#define SX_LDUQ16(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UQUAD_16 | (dreg << 7) | (o)) +#define SX_LDUQ24(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UQUAD_24 | (dreg << 7) | (o)) #define SX_ST(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_LONG | (sreg << 7) | (o)) #define SX_STM(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_MASK | \ @@ -162,8 +170,16 @@ | SX_LONG | (sreg << 7) | (o)) #define SX_STBS(reg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_SELECT \ | SX_UBYTE_0 | (reg << 7) | (o)) +#define SX_STUQ0(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UQUAD_0 | (sreg << 7) | (o)) +#define SX_STUQ8(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UQUAD_8 | (sreg << 7) | (o)) +#define SX_STUQ16(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UQUAD_16 | (sreg << 7) | (o)) +#define SX_STUQ24(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UQUAD_24 | (sreg << 7) | (o)) -/* ROP instruction */ +/* ROP and SELECT instructions */ #define SX_ROPB (0x0 << 21) /* mask bits apply to bytes */ #define SX_ROPM (0x1 << 21) /* mask bits apply to each bit */ #define SX_ROPL (0x2 << 21) /* mask bits apply per register */ @@ -175,4 +191,65 @@ ((sa) << 14) | (sb) | ((d) << 7)) #define SX_SELECT_S(sa, sb, d, cnt) (0x9000 | ((cnt) << 24) | SX_SELS | \ ((sa) << 14) | (sb) | ((d) << 7)) + +/* multiply group */ +#define SX_M16X16SR0 (0x0 << 28) /* 16bit multiply, no shift */ +#define SX_M16X16SR8 (0x1 << 28) /* 16bit multiply, shift right 8 */ +#define SX_M16X16SR16 (0x2 << 28) /* 16bit multiply, shift right 16 */ +#define SX_M32X16SR0 (0x4 << 28) /* 32x16bit multiply, no shift */ +#define SX_M32X16SR8 (0x5 << 28) /* 32x16bit multiply, shift right 8 */ +#define SX_M32X16SR16 (0x6 << 28) /* 32x16bit multiply, shift right 16 */ + +#define SX_MULTIPLY (0x0 << 21) /* normal multiplication */ +#define SX_DOT (0x1 << 21) /* dot product of A and B */ +#define SX_SAXP (0x2 << 21) /* A * SCAM + B */ + +#define SX_ROUND (0x1 << 23) /* round results */ + +#define SX_MUL16X16(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ + SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d)) +#define SX_MUL16X16R(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ + SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) +#define SX_MUL16X16SR8(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ + SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d)) +#define SX_MUL16X16SR8R(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ + SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) + +#define SX_SAXP16X16(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ + SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d)) +#define SX_SAXP16X16R(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ + SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) +#define SX_SAXP16X16SR8(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ + SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d)) +#define SX_SAXP16X16SR8R(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ + SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) + +/* logic group */ +#define SX_AND_V (0x0 << 21) /* vector AND vector */ +#define SX_AND_S (0x1 << 21) /* vector AND scalar */ +#define SX_AND_I (0x2 << 21) /* vector AND immediate */ +#define SX_XOR_V (0x3 << 21) /* vector XOR vector */ +#define SX_XOR_S (0x4 << 21) /* vector XOR scalar */ +#define SX_XOR_I (0x5 << 21) /* vector XOR immediate */ +#define SX_OR_V (0x6 << 21) /* vector OR vector */ +#define SX_OR_S (0x7 << 21) /* vector OR scalar */ +/* immediates are 7bit sign extended to 32bit */ + +#define SX_ANDV(sa, sb, d, cnt) (
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Jun 12 04:23:46 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: fix serial type&pasto, while there add SX_ADD instructions To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.7 src/sys/arch/sparc/dev/sxreg.h:1.8 --- src/sys/arch/sparc/dev/sxreg.h:1.7 Wed Jun 5 18:15:06 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Jun 12 04:23:46 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.7 2013/06/05 18:15:06 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.8 2013/06/12 04:23:46 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -207,22 +207,22 @@ #define SX_ROUND (0x1 << 23) /* round results */ #define SX_MUL16X16(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ - SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d)) + SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb)) #define SX_MUL16X16R(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ - SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) + SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND) #define SX_MUL16X16SR8(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ - SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d)) + SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb)) #define SX_MUL16X16SR8R(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ - SX_MULTIPLY | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) + SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND) #define SX_SAXP16X16(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ - SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d)) + SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb)) #define SX_SAXP16X16R(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \ - SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) + SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND) #define SX_SAXP16X16SR8(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ - SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d)) + SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb)) #define SX_SAXP16X16SR8R(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \ - SX_SAXP | ((sa) << 14) | ((sb) << 7) | (d) | SX_ROUND) + SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND) /* logic group */ #define SX_AND_V (0x0 << 21) /* vector AND vector */ @@ -236,20 +236,33 @@ /* immediates are 7bit sign extended to 32bit */ #define SX_ANDV(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_AND_V | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_ANDS(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_AND_S | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_ANDI(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_AND_I | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_XORV(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_XOR_V | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_XORS(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_XOR_S | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_XORI(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_XOR_I | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_ORV(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_OR_V | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) #define SX_ORS(sa, sb, d, cnt) (0xb000 | ((cnt) << 24) | SX_OR_S | \ - ((sa) << 14) | ((sb) << 7) | (d)) + ((sa) << 14) | ((d) << 7) | (sb)) + +/* arithmetic group */ +#define SX_ADD_V (0x00 << 21) +#define SX_ADD_S (0x01 << 21) +#define SX_ADD_I (0x02 << 21) +#define SX_SUM (0x03 << 21) +#define SX_SUB_V (0x04 << 21) +#define SX_SUB_S (0x05 << 21) +#define SX_SUB_I (0x06 << 21) +#define SX_ABS (0x07 << 21) + +#define SX_ADDV(sa, sb, d, cnt) (0xa000 | ((cnt) << 24) | SX_ADD_V | \ + ((sa) << 14) | ((d) << 7) | (sb)) #endif /* SXREG_H */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Jun 12 20:43:22 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: document arithmetics instructions To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.8 src/sys/arch/sparc/dev/sxreg.h:1.9 --- src/sys/arch/sparc/dev/sxreg.h:1.8 Wed Jun 12 04:23:46 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Jun 12 20:43:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.8 2013/06/12 04:23:46 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.9 2013/06/12 20:43:21 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -253,14 +253,15 @@ ((sa) << 14) | ((d) << 7) | (sb)) /* arithmetic group */ -#define SX_ADD_V (0x00 << 21) -#define SX_ADD_S (0x01 << 21) -#define SX_ADD_I (0x02 << 21) -#define SX_SUM (0x03 << 21) -#define SX_SUB_V (0x04 << 21) -#define SX_SUB_S (0x05 << 21) -#define SX_SUB_I (0x06 << 21) -#define SX_ABS (0x07 << 21) +#define SX_ADD_V (0x00 << 21) /* vector + vector */ +#define SX_ADD_S (0x01 << 21) /* vector + scalar */ +#define SX_ADD_I (0x02 << 21) /* vector + immediate */ +#define SX_SUM (0x03 << 21) /* sum of vector and scalar */ +#define SX_SUB_V (0x04 << 21) /* vector - veector */ +#define SX_SUB_S (0x05 << 21) /* vector - scalar */ +#define SX_SUB_I (0x06 << 21) /* vector - immediate */ +#define SX_ABS (0x07 << 21) /* abs(sb) with sa=R0 */ +/* hardware does sa - sb for sb < 0 and sa + sb if sb > 0 */ #define SX_ADDV(sa, sb, d, cnt) (0xa000 | ((cnt) << 24) | SX_ADD_V | \ ((sa) << 14) | ((d) << 7) | (sb))
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Jun 12 20:44:20 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: fix typo To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.9 src/sys/arch/sparc/dev/sxreg.h:1.10 --- src/sys/arch/sparc/dev/sxreg.h:1.9 Wed Jun 12 20:43:21 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Jun 12 20:44:20 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.9 2013/06/12 20:43:21 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.10 2013/06/12 20:44:20 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -257,7 +257,7 @@ #define SX_ADD_S (0x01 << 21) /* vector + scalar */ #define SX_ADD_I (0x02 << 21) /* vector + immediate */ #define SX_SUM (0x03 << 21) /* sum of vector and scalar */ -#define SX_SUB_V (0x04 << 21) /* vector - veector */ +#define SX_SUB_V (0x04 << 21) /* vector - vector */ #define SX_SUB_S (0x05 << 21) /* vector - scalar */ #define SX_SUB_I (0x06 << 21) /* vector - immediate */ #define SX_ABS (0x07 << 21) /* abs(sb) with sa=R0 */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Jun 19 00:41:16 UTC 2013 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add store-with-clamp instructions To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.10 src/sys/arch/sparc/dev/sxreg.h:1.11 --- src/sys/arch/sparc/dev/sxreg.h:1.10 Wed Jun 12 20:44:20 2013 +++ src/sys/arch/sparc/dev/sxreg.h Wed Jun 19 00:41:16 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.10 2013/06/12 20:44:20 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.11 2013/06/19 00:41:16 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -164,6 +164,8 @@ SX_LONG | (sreg << 7) | (o)) #define SX_STB(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_UBYTE_0 | (sreg << 7) | (o)) +#define SX_STBC(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_CLAMP | \ +SX_UBYTE_0 | (sreg << 7) | (o)) #define SX_STP(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_PACKED | (sreg << 7) | (o)) #define SX_STS(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_SELECT \ @@ -172,6 +174,8 @@ | SX_UBYTE_0 | (reg << 7) | (o)) #define SX_STUQ0(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_UQUAD_0 | (sreg << 7) | (o)) +#define SX_STUQ0C(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_CLAMP | \ +SX_UQUAD_0 | (sreg << 7) | (o)) #define SX_STUQ8(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_UQUAD_8 | (sreg << 7) | (o)) #define SX_STUQ16(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Aug 14 01:53:27 UTC 2013 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: comments & whitespace police To generate a diff of this commit: cvs rdiff -u -r1.75 -r1.76 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.75 src/sys/arch/sparc/dev/cgfourteen.c:1.76 --- src/sys/arch/sparc/dev/cgfourteen.c:1.75 Tue Jun 4 22:31:30 2013 +++ src/sys/arch/sparc/dev/cgfourteen.c Wed Aug 14 01:53:27 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.75 2013/06/04 22:31:30 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.76 2013/08/14 01:53:27 macallan Exp $ */ /* * Copyright (c) 1996 @@ -110,7 +110,7 @@ static void cgfourteenunblank(device_t); CFATTACH_DECL_NEW(cgfourteen, sizeof(struct cgfourteen_softc), cgfourteenmatch, cgfourteenattach, NULL, NULL); - + extern struct cfdriver cgfourteen_cd; dev_type_open(cgfourteenopen); @@ -191,14 +191,6 @@ cgfourteenmatch(device_t parent, struct return (strcmp(cf->cf_name, sa->sa_name) == 0); } -/* - * Set COLOUR_OFFSET to the offset of the video RAM. This is to provide - * space for faked overlay junk for the cg8 emulation. - * - * As it happens, this value is correct for both cg3 and cg8 emulation! - */ -#define COLOUR_OFFSET (256*1024) - #if NWSDISPLAY > 0 static int cg14_ioctl(void *, void *, u_long, void *, int, struct lwp *); static paddr_t cg14_mmap(void *, void *, off_t, int); @@ -554,6 +546,11 @@ cgfourteenmmap(dev_t dev, off_t off, int offset = sc->sc_fbaddr + CG14_FB_PR32; off -= CG14_R32_VOFF; #if NSX > 0 + /* + * for convenience we also map the SX ranges here: + * - one page userland registers + * - CG14-sized IO space at 0x8 ( not a typo, it's above 4GB ) + */ } else if (sc->sc_sx == NULL) { return -1; } else if (off >= CG14_SXREG_VOFF && @@ -568,12 +565,7 @@ cgfourteenmmap(dev_t dev, off_t off, int #endif } else return -1; - /* - * for convenience we also map the SX ranges here: - * - one page userland registers - * - CG14-sized IO space at 0x8 ( not a typo, it's above 4GB ) - * bus_space_mmap() should accept 64bit bus_addr_t's by the look of it - */ + return (bus_space_mmap(sc->sc_bustag, offset, off, prot, BUS_SPACE_MAP_LINEAR)); }
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Tue Apr 15 10:24:54 UTC 2014 Modified Files: src/sys/arch/sparc/dev: sx.c sxvar.h Log Message: print chip revision on attach To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sparc/dev/sx.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sparc/dev/sxvar.h 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/sparc/dev/sx.c diff -u src/sys/arch/sparc/dev/sx.c:1.2 src/sys/arch/sparc/dev/sx.c:1.3 --- src/sys/arch/sparc/dev/sx.c:1.2 Wed Feb 6 04:06:29 2013 +++ src/sys/arch/sparc/dev/sx.c Tue Apr 15 10:24:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sx.c,v 1.2 2013/02/06 04:06:29 macallan Exp $ */ +/* $NetBSD: sx.c,v 1.3 2014/04/15 10:24:54 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.2 2013/02/06 04:06:29 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.3 2014/04/15 10:24:54 macallan Exp $"); #include "locators.h" @@ -70,6 +70,7 @@ sx_attach(device_t parent, device_t self { struct sx_softc *sc = device_private(self); struct mainbus_attach_args *ma = aux; + uint32_t id; int i; #ifdef SX_DEBUG int j; @@ -86,6 +87,11 @@ sx_attach(device_t parent, device_t self return; } + id = sx_read(sc, SX_ID); + aprint_normal_dev(self, "architecture rev. %d chip rev. %d\n", + (id & SX_ARCHITECTURE_MASK), + (id & SX_CHIP_REVISION) >> 8); + /* stop the processor */ sx_write(sc, SX_CONTROL_STATUS, 0); /* initialize control registers, clear errors etc. */ Index: src/sys/arch/sparc/dev/sxvar.h diff -u src/sys/arch/sparc/dev/sxvar.h:1.1 src/sys/arch/sparc/dev/sxvar.h:1.2 --- src/sys/arch/sparc/dev/sxvar.h:1.1 Tue Feb 5 21:52:48 2013 +++ src/sys/arch/sparc/dev/sxvar.h Tue Apr 15 10:24:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sxvar.h,v 1.1 2013/02/05 21:52:48 macallan Exp $ */ +/* $NetBSD: sxvar.h,v 1.2 2014/04/15 10:24:54 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -45,4 +45,10 @@ sx_write(struct sx_softc *sc, int addr, bus_space_write_4(sc->sc_tag, sc->sc_regh, addr, val); } +static inline uint32_t +sx_read(struct sx_softc *sc, int addr) +{ + return bus_space_read_4(sc->sc_tag, sc->sc_regh, addr); +} + #endif \ No newline at end of file
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Wed Apr 23 16:54:21 UTC 2014 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: rev. 27 SX needs memory referencing instructions written to 64bit aligned addresses ( my rev. 25 just ignores the lower 3 bits ) so, we zero these bits now To generate a diff of this commit: cvs rdiff -u -r1.77 -r1.78 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.77 src/sys/arch/sparc/dev/cgfourteen.c:1.78 --- src/sys/arch/sparc/dev/cgfourteen.c:1.77 Sun Mar 16 05:20:25 2014 +++ src/sys/arch/sparc/dev/cgfourteen.c Wed Apr 23 16:54:21 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.77 2014/03/16 05:20:25 dholland Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.78 2014/04/23 16:54:21 macallan Exp $ */ /* * Copyright (c) 1996 @@ -782,6 +782,7 @@ cg14_setup_wsdisplay(struct cgfourteen_s WSSCREEN_WSCOLORS | WSSCREEN_HILIT, NULL }; + cg14_set_depth(sc, 8); sc->sc_screens[0] = &sc->sc_defaultscreen_descr; sc->sc_screenlist = (struct wsscreen_list){1, sc->sc_screens}; sc->sc_mode = WSDISPLAYIO_MODE_EMUL; @@ -1229,20 +1230,20 @@ cg14_rectfill(struct cgfourteen_softc *s pptr = addr; cnt = wi; if (pre) { - sta(pptr, ASI_SX, SX_STBS(8, pre - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_STBS(8, pre - 1, pptr & 7)); pptr += pre; cnt -= pre; } /* now do the aligned pixels in 32bit chunks */ while(cnt > 31) { words = min(32, cnt >> 2); - sta(pptr, ASI_SX, SX_STS(8, words - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_STS(8, words - 1, pptr & 7)); pptr += words << 2; cnt -= words << 2; } /* do any remaining pixels byte-wise again */ if (cnt > 0) - sta(pptr, ASI_SX, SX_STBS(8, cnt - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_STBS(8, cnt - 1, pptr & 7)); addr += stride; } } @@ -1268,29 +1269,29 @@ cg14_invert(struct cgfourteen_softc *sc, pptr = addr; cnt = wi; if (pre) { - sta(pptr, ASI_SX, SX_LDB(8, pre - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_LDB(8, pre - 1, pptr & 7)); sx_write(sc->sc_sx, SX_INSTRUCTIONS, SX_ROP(8, 8, 32, pre - 1)); - sta(pptr, ASI_SX, SX_STB(32, pre - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_STB(32, pre - 1, pptr & 7)); pptr += pre; cnt -= pre; } /* now do the aligned pixels in 32bit chunks */ while(cnt > 15) { words = min(16, cnt >> 2); - sta(pptr, ASI_SX, SX_LD(8, words - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_LD(8, words - 1, pptr & 7)); sx_write(sc->sc_sx, SX_INSTRUCTIONS, SX_ROP(8, 8, 32, words - 1)); - sta(pptr, ASI_SX, SX_ST(32, words - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_ST(32, words - 1, pptr & 7)); pptr += words << 2; cnt -= words << 2; } /* do any remaining pixels byte-wise again */ if (cnt > 0) - sta(pptr, ASI_SX, SX_LDB(8, cnt - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_LDB(8, cnt - 1, pptr & 7)); sx_write(sc->sc_sx, SX_INSTRUCTIONS, SX_ROP(8, 8, 32, cnt - 1)); - sta(pptr, ASI_SX, SX_STB(32, cnt - 1, pptr & 7)); + sta(pptr & ~7, ASI_SX, SX_STB(32, cnt - 1, pptr & 7)); addr += stride; } } @@ -1301,7 +1302,7 @@ cg14_slurp(int reg, uint32_t addr, int c int num; while (cnt > 0) { num = min(32, cnt); - sta(addr, ASI_SX, SX_LD(reg, num - 1, addr & 7)); + sta(addr & ~7, ASI_SX, SX_LD(reg, num - 1, addr & 7)); cnt -= num; reg += num; addr += (num << 2); @@ -1314,7 +1315,7 @@ cg14_spit(int reg, uint32_t addr, int cn int num; while (cnt > 0) { num = min(32, cnt); - sta(addr, ASI_SX, SX_ST(reg, num - 1, addr & 7)); + sta(addr & ~7, ASI_SX, SX_ST(reg, num - 1, addr & 7)); cnt -= num; reg += num; addr += (num << 2); @@ -1349,9 +1350,9 @@ cg14_bitblt(void *cookie, int xs, int ys dptr = daddr; cnt = wi; if (pre > 0) { -sta(sptr, ASI_SX, +sta(sptr & ~7, ASI_SX, SX_LDB(32, pre - 1, sptr & 7)); -sta(dptr, ASI_SX, +sta(dptr & ~7, ASI_SX, SX_STB(32, pre - 1, dptr & 7)); cnt -= pre; sptr += pre; @@ -1367,9 +1368,9 @@ cg14_bitblt(void *cookie, int xs, int ys cnt -= num << 2; } if (cnt > 0) { -sta(sptr, ASI_SX, +sta(sptr & ~7, ASI_SX, SX_LDB(32, cnt - 1, sptr & 7)); -sta(dptr, ASI_SX, +sta(dptr & ~7, ASI_SX, SX_STB(32, cnt - 1, dptr & 7)); } saddr += skip; @@ -1383,16 +1384,16 @@ cg14_bitblt(void *cookie, int xs, int ys dptr = daddr; cnt = wi; while(cnt > 31) { -sta(sptr, ASI_SX, SX_LDB(32, 31, sptr & 7)); -sta(dptr, ASI_SX, SX_STB(32, 31, dptr & 7)); +sta(sptr & ~7, ASI_SX, SX_LDB(32, 31, sptr & 7)); +sta(dptr & ~7, ASI_SX, SX_STB(32, 31, dptr & 7)); sptr += 32; dptr += 32; cnt -= 32; } if (cnt > 0) { -sta(sptr, ASI_SX, +sta(sptr & ~7, ASI_
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Dec 7 19:15:56 UTC 2017 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add SCATTER/GATHER instructions To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.14 src/sys/arch/sparc/dev/sxreg.h:1.15 --- src/sys/arch/sparc/dev/sxreg.h:1.14 Mon Oct 30 21:41:39 2017 +++ src/sys/arch/sparc/dev/sxreg.h Thu Dec 7 19:15:56 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.14 2017/10/30 21:41:39 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.15 2017/12/07 19:15:56 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -290,4 +290,12 @@ #define SX_ADDV(sa, sb, d, cnt) (0xa000 | ((cnt) << 24) | SX_ADD_V | \ ((sa) << 14) | ((d) << 7) | (sb)) +/* MISC group */ +#define SX_GTHR (3 << 21) /* sa with spacing sb -> d */ +#define SX_SCTR (2 << 21) /* sa -> d with spacing sb */ +#define SX_GATHER(sa, sb, d, cnt) (0xe000 | ((cnt << 24) | SX_GTHR | \ + ((sa) << 14) | ((d << 7) | (sb)) +#define SX_SCATTER(sa, sb, d, cnt) (0xe000 | ((cnt << 24) | SX_SCRT | \ + ((sa) << 14) | ((d << 7) | (sb)) + #endif /* SXREG_H */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Dec 8 22:28:54 UTC 2017 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: fix tpyos and pastos To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.15 src/sys/arch/sparc/dev/sxreg.h:1.16 --- src/sys/arch/sparc/dev/sxreg.h:1.15 Thu Dec 7 19:15:56 2017 +++ src/sys/arch/sparc/dev/sxreg.h Fri Dec 8 22:28:54 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.15 2017/12/07 19:15:56 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.16 2017/12/08 22:28:54 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -293,9 +293,9 @@ /* MISC group */ #define SX_GTHR (3 << 21) /* sa with spacing sb -> d */ #define SX_SCTR (2 << 21) /* sa -> d with spacing sb */ -#define SX_GATHER(sa, sb, d, cnt) (0xe000 | ((cnt << 24) | SX_GTHR | \ - ((sa) << 14) | ((d << 7) | (sb)) -#define SX_SCATTER(sa, sb, d, cnt) (0xe000 | ((cnt << 24) | SX_SCRT | \ - ((sa) << 14) | ((d << 7) | (sb)) +#define SX_GATHER(sa, sb, d, cnt) (0xe000 | ((cnt) << 24) | SX_GTHR | \ + ((sa) << 14) | ((d) << 7) | (sb)) +#define SX_SCATTER(sa, sb, d, cnt) (0xe000 | ((cnt) << 24) | SX_SCTR | \ + ((sa) << 14) | ((d) << 7) | (sb)) #endif /* SXREG_H */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Sat Jan 6 07:26:54 UTC 2018 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: support underlines To generate a diff of this commit: cvs rdiff -u -r1.82 -r1.83 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.82 src/sys/arch/sparc/dev/cgfourteen.c:1.83 --- src/sys/arch/sparc/dev/cgfourteen.c:1.82 Fri Sep 16 22:39:35 2016 +++ src/sys/arch/sparc/dev/cgfourteen.c Sat Jan 6 07:26:54 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.82 2016/09/16 22:39:35 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.83 2018/01/06 07:26:54 macallan Exp $ */ /* * Copyright (c) 1996 @@ -163,6 +163,7 @@ static int cg14_do_cursor(struct cgfour static void cg14_wait_idle(struct cgfourteen_softc *); static void cg14_rectfill(struct cgfourteen_softc *, int, int, int, int, uint32_t); +static void cg14_rectfill_a(void *, int, int, int, int, long); static void cg14_invert(struct cgfourteen_softc *, int, int, int, int); static void cg14_bitblt(void *, int, int, int, int, int, int, int); static void cg14_bitblt_gc(void *, int, int, int, int, int, int, int); @@ -723,7 +724,7 @@ cg14_setup_wsdisplay(struct cgfourteen_s 0, 0, NULL, 8, 16, - WSSCREEN_WSCOLORS | WSSCREEN_HILIT, + WSSCREEN_WSCOLORS | WSSCREEN_HILIT | WSSCREEN_UNDERLINE, NULL }; cg14_set_depth(sc, 8); @@ -738,6 +739,7 @@ cg14_setup_wsdisplay(struct cgfourteen_s sc->sc_gc.gc_bitblt = cg14_bitblt_gc; sc->sc_gc.gc_blitcookie = sc; + sc->sc_gc.gc_rectfill = cg14_rectfill_a; sc->sc_gc.gc_rop = 0xc; if (is_cons) { vcons_init_screen(&sc->sc_vd, &sc->sc_console_screen, 1, @@ -1008,7 +1010,7 @@ cg14_init_screen(void *cookie, struct vc ri->ri_bits = (char *)sc->sc_fb.fb_pixels; #if NSX > 0 - ri->ri_flg |= RI_8BIT_IS_RGB | RI_ENABLE_ALPHA; + ri->ri_flg |= RI_8BIT_IS_RGB | RI_ENABLE_ALPHA | RI_PREFER_ALPHA; /* * unaligned copies with horizontal overlap are slow, so don't bother @@ -1025,7 +1027,7 @@ cg14_init_screen(void *cookie, struct vc } rasops_init(ri, 0, 0); - ri->ri_caps = WSSCREEN_WSCOLORS; + ri->ri_caps = WSSCREEN_WSCOLORS | WSSCREEN_HILIT | WSSCREEN_UNDERLINE; rasops_reconfig(ri, sc->sc_fb.fb_type.fb_height / ri->ri_font->fontheight, @@ -1209,7 +1211,7 @@ cg14_rectfill(struct cgfourteen_softc *s cnt -= pre; } /* now do the aligned pixels in 32bit chunks */ - while(cnt > 31) { + while(cnt > 3) { words = min(32, cnt >> 2); sta(pptr & ~7, ASI_SX, SX_STS(8, words - 1, pptr & 7)); pptr += words << 2; @@ -1223,6 +1225,16 @@ cg14_rectfill(struct cgfourteen_softc *s } static void +cg14_rectfill_a(void *cookie, int dstx, int dsty, +int width, int height, long attr) +{ + struct cgfourteen_softc *sc = cookie; + + cg14_rectfill(sc, dstx, dsty, width, height, + sc->sc_vd.active->scr_ri.ri_devcmap[(attr >> 24 & 0xf)]); +} + +static void cg14_invert(struct cgfourteen_softc *sc, int x, int y, int wi, int he) { uint32_t addr, pptr; @@ -1459,17 +1471,20 @@ cg14_putchar(void *cookie, int row, int bg = ri->ri_devcmap[(attr >> 16) & 0xf]; fg = ri->ri_devcmap[(attr >> 24) & 0xf]; - sx_write(sc->sc_sx, SX_QUEUED(8), bg); - sx_write(sc->sc_sx, SX_QUEUED(9), fg); x = ri->ri_xorigin + col * wi; y = ri->ri_yorigin + row * he; if (c == 0x20) { cg14_rectfill(sc, x, y, wi, he, bg); + if (attr & 1) + cg14_rectfill(sc, x, y + he - 2, wi, 1, fg); return; } + sx_write(sc->sc_sx, SX_QUEUED(8), bg); + sx_write(sc->sc_sx, SX_QUEUED(9), fg); + data = WSFONT_GLYPH(c, font); addr = sc->sc_fb_paddr + x + stride * y; @@ -1501,6 +1516,8 @@ cg14_putchar(void *cookie, int row, int break; } } + if (attr & 1) + cg14_rectfill(sc, x, y + he - 2, wi, 1, fg); } static void @@ -1545,7 +1562,7 @@ cg14_putchar_aa(void *cookie, int row, i struct vcons_screen *scr = ri->ri_hw; struct cgfourteen_softc *sc = scr->scr_cookie; int stride = sc->sc_fb.fb_type.fb_width; - uint32_t bg, addr, bg8, fg8, pixel, in, q, next; + uint32_t bg, fg, addr, bg8, fg8, pixel, in, q, next; int i, j, x, y, wi, he, r, g, b, aval, cnt, reg; int r1, g1, b1, r0, g0, b0, fgo, bgo, rv; uint8_t *data8; @@ -1560,10 +1577,13 @@ cg14_putchar_aa(void *cookie, int row, i he = font->fontheight; bg = ri->ri_devcmap[(attr >> 16) & 0xf]; + fg = ri->ri_devcmap[(attr >> 24) & 0xf]; x = ri->ri_xorigin + col * wi; y = ri->ri_yorigin + row * he; if (c == 0x20) { cg14_rectfill(sc, x, y, wi, he, bg); + if (attr & 1) + cg14_rectfill(sc, x, y + he - 2, wi, 1, fg); return; } @@ -1641,7 +1661,9 @@ cg14_putchar_aa(void *cookie, int row, i if (rv == GC_ADD) { glyphcache_add(&sc->sc_gc, c, x, y); - } + } else if (attr & 1) + cg14_rectfill(sc, x, y + he - 2, wi, 1, fg); + } static void
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Jan 12 23:38:24 UTC 2018 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: enable font loading To generate a diff of this commit: cvs rdiff -u -r1.83 -r1.84 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.83 src/sys/arch/sparc/dev/cgfourteen.c:1.84 --- src/sys/arch/sparc/dev/cgfourteen.c:1.83 Sat Jan 6 07:26:54 2018 +++ src/sys/arch/sparc/dev/cgfourteen.c Fri Jan 12 23:38:24 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.83 2018/01/06 07:26:54 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.84 2018/01/12 23:38:24 macallan Exp $ */ /* * Copyright (c) 1996 @@ -724,7 +724,8 @@ cg14_setup_wsdisplay(struct cgfourteen_s 0, 0, NULL, 8, 16, - WSSCREEN_WSCOLORS | WSSCREEN_HILIT | WSSCREEN_UNDERLINE, + WSSCREEN_WSCOLORS | WSSCREEN_HILIT | WSSCREEN_UNDERLINE | + WSSCREEN_RESIZE, NULL }; cg14_set_depth(sc, 8); @@ -734,6 +735,8 @@ cg14_setup_wsdisplay(struct cgfourteen_s vcons_init(&sc->sc_vd, sc, &sc->sc_defaultscreen_descr, &cg14_accessops); sc->sc_vd.init_screen = cg14_init_screen; + sc->sc_vd.show_screen_cookie = &sc->sc_gc; + sc->sc_vd.show_screen_cb = glyphcache_adapt; ri = &sc->sc_console_screen.scr_ri; @@ -1009,6 +1012,8 @@ cg14_init_screen(void *cookie, struct vc ri->ri_flg = RI_CENTER | RI_FULLCLEAR; ri->ri_bits = (char *)sc->sc_fb.fb_pixels; + + scr->scr_flags |= VCONS_LOADFONT; #if NSX > 0 ri->ri_flg |= RI_8BIT_IS_RGB | RI_ENABLE_ALPHA | RI_PREFER_ALPHA; @@ -1020,14 +1025,15 @@ cg14_init_screen(void *cookie, struct vc scr->scr_flags |= VCONS_NO_COPYCOLS; } else #endif - scr->scr_flags |= VCONS_DONT_READ; + scr->scr_flags |= VCONS_DONT_READ; if (existing) { ri->ri_flg |= RI_CLEAR; } rasops_init(ri, 0, 0); - ri->ri_caps = WSSCREEN_WSCOLORS | WSSCREEN_HILIT | WSSCREEN_UNDERLINE; + ri->ri_caps = WSSCREEN_WSCOLORS | WSSCREEN_HILIT | WSSCREEN_UNDERLINE | + WSSCREEN_RESIZE; rasops_reconfig(ri, sc->sc_fb.fb_type.fb_height / ri->ri_font->fontheight,
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Jan 25 14:45:58 UTC 2018 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: do boundary checks when writing cursor sprite colour registers To generate a diff of this commit: cvs rdiff -u -r1.84 -r1.85 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.84 src/sys/arch/sparc/dev/cgfourteen.c:1.85 --- src/sys/arch/sparc/dev/cgfourteen.c:1.84 Fri Jan 12 23:38:24 2018 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Jan 25 14:45:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.84 2018/01/12 23:38:24 macallan Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.85 2018/01/25 14:45:58 macallan Exp $ */ /* * Copyright (c) 1996 @@ -1120,7 +1120,11 @@ cg14_do_cursor(struct cgfourteen_softc * if (cur->which & WSDISPLAY_CURSOR_DOCMAP) { int i; uint32_t val; - + + if ((cur->cmap.index > 2) || (cur->cmap.count > 3) || + (cur->cmap.index + cur->cmap.count > 3)) + return EINVAL; + for (i = 0; i < min(cur->cmap.count, 3); i++) { val = (cur->cmap.red[i] ) | (cur->cmap.green[i] << 8) |
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Mon Oct 30 21:41:39 UTC 2017 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add load & store instructions for channel data type mostly for Xorg To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.13 src/sys/arch/sparc/dev/sxreg.h:1.14 --- src/sys/arch/sparc/dev/sxreg.h:1.13 Fri Jan 13 21:49:46 2017 +++ src/sys/arch/sparc/dev/sxreg.h Mon Oct 30 21:41:39 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.13 2017/01/13 21:49:46 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.14 2017/10/30 21:41:39 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -158,6 +158,14 @@ SX_UQUAD_16 | (dreg << 7) | (o)) #define SX_LDUQ24(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ SX_UQUAD_24 | (dreg << 7) | (o)) +#define SX_LDUC0(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UCHAN_0 | (dreg << 7) | (o)) +#define SX_LDUC8(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UCHAN_8 | (dreg << 7) | (o)) +#define SX_LDUC16(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UCHAN_16 | (dreg << 7) | (o)) +#define SX_LDUC24(dreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_LOAD | \ +SX_UCHAN_24 | (dreg << 7) | (o)) #define SX_ST(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_LONG | (sreg << 7) | (o)) #define SX_STM(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_MASK | \ @@ -184,6 +192,16 @@ SX_UQUAD_16 | (sreg << 7) | (o)) #define SX_STUQ24(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_UQUAD_24 | (sreg << 7) | (o)) +#define SX_STUC0(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UCHAN_0 | (sreg << 7) | (o)) +#define SX_STUC0C(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_CLAMP | \ +SX_UCHAN_0 | (sreg << 7) | (o)) +#define SX_STUC8(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UCHAN_8 | (sreg << 7) | (o)) +#define SX_STUC16(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UCHAN_16 | (sreg << 7) | (o)) +#define SX_STUC24(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ +SX_UCHAN_24 | (sreg << 7) | (o)) /* ROP and SELECT instructions */ #define SX_ROPB (0x0 << 21) /* mask bits apply to bytes */
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Jan 13 21:49:46 UTC 2017 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: add SX_STBM ( STore Byte Masked ) instruction To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.12 src/sys/arch/sparc/dev/sxreg.h:1.13 --- src/sys/arch/sparc/dev/sxreg.h:1.12 Sat Apr 30 05:22:19 2016 +++ src/sys/arch/sparc/dev/sxreg.h Fri Jan 13 21:49:46 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.12 2016/04/30 05:22:19 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.13 2017/01/13 21:49:46 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -164,6 +164,8 @@ SX_LONG | (sreg << 7) | (o)) #define SX_STB(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \ SX_UBYTE_0 | (sreg << 7) | (o)) +#define SX_STBM(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_MASK | \ +SX_UBYTE_0 | (sreg << 7) | (o)) #define SX_STBC(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE_CLAMP | \ SX_UBYTE_0 | (sreg << 7) | (o)) #define SX_STP(sreg, cnt, o) (0x8000 | ((cnt) << 23) | SX_STORE | \
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: thorpej Date: Thu Jan 2 22:32:20 UTC 2020 Modified Files: src/sys/arch/sparc/dev: rtc.c Log Message: - Use todr_gettime_ymdhms / todr_settime_ymdhms. - Allocate the todr_handle with the softc, not separately. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/arch/sparc/dev/rtc.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/sparc/dev/rtc.c diff -u src/sys/arch/sparc/dev/rtc.c:1.19 src/sys/arch/sparc/dev/rtc.c:1.20 --- src/sys/arch/sparc/dev/rtc.c:1.19 Sun Nov 10 21:16:32 2019 +++ src/sys/arch/sparc/dev/rtc.c Thu Jan 2 22:32:20 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: rtc.c,v 1.19 2019/11/10 21:16:32 chs Exp $ */ +/* $NetBSD: rtc.c,v 1.20 2020/01/02 22:32:20 thorpej Exp $ */ /* * Copyright (c) 2001 Valeriy E. Ushakov @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rtc.c,v 1.19 2019/11/10 21:16:32 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtc.c,v 1.20 2020/01/02 22:32:20 thorpej Exp $"); #include #include @@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: rtc.c,v 1.19 struct rtc_ebus_softc { bus_space_tag_t sc_bt; /* parent bus tag */ bus_space_handle_t sc_bh; /* handle for registers */ + struct todr_chip_handle sc_todr;/* TODR handle */ }; static int rtcmatch_ebus(device_t, cfdata_t, void *); @@ -65,16 +66,12 @@ static void rtcattach_ebus(device_t, dev CFATTACH_DECL_NEW(rtc_ebus, sizeof(struct rtc_ebus_softc), rtcmatch_ebus, rtcattach_ebus, NULL, NULL); -/* XXX: global TOD clock handle (sparc/clock.c) */ -extern todr_chip_handle_t todr_handle; - /* todr(9) methods */ -static int rtc_gettime(todr_chip_handle_t, struct timeval *); -static int rtc_settime(todr_chip_handle_t, struct timeval *); +static int rtc_gettime_ymdhms(todr_chip_handle_t, struct clock_ymdhms *); +static int rtc_settime_ymdhms(todr_chip_handle_t, struct clock_ymdhms *); int rtc_auto_century_adjust = 1; /* XXX: do we ever want not to? */ - /* * MD read/write functions declared in mc146818reg.h */ @@ -134,27 +131,23 @@ rtcattach_ebus(device_t parent, device_t mc146818_write(sc, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR); /* setup our todr_handle */ - handle = malloc(ALIGN(sizeof(struct todr_chip_handle)), - M_DEVBUF, M_WAITOK); + handle = &sc->sc_todr; handle->cookie = sc; handle->bus_cookie = NULL; /* unused */ - handle->todr_gettime = rtc_gettime; - handle->todr_settime = rtc_settime; + handle->todr_gettime = NULL; + handle->todr_settime = NULL; + handle->todr_gettime_ymdhms = rtc_gettime_ymdhms; + handle->todr_settime_ymdhms = rtc_settime_ymdhms; handle->todr_setwen = NULL; /* not necessary, no idprom to protect */ todr_attach(handle); } -/* - * Get time-of-day and convert to a `struct timeval' - * Return 0 on success; an error number otherwise. - */ static int -rtc_gettime(todr_chip_handle_t handle, struct timeval *tv) +rtc_gettime_ymdhms(todr_chip_handle_t handle, struct clock_ymdhms *dt) { struct rtc_ebus_softc *sc = handle->cookie; - struct clock_ymdhms dt; u_int year; /* update in progress; spin loop */ @@ -166,12 +159,12 @@ rtc_gettime(todr_chip_handle_t handle, s (mc146818_read(sc, MC_REGB) | MC_REGB_SET)); /* read time */ - dt.dt_sec = mc146818_read(sc, MC_SEC); - dt.dt_min = mc146818_read(sc, MC_MIN); - dt.dt_hour = mc146818_read(sc, MC_HOUR); - dt.dt_day = mc146818_read(sc, MC_DOM); - dt.dt_mon = mc146818_read(sc, MC_MONTH); - year = mc146818_read(sc, MC_YEAR); + dt->dt_sec = mc146818_read(sc, MC_SEC); + dt->dt_min = mc146818_read(sc, MC_MIN); + dt->dt_hour = mc146818_read(sc, MC_HOUR); + dt->dt_day = mc146818_read(sc, MC_DOM); + dt->dt_mon = mc146818_read(sc, MC_MONTH); + year= mc146818_read(sc, MC_YEAR); /* reenable updates */ mc146818_write(sc, MC_REGB, @@ -181,32 +174,18 @@ rtc_gettime(todr_chip_handle_t handle, s year += 1900; if (year < POSIX_BASE_YEAR && rtc_auto_century_adjust != 0) year += 100; - dt.dt_year = year; + dt->dt_year = year; - /* simple sanity checks */ - if (dt.dt_mon > 12 || dt.dt_day > 31 - || dt.dt_hour >= 24 || dt.dt_min >= 60 || dt.dt_sec >= 60) - return (ERANGE); - - tv->tv_sec = clock_ymdhms_to_secs(&dt); - tv->tv_usec = 0; return (0); } -/* - * Set the time-of-day clock based on the value of the `struct timeval' arg. - * Return 0 on success; an error number otherwise. - */ static int -rtc_settime(todr_chip_handle_t handle, struct timeval *tv) +rtc_settime_ymdhms(todr_chip_handle_t handle, struct clock_ymdhms *dt) { struct rtc_ebus_softc *sc = handle->cookie; - struct clock_ymdhms dt; u_int year; - clock_secs_to_ymdhms(tv->tv_sec, &dt); - - year = dt.dt_year - 1900; + year = dt->dt_year - 1900; if (year >= 100 && rtc_auto_century_adjust != 0) year -= 100; @@ -214,12 +193,12 @@ rtc_settime(todr_chip_handle_t handle, s mc146818_write(sc, MC_REGB, (mc146818_read(
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Thu Jan 17 23:05:15 UTC 2019 Modified Files: src/sys/arch/sparc/dev: cgfourteen.c Log Message: don't crash when we're not the console To generate a diff of this commit: cvs rdiff -u -r1.86 -r1.87 src/sys/arch/sparc/dev/cgfourteen.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/sparc/dev/cgfourteen.c diff -u src/sys/arch/sparc/dev/cgfourteen.c:1.86 src/sys/arch/sparc/dev/cgfourteen.c:1.87 --- src/sys/arch/sparc/dev/cgfourteen.c:1.86 Mon Sep 3 16:29:27 2018 +++ src/sys/arch/sparc/dev/cgfourteen.c Thu Jan 17 23:05:15 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cgfourteen.c,v 1.86 2018/09/03 16:29:27 riastradh Exp $ */ +/* $NetBSD: cgfourteen.c,v 1.87 2019/01/17 23:05:15 macallan Exp $ */ /* * Copyright (c) 1996 @@ -284,7 +284,7 @@ cgfourteenattach(device_t parent, device if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, sa->sa_offset, sa->sa_size, - 0 /*BUS_SPACE_MAP_LINEAR*/, + BUS_SPACE_MAP_LINEAR, &bh) != 0) { printf("%s: cannot map control registers\n", device_xname(self)); @@ -744,7 +744,7 @@ cg14_setup_wsdisplay(struct cgfourteen_s sc->sc_gc.gc_blitcookie = sc; sc->sc_gc.gc_rectfill = cg14_rectfill_a; sc->sc_gc.gc_rop = 0xc; - if (is_cons) { + vcons_init_screen(&sc->sc_vd, &sc->sc_console_screen, 1, &defattr); @@ -770,21 +770,10 @@ cg14_setup_wsdisplay(struct cgfourteen_s ri->ri_font->fontwidth, ri->ri_font->fontheight, defattr); + if (is_cons) { wsdisplay_cnattach(&sc->sc_defaultscreen_descr, ri, 0, 0, defattr); vcons_replay_msgbuf(&sc->sc_console_screen); - } else { - /* - * since we're not the console we can postpone the rest - * until someone actually allocates a screen for us - */ - glyphcache_init(&sc->sc_gc, sc->sc_fb.fb_type.fb_height + 5, - (sc->sc_vramsize / sc->sc_fb.fb_type.fb_width) - - sc->sc_fb.fb_type.fb_height - 5, - sc->sc_fb.fb_type.fb_width, - ri->ri_font->fontwidth, - ri->ri_font->fontheight, - DEFATTR); } cg14_init_cmap(sc);
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Feb 22 23:01:25 UTC 2019 Modified Files: src/sys/arch/sparc/dev: sxreg.h Log Message: some register bits are defined differently by SunOS's sxreg.h and the SPAM manual, upon investigation the hardware appears to agree with the SunOS header, so adapt accordingly To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/sparc/dev/sxreg.h 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/sparc/dev/sxreg.h diff -u src/sys/arch/sparc/dev/sxreg.h:1.16 src/sys/arch/sparc/dev/sxreg.h:1.17 --- src/sys/arch/sparc/dev/sxreg.h:1.16 Fri Dec 8 22:28:54 2017 +++ src/sys/arch/sparc/dev/sxreg.h Fri Feb 22 23:01:25 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: sxreg.h,v 1.16 2017/12/08 22:28:54 macallan Exp $ */ +/* $NetBSD: sxreg.h,v 1.17 2019/02/22 23:01:25 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -47,6 +47,8 @@ #define SX_ID 0x0028 #define SX_R0_INIT 0x002c #define SX_SOFTRESET 0x0030 +#define SX_SYNC 0x0034 /* write will stall CPU until */ + /* SX is idle */ /* write registers directly, only when processor is stopped */ #define SX_DIRECT_R0 0x0100 #define SX_DIRECT_R1 0x0104 /* and so on until R127 */ @@ -73,10 +75,39 @@ #define SX_EE5 0x0010 /* alignment violation */ #define SX_EE6 0x0020 /* illegal instruction queue write */ #define SX_EI 0x0080 /* interrupt on error */ +/* + * XXX + * the following bit definitions are from the SX manual. They're defined in a + * different way in SunOS's sxreg.h, the hardware seems to follow the latter. + */ +#if 0 #define SX_PB 0x1000 /* enable page bound checking */ #define SX_WO 0x2000 /* write occured ( by SX ) */ #define SX_GO 0x4000 /* start/stop the processor */ #define SX_MT 0x8000 /* instruction queue is empty */ +#endif + +#define SX_PB 0x0400 /* enable page bound checking */ +#define SX_WO 0x0800 /* write occured ( by SX ) */ +#define SX_GO 0x1000 /* start/stop the processor */ +#define SX_JB 0x2000 /* Jammed/Busy specifies the type of events */ + /* which increment the SX timer */ +#define SX_MT 0x4000 /* instruction queue is empty */ +#define SX_BZ 0x8000 /* Busy bit. When set it indicates that SX */ + /* is processing an instruction or an */ + /* instruction is pending in the Q */ +#define SX_B0MOD 0x0001 /* When set by SX it indicates that a write */ + /* to bank zero of the SX registers (0-31) */ + /* occured */ +#define SX_B1MOD 0x0002 /* When set by SX it indicates that a write */ + /* to bank 1 of the SX registers (32-63) */ + /* occured */ +#define SX_B2MOD 0x0004 /* When set by SX it indicates that a write */ + /* to bank 2 of the SX registers (64-95) */ + /* occured */ +#define SX_B3MOD 0x0008 /* When set by SX it indicates that a write */ + /* to bank 3 of the SX registers (96-127) */ + /* occured */ /* SX_ERROR */ #define SX_SE1 0x0001 /* illegal instruction */ @@ -87,13 +118,29 @@ #define SX_SE6 0x0020 /* illegal instruction queue write */ #define SX_SI 0x0080 /* interrupt on error */ -/* SX_ID */ +/* SX_ID from the manual */ +#if 0 #define SX_ARCHITECTURE_MASK 0x00ff #define SX_CHIP_REVISION 0xff00 +#endif + +#define SX_ARCHITECTURE_MASK 0x0003 +#define SX_CHIP_REVISION 0x00f8 /* SX_DIAGNOSTICS */ #define SX_IQ_FIFO_ACCESS 0x0001 /* allow memory instructions * in SX_INSTRUCTIONS */ +#define SX_SERIAL_INSTRUCTIONS 0x0002 /* force inst. serializing */ +#define SX_RAM_PAGE_CROSS 0x0004 /* indicates page crossing */ +#define SX_ARRAY_CONSTRAINING 0x0008 /* When set constrains VRAM */ + /* array offset effective */ + /* address calculation */ +#define SX_UPG_MPG_DISABLE 0x0010 /* When set, disables page */ + /* cross input into ld/st */ + /* state machines */ +#define SX_DIAG_INIT 0x4804 /* Setting of the diag reg */ + /* upon reset */ + /* * memory referencing instructions are written to 0x8 + PA
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: macallan Date: Fri Mar 1 02:30:42 UTC 2019 Modified Files: src/sys/arch/sparc/dev: sx.c sxvar.h Log Message: adapt to changes in sxreg.h To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/sparc/dev/sx.c \ src/sys/arch/sparc/dev/sxvar.h 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/sparc/dev/sx.c diff -u src/sys/arch/sparc/dev/sx.c:1.3 src/sys/arch/sparc/dev/sx.c:1.4 --- src/sys/arch/sparc/dev/sx.c:1.3 Tue Apr 15 10:24:54 2014 +++ src/sys/arch/sparc/dev/sx.c Fri Mar 1 02:30:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: sx.c,v 1.3 2014/04/15 10:24:54 macallan Exp $ */ +/* $NetBSD: sx.c,v 1.4 2019/03/01 02:30:42 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.3 2014/04/15 10:24:54 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.4 2019/03/01 02:30:42 macallan Exp $"); #include "locators.h" @@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: sx.c,v 1.3 2 #include #include #include +#include "opt_sx.h" /* autoconfiguration driver */ static int sx_match(device_t, struct cfdata *, void *); @@ -57,6 +58,8 @@ static void sx_attach(device_t, device_t CFATTACH_DECL_NEW(sx, sizeof(struct sx_softc), sx_match, sx_attach, NULL, NULL); +static struct sx_softc *sx0 = NULL; + static int sx_match(device_t parent, struct cfdata *cf, void *aux) { @@ -90,7 +93,7 @@ sx_attach(device_t parent, device_t self id = sx_read(sc, SX_ID); aprint_normal_dev(self, "architecture rev. %d chip rev. %d\n", (id & SX_ARCHITECTURE_MASK), - (id & SX_CHIP_REVISION) >> 8); + (id & SX_CHIP_REVISION) >> 3); /* stop the processor */ sx_write(sc, SX_CONTROL_STATUS, 0); @@ -114,6 +117,8 @@ sx_attach(device_t parent, device_t self /* ... and start the processor again */ sx_write(sc, SX_CONTROL_STATUS, SX_PB | SX_GO); + sx0 = sc; + #ifdef SX_DEBUG sta(0xfc00, ASI_SX, SX_LD(8, 31, 0)); for (i = 1; i < 60; i++) @@ -143,3 +148,15 @@ sx_attach(device_t parent, device_t self #endif } +void +sx_dump(void) +{ + if (sx0 == NULL) + return; + printf("SX STATUS: %08x\n", + bus_space_read_4(sx0->sc_tag, sx0->sc_regh, SX_CONTROL_STATUS)); + printf("SX ERROR : %08x\n", + bus_space_read_4(sx0->sc_tag, sx0->sc_regh, SX_ERROR)); + printf("SX DIAG : %08x\n", + bus_space_read_4(sx0->sc_tag, sx0->sc_regh, SX_DIAGNOSTICS)); +} Index: src/sys/arch/sparc/dev/sxvar.h diff -u src/sys/arch/sparc/dev/sxvar.h:1.3 src/sys/arch/sparc/dev/sxvar.h:1.4 --- src/sys/arch/sparc/dev/sxvar.h:1.3 Sun Jun 29 03:57:10 2014 +++ src/sys/arch/sparc/dev/sxvar.h Fri Mar 1 02:30:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: sxvar.h,v 1.3 2014/06/29 03:57:10 tsutsui Exp $ */ +/* $NetBSD: sxvar.h,v 1.4 2019/03/01 02:30:42 macallan Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,4 +51,6 @@ sx_read(struct sx_softc *sc, int addr) return bus_space_read_4(sc->sc_tag, sc->sc_regh, addr); } +void sx_dump(void); + #endif
CVS commit: src/sys/arch/sparc/dev
Module Name:src Committed By: jdc Date: Sat Jun 13 05:31:29 UTC 2020 Modified Files: src/sys/arch/sparc/dev: tctrl.c Log Message: Initialise the mutex before we use it. To generate a diff of this commit: cvs rdiff -u -r1.61 -r1.62 src/sys/arch/sparc/dev/tctrl.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/sparc/dev/tctrl.c diff -u src/sys/arch/sparc/dev/tctrl.c:1.61 src/sys/arch/sparc/dev/tctrl.c:1.62 --- src/sys/arch/sparc/dev/tctrl.c:1.61 Wed Oct 25 08:12:37 2017 +++ src/sys/arch/sparc/dev/tctrl.c Sat Jun 13 05:31:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: tctrl.c,v 1.61 2017/10/25 08:12:37 maya Exp $ */ +/* $NetBSD: tctrl.c,v 1.62 2020/06/13 05:31:28 jdc Exp $ */ /*- * Copyright (c) 1998, 2005, 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.61 2017/10/25 08:12:37 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tctrl.c,v 1.62 2020/06/13 05:31:28 jdc Exp $"); #include #include @@ -260,6 +260,8 @@ tctrl_attach(device_t parent, device_t s sc->sc_tft_on = 1; + mutex_init(&sc->sc_requestlock, MUTEX_DEFAULT, IPL_NONE); + /* clear any pending data. */ for (i = 0; i < 1; i++) { @@ -312,7 +314,6 @@ tctrl_attach(device_t parent, device_t s sc->sc_ext_pending = 0; sc->sc_ext_pending = 0; - mutex_init(&sc->sc_requestlock, MUTEX_DEFAULT, IPL_NONE); selinit(&sc->sc_rsel); /* setup sensors and register the power button */