[rtems-libbsd commit] Add PCI and PCIB interface files

Sebastian Huber sebh at rtems.org
Tue Apr 17 14:59:54 UTC 2012


Module:    rtems-libbsd
Branch:    master
Commit:    837df26074502c7fd3833ac8e574c5ef279f70f7
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=837df26074502c7fd3833ac8e574c5ef279f70f7

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Apr 17 16:54:29 2012 +0200

Add PCI and PCIB interface files

---

 Makefile                |    2 +
 freebsd-to-rtems.py     |    5 +-
 freebsd/local/pci_if.c  |  172 +++++++++++++++++++++++++++++++++
 freebsd/local/pci_if.h  |  246 ++++++++++++++++++++++++++++++++++++++++++++++-
 freebsd/local/pcib_if.c |  101 +++++++++++++++++++
 freebsd/local/pcib_if.h |  137 ++++++++++++++++++++++++++
 6 files changed, 661 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 177f30e..d82f0e2 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 803b273..c2b1fd0 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 0000000..257e890
--- /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 936ffd8..c2028bf 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 0000000..cc46089
--- /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 0000000..ad65917
--- /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_ */




More information about the vc mailing list