| From feac99df61f77b2bd225d0a69c3085c99f745ac8 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 17 Oct 2025 09:56:26 +0800 |
| Subject: firmware: imx: scu-irq: Init workqueue before request mbox channel |
| |
| From: Peng Fan <peng.fan@nxp.com> |
| |
| [ Upstream commit 81fb53feb66a3aefbf6fcab73bb8d06f5b0c54ad ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/firmware/imx/imx-scu-irq.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c |
| index f2b902e95b73..b9f6128d56f7 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)) { |
| @@ -223,8 +225,6 @@ int imx_scu_enable_general_irq_channel(struct device *dev) |
| return ret; |
| } |
| |
| - 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"); |
| -- |
| 2.51.0 |
| |