summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-17 16:54:29 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-17 17:02:21 +0200
commit837df26074502c7fd3833ac8e574c5ef279f70f7 (patch)
tree6450547a876cbd620ab6781ba59eb4967a21ee66
parentUse MIPS in_cksum.c for SPARC (diff)
downloadrtems-libbsd-837df26074502c7fd3833ac8e574c5ef279f70f7.tar.bz2
Add PCI and PCIB interface files
-rw-r--r--Makefile2
-rwxr-xr-xfreebsd-to-rtems.py5
-rw-r--r--freebsd/local/pci_if.c172
-rw-r--r--freebsd/local/pci_if.h246
-rw-r--r--freebsd/local/pcib_if.c101
-rw-r--r--freebsd/local/pcib_if.h137
6 files changed, 661 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 177f30ef..d82f0e25 100644
--- a/Makefile
+++ b/Makefile
@@ -314,6 +314,8 @@ C_FILES += freebsd/local/bus_if.c
C_FILES += freebsd/local/device_if.c
C_FILES += freebsd/local/cryptodev_if.c
C_FILES += freebsd/local/miibus_if.c
+C_FILES += freebsd/local/pci_if.c
+C_FILES += freebsd/local/pcib_if.c
C_FILES += freebsd/kern/init_main.c
C_FILES += freebsd/kern/kern_mib.c
C_FILES += freebsd/kern/kern_mbuf.c
diff --git a/freebsd-to-rtems.py b/freebsd-to-rtems.py
index 803b2733..c2b1fd0c 100755
--- a/freebsd-to-rtems.py
+++ b/freebsd-to-rtems.py
@@ -563,7 +563,6 @@ rtems.addEmptyHeaderFiles(
#'machine/vmparam.h',
'local/opt_bce.h',
'local/opt_ntp.h',
- 'local/pci_if.h',
'security/audit/audit.h',
'sys/bio.h',
'sys/copyright.h',
@@ -680,6 +679,8 @@ local.addHeaderFiles(
'local/cryptodev_if.h',
'local/miibus_if.h',
'local/miidevs.h',
+ 'local/pci_if.h',
+ 'local/pcib_if.h',
]
)
local.addSourceFiles(
@@ -690,6 +691,8 @@ local.addSourceFiles(
'local/device_if.c',
'local/cryptodev_if.c',
'local/miibus_if.c',
+ 'local/pci_if.c',
+ 'local/pcib_if.c',
]
)
diff --git a/freebsd/local/pci_if.c b/freebsd/local/pci_if.c
new file mode 100644
index 00000000..257e890b
--- /dev/null
+++ b/freebsd/local/pci_if.c
@@ -0,0 +1,172 @@
+#include <freebsd/machine/rtems-bsd-config.h>
+
+/*
+ * This file is produced automatically.
+ * Do not modify anything in here by hand.
+ *
+ * Created from source file
+ * dev/pci/pci_if.m
+ * with
+ * makeobjops.awk
+ *
+ * See the source file for legal information
+ */
+
+#include <freebsd/sys/param.h>
+#include <freebsd/sys/queue.h>
+#include <freebsd/sys/kernel.h>
+#include <freebsd/sys/kobj.h>
+#include <freebsd/sys/bus.h>
+#include <freebsd/local/pci_if.h>
+
+
+static int
+null_msi_count(device_t dev, device_t child)
+{
+ return (0);
+}
+
+struct kobj_method pci_read_config_method_default = {
+ &pci_read_config_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_read_config_desc = {
+ 0, &pci_read_config_method_default
+};
+
+struct kobj_method pci_write_config_method_default = {
+ &pci_write_config_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_write_config_desc = {
+ 0, &pci_write_config_method_default
+};
+
+struct kobj_method pci_get_powerstate_method_default = {
+ &pci_get_powerstate_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_get_powerstate_desc = {
+ 0, &pci_get_powerstate_method_default
+};
+
+struct kobj_method pci_set_powerstate_method_default = {
+ &pci_set_powerstate_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_set_powerstate_desc = {
+ 0, &pci_set_powerstate_method_default
+};
+
+struct kobj_method pci_get_vpd_ident_method_default = {
+ &pci_get_vpd_ident_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_get_vpd_ident_desc = {
+ 0, &pci_get_vpd_ident_method_default
+};
+
+struct kobj_method pci_get_vpd_readonly_method_default = {
+ &pci_get_vpd_readonly_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_get_vpd_readonly_desc = {
+ 0, &pci_get_vpd_readonly_method_default
+};
+
+struct kobj_method pci_enable_busmaster_method_default = {
+ &pci_enable_busmaster_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_enable_busmaster_desc = {
+ 0, &pci_enable_busmaster_method_default
+};
+
+struct kobj_method pci_disable_busmaster_method_default = {
+ &pci_disable_busmaster_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_disable_busmaster_desc = {
+ 0, &pci_disable_busmaster_method_default
+};
+
+struct kobj_method pci_enable_io_method_default = {
+ &pci_enable_io_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_enable_io_desc = {
+ 0, &pci_enable_io_method_default
+};
+
+struct kobj_method pci_disable_io_method_default = {
+ &pci_disable_io_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_disable_io_desc = {
+ 0, &pci_disable_io_method_default
+};
+
+struct kobj_method pci_assign_interrupt_method_default = {
+ &pci_assign_interrupt_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_assign_interrupt_desc = {
+ 0, &pci_assign_interrupt_method_default
+};
+
+struct kobj_method pci_find_extcap_method_default = {
+ &pci_find_extcap_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_find_extcap_desc = {
+ 0, &pci_find_extcap_method_default
+};
+
+struct kobj_method pci_alloc_msi_method_default = {
+ &pci_alloc_msi_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_alloc_msi_desc = {
+ 0, &pci_alloc_msi_method_default
+};
+
+struct kobj_method pci_alloc_msix_method_default = {
+ &pci_alloc_msix_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_alloc_msix_desc = {
+ 0, &pci_alloc_msix_method_default
+};
+
+struct kobj_method pci_remap_msix_method_default = {
+ &pci_remap_msix_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_remap_msix_desc = {
+ 0, &pci_remap_msix_method_default
+};
+
+struct kobj_method pci_release_msi_method_default = {
+ &pci_release_msi_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pci_release_msi_desc = {
+ 0, &pci_release_msi_method_default
+};
+
+struct kobj_method pci_msi_count_method_default = {
+ &pci_msi_count_desc, (kobjop_t) null_msi_count
+};
+
+struct kobjop_desc pci_msi_count_desc = {
+ 0, &pci_msi_count_method_default
+};
+
+struct kobj_method pci_msix_count_method_default = {
+ &pci_msix_count_desc, (kobjop_t) null_msi_count
+};
+
+struct kobjop_desc pci_msix_count_desc = {
+ 0, &pci_msix_count_method_default
+};
+
diff --git a/freebsd/local/pci_if.h b/freebsd/local/pci_if.h
index 936ffd88..c2028bf8 100644
--- a/freebsd/local/pci_if.h
+++ b/freebsd/local/pci_if.h
@@ -1 +1,245 @@
-/* EMPTY */
+/*
+ * This file is produced automatically.
+ * Do not modify anything in here by hand.
+ *
+ * Created from source file
+ * dev/pci/pci_if.m
+ * with
+ * makeobjops.awk
+ *
+ * See the source file for legal information
+ */
+
+
+#ifndef _pci_if_h_
+#define _pci_if_h_
+
+/** @brief Unique descriptor for the PCI_READ_CONFIG() method */
+extern struct kobjop_desc pci_read_config_desc;
+/** @brief A function implementing the PCI_READ_CONFIG() method */
+typedef u_int32_t pci_read_config_t(device_t dev, device_t child, int reg,
+ int width);
+
+static __inline u_int32_t PCI_READ_CONFIG(device_t dev, device_t child, int reg,
+ int width)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_read_config);
+ return ((pci_read_config_t *) _m)(dev, child, reg, width);
+}
+
+/** @brief Unique descriptor for the PCI_WRITE_CONFIG() method */
+extern struct kobjop_desc pci_write_config_desc;
+/** @brief A function implementing the PCI_WRITE_CONFIG() method */
+typedef void pci_write_config_t(device_t dev, device_t child, int reg,
+ u_int32_t val, int width);
+
+static __inline void PCI_WRITE_CONFIG(device_t dev, device_t child, int reg,
+ u_int32_t val, int width)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_write_config);
+ ((pci_write_config_t *) _m)(dev, child, reg, val, width);
+}
+
+/** @brief Unique descriptor for the PCI_GET_POWERSTATE() method */
+extern struct kobjop_desc pci_get_powerstate_desc;
+/** @brief A function implementing the PCI_GET_POWERSTATE() method */
+typedef int pci_get_powerstate_t(device_t dev, device_t child);
+
+static __inline int PCI_GET_POWERSTATE(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_get_powerstate);
+ return ((pci_get_powerstate_t *) _m)(dev, child);
+}
+
+/** @brief Unique descriptor for the PCI_SET_POWERSTATE() method */
+extern struct kobjop_desc pci_set_powerstate_desc;
+/** @brief A function implementing the PCI_SET_POWERSTATE() method */
+typedef int pci_set_powerstate_t(device_t dev, device_t child, int state);
+
+static __inline int PCI_SET_POWERSTATE(device_t dev, device_t child, int state)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_set_powerstate);
+ return ((pci_set_powerstate_t *) _m)(dev, child, state);
+}
+
+/** @brief Unique descriptor for the PCI_GET_VPD_IDENT() method */
+extern struct kobjop_desc pci_get_vpd_ident_desc;
+/** @brief A function implementing the PCI_GET_VPD_IDENT() method */
+typedef int pci_get_vpd_ident_t(device_t dev, device_t child,
+ const char **identptr);
+
+static __inline int PCI_GET_VPD_IDENT(device_t dev, device_t child,
+ const char **identptr)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_get_vpd_ident);
+ return ((pci_get_vpd_ident_t *) _m)(dev, child, identptr);
+}
+
+/** @brief Unique descriptor for the PCI_GET_VPD_READONLY() method */
+extern struct kobjop_desc pci_get_vpd_readonly_desc;
+/** @brief A function implementing the PCI_GET_VPD_READONLY() method */
+typedef int pci_get_vpd_readonly_t(device_t dev, device_t child, const char *kw,
+ const char **vptr);
+
+static __inline int PCI_GET_VPD_READONLY(device_t dev, device_t child,
+ const char *kw, const char **vptr)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_get_vpd_readonly);
+ return ((pci_get_vpd_readonly_t *) _m)(dev, child, kw, vptr);
+}
+
+/** @brief Unique descriptor for the PCI_ENABLE_BUSMASTER() method */
+extern struct kobjop_desc pci_enable_busmaster_desc;
+/** @brief A function implementing the PCI_ENABLE_BUSMASTER() method */
+typedef int pci_enable_busmaster_t(device_t dev, device_t child);
+
+static __inline int PCI_ENABLE_BUSMASTER(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_enable_busmaster);
+ return ((pci_enable_busmaster_t *) _m)(dev, child);
+}
+
+/** @brief Unique descriptor for the PCI_DISABLE_BUSMASTER() method */
+extern struct kobjop_desc pci_disable_busmaster_desc;
+/** @brief A function implementing the PCI_DISABLE_BUSMASTER() method */
+typedef int pci_disable_busmaster_t(device_t dev, device_t child);
+
+static __inline int PCI_DISABLE_BUSMASTER(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_disable_busmaster);
+ return ((pci_disable_busmaster_t *) _m)(dev, child);
+}
+
+/** @brief Unique descriptor for the PCI_ENABLE_IO() method */
+extern struct kobjop_desc pci_enable_io_desc;
+/** @brief A function implementing the PCI_ENABLE_IO() method */
+typedef int pci_enable_io_t(device_t dev, device_t child, int space);
+
+static __inline int PCI_ENABLE_IO(device_t dev, device_t child, int space)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_enable_io);
+ return ((pci_enable_io_t *) _m)(dev, child, space);
+}
+
+/** @brief Unique descriptor for the PCI_DISABLE_IO() method */
+extern struct kobjop_desc pci_disable_io_desc;
+/** @brief A function implementing the PCI_DISABLE_IO() method */
+typedef int pci_disable_io_t(device_t dev, device_t child, int space);
+
+static __inline int PCI_DISABLE_IO(device_t dev, device_t child, int space)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_disable_io);
+ return ((pci_disable_io_t *) _m)(dev, child, space);
+}
+
+/** @brief Unique descriptor for the PCI_ASSIGN_INTERRUPT() method */
+extern struct kobjop_desc pci_assign_interrupt_desc;
+/** @brief A function implementing the PCI_ASSIGN_INTERRUPT() method */
+typedef int pci_assign_interrupt_t(device_t dev, device_t child);
+
+static __inline int PCI_ASSIGN_INTERRUPT(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_assign_interrupt);
+ return ((pci_assign_interrupt_t *) _m)(dev, child);
+}
+
+/** @brief Unique descriptor for the PCI_FIND_EXTCAP() method */
+extern struct kobjop_desc pci_find_extcap_desc;
+/** @brief A function implementing the PCI_FIND_EXTCAP() method */
+typedef int pci_find_extcap_t(device_t dev, device_t child, int capability,
+ int *capreg);
+
+static __inline int PCI_FIND_EXTCAP(device_t dev, device_t child,
+ int capability, int *capreg)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_find_extcap);
+ return ((pci_find_extcap_t *) _m)(dev, child, capability, capreg);
+}
+
+/** @brief Unique descriptor for the PCI_ALLOC_MSI() method */
+extern struct kobjop_desc pci_alloc_msi_desc;
+/** @brief A function implementing the PCI_ALLOC_MSI() method */
+typedef int pci_alloc_msi_t(device_t dev, device_t child, int *count);
+
+static __inline int PCI_ALLOC_MSI(device_t dev, device_t child, int *count)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_alloc_msi);
+ return ((pci_alloc_msi_t *) _m)(dev, child, count);
+}
+
+/** @brief Unique descriptor for the PCI_ALLOC_MSIX() method */
+extern struct kobjop_desc pci_alloc_msix_desc;
+/** @brief A function implementing the PCI_ALLOC_MSIX() method */
+typedef int pci_alloc_msix_t(device_t dev, device_t child, int *count);
+
+static __inline int PCI_ALLOC_MSIX(device_t dev, device_t child, int *count)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_alloc_msix);
+ return ((pci_alloc_msix_t *) _m)(dev, child, count);
+}
+
+/** @brief Unique descriptor for the PCI_REMAP_MSIX() method */
+extern struct kobjop_desc pci_remap_msix_desc;
+/** @brief A function implementing the PCI_REMAP_MSIX() method */
+typedef int pci_remap_msix_t(device_t dev, device_t child, int count,
+ const u_int *vectors);
+
+static __inline int PCI_REMAP_MSIX(device_t dev, device_t child, int count,
+ const u_int *vectors)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_remap_msix);
+ return ((pci_remap_msix_t *) _m)(dev, child, count, vectors);
+}
+
+/** @brief Unique descriptor for the PCI_RELEASE_MSI() method */
+extern struct kobjop_desc pci_release_msi_desc;
+/** @brief A function implementing the PCI_RELEASE_MSI() method */
+typedef int pci_release_msi_t(device_t dev, device_t child);
+
+static __inline int PCI_RELEASE_MSI(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_release_msi);
+ return ((pci_release_msi_t *) _m)(dev, child);
+}
+
+/** @brief Unique descriptor for the PCI_MSI_COUNT() method */
+extern struct kobjop_desc pci_msi_count_desc;
+/** @brief A function implementing the PCI_MSI_COUNT() method */
+typedef int pci_msi_count_t(device_t dev, device_t child);
+
+static __inline int PCI_MSI_COUNT(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_msi_count);
+ return ((pci_msi_count_t *) _m)(dev, child);
+}
+
+/** @brief Unique descriptor for the PCI_MSIX_COUNT() method */
+extern struct kobjop_desc pci_msix_count_desc;
+/** @brief A function implementing the PCI_MSIX_COUNT() method */
+typedef int pci_msix_count_t(device_t dev, device_t child);
+
+static __inline int PCI_MSIX_COUNT(device_t dev, device_t child)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pci_msix_count);
+ return ((pci_msix_count_t *) _m)(dev, child);
+}
+
+#endif /* _pci_if_h_ */
diff --git a/freebsd/local/pcib_if.c b/freebsd/local/pcib_if.c
new file mode 100644
index 00000000..cc460893
--- /dev/null
+++ b/freebsd/local/pcib_if.c
@@ -0,0 +1,101 @@
+#include <freebsd/machine/rtems-bsd-config.h>
+
+/*
+ * This file is produced automatically.
+ * Do not modify anything in here by hand.
+ *
+ * Created from source file
+ * dev/pci/pcib_if.m
+ * with
+ * makeobjops.awk
+ *
+ * See the source file for legal information
+ */
+
+#include <freebsd/sys/param.h>
+#include <freebsd/sys/queue.h>
+#include <freebsd/sys/kernel.h>
+#include <freebsd/sys/kobj.h>
+#include <freebsd/sys/bus.h>
+#include <freebsd/dev/pci/pcivar.h>
+#include <freebsd/local/pcib_if.h>
+
+
+static int
+null_route_interrupt(device_t pcib, device_t dev, int pin)
+{
+ return (PCI_INVALID_IRQ);
+}
+
+struct kobj_method pcib_maxslots_method_default = {
+ &pcib_maxslots_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_maxslots_desc = {
+ 0, &pcib_maxslots_method_default
+};
+
+struct kobj_method pcib_read_config_method_default = {
+ &pcib_read_config_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_read_config_desc = {
+ 0, &pcib_read_config_method_default
+};
+
+struct kobj_method pcib_write_config_method_default = {
+ &pcib_write_config_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_write_config_desc = {
+ 0, &pcib_write_config_method_default
+};
+
+struct kobj_method pcib_route_interrupt_method_default = {
+ &pcib_route_interrupt_desc, (kobjop_t) null_route_interrupt
+};
+
+struct kobjop_desc pcib_route_interrupt_desc = {
+ 0, &pcib_route_interrupt_method_default
+};
+
+struct kobj_method pcib_alloc_msi_method_default = {
+ &pcib_alloc_msi_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_alloc_msi_desc = {
+ 0, &pcib_alloc_msi_method_default
+};
+
+struct kobj_method pcib_release_msi_method_default = {
+ &pcib_release_msi_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_release_msi_desc = {
+ 0, &pcib_release_msi_method_default
+};
+
+struct kobj_method pcib_alloc_msix_method_default = {
+ &pcib_alloc_msix_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_alloc_msix_desc = {
+ 0, &pcib_alloc_msix_method_default
+};
+
+struct kobj_method pcib_release_msix_method_default = {
+ &pcib_release_msix_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_release_msix_desc = {
+ 0, &pcib_release_msix_method_default
+};
+
+struct kobj_method pcib_map_msi_method_default = {
+ &pcib_map_msi_desc, (kobjop_t) kobj_error_method
+};
+
+struct kobjop_desc pcib_map_msi_desc = {
+ 0, &pcib_map_msi_method_default
+};
+
diff --git a/freebsd/local/pcib_if.h b/freebsd/local/pcib_if.h
new file mode 100644
index 00000000..ad659176
--- /dev/null
+++ b/freebsd/local/pcib_if.h
@@ -0,0 +1,137 @@
+/*
+ * This file is produced automatically.
+ * Do not modify anything in here by hand.
+ *
+ * Created from source file
+ * dev/pci/pcib_if.m
+ * with
+ * makeobjops.awk
+ *
+ * See the source file for legal information
+ */
+
+
+#ifndef _pcib_if_h_
+#define _pcib_if_h_
+
+/** @brief Unique descriptor for the PCIB_MAXSLOTS() method */
+extern struct kobjop_desc pcib_maxslots_desc;
+/** @brief A function implementing the PCIB_MAXSLOTS() method */
+typedef int pcib_maxslots_t(device_t dev);
+
+static __inline int PCIB_MAXSLOTS(device_t dev)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pcib_maxslots);
+ return ((pcib_maxslots_t *) _m)(dev);
+}
+
+/** @brief Unique descriptor for the PCIB_READ_CONFIG() method */
+extern struct kobjop_desc pcib_read_config_desc;
+/** @brief A function implementing the PCIB_READ_CONFIG() method */
+typedef u_int32_t pcib_read_config_t(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, int width);
+
+static __inline u_int32_t PCIB_READ_CONFIG(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, int width)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pcib_read_config);
+ return ((pcib_read_config_t *) _m)(dev, bus, slot, func, reg, width);
+}
+
+/** @brief Unique descriptor for the PCIB_WRITE_CONFIG() method */
+extern struct kobjop_desc pcib_write_config_desc;
+/** @brief A function implementing the PCIB_WRITE_CONFIG() method */
+typedef void pcib_write_config_t(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, u_int32_t value,
+ int width);
+
+static __inline void PCIB_WRITE_CONFIG(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, u_int32_t value,
+ int width)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)dev)->ops,pcib_write_config);
+ ((pcib_write_config_t *) _m)(dev, bus, slot, func, reg, value, width);
+}
+
+/** @brief Unique descriptor for the PCIB_ROUTE_INTERRUPT() method */
+extern struct kobjop_desc pcib_route_interrupt_desc;
+/** @brief A function implementing the PCIB_ROUTE_INTERRUPT() method */
+typedef int pcib_route_interrupt_t(device_t pcib, device_t dev, int pin);
+
+static __inline int PCIB_ROUTE_INTERRUPT(device_t pcib, device_t dev, int pin)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)pcib)->ops,pcib_route_interrupt);
+ return ((pcib_route_interrupt_t *) _m)(pcib, dev, pin);
+}
+
+/** @brief Unique descriptor for the PCIB_ALLOC_MSI() method */
+extern struct kobjop_desc pcib_alloc_msi_desc;
+/** @brief A function implementing the PCIB_ALLOC_MSI() method */
+typedef int pcib_alloc_msi_t(device_t pcib, device_t dev, int count,
+ int maxcount, int *irqs);
+
+static __inline int PCIB_ALLOC_MSI(device_t pcib, device_t dev, int count,
+ int maxcount, int *irqs)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)pcib)->ops,pcib_alloc_msi);
+ return ((pcib_alloc_msi_t *) _m)(pcib, dev, count, maxcount, irqs);
+}
+
+/** @brief Unique descriptor for the PCIB_RELEASE_MSI() method */
+extern struct kobjop_desc pcib_release_msi_desc;
+/** @brief A function implementing the PCIB_RELEASE_MSI() method */
+typedef int pcib_release_msi_t(device_t pcib, device_t dev, int count,
+ int *irqs);
+
+static __inline int PCIB_RELEASE_MSI(device_t pcib, device_t dev, int count,
+ int *irqs)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)pcib)->ops,pcib_release_msi);
+ return ((pcib_release_msi_t *) _m)(pcib, dev, count, irqs);
+}
+
+/** @brief Unique descriptor for the PCIB_ALLOC_MSIX() method */
+extern struct kobjop_desc pcib_alloc_msix_desc;
+/** @brief A function implementing the PCIB_ALLOC_MSIX() method */
+typedef int pcib_alloc_msix_t(device_t pcib, device_t dev, int *irq);
+
+static __inline int PCIB_ALLOC_MSIX(device_t pcib, device_t dev, int *irq)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)pcib)->ops,pcib_alloc_msix);
+ return ((pcib_alloc_msix_t *) _m)(pcib, dev, irq);
+}
+
+/** @brief Unique descriptor for the PCIB_RELEASE_MSIX() method */
+extern struct kobjop_desc pcib_release_msix_desc;
+/** @brief A function implementing the PCIB_RELEASE_MSIX() method */
+typedef int pcib_release_msix_t(device_t pcib, device_t dev, int irq);
+
+static __inline int PCIB_RELEASE_MSIX(device_t pcib, device_t dev, int irq)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)pcib)->ops,pcib_release_msix);
+ return ((pcib_release_msix_t *) _m)(pcib, dev, irq);
+}
+
+/** @brief Unique descriptor for the PCIB_MAP_MSI() method */
+extern struct kobjop_desc pcib_map_msi_desc;
+/** @brief A function implementing the PCIB_MAP_MSI() method */
+typedef int pcib_map_msi_t(device_t pcib, device_t dev, int irq, uint64_t *addr,
+ uint32_t *data);
+
+static __inline int PCIB_MAP_MSI(device_t pcib, device_t dev, int irq,
+ uint64_t *addr, uint32_t *data)
+{
+ kobjop_t _m;
+ KOBJOPLOOKUP(((kobj_t)pcib)->ops,pcib_map_msi);
+ return ((pcib_map_msi_t *) _m)(pcib, dev, irq, addr, data);
+}
+
+#endif /* _pcib_if_h_ */