blob: 66273e0350daba2011ce07818669bead09029298 [file] [log] [blame]
Joel Stanley00ad3e42016-11-01 13:26:13 +10301From b8e00efc9b4184b54507c862b3e1e675a10a9a21 Mon Sep 17 00:00:00 2001
Joel Stanley2b0f7b42016-07-19 23:26:28 +09302From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
3Date: Wed, 13 Jul 2016 11:15:42 +1000
Joel Stanleyeeef14f2016-08-16 23:09:53 +09304Subject: [PATCH 7/9] tty/hvc: Use opal irqchip interface if available
Joel Stanley2b0f7b42016-07-19 23:26:28 +09305
6Update the hvc driver to use the OPAL irqchip if made available by the
7running firmware. If it is not present, the driver falls back to the
8existing OPAL event number.
9
10Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
11Cc: <stable@vger.kernel.org> # 4.1.x-
12Signed-off-by: Joel Stanley <joel@jms.id.au>
13---
14 drivers/tty/hvc/hvc_opal.c | 8 +++++++-
15 1 file changed, 7 insertions(+), 1 deletion(-)
16
17diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
18index 47b54c6aefd2..276b796b24e4 100644
19--- a/drivers/tty/hvc/hvc_opal.c
20+++ b/drivers/tty/hvc/hvc_opal.c
21@@ -214,7 +214,13 @@ static int hvc_opal_probe(struct platform_device *dev)
22 dev->dev.of_node->full_name,
23 boot ? " (boot console)" : "");
24
25- irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
26+ irq = irq_of_parse_and_map(dev->dev.of_node, 0);
27+ if (!irq) {
28+ pr_info("hvc%d: No interrupts property, using OPAL event\n",
29+ termno);
30+ irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
31+ }
32+
33 if (!irq) {
34 pr_err("hvc_opal: Unable to map interrupt for device %s\n",
35 dev->dev.of_node->full_name);
36--
Joel Stanley8f1d88e2016-08-29 16:44:12 +0930372.9.3
Joel Stanley2b0f7b42016-07-19 23:26:28 +093038