svn commit: r259690 - user/nwhitehorn/mips_pic_if/mips/mips
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Sat Dec 21 17:43:23 UTC 2013
Author: nwhitehorn
Date: Sat Dec 21 17:43:23 2013
New Revision: 259690
URL: http://svnweb.freebsd.org/changeset/base/259690
Log:
Support interrupt allocation in multiple domains.
Modified:
user/nwhitehorn/mips_pic_if/mips/mips/nexus.c
Modified: user/nwhitehorn/mips_pic_if/mips/mips/nexus.c
==============================================================================
--- user/nwhitehorn/mips_pic_if/mips/mips/nexus.c Sat Dec 21 17:36:32 2013 (r259689)
+++ user/nwhitehorn/mips_pic_if/mips/mips/nexus.c Sat Dec 21 17:43:23 2013 (r259690)
@@ -62,6 +62,8 @@ __FBSDID("$FreeBSD$");
#ifdef FDT
#include <dev/ofw/ofw_nexus.h>
+#include <dev/ofw/ofw_bus.h>
+#include "ofw_bus_if.h"
#endif
#undef NEXUS_DEBUG
@@ -113,6 +115,14 @@ static int nexus_setup_intr(device_t dev
driver_intr_t *intr, void *arg, void **cookiep);
static int nexus_teardown_intr(device_t, device_t, struct resource *,
void *);
+#ifdef SMP
+static bus_bind_intr_t nexus_bind_intr;
+#endif
+static bus_config_intr_t nexus_config_intr;
+#ifdef FDT
+static ofw_bus_map_intr_t nexus_ofw_map_intr;
+static ofw_bus_config_intr_t nexus_ofw_config_intr;
+#endif
static device_method_t nexus_methods[] = {
#ifndef FDT
@@ -135,6 +145,14 @@ static device_method_t nexus_methods[] =
DEVMETHOD(bus_activate_resource,nexus_activate_resource),
DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource),
DEVMETHOD(bus_hinted_child, nexus_hinted_child),
+#ifdef SMP
+ DEVMETHOD(bus_bind_intr, nexus_bind_intr),
+#endif
+ DEVMETHOD(bus_config_intr, nexus_config_intr),
+#ifdef FDT
+ DEVMETHOD(ofw_bus_map_intr, nexus_ofw_map_intr),
+ DEVMETHOD(ofw_bus_config_intr, nexus_ofw_config_intr),
+#endif
{ 0, 0 }
};
@@ -505,5 +523,39 @@ nexus_hinted_child(device_t bus, const c
}
}
+#ifdef SMP
+static int
+nexus_bind_intr(device_t bus __unused, device_t child __unused,
+ struct resource *r, int cpu)
+{
+
+ return (powerpc_bind_intr(rman_get_start(r), cpu));
+}
+#endif
+
+static int
+nexus_config_intr(device_t dev, int irq, enum intr_trigger trig,
+ enum intr_polarity pol)
+{
+
+ return (mips_config_intr(irq, trig, pol));
+}
+
+#ifdef FDT
+static int
+nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int irq)
+{
+
+ return (mips_get_irq(iparent, irq));
+}
+
+static int
+nexus_ofw_config_intr(device_t dev, device_t child, int irq, int sense)
+{
+
+ return (mips_fw_config_intr(irq, sense));
+}
+#endif
+
EARLY_DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0,
BUS_PASS_BUS);
More information about the svn-src-user
mailing list