Changeset View
Changeset View
Standalone View
Standalone View
sys/mips/mips/nexus.c
Show First 20 Lines • Show All 451 Lines • ▼ Show 20 Lines | nexus_deactivate_resource(device_t bus, device_t child, int type, int rid, | ||||
return (rman_deactivate_resource(r)); | return (rman_deactivate_resource(r)); | ||||
} | } | ||||
static int | static int | ||||
nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, | nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, | ||||
driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) | driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) | ||||
{ | { | ||||
int irq; | |||||
#ifdef MIPS_INTRNG | #ifdef MIPS_INTRNG | ||||
for (irq = rman_get_start(res); irq <= rman_get_end(res); irq++) { | return (intr_setup_irq(child, res, filt, intr, arg, flags, cookiep)); | ||||
intr_irq_add_handler(child, filt, intr, arg, irq, flags, | |||||
cookiep); | |||||
} | |||||
#else | #else | ||||
int irq; | |||||
register_t s; | register_t s; | ||||
s = intr_disable(); | s = intr_disable(); | ||||
irq = rman_get_start(res); | irq = rman_get_start(res); | ||||
if (irq >= NUM_MIPS_IRQS) { | if (irq >= NUM_MIPS_IRQS) { | ||||
intr_restore(s); | intr_restore(s); | ||||
return (0); | return (0); | ||||
} | } | ||||
cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, | cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, | ||||
irq, flags, cookiep); | irq, flags, cookiep); | ||||
intr_restore(s); | intr_restore(s); | ||||
#endif | |||||
return (0); | return (0); | ||||
#endif | |||||
} | } | ||||
static int | static int | ||||
nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) | nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) | ||||
{ | { | ||||
#ifdef MIPS_INTRNG | #ifdef MIPS_INTRNG | ||||
return (intr_irq_remove_handler(child, rman_get_start(r), ih)); | return (intr_teardown_irq(child, r, ih)); | ||||
#else | #else | ||||
printf("Unimplemented %s at %s:%d\n", __func__, __FILE__, __LINE__); | printf("Unimplemented %s at %s:%d\n", __func__, __FILE__, __LINE__); | ||||
return (0); | return (0); | ||||
#endif | #endif | ||||
} | } | ||||
#ifdef MIPS_INTRNG | #ifdef MIPS_INTRNG | ||||
static int | static int | ||||
nexus_config_intr(device_t dev, int irq, enum intr_trigger trig, | nexus_config_intr(device_t dev, int irq, enum intr_trigger trig, | ||||
enum intr_polarity pol) | enum intr_polarity pol) | ||||
{ | { | ||||
return (intr_irq_config(irq, trig, pol)); | device_printf(dev, "bus_config_intr is obsolete and not supported!\n"); | ||||
return (EOPNOTSUPP); | |||||
} | } | ||||
static int | static int | ||||
nexus_describe_intr(device_t dev, device_t child, struct resource *irq, | nexus_describe_intr(device_t dev, device_t child, struct resource *irq, | ||||
void *cookie, const char *descr) | void *cookie, const char *descr) | ||||
{ | { | ||||
return (intr_irq_describe(rman_get_start(irq), cookie, descr)); | return (intr_describe_irq(child, irq, cookie, descr)); | ||||
} | } | ||||
#ifdef SMP | #ifdef SMP | ||||
static int | static int | ||||
nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu) | nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu) | ||||
{ | { | ||||
return (intr_irq_bind(rman_get_start(irq), cpu)); | return (intr_bind_irq(child, irq, cpu)); | ||||
} | } | ||||
#endif | #endif | ||||
#ifdef FDT | #ifdef FDT | ||||
static int | static int | ||||
nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells, | nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells, | ||||
pcell_t *intr) | pcell_t *intr) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 61 Lines • Show Last 20 Lines |