diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2006-05-15 21:38:37 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2006-05-15 21:38:37 +0000 |
commit | 5b1e4a82e06dde4a5aa51519ce556f45f4feb5f4 (patch) | |
tree | 95cdc6f4405e3b3aa23d4cd5b12e70e76e4e5efe | |
parent | 9ab3ec9cee4784fc4a42ad5b338c0cf27f47c7cb (diff) |
Merge creator attachment code again, it turns out the upa/mainbus attachment
code split is not necessary after all; ok jason@
-rw-r--r-- | sys/arch/sparc64/conf/files.sparc64 | 9 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/creator.c | 83 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/creator_mainbus.c | 131 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/creator_upa.c | 130 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/creatorvar.h | 4 |
5 files changed, 80 insertions, 277 deletions
diff --git a/sys/arch/sparc64/conf/files.sparc64 b/sys/arch/sparc64/conf/files.sparc64 index 44d1b5e6c22..7b987204a7e 100644 --- a/sys/arch/sparc64/conf/files.sparc64 +++ b/sys/arch/sparc64/conf/files.sparc64 @@ -1,4 +1,4 @@ -# $OpenBSD: files.sparc64,v 1.66 2006/03/04 10:29:24 miod Exp $ +# $OpenBSD: files.sparc64,v 1.67 2006/05/15 21:38:34 miod Exp $ # $NetBSD: files.sparc64,v 1.50 2001/08/10 20:53:50 eeh Exp $ # maxpartitions must be first item in files.${ARCH} @@ -72,14 +72,9 @@ attach sbus at xbox with sbus_xbox file arch/sparc64/dev/sbus.c sbus device creator: wsemuldisplaydev, rasops32, wsemul_sun +attach creator at mainbus, upa file arch/sparc64/dev/creator.c creator -attach creator at mainbus with creator_mainbus -file arch/sparc64/dev/creator_mainbus.c creator_mainbus - -attach creator at upa with creator_upa -file arch/sparc64/dev/creator_upa.c creator_upa - include "dev/pci/files.pci" major {wd = 12} diff --git a/sys/arch/sparc64/dev/creator.c b/sys/arch/sparc64/dev/creator.c index faf40df544f..eee2c185e6f 100644 --- a/sys/arch/sparc64/dev/creator.c +++ b/sys/arch/sparc64/dev/creator.c @@ -1,4 +1,4 @@ -/* $OpenBSD: creator.c,v 1.34 2005/04/05 21:49:33 miod Exp $ */ +/* $OpenBSD: creator.c,v 1.35 2006/05/15 21:38:36 miod Exp $ */ /* * Copyright (c) 2002 Jason L. Wright (jason@thought.net) @@ -47,6 +47,8 @@ #include <sparc64/dev/creatorreg.h> #include <sparc64/dev/creatorvar.h> +int creator_match(struct device *, void *, void *); +void creator_attach(struct device *, struct device *, void *); int creator_ioctl(void *, u_long, caddr_t, int, struct proc *); int creator_alloc_screen(void *, const struct wsscreen_descr *, void **, int *, int *, long *); @@ -82,13 +84,74 @@ struct cfdriver creator_cd = { NULL, "creator", DV_DULL }; +struct cfattach creator_ca = { + sizeof(struct creator_softc), creator_match, creator_attach +}; + +int +creator_match(parent, match, aux) + struct device *parent; + void *match, *aux; +{ + struct mainbus_attach_args *ma = aux; + + if (strcmp(ma->ma_name, "SUNW,ffb") == 0 || + strcmp(ma->ma_name, "SUNW,afb") == 0) + return (1); + return (0); +} + void -creator_attach(struct creator_softc *sc) +creator_attach(parent, self, aux) + struct device *parent, *self; + void *aux; { + struct creator_softc *sc = (struct creator_softc *)self; + struct mainbus_attach_args *ma = aux; + extern int fbnode; + int i, nregs; char *model; int btype; - printf(":"); + sc->sc_bt = ma->ma_bustag; + + nregs = min(ma->ma_nreg, FFB_NREGS); + + if (nregs <= FFB_REG_DFB24) { + printf(": no dfb24 regs found\n"); + return; + } + + if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_DFB24].ur_paddr, + ma->ma_reg[FFB_REG_DFB24].ur_len, BUS_SPACE_MAP_LINEAR, + &sc->sc_pixel_h)) { + printf(": failed to map dfb24\n"); + return; + } + + if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_FBC].ur_paddr, + ma->ma_reg[FFB_REG_FBC].ur_len, 0, &sc->sc_fbc_h)) { + printf(": failed to map fbc\n"); + goto unmap_dfb24; + } + + if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_DAC].ur_paddr, + ma->ma_reg[FFB_REG_DAC].ur_len, 0, &sc->sc_dac_h)) { + printf(": failed to map dac\n"); + goto unmap_fbc; + } + + for (i = 0; i < nregs; i++) { + sc->sc_addrs[i] = ma->ma_reg[i].ur_paddr; + sc->sc_sizes[i] = ma->ma_reg[i].ur_len; + } + sc->sc_nreg = nregs; + + sc->sc_console = (fbnode == ma->ma_node); + sc->sc_node = ma->ma_node; + + if (strcmp(ma->ma_name, "SUNW,afb") == 0) + sc->sc_type = FFB_AFB; /* * Prom reports only the length of the fcode header, we need @@ -99,11 +162,11 @@ creator_attach(struct creator_softc *sc) if (sc->sc_type == FFB_CREATOR) { btype = getpropint(sc->sc_node, "board_type", 0); if ((btype & 7) == 3) - printf(" Creator3D"); + printf(": Creator3D"); else - printf(" Creator"); + printf(": Creator"); } else - printf(" Elite3D"); + printf(": Elite3D"); model = getpropstring(sc->sc_node, "model"); if (model == NULL || strlen(model) == 0) @@ -140,6 +203,14 @@ creator_attach(struct creator_softc *sc) } fbwscons_attach(&sc->sc_sunfb, &creator_accessops, sc->sc_console); + return; + +unmap_fbc: + bus_space_unmap(sc->sc_bt, sc->sc_fbc_h, + ma->ma_reg[FFB_REG_FBC].ur_len); +unmap_dfb24: + bus_space_unmap(sc->sc_bt, sc->sc_pixel_h, + ma->ma_reg[FFB_REG_DFB24].ur_len); } int diff --git a/sys/arch/sparc64/dev/creator_mainbus.c b/sys/arch/sparc64/dev/creator_mainbus.c deleted file mode 100644 index 8fba2f74a03..00000000000 --- a/sys/arch/sparc64/dev/creator_mainbus.c +++ /dev/null @@ -1,131 +0,0 @@ -/* $OpenBSD: creator_mainbus.c,v 1.9 2005/04/05 21:49:33 miod Exp $ */ - -/* - * Copyright (c) 2002 Jason L. Wright (jason@thought.net), - * Federico G. Schwindt (fgsch@openbsd.org) - * All rights reserved. - * - * 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - */ - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/device.h> -#include <sys/conf.h> -#include <sys/timeout.h> - -#include <machine/bus.h> -#include <machine/autoconf.h> -#include <machine/openfirm.h> - -#include <dev/wscons/wsconsio.h> -#include <dev/wscons/wsdisplayvar.h> -#include <dev/wscons/wscons_raster.h> -#include <dev/rasops/rasops.h> -#include <machine/fbvar.h> - -#include <sparc64/dev/creatorreg.h> -#include <sparc64/dev/creatorvar.h> - -int creator_mainbus_match(struct device *, void *, void *); -void creator_mainbus_attach(struct device *, struct device *, void *); - -struct cfattach creator_mainbus_ca = { - sizeof(struct creator_softc), creator_mainbus_match, - creator_mainbus_attach -}; - -int -creator_mainbus_match(parent, match, aux) - struct device *parent; - void *match, *aux; -{ - struct mainbus_attach_args *ma = aux; - - if (strcmp(ma->ma_name, "SUNW,ffb") == 0 || - strcmp(ma->ma_name, "SUNW,afb") == 0) - return (1); - return (0); -} - -void -creator_mainbus_attach(parent, self, aux) - struct device *parent, *self; - void *aux; -{ - struct creator_softc *sc = (struct creator_softc *)self; - struct mainbus_attach_args *ma = aux; - extern int fbnode; - int i, nregs; - - sc->sc_bt = ma->ma_bustag; - - nregs = min(ma->ma_nreg, FFB_NREGS); - - if (nregs <= FFB_REG_DFB24) { - printf(": no dfb24 regs found\n"); - return; - } - - if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_DFB24].ur_paddr, - ma->ma_reg[FFB_REG_DFB24].ur_len, BUS_SPACE_MAP_LINEAR, - &sc->sc_pixel_h)) { - printf(": failed to map dfb24\n"); - return; - } - - if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_FBC].ur_paddr, - ma->ma_reg[FFB_REG_FBC].ur_len, 0, &sc->sc_fbc_h)) { - printf(": failed to map fbc\n"); - goto unmap_dfb24; - } - - if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_DAC].ur_paddr, - ma->ma_reg[FFB_REG_DAC].ur_len, 0, &sc->sc_dac_h)) { - printf(": failed to map dac\n"); - goto unmap_fbc; - } - - for (i = 0; i < nregs; i++) { - sc->sc_addrs[i] = ma->ma_reg[i].ur_paddr; - sc->sc_sizes[i] = ma->ma_reg[i].ur_len; - } - sc->sc_nreg = nregs; - - sc->sc_console = (fbnode == ma->ma_node); - sc->sc_node = ma->ma_node; - - if (strcmp(ma->ma_name, "SUNW,afb") == 0) - sc->sc_type = FFB_AFB; - - creator_attach(sc); - return; - -unmap_fbc: - bus_space_unmap(sc->sc_bt, sc->sc_fbc_h, - ma->ma_reg[FFB_REG_FBC].ur_len); -unmap_dfb24: - bus_space_unmap(sc->sc_bt, sc->sc_pixel_h, - ma->ma_reg[FFB_REG_DFB24].ur_len); -} diff --git a/sys/arch/sparc64/dev/creator_upa.c b/sys/arch/sparc64/dev/creator_upa.c deleted file mode 100644 index fa259985b19..00000000000 --- a/sys/arch/sparc64/dev/creator_upa.c +++ /dev/null @@ -1,130 +0,0 @@ -/* $OpenBSD: creator_upa.c,v 1.8 2005/04/05 21:49:33 miod Exp $ */ - -/* - * Copyright (c) 2002 Jason L. Wright (jason@thought.net) - * All rights reserved. - * - * 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - */ - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/device.h> -#include <sys/conf.h> -#include <sys/timeout.h> - -#include <machine/bus.h> -#include <machine/autoconf.h> -#include <machine/openfirm.h> - -#include <dev/wscons/wsconsio.h> -#include <dev/wscons/wsdisplayvar.h> -#include <dev/wscons/wscons_raster.h> -#include <dev/rasops/rasops.h> -#include <machine/fbvar.h> - -#include <sparc64/dev/creatorreg.h> -#include <sparc64/dev/creatorvar.h> - -int creator_upa_match(struct device *, void *, void *); -void creator_upa_attach(struct device *, struct device *, void *); - -struct cfattach creator_upa_ca = { - sizeof(struct creator_softc), creator_upa_match, - creator_upa_attach -}; - -int -creator_upa_match(parent, match, aux) - struct device *parent; - void *match, *aux; -{ - struct mainbus_attach_args *ma = aux; - - if (strcmp(ma->ma_name, "SUNW,ffb") == 0 || - strcmp(ma->ma_name, "SUNW,afb") == 0) - return (1); - return (0); -} - -void -creator_upa_attach(parent, self, aux) - struct device *parent, *self; - void *aux; -{ - struct creator_softc *sc = (struct creator_softc *)self; - struct mainbus_attach_args *ma = aux; - extern int fbnode; - int i, nregs; - - sc->sc_bt = ma->ma_bustag; - - nregs = min(ma->ma_nreg, FFB_NREGS); - - if (nregs <= FFB_REG_DFB24) { - printf(": no dfb24 regs found\n"); - return; - } - - if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_DFB24].ur_paddr, - ma->ma_reg[FFB_REG_DFB24].ur_len, BUS_SPACE_MAP_LINEAR, - &sc->sc_pixel_h)) { - printf(": failed to map dfb24\n"); - return; - } - - if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_FBC].ur_paddr, - ma->ma_reg[FFB_REG_FBC].ur_len, 0, &sc->sc_fbc_h)) { - printf(": failed to map fbc\n"); - goto unmap_dfb24; - } - - if (bus_space_map(sc->sc_bt, ma->ma_reg[FFB_REG_DAC].ur_paddr, - ma->ma_reg[FFB_REG_DAC].ur_len, 0, &sc->sc_dac_h)) { - printf(": failed to map dac\n"); - goto unmap_fbc; - } - - for (i = 0; i < nregs; i++) { - sc->sc_addrs[i] = ma->ma_reg[i].ur_paddr; - sc->sc_sizes[i] = ma->ma_reg[i].ur_len; - } - sc->sc_nreg = nregs; - - sc->sc_console = (fbnode == ma->ma_node); - sc->sc_node = ma->ma_node; - - if (strcmp(ma->ma_name, "SUNW,afb") == 0) - sc->sc_type = FFB_AFB; - - creator_attach(sc); - return; - -unmap_fbc: - bus_space_unmap(sc->sc_bt, sc->sc_fbc_h, - ma->ma_reg[FFB_REG_FBC].ur_len); -unmap_dfb24: - bus_space_unmap(sc->sc_bt, sc->sc_pixel_h, - ma->ma_reg[FFB_REG_DFB24].ur_len); -} diff --git a/sys/arch/sparc64/dev/creatorvar.h b/sys/arch/sparc64/dev/creatorvar.h index fd9791a1f29..1987bc1fc5b 100644 --- a/sys/arch/sparc64/dev/creatorvar.h +++ b/sys/arch/sparc64/dev/creatorvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: creatorvar.h,v 1.10 2003/06/17 17:35:40 miod Exp $ */ +/* $OpenBSD: creatorvar.h,v 1.11 2006/05/15 21:38:36 miod Exp $ */ /* * Copyright (c) 2002 Jason L. Wright (jason@thought.net), @@ -64,5 +64,3 @@ struct creator_softc { bus_space_write_4((sc)->sc_bt, (sc)->sc_dac_h, (r), (v)) #define DAC_READ(sc,r) \ bus_space_read_4((sc)->sc_bt, (sc)->sc_dac_h, (r)) - -void creator_attach(struct creator_softc *); |