summaryrefslogtreecommitdiff
path: root/sys/arch/sgi/gio/giovar.h
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2012-03-28 20:44:24 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2012-03-28 20:44:24 +0000
commit6ea0ed8392999d052b79785548a577d7e55b7184 (patch)
treeb4c5fb05563150bb09cc3d203971a18a2b5277bc /sys/arch/sgi/gio/giovar.h
parentb71835f84a40d614f56816274c2400a719e82600 (diff)
Work in progress support for the SGI Indigo, Indigo 2 and Indy systems
(IP20, IP22, IP24) in 64-bit mode, adapated from NetBSD. Currently limited to headless operation, input and video drivers will get ported soon. Should work on all R4000, R4440 and R5000 based systems. L2 cache on R5000SC Indy not supported yet (coming soon), R4600 not supported yet either (coming soon as well). Tested to boot multiuser on: Indigo2 R4000SC, Indy R4000PC, Indy R4000SC, Indy R5000SC, Indigo2 R4400SC. There are still glitches in the Ethernet driver which are being looked at. Expansion support is limited to the GIO E++ board; GIO boards with PCI-GIO bridges not ported yet due to the lack of hardware, and this kind of driver does not port blindly. Most of this work comes from NetBSD, polishing and integration work, as well as putting as many ``R4x00 in 64-bit mode'' erratas as necessary, by yours truly. More work is coming, as well as trying to get some easy way to boot install kernels (as older PROM can only boot ECOFF binaries, which won't do for the kernel).
Diffstat (limited to 'sys/arch/sgi/gio/giovar.h')
-rw-r--r--sys/arch/sgi/gio/giovar.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/sys/arch/sgi/gio/giovar.h b/sys/arch/sgi/gio/giovar.h
new file mode 100644
index 00000000000..6c35c7561da
--- /dev/null
+++ b/sys/arch/sgi/gio/giovar.h
@@ -0,0 +1,75 @@
+/* $OpenBSD: giovar.h,v 1.1 2012/03/28 20:44:23 miod Exp $ */
+/* $NetBSD: giovar.h,v 1.10 2011/07/01 18:53:46 dyoung Exp $ */
+
+/*
+ * Copyright (c) 2000 Soren S. Jorvang
+ * 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.
+ * 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. See http://www.NetBSD.org/ for
+ * information about NetBSD.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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.
+ */
+
+/*
+ * GIO 32/32-bis/64 bus
+ */
+
+struct gio_attach_args {
+ bus_space_tag_t ga_iot;
+ bus_space_handle_t ga_ioh;
+ bus_dma_tag_t ga_dmat;
+
+ int ga_slot; /* not valid if graphics */
+ u_int64_t ga_addr;
+
+ u_int32_t ga_product; /* not valid if graphics */
+};
+
+
+#define GIO_SLOT_GFX 0
+#define GIO_SLOT_EXP0 1
+#define GIO_SLOT_EXP1 2
+
+#define GIO_ARB_RT 0x001 /* real-time device */
+#define GIO_ARB_LB 0x002 /* long-burst device */
+
+#define GIO_ARB_MST 0x004 /* bus master enable */
+#define GIO_ARB_SLV 0x008 /* slave */
+
+#define GIO_ARB_PIPE 0x010 /* pipelining enable */
+#define GIO_ARB_NOPIPE 0x020 /* pipelining disable */
+
+#define GIO_ARB_32BIT 0x040 /* 32-bit transfers */
+#define GIO_ARB_64BIT 0x080 /* 64-bit transfers */
+
+#define GIO_ARB_HPC2_32BIT 0x100 /* 32-bit secondary HPC (ignores slot)*/
+#define GIO_ARB_HPC2_64BIT 0x200 /* 64-bit secondary HPC (ignores slot)*/
+
+int gio_cnattach(void);
+int gio_arb_config(int, uint32_t);
+void *gio_intr_establish(int, int, int (*)(void *), void *,
+ const char *);
+const char *gio_product_string(int);