Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/intr.h
Show All 29 Lines | |||||
#ifndef _SYS_INTR_H_ | #ifndef _SYS_INTR_H_ | ||||
#define _SYS_INTR_H_ | #define _SYS_INTR_H_ | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
enum intr_map_data_type { | enum intr_map_data_type { | ||||
INTR_MAP_DATA_ACPI, | INTR_MAP_DATA_ACPI, | ||||
INTR_MAP_DATA_FDT, | INTR_MAP_DATA_FDT, | ||||
INTR_MAP_DATA_INTERNAL, | |||||
}; | }; | ||||
#ifdef DEV_ACPI | #ifdef DEV_ACPI | ||||
struct intr_map_data_acpi { | struct intr_map_data_acpi { | ||||
u_int irq; | u_int irq; | ||||
enum intr_polarity pol; | enum intr_polarity pol; | ||||
enum intr_trigger trig; | enum intr_trigger trig; | ||||
}; | }; | ||||
Show All 9 Lines | struct intr_map_data { | ||||
enum intr_map_data_type type; | enum intr_map_data_type type; | ||||
union { | union { | ||||
#ifdef DEV_ACPI | #ifdef DEV_ACPI | ||||
struct intr_map_data_acpi acpi; | struct intr_map_data_acpi acpi; | ||||
#endif | #endif | ||||
#ifdef FDT | #ifdef FDT | ||||
struct intr_map_data_fdt fdt; | struct intr_map_data_fdt fdt; | ||||
#endif | #endif | ||||
struct intr_irqsrc *src; | |||||
}; | }; | ||||
}; | }; | ||||
#ifdef notyet | #ifdef notyet | ||||
#define INTR_SOLO INTR_MD1 | #define INTR_SOLO INTR_MD1 | ||||
typedef int intr_irq_filter_t(void *arg, struct trapframe *tf); | typedef int intr_irq_filter_t(void *arg, struct trapframe *tf); | ||||
#else | #else | ||||
typedef int intr_irq_filter_t(void *arg); | typedef int intr_irq_filter_t(void *arg); | ||||
▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | |||||
int intr_alloc_irq(device_t, struct resource *); | int intr_alloc_irq(device_t, struct resource *); | ||||
int intr_release_irq(device_t, struct resource *); | int intr_release_irq(device_t, struct resource *); | ||||
int intr_setup_irq(device_t, struct resource *, driver_filter_t, driver_intr_t, | int intr_setup_irq(device_t, struct resource *, driver_filter_t, driver_intr_t, | ||||
void *, int, void **); | void *, int, void **); | ||||
int intr_teardown_irq(device_t, struct resource *, void *); | int intr_teardown_irq(device_t, struct resource *, void *); | ||||
int intr_describe_irq(device_t, struct resource *, void *, const char *); | int intr_describe_irq(device_t, struct resource *, void *, const char *); | ||||
/* MSI/MSI-X handling */ | |||||
int intr_msi_register(device_t, intptr_t); | |||||
int intr_alloc_msi(device_t, device_t, intptr_t, int, int, int *); | |||||
int intr_release_msi(device_t, device_t, intptr_t, int, int *); | |||||
int intr_map_msi(device_t, device_t, intptr_t, int, uint64_t *, uint32_t *); | |||||
int intr_alloc_msix(device_t, device_t, intptr_t, int *); | |||||
int intr_release_msix(device_t, device_t, intptr_t, int); | |||||
#ifdef DEV_ACPI | #ifdef DEV_ACPI | ||||
u_int intr_acpi_map_irq(device_t, u_int, enum intr_polarity, | u_int intr_acpi_map_irq(device_t, u_int, enum intr_polarity, | ||||
enum intr_trigger); | enum intr_trigger); | ||||
#endif | #endif | ||||
#ifdef FDT | #ifdef FDT | ||||
u_int intr_fdt_map_irq(phandle_t, pcell_t *, u_int); | u_int intr_fdt_map_irq(phandle_t, pcell_t *, u_int); | ||||
#endif | #endif | ||||
Show All 20 Lines |