summaryrefslogtreecommitdiff
path: root/sys/arch/i386/pci/pcibiosvar.h
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2000-10-31 18:56:43 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2000-10-31 18:56:43 +0000
commit8e1e3ef36d4f83eb741f1f7d60a9001e6e4aa359 (patch)
tree1032b1d79ccabc149f9ff737cd29060cd2f5947d /sys/arch/i386/pci/pcibiosvar.h
parent1242ae4087e29306d7461a376b40fcf16cd253b8 (diff)
rename pcibios.h to pcibiosvar.h
Diffstat (limited to 'sys/arch/i386/pci/pcibiosvar.h')
-rw-r--r--sys/arch/i386/pci/pcibiosvar.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/sys/arch/i386/pci/pcibiosvar.h b/sys/arch/i386/pci/pcibiosvar.h
new file mode 100644
index 00000000000..6b944a44da3
--- /dev/null
+++ b/sys/arch/i386/pci/pcibiosvar.h
@@ -0,0 +1,122 @@
+/* $OpenBSD: pcibiosvar.h,v 1.1 2000/10/31 18:56:42 deraadt Exp $ */
+/* $NetBSD: pcibios.h,v 1.2 2000/04/28 17:15:16 uch Exp $ */
+
+/*
+ * Copyright (c) 1999, by UCHIYAMA Yasushi
+ * 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. The name of the developer 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 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 AUTHOR 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.
+ */
+
+/*
+ * Data structure definitions for the PCI BIOS interface.
+ */
+
+#define PCIBIOS_ADDR_FIXUP 0x001
+#define PCIBIOS_BUS_FIXUP 0x002
+#define PCIBIOS_INTR_FIXUP 0x004
+#define PCIBIOS_INTR_GUESS 0x008
+
+/*
+ * PCI BIOS return codes.
+ */
+#define PCIBIOS_SUCCESS 0x00
+#define PCIBIOS_SERVICE_NOT_PRESENT 0x80
+#define PCIBIOS_FUNCTION_NOT_SUPPORTED 0x81
+#define PCIBIOS_BAD_VENDOR_ID 0x83
+#define PCIBIOS_DEVICE_NOT_FOUND 0x86
+#define PCIBIOS_BAD_REGISTER_NUMBER 0x87
+#define PCIBIOS_SET_FAILED 0x88
+#define PCIBIOS_BUFFER_TOO_SMALL 0x89
+
+/*
+ * PCI IRQ Routing Table definitions.
+ */
+
+/*
+ * Slot entry (per PCI 2.1)
+ */
+struct pcibios_linkmap {
+ u_int8_t link;
+ u_int16_t bitmap;
+} __attribute__((__packed__));
+
+struct pcibios_intr_routing {
+ u_int8_t bus;
+ u_int8_t device;
+ struct pcibios_linkmap linkmap[4]; /* INT[A:D]# */
+ u_int8_t slot;
+ u_int8_t reserved;
+} __attribute__((__packed__));
+
+/*
+ * $PIR header. Reference:
+ *
+ * http://www.microsoft.com/HWDEV/busbios/PCIIRQ.htm
+ */
+struct pcibios_pir_header {
+ u_int32_t signature; /* $PIR */
+ u_int16_t version;
+ u_int16_t tablesize;
+ u_int8_t router_bus;
+ u_int8_t router_devfunc;
+ u_int16_t exclusive_irq;
+ u_int32_t compat_router; /* PCI vendor/product */
+ u_int32_t miniport;
+ u_int8_t reserved[11];
+ u_int8_t checksum;
+} __attribute__((__packed__));
+
+#define PIR_DEVFUNC_DEVICE(devfunc) (((devfunc) >> 3) & 0x1f)
+#define PIR_DEVFUNC_FUNCTION(devfunc) ((devfunc) & 7)
+
+void pcibios_init __P((void));
+
+extern struct pcibios_pir_header pcibios_pir_header;
+extern struct pcibios_intr_routing *pcibios_pir_table;
+extern int pcibios_pir_table_nentries;
+extern int pcibios_max_bus;
+
+void pci_device_foreach __P((pci_chipset_tag_t, int,
+ void (*) (pci_chipset_tag_t, pcitag_t)));
+
+#ifdef PCIBIOSVERBOSE
+extern int pcibiosverbose;
+
+#define PCIBIOS_PRINTV(arg) \
+ do { \
+ if (pcibiosverbose) \
+ printf arg; \
+ } while (0)
+#define PCIBIOS_PRINTVN(n, arg) \
+ do { \
+ if (pcibiosverbose > (n)) \
+ printf arg; \
+ } while (0)
+#else
+#define PCIBIOS_PRINTV(arg)
+#define PCIBIOS_PRINTVN(n, arg)
+#endif
+
+void pci_device_foreach __P((pci_chipset_tag_t, int,
+ void (*) __P((pci_chipset_tag_t, pcitag_t))));
+
+int pcibios_flags;