From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 03:04:41 +0000 Subject: [PATCH] rk3568 rt init --- kernel/drivers/firmware/arm_sdei.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 41 insertions(+), 0 deletions(-) diff --git a/kernel/drivers/firmware/arm_sdei.c b/kernel/drivers/firmware/arm_sdei.c index 08e8286..63b17b6 100644 --- a/kernel/drivers/firmware/arm_sdei.c +++ b/kernel/drivers/firmware/arm_sdei.c @@ -924,6 +924,47 @@ return err; } + +static int sdei_api_interrupt_bind(u32 intr_num, u64 *result) +{ + return invoke_sdei_fn(SDEI_1_0_FN_SDEI_INTERRUPT_BIND, intr_num, 0, 0, 0, + 0, result); +} + +int sdei_interrupt_bind(u32 intr_num, u32 *event_num) +{ + int err; + u64 result; + + err = sdei_api_interrupt_bind(intr_num, &result); + if (!err) + *event_num = (u32)result; + + return err; +} + +static int sdei_api_interrupt_release(u32 event_num) +{ + return invoke_sdei_fn(SDEI_1_0_FN_SDEI_INTERRUPT_RELEASE, event_num, 0, 0, 0, + 0, NULL); +} + +int sdei_interrupt_release(u32 event_num) +{ + struct sdei_event *event; + + mutex_lock(&sdei_events_lock); + event = sdei_event_find(event_num); + mutex_unlock(&sdei_events_lock); + + if (event) { + pr_err("%s: need unregister event:%d before release\n", + __func__, event_num); + return SDEI_DENIED; + } + + return sdei_api_interrupt_release(event_num); +} #endif static int sdei_get_conduit(struct platform_device *pdev) -- Gitblit v1.6.2