Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/sommerfeld_i386mp_1]: src/sys/arch/i386/pci Add pci_bridge_foreach ().
details: https://anonhg.NetBSD.org/src/rev/d9df06e6f03d
branches: sommerfeld_i386mp_1
changeset: 482480:d9df06e6f03d
user: uch <uch%NetBSD.org@localhost>
date: Tue Jan 22 15:07:28 2002 +0000
description:
Add pci_bridge_foreach ().
diffstat:
sys/arch/i386/pci/pcibios.h | 119 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 119 insertions(+), 0 deletions(-)
diffs (123 lines):
diff -r 768f8a61f799 -r d9df06e6f03d sys/arch/i386/pci/pcibios.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/pci/pcibios.h Tue Jan 22 15:07:28 2002 +0000
@@ -0,0 +1,119 @@
+/* $NetBSD: pcibios.h,v 1.5.2.2 2002/01/22 15:07:28 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.
+ */
+
+/*
+ * 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, void*),
+ void *context));
+
+void pci_device_foreach_min __P((pci_chipset_tag_t, int, int,
+ void (*) (pci_chipset_tag_t, pcitag_t, void*),
+ void *context));
+
+void pci_bridge_foreach(pci_chipset_tag_t, int, int,
+ void (*) (pci_chipset_tag_t, pcitag_t, void *), void *);
+
+#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
Home |
Main Index |
Thread Index |
Old Index