Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/evbmips Add support for the Alchemy Semiconductor P...
details: https://anonhg.NetBSD.org/src/rev/4a0eb1335301
branches: trunk
changeset: 534568:4a0eb1335301
user: simonb <simonb%NetBSD.org@localhost>
date: Mon Jul 29 16:22:55 2002 +0000
description:
Add support for the Alchemy Semiconductor Pb1000 evaluation board for
their Au1000 CPU. Should also work with little or no tweaking for the
Pb1500 board for the Au1500 CPU as well.
diffstat:
sys/arch/evbmips/alchemy/autoconf.c | 129 +++++++
sys/arch/evbmips/alchemy/conf.c | 16 +
sys/arch/evbmips/alchemy/cpu.c | 67 +++
sys/arch/evbmips/alchemy/dev/aupcmcia.c | 69 ++++
sys/arch/evbmips/alchemy/disksubr.c | 275 ++++++++++++++++
sys/arch/evbmips/alchemy/machdep.c | 509 ++++++++++++++++++++++++++++++
sys/arch/evbmips/alchemy/mainbus.c | 115 ++++++
sys/arch/evbmips/alchemy/pb1000_intr.c | 97 +++++
sys/arch/evbmips/alchemy/pb1000_obio.c | 128 +++++++
sys/arch/evbmips/alchemy/pb1000_obiovar.h | 50 ++
sys/arch/evbmips/alchemy/pb1000reg.h | 69 ++++
sys/arch/evbmips/alchemy/pb1000var.h | 53 +++
sys/arch/evbmips/conf/PB1000 | 210 ++++++++++++
sys/arch/evbmips/conf/files.pb1000 | 43 ++
sys/arch/evbmips/conf/std.pb1000.common | 17 +
sys/arch/evbmips/conf/std.pb1000.eb | 5 +
sys/arch/evbmips/conf/std.pb1000.el | 5 +
17 files changed, 1857 insertions(+), 0 deletions(-)
diffs (truncated from 1925 to 300 lines):
diff -r 3b531f23ac11 -r 4a0eb1335301 sys/arch/evbmips/alchemy/autoconf.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/evbmips/alchemy/autoconf.c Mon Jul 29 16:22:55 2002 +0000
@@ -0,0 +1,129 @@
+/* $NetBSD: autoconf.c,v 1.1 2002/07/29 16:22:55 simonb Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * 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.
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/conf.h>
+
+#include <sys/socket.h> /* these three just to get ETHER_ADDR_LEN(!) */
+#include <net/if.h>
+#include <net/if_ether.h>
+
+#include <machine/bus.h>
+#include <machine/yamon.h>
+
+#include <mips/alchemy/include/aureg.h>
+#include <mips/alchemy/include/auvar.h>
+#include <mips/alchemy/include/aubusvar.h>
+
+static struct device *booted_device;
+static int booted_partition;
+
+/*
+ * Configure all devices on system
+ */
+void
+cpu_configure(void)
+{
+
+ intr_init();
+
+ /* Kick off autoconfiguration. */
+ (void)splhigh();
+ if (config_rootfound("mainbus", "mainbus") == NULL)
+ panic("no mainbus found");
+ (void)spl0();
+}
+
+void
+cpu_rootconf(void)
+{
+
+ setroot(booted_device, booted_partition);
+}
+
+void
+device_register(struct device *dev, void *aux)
+{
+ struct cfdata *cf = dev->dv_cfdata;
+ struct cfdriver *cd = cf->cf_driver;
+ struct aubus_attach_args *aa = aux;
+
+ /*
+ * We don't ever know the boot device. But that's because the
+ * firmware only loads from the network.
+ */
+
+ /* Fetch the MAC addresses from YAMON. */
+ if (strcmp(cd->cd_name, "aumac") == 0) {
+ uint8_t ethaddr[ETHER_ADDR_LEN];
+ char prop_name[sizeof("0xffffffff:mac-addr") + 1];
+ const char *cp;
+ char *cp0;
+ int i;
+
+ /* Get the Ethernet address of the first on-board Ethernet. */
+#if defined(ETHADDR)
+ cp = ETHADDR;
+#else
+ cp = yamon_getenv("ethaddr");
+#endif
+ if (cp != NULL) {
+ for (i = 0; i < ETHER_ADDR_LEN; i++) {
+ ethaddr[i] = strtoul(cp, &cp0, 16);
+ cp = cp0 + 1;
+ }
+ if (aa->aa_addr != MAC0_BASE) {
+ /* XXX
+ * The PROM has a variable for the MAC address
+ * of the first interface. For now, just add
+ * 0x10 to the second last octet(!) for the
+ * second interface (Linux does the same).
+ */
+ ethaddr[4] += 0x10;
+ }
+
+ snprintf(prop_name, sizeof(prop_name), "%p:mac-addr",
+ dev);
+ if (alchemy_info_set(prop_name, ethaddr,
+ sizeof(ethaddr), 0, 0))
+ panic("can't set mac address property for "
+ "aumac");
+ }
+ }
+}
diff -r 3b531f23ac11 -r 4a0eb1335301 sys/arch/evbmips/alchemy/conf.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/evbmips/alchemy/conf.c Mon Jul 29 16:22:55 2002 +0000
@@ -0,0 +1,16 @@
+/* $NetBSD: conf.c,v 1.1 2002/07/29 16:22:56 simonb Exp $ */
+
+#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
+
+__KERNEL_RCSID(0, "$NetBSD: conf.c,v 1.1 2002/07/29 16:22:56 simonb Exp $");
+
+#undef CONF_HAVE_ISDN
+#undef CONF_HAVE_PCI
+#undef CONF_HAVE_SCSIPI
+#define CONF_HAVE_USB
+#undef CONF_HAVE_WSCONS
+#undef CONF_HAVE_SPKR
+#undef CONF_HAVE_ISA /* XXX needs a better name */
+#define CONF_HAVE_ALCHEMY
+
+#include "arch/evbmips/evbmips/conf_common.c"
diff -r 3b531f23ac11 -r 4a0eb1335301 sys/arch/evbmips/alchemy/cpu.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/evbmips/alchemy/cpu.c Mon Jul 29 16:22:55 2002 +0000
@@ -0,0 +1,67 @@
+/* $NetBSD: cpu.c,v 1.1 2002/07/29 16:22:56 simonb Exp $ */
+
+/*
+ * Copyright 2002 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Simon Burge for Wasabi Systems, Inc.
+ *
+ * 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 for the NetBSD Project by
+ * Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC
+ * 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/param.h>
+#include <sys/device.h>
+#include <sys/systm.h>
+
+static int cpu_match(struct device *, struct cfdata *, void *);
+static void cpu_attach(struct device *, struct device *, void *);
+
+struct cfattach cpu_ca = {
+ sizeof(struct device), cpu_match, cpu_attach
+};
+
+static int
+cpu_match(struct device *parent, struct cfdata *match, void *aux)
+{
+
+ return 1;
+}
+
+static void
+cpu_attach(struct device *parent, struct device *self, void *aux)
+{
+
+ printf(": %lu.%02luMHz (hz cycles = %lu, delay divisor = %lu)\n",
+ curcpu()->ci_cpu_freq / 1000000,
+ (curcpu()->ci_cpu_freq % 1000000) / 10000,
+ curcpu()->ci_cycles_per_hz, curcpu()->ci_divisor_delay);
+
+ printf("%s: ", self->dv_xname);
+ cpu_identify();
+}
diff -r 3b531f23ac11 -r 4a0eb1335301 sys/arch/evbmips/alchemy/dev/aupcmcia.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/evbmips/alchemy/dev/aupcmcia.c Mon Jul 29 16:22:55 2002 +0000
@@ -0,0 +1,69 @@
+/* $NetBSD: aupcmcia.c,v 1.1 2002/07/29 16:23:00 simonb Exp $ */
+
+/*
+ * Copyright 2002 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Simon Burge for Wasabi Systems, Inc.
+ *
+ * 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 for the NetBSD Project by
+ * Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC
+ * 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/param.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+
+#include <mips/alchemy/include/aureg.h>
+#include <mips/alchemy/include/aubusvar.h>
+
+static int aupcmcia_match(struct device *, struct cfdata *, void *);
+static void aupcmcia_attach(struct device *, struct device *, void *);
+
+struct cfattach aupcmcia_ca = {
+ sizeof (struct device), aupcmcia_match, aupcmcia_attach,
+};
+
+int
+aupcmcia_match(struct device *parent, struct cfdata *match, void *aux)
+{
+ struct aubus_attach_args *aa = aux;
+
+ return (0); /* XXX unimplemented! */
+ if (strcmp(aa->aa_name, match->cf_driver->cd_name) == 0)
+ return (1);
+
+ return (0);
+}
+
+void
+aupcmcia_attach(struct device *parent, struct device *self, void *aux)
+{
+
+ printf(": Au1000 PCMCIA\n"); /* \n in clockattach */
+}
diff -r 3b531f23ac11 -r 4a0eb1335301 sys/arch/evbmips/alchemy/disksubr.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/evbmips/alchemy/disksubr.c Mon Jul 29 16:22:55 2002 +0000
Home |
Main Index |
Thread Index |
Old Index