Commit 0b8f452c authored by Rob Herring's avatar Rob Herring Committed by Dmitry Torokhov

Input: i8042 - rework DT node name comparisons

Convert string compares of DT node names to use of_node_name_eq helper
instead. For the root node on SUN DT, we need to retrieve the 'name'
property as it is the rare case where the 'name' property and node name
differ. With both changes, it removes direct access to the node name
pointer.

While at it, convert the open coded loop to use for_each_child_of_node().
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent c1c00aa5
...@@ -53,12 +53,11 @@ static struct resource *kbd_res; ...@@ -53,12 +53,11 @@ static struct resource *kbd_res;
static int sparc_i8042_probe(struct platform_device *op) static int sparc_i8042_probe(struct platform_device *op)
{ {
struct device_node *dp = op->dev.of_node; struct device_node *dp;
dp = dp->child; for_each_child_of_node(op->dev.of_node, dp) {
while (dp) { if (of_node_name_eq(dp, OBP_PS2KBD_NAME1) ||
if (!strcmp(dp->name, OBP_PS2KBD_NAME1) || of_node_name_eq(dp, OBP_PS2KBD_NAME2)) {
!strcmp(dp->name, OBP_PS2KBD_NAME2)) {
struct platform_device *kbd = of_find_device_by_node(dp); struct platform_device *kbd = of_find_device_by_node(dp);
unsigned int irq = kbd->archdata.irqs[0]; unsigned int irq = kbd->archdata.irqs[0];
if (irq == 0xffffffff) if (irq == 0xffffffff)
...@@ -67,16 +66,14 @@ static int sparc_i8042_probe(struct platform_device *op) ...@@ -67,16 +66,14 @@ static int sparc_i8042_probe(struct platform_device *op)
kbd_iobase = of_ioremap(&kbd->resource[0], kbd_iobase = of_ioremap(&kbd->resource[0],
0, 8, "kbd"); 0, 8, "kbd");
kbd_res = &kbd->resource[0]; kbd_res = &kbd->resource[0];
} else if (!strcmp(dp->name, OBP_PS2MS_NAME1) || } else if (of_node_name_eq(dp, OBP_PS2MS_NAME1) ||
!strcmp(dp->name, OBP_PS2MS_NAME2)) { of_node_name_eq(dp, OBP_PS2MS_NAME2)) {
struct platform_device *ms = of_find_device_by_node(dp); struct platform_device *ms = of_find_device_by_node(dp);
unsigned int irq = ms->archdata.irqs[0]; unsigned int irq = ms->archdata.irqs[0];
if (irq == 0xffffffff) if (irq == 0xffffffff)
irq = op->archdata.irqs[0]; irq = op->archdata.irqs[0];
i8042_aux_irq = irq; i8042_aux_irq = irq;
} }
dp = dp->sibling;
} }
return 0; return 0;
...@@ -109,8 +106,9 @@ static struct platform_driver sparc_i8042_driver = { ...@@ -109,8 +106,9 @@ static struct platform_driver sparc_i8042_driver = {
static int __init i8042_platform_init(void) static int __init i8042_platform_init(void)
{ {
struct device_node *root = of_find_node_by_path("/"); struct device_node *root = of_find_node_by_path("/");
const char *name = of_get_property(root, "name", NULL);
if (!strcmp(root->name, "SUNW,JavaStation-1")) { if (name && !strcmp(name, "SUNW,JavaStation-1")) {
/* Hardcoded values for MrCoffee. */ /* Hardcoded values for MrCoffee. */
i8042_kbd_irq = i8042_aux_irq = 13 | 0x20; i8042_kbd_irq = i8042_aux_irq = 13 | 0x20;
kbd_iobase = ioremap(0x71300060, 8); kbd_iobase = ioremap(0x71300060, 8);
...@@ -139,8 +137,9 @@ static int __init i8042_platform_init(void) ...@@ -139,8 +137,9 @@ static int __init i8042_platform_init(void)
static inline void i8042_platform_exit(void) static inline void i8042_platform_exit(void)
{ {
struct device_node *root = of_find_node_by_path("/"); struct device_node *root = of_find_node_by_path("/");
const char *name = of_get_property(root, "name", NULL);
if (strcmp(root->name, "SUNW,JavaStation-1")) if (!name || strcmp(name, "SUNW,JavaStation-1"))
platform_driver_unregister(&sparc_i8042_driver); platform_driver_unregister(&sparc_i8042_driver);
} }
......
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