Date: Sat, 21 Dec 2013 17:43:23 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r259690 - user/nwhitehorn/mips_pic_if/mips/mips Message-ID: <201312211743.rBLHhNf8037283@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312211743.rBLHhNf8037283>