Use platform_get_irq_optional() to be able to handle potential
-EPROBE_DEFER and other errors.

Signed-off-by: Rosen Penev <[email protected]>
---
 drivers/tty/hvc/hvc_opal.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
index 402da9e7c534..ce726b8b5ab0 100644
--- a/drivers/tty/hvc/hvc_opal.c
+++ b/drivers/tty/hvc/hvc_opal.c
@@ -13,7 +13,6 @@
 #include <linux/slab.h>
 #include <linux/console.h>
 #include <linux/of.h>
-#include <linux/of_irq.h>
 #include <linux/platform_device.h>
 #include <linux/export.h>
 #include <linux/interrupt.h>
@@ -157,8 +156,9 @@ static int hvc_opal_probe(struct platform_device *dev)
        struct hvc_struct *hp;
        struct hvc_opal_priv *pv;
        hv_protocol_t proto;
-       unsigned int termno, irq, boot = 0;
+       unsigned int termno, boot = 0;
        const __be32 *reg;
+       int irq;
 
        if (of_device_is_compatible(dev->dev.of_node, "ibm,opal-console-raw")) {
                proto = HV_PROTOCOL_RAW;
@@ -209,8 +209,10 @@ static int hvc_opal_probe(struct platform_device *dev)
                dev->dev.of_node,
                boot ? " (boot console)" : "");
 
-       irq = irq_of_parse_and_map(dev->dev.of_node, 0);
-       if (!irq) {
+       irq = platform_get_irq_optional(dev, 0);
+       if (irq == -EPROBE_DEFER)
+               return irq;
+       if (irq < 0) {
                pr_info("hvc%d: No interrupts property, using OPAL event\n",
                                termno);
                irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
-- 
2.55.0


Reply via email to