From 3af8d8d122e9636e42c0e15c7e2525be4537a102 Mon Sep 17 00:00:00 2001 From: Leonard Crestez Date: Wed, 7 Feb 2018 21:27:45 +0200 Subject: MLK-17623: imx8 scu: Explicitly make irq optional The MU works just fine without interrupts because sc_call_rpc will poll waiting for a response. Make this explicit because it allows easier emulation for virtualization. The request_irq error is just reported but doesn't fail the probe, however failing to set that irq as a wake source is fatal. This was introduced recently: commit 3b20aa779f33 ("MLK-17072-1: soc: imx: sc: ipc: enable MU interrupt as wakeup source") Signed-off-by: Leonard Crestez Acked-by: Peng Fan --- drivers/soc/imx/sc/main/ipc.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'drivers/soc') diff --git a/drivers/soc/imx/sc/main/ipc.c b/drivers/soc/imx/sc/main/ipc.c index 40ddf2f229ac..55516d2880e4 100644 --- a/drivers/soc/imx/sc/main/ipc.c +++ b/drivers/soc/imx/sc/main/ipc.c @@ -287,7 +287,7 @@ static irqreturn_t imx8_scu_mu_isr(int irq, void *param) int __init imx8_mu_init(void) { struct device_node *np; - u32 irq; + int irq; int err; sc_err_t sciErr; @@ -308,18 +308,23 @@ int __init imx8_mu_init(void) irq = of_irq_get(np, 0); - err = request_irq(irq, imx8_scu_mu_isr, - IRQF_EARLY_RESUME, "imx8_mu_isr", NULL); - - if (err) { - pr_info("imx8_mu_init :request_irq failed %d, err = %d\n", irq, - err); - } - - err = irq_set_irq_wake(irq, 1); - if (err) { - pr_info("set mu irq wake up error %d.\n", err); - return err; + if (irq <= 0) { + /* SCU works just fine without irq */ + pr_warn("imx8_mu_init: no irq: %d\n", irq); + } else { + err = request_irq(irq, imx8_scu_mu_isr, + IRQF_EARLY_RESUME, "imx8_mu_isr", NULL); + if (err) { + pr_err("imx8_mu_init: request_irq %d failed: %d\n", + irq, err); + return err; + } + + err = irq_set_irq_wake(irq, 1); + if (err) { + pr_err("imx8mu_init: set_irq_wake failed: %d\n", err); + return err; + } } if (!scu_mu_init) { -- cgit v1.2.3