Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/mv/mpic.c
Show First 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | |||||
uint32_t mv_mpic_get_msi(void); | uint32_t mv_mpic_get_msi(void); | ||||
static void mpic_unmask_irq(uintptr_t nb); | static void mpic_unmask_irq(uintptr_t nb); | ||||
static void mpic_mask_irq(uintptr_t nb); | static void mpic_mask_irq(uintptr_t nb); | ||||
static void mpic_mask_irq_err(uintptr_t nb); | static void mpic_mask_irq_err(uintptr_t nb); | ||||
static void mpic_unmask_irq_err(uintptr_t nb); | static void mpic_unmask_irq_err(uintptr_t nb); | ||||
static int mpic_intr(void *arg); | static int mpic_intr(void *arg); | ||||
static void mpic_unmask_msi(void); | static void mpic_unmask_msi(void); | ||||
static boolean_t mpic_irq_is_percpu(uintptr_t); | static boolean_t mpic_irq_is_percpu(uintptr_t); | ||||
#ifndef ARM_INTRNG | #ifndef INTRNG | ||||
static void arm_mask_irq_err(uintptr_t); | static void arm_mask_irq_err(uintptr_t); | ||||
static void arm_unmask_irq_err(uintptr_t); | static void arm_unmask_irq_err(uintptr_t); | ||||
#endif | #endif | ||||
#define MPIC_WRITE(softc, reg, val) \ | #define MPIC_WRITE(softc, reg, val) \ | ||||
bus_space_write_4((softc)->mpic_bst, (softc)->mpic_bsh, (reg), (val)) | bus_space_write_4((softc)->mpic_bst, (softc)->mpic_bsh, (reg), (val)) | ||||
#define MPIC_READ(softc, reg) \ | #define MPIC_READ(softc, reg) \ | ||||
bus_space_read_4((softc)->mpic_bst, (softc)->mpic_bsh, (reg)) | bus_space_read_4((softc)->mpic_bst, (softc)->mpic_bsh, (reg)) | ||||
▲ Show 20 Lines • Show All 106 Lines • ▼ Show 20 Lines | #endif | ||||
sc->nirqs = MPIC_CTRL_NIRQS(val); | sc->nirqs = MPIC_CTRL_NIRQS(val); | ||||
#ifdef INTRNG | #ifdef INTRNG | ||||
if (mv_mpic_register_isrcs(sc) != 0) { | if (mv_mpic_register_isrcs(sc) != 0) { | ||||
device_printf(dev, "could not register PIC ISRCs\n"); | device_printf(dev, "could not register PIC ISRCs\n"); | ||||
bus_release_resources(dev, mv_mpic_spec, sc->mpic_res); | bus_release_resources(dev, mv_mpic_spec, sc->mpic_res); | ||||
return (ENXIO); | return (ENXIO); | ||||
} | } | ||||
if (intr_pic_register(dev, OF_xref_from_device(dev)) == NULL) { | if (intr_pic_register(dev, OF_xref_from_node( | ||||
ofw_bus_get_node(dev))) == NULL) { | |||||
device_printf(dev, "could not register PIC\n"); | device_printf(dev, "could not register PIC\n"); | ||||
bus_release_resources(dev, mv_mpic_spec, sc->mpic_res); | bus_release_resources(dev, mv_mpic_spec, sc->mpic_res); | ||||
return (ENXIO); | return (ENXIO); | ||||
} | } | ||||
OF_device_register_xref(OF_xref_from_node(ofw_bus_get_node(dev)), dev); | |||||
#endif | #endif | ||||
mpic_unmask_msi(); | mpic_unmask_msi(); | ||||
return (0); | return (0); | ||||
} | } | ||||
#ifdef INTRNG | #ifdef INTRNG | ||||
▲ Show 20 Lines • Show All 365 Lines • Show Last 20 Lines |