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