Commit 540c6c39 authored by Martyn Welch's avatar Martyn Welch Committed by Benjamin Herrenschmidt

powerpc: Add i8042 keyboard and mouse irq parsing

Currently the irqs for the i8042, which historically provides keyboard and
mouse (aux) support, is hardwired in the driver rather than parsing the
dts.  This patch modifies the powerpc legacy IO code to attempt to parse
the device tree for this information, failing back to the hardcoded values
if it fails.
Signed-off-by: default avatarMartyn Welch <martyn.welch@ge.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 68581e93
...@@ -94,6 +94,10 @@ struct screen_info screen_info = { ...@@ -94,6 +94,10 @@ struct screen_info screen_info = {
.orig_video_points = 16 .orig_video_points = 16
}; };
/* Variables required to store legacy IO irq routing */
int of_i8042_kbd_irq;
int of_i8042_aux_irq;
#ifdef __DO_IRQ_CANON #ifdef __DO_IRQ_CANON
/* XXX should go elsewhere eventually */ /* XXX should go elsewhere eventually */
int ppc_do_canonicalize_irqs; int ppc_do_canonicalize_irqs;
...@@ -575,6 +579,15 @@ int check_legacy_ioport(unsigned long base_port) ...@@ -575,6 +579,15 @@ int check_legacy_ioport(unsigned long base_port)
np = of_find_compatible_node(NULL, NULL, "pnpPNP,f03"); np = of_find_compatible_node(NULL, NULL, "pnpPNP,f03");
if (np) { if (np) {
parent = of_get_parent(np); parent = of_get_parent(np);
of_i8042_kbd_irq = irq_of_parse_and_map(parent, 0);
if (!of_i8042_kbd_irq)
of_i8042_kbd_irq = 1;
of_i8042_aux_irq = irq_of_parse_and_map(parent, 1);
if (!of_i8042_aux_irq)
of_i8042_aux_irq = 12;
of_node_put(np); of_node_put(np);
np = parent; np = parent;
break; break;
......
...@@ -27,6 +27,11 @@ ...@@ -27,6 +27,11 @@
#include <asm/irq.h> #include <asm/irq.h>
#elif defined(CONFIG_SH_CAYMAN) #elif defined(CONFIG_SH_CAYMAN)
#include <asm/irq.h> #include <asm/irq.h>
#elif defined(CONFIG_PPC)
extern int of_i8042_kbd_irq;
extern int of_i8042_aux_irq;
# define I8042_KBD_IRQ of_i8042_kbd_irq
# define I8042_AUX_IRQ of_i8042_aux_irq
#else #else
# define I8042_KBD_IRQ 1 # define I8042_KBD_IRQ 1
# define I8042_AUX_IRQ 12 # define I8042_AUX_IRQ 12
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment