X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/34f6af4f61e0eec9c96113e07f140b609b4113c8..99f2ed669601a61f4f0210e0b481ff877cd9bea7:/lunaix-os/arch/generic/includes/asm-generic/isrm.h?ds=sidebyside diff --git a/lunaix-os/arch/generic/includes/asm-generic/isrm.h b/lunaix-os/arch/generic/includes/asm-generic/isrm.h index 7e319b5..e8117bb 100644 --- a/lunaix-os/arch/generic/includes/asm-generic/isrm.h +++ b/lunaix-os/arch/generic/includes/asm-generic/isrm.h @@ -14,8 +14,19 @@ #include #include +#include + typedef void (*isr_cb)(const struct hart_state*); +typedef struct { + ptr_t msi_addr; + reg_t msi_data; + int mapped_iv; +} msi_vector_t; +#define msi_addr(msiv) ((msiv).msi_addr) +#define msi_data(msiv) ((msiv).msi_data) +#define msi_vect(msiv) ((msiv).mapped_iv) + void isrm_init(); @@ -44,21 +55,20 @@ int isrm_ivexalloc(isr_cb handler); /** - * @brief Bind a given irq and associated handler to an iv + * @brief Allocate an iv resource for MSI use * - * @param iv iv allocated by system + * @param iv */ -int -isrm_bindirq(int irq, isr_cb irq_handler); +msi_vector_t +isrm_msialloc(isr_cb handler); /** - * @brief Bind given iv with it's associated handler + * @brief Bind the iv according to given device tree node * - * @param iv - * @param handler + * @param node */ -void -isrm_bindiv(int iv, isr_cb handler); +int +isrm_bind_dtnode(struct dt_intr_node* node); /** * @brief Get the handler associated with the given iv @@ -75,9 +85,6 @@ isrm_get_payload(const struct hart_state*); void isrm_set_payload(int iv, ptr_t); -void -isrm_irq_attach(int irq, int iv, cpu_t dest, u32_t flags); - /** * @brief Notify end of interrupt event *