summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2025-10-17 09:56:26 +0800
committerShawn Guo <shawnguo@kernel.org>2025-10-27 14:43:47 +0800
commit81fb53feb66a3aefbf6fcab73bb8d06f5b0c54ad (patch)
tree8a1b79e3ff7b656d8dc74576f527f2aabd7a15df
parent62c740fb11ea7790f6bcd4f72c563f9ae2a42e9a (diff)
firmware: imx: scu-irq: Init workqueue before request mbox channel
With mailbox channel requested, there is possibility that interrupts may come in, so need to make sure the workqueue is initialized before the queue is scheduled by mailbox rx callback. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
-rw-r--r--drivers/firmware/imx/imx-scu-irq.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c
index d6fd04404e2a..2d7237188932 100644
--- a/drivers/firmware/imx/imx-scu-irq.c
+++ b/drivers/firmware/imx/imx-scu-irq.c
@@ -214,6 +214,8 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
cl->dev = dev;
cl->rx_callback = imx_scu_irq_callback;
+ INIT_WORK(&imx_sc_irq_work, imx_scu_irq_work_handler);
+
/* SCU general IRQ uses general interrupt channel 3 */
ch = mbox_request_channel_byname(cl, "gip3");
if (IS_ERR(ch)) {
@@ -222,8 +224,6 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
goto free_cl;
}
- INIT_WORK(&imx_sc_irq_work, imx_scu_irq_work_handler);
-
if (!of_parse_phandle_with_args(dev->of_node, "mboxes",
"#mbox-cells", 0, &spec)) {
i = of_alias_get_id(spec.np, "mu");