Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/gicv3_its.c
Show First 20 Lines • Show All 1,950 Lines • ▼ Show 20 Lines | gicv3_its_fdt_attach(device_t dev) | ||||
sc->dev = dev; | sc->dev = dev; | ||||
err = gicv3_its_attach(dev); | err = gicv3_its_attach(dev); | ||||
if (err != 0) | if (err != 0) | ||||
return (err); | return (err); | ||||
/* Register this device as a interrupt controller */ | /* Register this device as a interrupt controller */ | ||||
xref = OF_xref_from_node(ofw_bus_get_node(dev)); | xref = OF_xref_from_node(ofw_bus_get_node(dev)); | ||||
sc->sc_pic = intr_pic_register(dev, xref); | sc->sc_pic = intr_pic_register(dev, xref); | ||||
intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, | err = intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, | ||||
gicv3_its_intr, sc, sc->sc_irq_base, sc->sc_irq_length); | gicv3_its_intr, sc, sc->sc_irq_base, sc->sc_irq_length); | ||||
if (err != 0) { | |||||
device_printf(dev, "Failed to add PIC handler: %d\n", err); | |||||
return (err); | |||||
} | |||||
/* Register this device to handle MSI interrupts */ | /* Register this device to handle MSI interrupts */ | ||||
intr_msi_register(dev, xref); | err = intr_msi_register(dev, xref); | ||||
if (err != 0) { | |||||
device_printf(dev, "Failed to register for MSIs: %d\n", err); | |||||
return (err); | |||||
} | |||||
return (0); | return (0); | ||||
} | } | ||||
#endif | #endif | ||||
#ifdef DEV_ACPI | #ifdef DEV_ACPI | ||||
static device_probe_t gicv3_its_acpi_probe; | static device_probe_t gicv3_its_acpi_probe; | ||||
static device_attach_t gicv3_its_acpi_attach; | static device_attach_t gicv3_its_acpi_attach; | ||||
Show All 40 Lines | gicv3_its_acpi_attach(device_t dev) | ||||
sc = device_get_softc(dev); | sc = device_get_softc(dev); | ||||
sc->dev = dev; | sc->dev = dev; | ||||
err = gicv3_its_attach(dev); | err = gicv3_its_attach(dev); | ||||
if (err != 0) | if (err != 0) | ||||
return (err); | return (err); | ||||
di = device_get_ivars(dev); | di = device_get_ivars(dev); | ||||
sc->sc_pic = intr_pic_register(dev, di->msi_xref); | sc->sc_pic = intr_pic_register(dev, di->msi_xref); | ||||
intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, | err = intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, | ||||
gicv3_its_intr, sc, sc->sc_irq_base, sc->sc_irq_length); | gicv3_its_intr, sc, sc->sc_irq_base, sc->sc_irq_length); | ||||
if (err != 0) { | |||||
device_printf(dev, "Failed to add PIC handler: %d\n", err); | |||||
return (err); | |||||
} | |||||
/* Register this device to handle MSI interrupts */ | /* Register this device to handle MSI interrupts */ | ||||
intr_msi_register(dev, di->msi_xref); | err = intr_msi_register(dev, di->msi_xref); | ||||
if (err != 0) { | |||||
device_printf(dev, "Failed to register for MSIs: %d\n", err); | |||||
return (err); | |||||
} | |||||
return (0); | return (0); | ||||
} | } | ||||
#endif | #endif |