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