From 4f86500bbb82d4ea78dcca2fac17d8f6608dfcce Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 19 Jan 2026 12:16:20 +0100 Subject: [PATCH] 6.12-stable patches added patches: firmware-imx-scu-irq-set-mu_resource_id-before-get-handle.patch series --- ...set-mu_resource_id-before-get-handle.patch | 64 +++++++++++++++++++ queue-6.12/series | 1 + 2 files changed, 65 insertions(+) create mode 100644 queue-6.12/firmware-imx-scu-irq-set-mu_resource_id-before-get-handle.patch create mode 100644 queue-6.12/series diff --git a/queue-6.12/firmware-imx-scu-irq-set-mu_resource_id-before-get-handle.patch b/queue-6.12/firmware-imx-scu-irq-set-mu_resource_id-before-get-handle.patch new file mode 100644 index 0000000000..691cbcc781 --- /dev/null +++ b/queue-6.12/firmware-imx-scu-irq-set-mu_resource_id-before-get-handle.patch @@ -0,0 +1,64 @@ +From ff3f9913bc0749364fbfd86ea62ba2d31c6136c8 Mon Sep 17 00:00:00 2001 +From: Peng Fan +Date: Fri, 17 Oct 2025 09:56:27 +0800 +Subject: firmware: imx: scu-irq: Set mu_resource_id before get handle + +From: Peng Fan + +commit ff3f9913bc0749364fbfd86ea62ba2d31c6136c8 upstream. + +mu_resource_id is referenced in imx_scu_irq_get_status() and +imx_scu_irq_group_enable() which could be used by other modules, so +need to set correct value before using imx_sc_irq_ipc_handle in +SCU API call. + +Reviewed-by: Frank Li +Signed-off-by: Peng Fan +Signed-off-by: Shawn Guo +Fixes: 81fb53feb66a ("firmware: imx: scu-irq: Init workqueue before request mbox channel") +Cc: Ben Hutchings +Signed-off-by: Greg Kroah-Hartman +--- + drivers/firmware/imx/imx-scu-irq.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +--- a/drivers/firmware/imx/imx-scu-irq.c ++++ b/drivers/firmware/imx/imx-scu-irq.c +@@ -203,6 +203,18 @@ int imx_scu_enable_general_irq_channel(s + struct mbox_chan *ch; + int ret = 0, i = 0; + ++ if (!of_parse_phandle_with_args(dev->of_node, "mboxes", ++ "#mbox-cells", 0, &spec)) { ++ i = of_alias_get_id(spec.np, "mu"); ++ of_node_put(spec.np); ++ } ++ ++ /* use mu1 as general mu irq channel if failed */ ++ if (i < 0) ++ i = 1; ++ ++ mu_resource_id = IMX_SC_R_MU_0A + i; ++ + ret = imx_scu_get_handle(&imx_sc_irq_ipc_handle); + if (ret) + return ret; +@@ -225,18 +237,6 @@ int imx_scu_enable_general_irq_channel(s + return ret; + } + +- if (!of_parse_phandle_with_args(dev->of_node, "mboxes", +- "#mbox-cells", 0, &spec)) { +- i = of_alias_get_id(spec.np, "mu"); +- of_node_put(spec.np); +- } +- +- /* use mu1 as general mu irq channel if failed */ +- if (i < 0) +- i = 1; +- +- mu_resource_id = IMX_SC_R_MU_0A + i; +- + /* Create directory under /sysfs/firmware */ + wakeup_obj = kobject_create_and_add("scu_wakeup_source", firmware_kobj); + if (!wakeup_obj) { diff --git a/queue-6.12/series b/queue-6.12/series new file mode 100644 index 0000000000..db6096457c --- /dev/null +++ b/queue-6.12/series @@ -0,0 +1 @@ +firmware-imx-scu-irq-set-mu_resource_id-before-get-handle.patch -- 2.47.3