diff --git a/sys/arch/sparc64/dev/cgsix.c b/sys/arch/sparc64/dev/cgsix.c deleted file mode 100644 index 26d3b2635ff3..000000000000 --- a/sys/arch/sparc64/dev/cgsix.c +++ /dev/null @@ -1,639 +0,0 @@ -/* $NetBSD: cgsix.c,v 1.7 2000/08/26 16:02:06 eeh Exp $ */ - -/*- - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Paul Kranenburg. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Lawrence Berkeley Laboratory. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)cgsix.c 8.4 (Berkeley) 1/21/94 - */ - -/* - * color display (cgsix) driver. - * - * Does not handle interrupts, even though they can occur. - * - * XXX should defer colormap updates to vertical retrace interrupts - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef DEBUG -#include -#include -#endif - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -static void cg6_unblank __P((struct device *)); - -/* cdevsw prototypes */ -cdev_decl(cgsix); - -extern struct cfdriver cgsix_cd; - -/* frame buffer generic driver */ -static struct fbdriver cg6_fbdriver = { - cg6_unblank, cgsixopen, cgsixclose, cgsixioctl, cgsixpoll, cgsixmmap -}; - -/* - * Unlike the bw2 and cg3 drivers, we do not need to provide an rconsole - * interface, as the cg6 is fast enough.. but provide a knob to turn it - * on anyway. - */ -#ifdef RASTERCONSOLE -int cgsix_use_rasterconsole = 0; -#endif - -static void cg6_reset __P((struct cgsix_softc *)); -static void cg6_loadcmap __P((struct cgsix_softc *, int, int)); -static void cg6_loadomap __P((struct cgsix_softc *)); -static void cg6_setcursor __P((struct cgsix_softc *));/* set position */ -static void cg6_loadcursor __P((struct cgsix_softc *));/* set shape */ - - -void -cg6attach(sc, name, isconsole, isfb) - struct cgsix_softc *sc; - char *name; - int isconsole; - int isfb; -{ - int i; - volatile struct bt_regs *bt = sc->sc_bt; - struct fbdevice *fb = &sc->sc_fb; - - fb->fb_driver = &cg6_fbdriver; - - /* Don't have to map the pfour register on the cgsix. */ - fb->fb_pfour = NULL; - - fb->fb_type.fb_cmsize = 256; - fb->fb_type.fb_size = fb->fb_type.fb_height * fb->fb_linebytes; - printf(": %s, %d x %d", name, - fb->fb_type.fb_width, fb->fb_type.fb_height); - - sc->sc_fhcrev = (*sc->sc_fhc >> FHC_REV_SHIFT) & - (FHC_REV_MASK >> FHC_REV_SHIFT); - - printf(", rev %d", sc->sc_fhcrev); - - /* reset cursor & frame buffer controls */ - cg6_reset(sc); - - /* grab initial (current) color map (DOES THIS WORK?) */ - bt->bt_addr = 0; - for (i = 0; i < 256 * 3; i++) - ((char *)&sc->sc_cmap)[i] = bt->bt_cmap >> 24; - - /* enable video */ - sc->sc_thc->thc_misc |= THC_MISC_VIDEN; - - if (isconsole) { - printf(" (console)"); -#ifdef RASTERCONSOLE - if (cgsix_use_rasterconsole) - fbrcons_init(&sc->sc_fb); -#endif - } - - printf("\n"); - if (isfb) - fb_attach(&sc->sc_fb, isconsole); -} - - -int -cgsixopen(dev, flags, mode, p) - dev_t dev; - int flags, mode; - struct proc *p; -{ - int unit = minor(dev); - - if (unit >= cgsix_cd.cd_ndevs || cgsix_cd.cd_devs[unit] == NULL) - return (ENXIO); - return (0); -} - -int -cgsixclose(dev, flags, mode, p) - dev_t dev; - int flags, mode; - struct proc *p; -{ - struct cgsix_softc *sc = cgsix_cd.cd_devs[minor(dev)]; - - cg6_reset(sc); - return (0); -} - -int -cgsixioctl(dev, cmd, data, flags, p) - dev_t dev; - u_long cmd; - caddr_t data; - int flags; - struct proc *p; -{ - struct cgsix_softc *sc = cgsix_cd.cd_devs[minor(dev)]; - u_int count; - int v, error; - union cursor_cmap tcm; - - switch (cmd) { - - case FBIOGTYPE: - *(struct fbtype *)data = sc->sc_fb.fb_type; - break; - - case FBIOGATTR: -#define fba ((struct fbgattr *)data) - fba->real_type = sc->sc_fb.fb_type.fb_type; - fba->owner = 0; /* XXX ??? */ - fba->fbtype = sc->sc_fb.fb_type; - fba->sattr.flags = 0; - fba->sattr.emu_type = sc->sc_fb.fb_type.fb_type; - fba->sattr.dev_specific[0] = -1; - fba->emu_types[0] = sc->sc_fb.fb_type.fb_type; - fba->emu_types[1] = -1; -#undef fba - break; - - case FBIOGETCMAP: - return (bt_getcmap((struct fbcmap *)data, &sc->sc_cmap, 256)); - - case FBIOPUTCMAP: - /* copy to software map */ -#define p ((struct fbcmap *)data) - error = bt_putcmap(p, &sc->sc_cmap, 256); - if (error) - return (error); - /* now blast them into the chip */ - /* XXX should use retrace interrupt */ - cg6_loadcmap(sc, p->index, p->count); -#undef p - break; - - case FBIOGVIDEO: - *(int *)data = sc->sc_blanked; - break; - - case FBIOSVIDEO: - if (*(int *)data) - cg6_unblank(&sc->sc_dev); - else if (!sc->sc_blanked) { - sc->sc_blanked = 1; - sc->sc_thc->thc_misc &= ~THC_MISC_VIDEN; - } - break; - -/* these are for both FBIOSCURSOR and FBIOGCURSOR */ -#define p ((struct fbcursor *)data) -#define cc (&sc->sc_cursor) - - case FBIOGCURSOR: - /* do not quite want everything here... */ - p->set = FB_CUR_SETALL; /* close enough, anyway */ - p->enable = cc->cc_enable; - p->pos = cc->cc_pos; - p->hot = cc->cc_hot; - p->size = cc->cc_size; - - /* begin ugh ... can we lose some of this crap?? */ - if (p->image != NULL) { - count = cc->cc_size.y * 32 / NBBY; - error = copyout((caddr_t)cc->cc_bits[1], - (caddr_t)p->image, count); - if (error) - return (error); - error = copyout((caddr_t)cc->cc_bits[0], - (caddr_t)p->mask, count); - if (error) - return (error); - } - if (p->cmap.red != NULL) { - error = bt_getcmap(&p->cmap, - (union bt_cmap *)&cc->cc_color, 2); - if (error) - return (error); - } else { - p->cmap.index = 0; - p->cmap.count = 2; - } - /* end ugh */ - break; - - case FBIOSCURSOR: - /* - * For setcmap and setshape, verify parameters, so that - * we do not get halfway through an update and then crap - * out with the software state screwed up. - */ - v = p->set; - if (v & FB_CUR_SETCMAP) { - /* - * This use of a temporary copy of the cursor - * colormap is not terribly efficient, but these - * copies are small (8 bytes)... - */ - tcm = cc->cc_color; - error = bt_putcmap(&p->cmap, (union bt_cmap *)&tcm, 2); - if (error) - return (error); - } - if (v & FB_CUR_SETSHAPE) { - if ((u_int)p->size.x > 32 || (u_int)p->size.y > 32) - return (EINVAL); - count = p->size.y * 32 / NBBY; - if (!uvm_useracc(p->image, count, B_READ) || - !uvm_useracc(p->mask, count, B_READ)) - return (EFAULT); - } - - /* parameters are OK; do it */ - if (v & (FB_CUR_SETCUR | FB_CUR_SETPOS | FB_CUR_SETHOT)) { - if (v & FB_CUR_SETCUR) - cc->cc_enable = p->enable; - if (v & FB_CUR_SETPOS) - cc->cc_pos = p->pos; - if (v & FB_CUR_SETHOT) - cc->cc_hot = p->hot; - cg6_setcursor(sc); - } - if (v & FB_CUR_SETCMAP) { - cc->cc_color = tcm; - cg6_loadomap(sc); /* XXX defer to vertical retrace */ - } - if (v & FB_CUR_SETSHAPE) { - cc->cc_size = p->size; - count = p->size.y * 32 / NBBY; - bzero((caddr_t)cc->cc_bits, sizeof cc->cc_bits); - copyin(p->mask, (caddr_t)cc->cc_bits[0], count); - copyin(p->image, (caddr_t)cc->cc_bits[1], count); - cg6_loadcursor(sc); - } - break; - -#undef p -#undef cc - - case FBIOGCURPOS: - *(struct fbcurpos *)data = sc->sc_cursor.cc_pos; - break; - - case FBIOSCURPOS: - sc->sc_cursor.cc_pos = *(struct fbcurpos *)data; - cg6_setcursor(sc); - break; - - case FBIOGCURMAX: - /* max cursor size is 32x32 */ - ((struct fbcurpos *)data)->x = 32; - ((struct fbcurpos *)data)->y = 32; - break; - - default: -#ifdef DEBUG - log(LOG_NOTICE, "cgsixioctl(0x%lx) (%s[%d])\n", cmd, - p->p_comm, p->p_pid); -#endif - return (ENOTTY); - } - return (0); -} - -int -cgsixpoll(dev, events, p) - dev_t dev; - int events; - struct proc *p; -{ - - return (seltrue(dev, events, p)); -} - -/* - * Clean up hardware state (e.g., after bootup or after X crashes). - */ -static void -cg6_reset(sc) - struct cgsix_softc *sc; -{ - volatile struct cg6_tec_xxx *tec; - int fhc; - volatile struct bt_regs *bt; - - /* hide the cursor, just in case */ - sc->sc_thc->thc_cursxy = (THC_CURSOFF << 16) | THC_CURSOFF; - - /* turn off frobs in transform engine (makes X11 work) */ - tec = sc->sc_tec; - tec->tec_mv = 0; - tec->tec_clip = 0; - tec->tec_vdc = 0; - - /* take care of hardware bugs in old revisions */ - if (sc->sc_fhcrev < 5) { - /* - * Keep current resolution; set cpu to 68020, set test - * window (size 1Kx1K), and for rev 1, disable dest cache. - */ - fhc = (*sc->sc_fhc & FHC_RES_MASK) | FHC_CPU_68020 | - FHC_TEST | - (11 << FHC_TESTX_SHIFT) | (11 << FHC_TESTY_SHIFT); - if (sc->sc_fhcrev < 2) - fhc |= FHC_DST_DISABLE; - *sc->sc_fhc = fhc; - } - - /* Enable cursor in Brooktree DAC. */ - bt = sc->sc_bt; - bt->bt_addr = 0x06 << 24; - bt->bt_ctrl |= 0x03 << 24; -} - -static void -cg6_setcursor(sc) - struct cgsix_softc *sc; -{ - - /* we need to subtract the hot-spot value here */ -#define COORD(f) (sc->sc_cursor.cc_pos.f - sc->sc_cursor.cc_hot.f) - sc->sc_thc->thc_cursxy = sc->sc_cursor.cc_enable ? - ((COORD(x) << 16) | (COORD(y) & 0xffff)) : - (THC_CURSOFF << 16) | THC_CURSOFF; -#undef COORD -} - -static void -cg6_loadcursor(sc) - struct cgsix_softc *sc; -{ - volatile struct cg6_thc *thc; - u_int edgemask, m; - int i; - - /* - * Keep the top size.x bits. Here we *throw out* the top - * size.x bits from an all-one-bits word, introducing zeros in - * the top size.x bits, then invert all the bits to get what - * we really wanted as our mask. But this fails if size.x is - * 32---a sparc uses only the low 5 bits of the shift count--- - * so we have to special case that. - */ - edgemask = ~0; - if (sc->sc_cursor.cc_size.x < 32) - edgemask = ~(edgemask >> sc->sc_cursor.cc_size.x); - thc = sc->sc_thc; - for (i = 0; i < 32; i++) { - m = sc->sc_cursor.cc_bits[0][i] & edgemask; - thc->thc_cursmask[i] = m; - thc->thc_cursbits[i] = m & sc->sc_cursor.cc_bits[1][i]; - } -} - -/* - * Load a subset of the current (new) colormap into the color DAC. - */ -static void -cg6_loadcmap(sc, start, ncolors) - struct cgsix_softc *sc; - int start, ncolors; -{ - volatile struct bt_regs *bt; - u_int *ip, i; - int count; - - ip = &sc->sc_cmap.cm_chip[BT_D4M3(start)]; /* start/4 * 3 */ - count = BT_D4M3(start + ncolors - 1) - BT_D4M3(start) + 3; - bt = sc->sc_bt; - bt->bt_addr = BT_D4M4(start) << 24; - while (--count >= 0) { - i = *ip++; - /* hardware that makes one want to pound boards with hammers */ - bt->bt_cmap = i; - bt->bt_cmap = i << 8; - bt->bt_cmap = i << 16; - bt->bt_cmap = i << 24; - } -} - -/* - * Load the cursor (overlay `foreground' and `background') colors. - */ -static void -cg6_loadomap(sc) - struct cgsix_softc *sc; -{ - volatile struct bt_regs *bt; - u_int i; - - bt = sc->sc_bt; - bt->bt_addr = 0x01 << 24; /* set background color */ - i = sc->sc_cursor.cc_color.cm_chip[0]; - bt->bt_omap = i; /* R */ - bt->bt_omap = i << 8; /* G */ - bt->bt_omap = i << 16; /* B */ - - bt->bt_addr = 0x03 << 24; /* set foreground color */ - bt->bt_omap = i << 24; /* R */ - i = sc->sc_cursor.cc_color.cm_chip[1]; - bt->bt_omap = i; /* G */ - bt->bt_omap = i << 8; /* B */ -} - -static void -cg6_unblank(dev) - struct device *dev; -{ - struct cgsix_softc *sc = (struct cgsix_softc *)dev; - - if (sc->sc_blanked) { - sc->sc_blanked = 0; - sc->sc_thc->thc_misc |= THC_MISC_VIDEN; - } -} - -/* XXX the following should be moved to a "user interface" header */ -/* - * Base addresses at which users can mmap() the various pieces of a cg6. - * Note that although the Brooktree color registers do not occupy 8K, - * the X server dies if we do not allow it to map 8K there (it just maps - * from 0x70000000 forwards, as a contiguous chunk). - */ -#define CG6_USER_FBC 0x70000000 -#define CG6_USER_TEC 0x70001000 -#define CG6_USER_BTREGS 0x70002000 -#define CG6_USER_FHC 0x70004000 -#define CG6_USER_THC 0x70005000 -#define CG6_USER_ROM 0x70006000 -#define CG6_USER_RAM 0x70016000 -#define CG6_USER_DHC 0x80000000 - -struct mmo { - u_long mo_uaddr; /* user (virtual) address */ - u_long mo_size; /* size, or 0 for video ram size */ - u_long mo_physoff; /* offset from sc_physadr */ -}; - -/* - * Return the address that would map the given device at the given - * offset, allowing for the given protection, or return -1 for error. - * - * XXX needs testing against `demanding' applications (e.g., aviator) - */ -paddr_t -cgsixmmap(dev, off, prot) - dev_t dev; - off_t off; - int prot; -{ - struct cgsix_softc *sc = cgsix_cd.cd_devs[minor(dev)]; - struct mmo *mo; - u_int u, sz; - static struct mmo mmo[] = { - { CG6_USER_RAM, 0, CGSIX_RAM_OFFSET }, - - /* do not actually know how big most of these are! */ - { CG6_USER_FBC, 1, CGSIX_FBC_OFFSET }, - { CG6_USER_TEC, 1, CGSIX_TEC_OFFSET }, - { CG6_USER_BTREGS, 8192 /* XXX */, CGSIX_BT_OFFSET }, - { CG6_USER_FHC, 1, CGSIX_FHC_OFFSET }, - { CG6_USER_THC, sizeof(struct cg6_thc), CGSIX_THC_OFFSET }, - { CG6_USER_ROM, 65536, CGSIX_ROM_OFFSET }, - { CG6_USER_DHC, 1, CGSIX_DHC_OFFSET }, - }; -#define NMMO (sizeof mmo / sizeof *mmo) - - if (off & PGOFSET) - panic("cgsixmmap"); - - /* - * Entries with size 0 map video RAM (i.e., the size in fb data). - * - * Since we work in pages, the fact that the map offset table's - * sizes are sometimes bizarre (e.g., 1) is effectively ignored: - * one byte is as good as one page. - */ - for (mo = mmo; mo < &mmo[NMMO]; mo++) { - if ((u_long)off < mo->mo_uaddr) - continue; - u = off - mo->mo_uaddr; - sz = mo->mo_size ? mo->mo_size : sc->sc_fb.fb_type.fb_size; - if (u < sz) { - bus_space_handle_t bh; - if (bus_space_mmap(sc->sc_bustag, 0, - sc->sc_paddr+u+mo->mo_physoff, - BUS_SPACE_MAP_LINEAR, &bh)) - return (-1); - return ((paddr_t)bh); - } - } - -#ifdef DEBUG - { - struct proc *p = curproc; /* XXX */ - log(LOG_NOTICE, "cgsixmmap(0x%x) (%s[%d])\n", - off, p->p_comm, p->p_pid); - } -#endif - return (-1); /* not a user-map offset */ -} diff --git a/sys/arch/sparc64/dev/cgsix_obio.c b/sys/arch/sparc64/dev/cgsix_obio.c deleted file mode 100644 index c456baf92948..000000000000 --- a/sys/arch/sparc64/dev/cgsix_obio.c +++ /dev/null @@ -1,232 +0,0 @@ -/* $NetBSD: cgsix_obio.c,v 1.4 2000/06/29 07:37:54 mrg Exp $ */ - -/*- - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Paul Kranenburg. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * color display (cgsix) driver; sun4 obio bus front-end. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef DEBUG -#include -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -/* autoconfiguration driver */ -static int cgsixmatch __P((struct device *, struct cfdata *, void *)); -static void cgsixattach __P((struct device *, struct device *, void *)); -static int cg6_pfour_probe __P((void *, void *)); - -struct cfattach cgsix_obio_ca = { - sizeof(struct cgsix_softc), cgsixmatch, cgsixattach -}; - -/* - * Match a cgsix. - */ -int -cgsixmatch(parent, cf, aux) - struct device *parent; - struct cfdata *cf; - void *aux; -{ - union obio_attach_args *uoba = aux; - struct obio4_attach_args *oba; - - if (uoba->uoba_isobio4 == 0) - return (0); - - oba = &uoba->uoba_oba4; - return (bus_space_probe(oba->oba_bustag, 0, - oba->oba_paddr + CGSIX_FHC_OFFSET, - 4, /* probe size */ - 0, /* offset */ - 0, /* flags */ - cg6_pfour_probe, NULL)); -} - -int -cg6_pfour_probe(vaddr, arg) - void *vaddr; - void *arg; -{ - - return (fb_pfour_id(vaddr) == PFOUR_ID_FASTCOLOR); -} - - -/* - * Attach a display. - */ -void -cgsixattach(parent, self, aux) - struct device *parent, *self; - void *aux; -{ - struct cgsix_softc *sc = (struct cgsix_softc *)self; - union obio_attach_args *uoba = aux; - struct obio4_attach_args *oba; - struct eeprom *eep = (struct eeprom *)eeprom_va; - struct fbdevice *fb = &sc->sc_fb; - bus_space_handle_t bh; - int constype, isconsole; - char *name; - extern struct tty *fbconstty; - - if (uoba->uoba_isobio4 == 0) { - (*cgsix_sbus_ca.ca_attach)(parent, self, aux); - return; - } - - oba = &uoba->uoba_oba4; - - /* Remember cookies for cgsix_mmap() */ - sc->sc_bustag = oba->oba_bustag; - sc->sc_btype = (bus_type_t)0; - sc->sc_paddr = (bus_addr_t)oba->oba_paddr; - - fb->fb_device = &sc->sc_dev; - fb->fb_type.fb_type = FBTYPE_SUNFAST_COLOR; - fb->fb_flags = sc->sc_dev.dv_cfdata->cf_flags & FB_USERMASK; - fb->fb_type.fb_depth = 8; - - fb_setsize_eeprom(fb, fb->fb_type.fb_depth, 1152, 900); - - /* - * Dunno what the PROM has mapped, though obviously it must have - * the video RAM mapped. Just map what we care about for ourselves - * (the FHC, THC, and Brooktree registers). - */ - if (bus_space_map2(oba->oba_bustag, 0, - oba->oba_paddr + CGSIX_BT_OFFSET, - sizeof(*sc->sc_bt), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map brooktree registers\n", self->dv_xname); - return; - } - sc->sc_bt = (struct bt_regs *)bh; - - if (bus_space_map2(oba->oba_bustag, 0, - oba->oba_paddr + CGSIX_FHC_OFFSET, - sizeof(*sc->sc_fhc), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map FHC registers\n", self->dv_xname); - return; - } - sc->sc_fhc = (int *)bh; - - if (bus_space_map2(oba->oba_bustag, 0, - oba->oba_paddr + CGSIX_THC_OFFSET, - sizeof(*sc->sc_thc), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map THC registers\n", self->dv_xname); - return; - } - sc->sc_thc = (struct cg6_thc *)bh; - - if (bus_space_map2(oba->oba_bustag, 0, - oba->oba_paddr + CGSIX_TEC_OFFSET, - sizeof(*sc->sc_tec), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map TEC registers\n", self->dv_xname); - return; - } - sc->sc_tec = (struct cg6_tec_xxx *)bh; - - - if (fb_pfour_id((void *)sc->sc_fhc) == PFOUR_ID_FASTCOLOR) { - fb->fb_flags |= FB_PFOUR; - name = "cgsix/p4"; - } else - name = "cgsix"; - - constype = (fb->fb_flags & FB_PFOUR) ? EE_CONS_P4OPT : EE_CONS_COLOR; - - /* - * Assume this is the console if there's no eeprom info - * to be found. - */ - if (eep == NULL || eep->eeConsole == constype) - isconsole = (fbconstty != NULL); - else - isconsole = 0; - - if (isconsole && cgsix_use_rasterconsole) { - int ramsize = fb->fb_type.fb_height * fb->fb_linebytes; - if (bus_space_map2(oba->oba_bustag, 0, - oba->oba_paddr + CGSIX_RAM_OFFSET, - ramsize, - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map pixels\n", self->dv_xname); - return; - } - sc->sc_fb.fb_pixels = (caddr_t)bh; - } - - cg6attach(sc, name, isconsole, 1); -} diff --git a/sys/arch/sparc64/dev/cgsix_sbus.c b/sys/arch/sparc64/dev/cgsix_sbus.c deleted file mode 100644 index 747b13e619c5..000000000000 --- a/sys/arch/sparc64/dev/cgsix_sbus.c +++ /dev/null @@ -1,192 +0,0 @@ -/* $NetBSD: cgsix_sbus.c,v 1.6 2000/06/29 07:37:54 mrg Exp $ */ - -/*- - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Paul Kranenburg. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * color display (cgsix) driver; Sbus bus front-end. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef DEBUG -#include -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - - -/* autoconfiguration driver */ -static int cgsixmatch __P((struct device *, struct cfdata *, void *)); -static void cgsixattach __P((struct device *, struct device *, void *)); - -struct cfattach cgsix_ca = { - sizeof(struct cgsix_softc), cgsixmatch, cgsixattach -}; - - -extern int fbnode; - -/* - * Match a cgsix. - */ -int -cgsixmatch(parent, cf, aux) - struct device *parent; - struct cfdata *cf; - void *aux; -{ - struct sbus_attach_args *sa = aux; - - return (strcmp(cf->cf_driver->cd_name, sa->sa_name) == 0); -} - - -/* - * Attach a display. - */ -void -cgsixattach(parent, self, aux) - struct device *parent, *self; - void *aux; -{ - struct cgsix_softc *sc = (struct cgsix_softc *)self; - struct sbus_attach_args *sa = aux; - struct fbdevice *fb = &sc->sc_fb; - int node, isconsole; - char *name; - bus_space_handle_t bh; - - /* Remember cookies for cgsix_mmap() */ - sc->sc_bustag = sa->sa_bustag; - sc->sc_paddr = ((int64_t)sa->sa_slot<<32)|sa->sa_offset; - - node = sa->sa_node; - - fb->fb_device = &sc->sc_dev; - fb->fb_type.fb_type = FBTYPE_SUNFAST_COLOR; - fb->fb_flags = sc->sc_dev.dv_cfdata->cf_flags & FB_USERMASK; - fb->fb_type.fb_depth = 8; - - fb_setsize(fb, fb->fb_type.fb_depth, 1152, 900, node); - - /* - * Dunno what the PROM has mapped, though obviously it must have - * the video RAM mapped. Just map what we care about for ourselves - * (the FHC, THC, and Brooktree registers). - */ - if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, - sa->sa_offset + CGSIX_BT_OFFSET, - sizeof(*sc->sc_bt), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map brooktree registers\n", self->dv_xname); - return; - } - sc->sc_bt = (struct bt_regs *)(u_long)bh; - - if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, - sa->sa_offset + CGSIX_FHC_OFFSET, - sizeof(*sc->sc_fhc), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map FHC registers\n", self->dv_xname); - return; - } - sc->sc_fhc = (int *)(u_long)bh; - - if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, - sa->sa_offset + CGSIX_THC_OFFSET, - sizeof(*sc->sc_thc), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map THC registers\n", self->dv_xname); - return; - } - sc->sc_thc = (struct cg6_thc *)(u_long)bh; - - if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, - sa->sa_offset + CGSIX_TEC_OFFSET, - sizeof(*sc->sc_tec), - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map TEC registers\n", self->dv_xname); - return; - } - sc->sc_tec = (struct cg6_tec_xxx *)(u_long)bh; - - sbus_establish(&sc->sc_sd, &sc->sc_dev); - name = getpropstring(node, "model"); - - isconsole = (node == fbnode); - if (isconsole && cgsix_use_rasterconsole) { - int ramsize = fb->fb_type.fb_height * fb->fb_linebytes; - if (sbus_bus_map(sa->sa_bustag, sa->sa_slot, - sa->sa_offset + CGSIX_RAM_OFFSET, - ramsize, - BUS_SPACE_MAP_LINEAR, - 0, &bh) != 0) { - printf("%s: cannot map pixels\n", self->dv_xname); - return; - } - sc->sc_fb.fb_pixels = (caddr_t)(u_long)bh; - } - - cg6attach(sc, name, isconsole, node == fbnode); -} diff --git a/sys/arch/sparc64/dev/cgsixreg.h b/sys/arch/sparc64/dev/cgsixreg.h deleted file mode 100644 index d84bbca88d55..000000000000 --- a/sys/arch/sparc64/dev/cgsixreg.h +++ /dev/null @@ -1,216 +0,0 @@ -/* $NetBSD: cgsixreg.h,v 1.2 2000/08/26 16:02:06 eeh Exp $ */ - -/* - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Lawrence Berkeley Laboratory. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)cgsixreg.h 8.4 (Berkeley) 1/21/94 - */ - -/* - * CG6 display registers. (Note, I got tired of writing `cgsix' about - * halfway through and changed everything to cg6, but I probably missed - * some. Unfortunately, the way config works, we need to spell out `six' - * in some places anyway.) - * - * The cg6 is a complicated beastie. We have been unable to extract any - * documentation and most of the following are guesses based on a limited - * amount of reverse engineering. - * - * A cg6 is composed of numerous groups of control registers, all with TLAs: - * FBC - frame buffer control? - * FHC - fbc hardware configuration / control? register (32 bits) - * DHC - ??? - * TEC - transform engine control? - * THC - TEC Hardware Configuration - * ROM - a 64Kbyte ROM with who knows what in it. - * colormap - see below - * frame buffer memory (video RAM) - * possible other stuff - * - * Like the cg3, the cg6 uses a Brooktree Video DAC (see btreg.h). - * - * Various revisions of the cgsix have various hardware bugs. So far, - * we have only seen rev 1 & 2. - */ - -/* offsets */ -#define CGSIX_ROM_OFFSET 0x000000 -#define CGSIX_BT_OFFSET 0x200000 -#define CGSIX_DHC_OFFSET 0x240000 -#define CGSIX_ALT_OFFSET 0x280000 -#define CGSIX_FHC_OFFSET 0x300000 -#define CGSIX_THC_OFFSET 0x301000 -#define CGSIX_FBC_OFFSET 0x700000 -#define CGSIX_TEC_OFFSET 0x701000 -#define CGSIX_RAM_OFFSET 0x800000 - -/* bits in FHC register */ -#define FHC_FBID_MASK 0xff000000 /* bits 24..31 are frame buffer ID */ -#define FHC_FBID_SHIFT 24 -#define FHC_REV_MASK 0x00f00000 /* bits 20..23 are revision */ -#define FHC_REV_SHIFT 20 -#define FHC_FROP_DISABLE 0x00080000 /* disable fast/font? rasterops */ -#define FHC_ROW_DISABLE 0x00040000 /* ??? */ -#define FHC_SRC_DISABLE 0x00020000 /* ??? */ -#define FHC_DST_DISABLE 0x00010000 /* disable destination cache */ -#define FHC_RESET 0x00008000 /* ??? */ -#define FHC_XXX0 0x00004000 /* ??? */ -#define FHC_LEBO 0x00002000 /* set little endian byte order? */ -#define FHC_RES_MASK 0x00001800 /* bits 11&12 are resolution */ -#define FHC_RES_1024 0x00000000 /* res = 1024x768 */ -#define FHC_RES_1152 0x00000800 /* res = 1152x900 */ -#define FHC_RES_1280 0x00001000 /* res = 1280x1024 */ -#define FHC_RES_1600 0x00001800 /* res = 1600x1200 */ -#define FHC_CPU_MASK 0x00000600 /* bits 9&10 are cpu type */ -#define FHC_CPU_SPARC 0x00000000 /* cpu = sparc */ -#define FHC_CPU_68020 0x00000200 /* cpu = 68020 */ -#define FHC_CPU_386 0x00000400 /* cpu = 80386 */ -#define FHC_CPU_XXX 0x00000600 /* ??? */ -#define FHC_TEST 0x00000100 /* ??? test window ??? */ -#define FHC_TESTX_MASK 0x000000f0 /* bits 4..7 are test window X */ -#define FHC_TESTX_SHIFT 4 -#define FHC_TESTY_MASK 0x0000000f /* bits 0..3 are test window Y */ -#define FHC_TESTY_SHIFT 0 - -/* - * The layout of the THC. - */ -struct cg6_thc { - u_int thc_xxx0[512]; /* ??? */ - u_int thc_hsync1; /* horizontal sync timing */ - u_int thc_hsync2; /* more hsync timing */ - u_int thc_hsync3; /* yet more hsync timing */ - u_int thc_vsync1; /* vertical sync timing */ - u_int thc_vsync2; /* only two of these */ - u_int thc_refresh; /* refresh counter */ - u_int thc_misc; /* miscellaneous control & status */ - u_int thc_xxx1[56]; /* ??? */ - u_int thc_cursxy; /* cursor x,y position (16 bits each) */ - u_int thc_cursmask[32]; /* cursor mask bits */ - u_int thc_cursbits[32]; /* what to show where mask enabled */ -}; - -/* bits in thc_misc */ -#define THC_MISC_XXX0 0xfff00000 /* unused */ -#define THC_MISC_REVMASK 0x000f0000 /* cg6 revision? */ -#define THC_MISC_REVSHIFT 16 -#define THC_MISC_XXX1 0x0000e000 /* unused */ -#define THC_MISC_RESET 0x00001000 /* ??? */ -#define THC_MISC_XXX2 0x00000800 /* unused */ -#define THC_MISC_VIDEN 0x00000400 /* video enable */ -#define THC_MISC_SYNC 0x00000200 /* not sure what ... */ -#define THC_MISC_VSYNC 0x00000100 /* ... these really are */ -#define THC_MISC_SYNCEN 0x00000080 /* sync enable */ -#define THC_MISC_CURSRES 0x00000040 /* cursor resolution */ -#define THC_MISC_INTEN 0x00000020 /* v.retrace intr enable */ -#define THC_MISC_INTR 0x00000010 /* intr pending / ack bit */ -#define THC_MISC_XXX 0x0000000f /* ??? */ - -/* cursor x / y position value for `off' */ -#define THC_CURSOFF (65536-32) /* i.e., USHRT_MAX+1-32 */ - -/* - * Partial description of TEC (needed to get around FHC rev 1 bugs). - */ -struct cg6_tec_xxx { - u_int tec_mv; /* matrix stuff */ - u_int tec_clip; /* clipping stuff */ - u_int tec_vdc; /* ??? */ -}; - -/* - * This structure exists only to compute the layout of the CG6 - * hardware. Each of the individual substructures lives on a - * separate `page' (where a `page' is at least 4K), and many are - * very far apart. We avoid large offsets (which make for lousy - * code) by using pointers to the individual interesting pieces, - * and map them in independently (to avoid using up PTEs unnecessarily). - */ -struct cg6_layout { - /* ROM at 0 */ - union { - int un_id; /* ID = ?? */ - char un_rom[65536]; /* 64K rom */ - char un_pad[0x200000]; - } cg6_rom_un; - - /* Brooktree DAC at 0x200000 */ - union { - struct bt_regs un_btregs; - char un_pad[0x040000]; - } cg6_bt_un; - - /* DHC, whatever that is, at 0x240000 */ - union { - char un_pad[0x40000]; - } cg6_dhc_un; - - /* ALT, whatever that is, at 0x280000 */ - union { - char un_pad[0x80000]; - } cg6_alt_un; - - /* FHC register at 0x300000 */ - union { - int un_fhc; - char un_pad[0x1000]; - } cg6_fhc_un; - - /* THC at 0x301000 */ - union { - struct cg6_thc un_thc; - char un_pad[0x400000 - 0x1000]; - } cg6_thc_un; - - /* FBC at 0x700000 */ - union { - char un_pad[0x1000]; - } cg6_fbc_un; - - /* TEC at 0x701000 */ - union { - char un_pad[0x100000 - 0x1000]; - struct cg6_tec_xxx un_tec; - } cg6_tec_un; - - /* Video RAM at 0x800000 */ - char cg6_ram[1024 * 1024]; /* approx.? */ -}; diff --git a/sys/arch/sparc64/dev/cgsixvar.h b/sys/arch/sparc64/dev/cgsixvar.h deleted file mode 100644 index c7b5eb273458..000000000000 --- a/sys/arch/sparc64/dev/cgsixvar.h +++ /dev/null @@ -1,84 +0,0 @@ -/* $NetBSD: cgsixvar.h,v 1.1.1.1 1998/06/20 04:58:51 eeh Exp $ */ - -/*- - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Paul Kranenburg. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * color display (cgsix) driver; common definitions. - */ - -union cursor_cmap { /* colormap, like bt_cmap, but tiny */ - u_char cm_map[2][3]; /* 2 R/G/B entries */ - u_int cm_chip[2]; /* 2 chip equivalents */ -}; - -struct cg6_cursor { /* cg6 hardware cursor status */ - short cc_enable; /* cursor is enabled */ - struct fbcurpos cc_pos; /* position */ - struct fbcurpos cc_hot; /* hot-spot */ - struct fbcurpos cc_size; /* size of mask & image fields */ - u_int cc_bits[2][32]; /* space for mask & image bits */ - union cursor_cmap cc_color; /* cursor colormap */ -}; - -/* per-display variables */ -struct cgsix_softc { - struct device sc_dev; /* base device */ - struct sbusdev sc_sd; /* sbus device */ - struct fbdevice sc_fb; /* frame buffer device */ - bus_space_tag_t sc_bustag; - bus_addr_t sc_paddr; /* for device mmap() */ - - volatile struct bt_regs *sc_bt; /* Brooktree registers */ - volatile int *sc_fhc; /* FHC register */ - volatile struct cg6_thc *sc_thc; /* THC registers */ - volatile struct cg6_tec_xxx *sc_tec; /* TEC registers */ - short sc_fhcrev; /* hardware rev */ - short sc_blanked; /* true if blanked */ - struct cg6_cursor sc_cursor; /* software cursor info */ - union bt_cmap sc_cmap; /* Brooktree color map */ -}; - -#ifdef RASTERCONSOLE -extern int cgsix_use_rasterconsole; -#else -#define cgsix_use_rasterconsole 0 -#endif - -/* XXX - export sbus attach struct for overloaded obio bus */ -extern struct cfattach cgsix_sbus_ca; - -void cg6attach __P((struct cgsix_softc *, char *, int, int));