| .. | .. |
|---|
| 53 | 53 | |
|---|
| 54 | 54 | static int sparc_i8042_probe(struct platform_device *op) |
|---|
| 55 | 55 | { |
|---|
| 56 | | - struct device_node *dp = op->dev.of_node; |
|---|
| 56 | + struct device_node *dp; |
|---|
| 57 | 57 | |
|---|
| 58 | | - dp = dp->child; |
|---|
| 59 | | - while (dp) { |
|---|
| 60 | | - if (!strcmp(dp->name, OBP_PS2KBD_NAME1) || |
|---|
| 61 | | - !strcmp(dp->name, OBP_PS2KBD_NAME2)) { |
|---|
| 58 | + for_each_child_of_node(op->dev.of_node, dp) { |
|---|
| 59 | + if (of_node_name_eq(dp, OBP_PS2KBD_NAME1) || |
|---|
| 60 | + of_node_name_eq(dp, OBP_PS2KBD_NAME2)) { |
|---|
| 62 | 61 | struct platform_device *kbd = of_find_device_by_node(dp); |
|---|
| 63 | 62 | unsigned int irq = kbd->archdata.irqs[0]; |
|---|
| 64 | 63 | if (irq == 0xffffffff) |
|---|
| .. | .. |
|---|
| 67 | 66 | kbd_iobase = of_ioremap(&kbd->resource[0], |
|---|
| 68 | 67 | 0, 8, "kbd"); |
|---|
| 69 | 68 | kbd_res = &kbd->resource[0]; |
|---|
| 70 | | - } else if (!strcmp(dp->name, OBP_PS2MS_NAME1) || |
|---|
| 71 | | - !strcmp(dp->name, OBP_PS2MS_NAME2)) { |
|---|
| 69 | + } else if (of_node_name_eq(dp, OBP_PS2MS_NAME1) || |
|---|
| 70 | + of_node_name_eq(dp, OBP_PS2MS_NAME2)) { |
|---|
| 72 | 71 | struct platform_device *ms = of_find_device_by_node(dp); |
|---|
| 73 | 72 | unsigned int irq = ms->archdata.irqs[0]; |
|---|
| 74 | 73 | if (irq == 0xffffffff) |
|---|
| 75 | 74 | irq = op->archdata.irqs[0]; |
|---|
| 76 | 75 | i8042_aux_irq = irq; |
|---|
| 77 | 76 | } |
|---|
| 78 | | - |
|---|
| 79 | | - dp = dp->sibling; |
|---|
| 80 | 77 | } |
|---|
| 81 | 78 | |
|---|
| 82 | 79 | return 0; |
|---|
| .. | .. |
|---|
| 109 | 106 | static int __init i8042_platform_init(void) |
|---|
| 110 | 107 | { |
|---|
| 111 | 108 | struct device_node *root = of_find_node_by_path("/"); |
|---|
| 109 | + const char *name = of_get_property(root, "name", NULL); |
|---|
| 112 | 110 | |
|---|
| 113 | | - if (!strcmp(root->name, "SUNW,JavaStation-1")) { |
|---|
| 111 | + if (name && !strcmp(name, "SUNW,JavaStation-1")) { |
|---|
| 114 | 112 | /* Hardcoded values for MrCoffee. */ |
|---|
| 115 | 113 | i8042_kbd_irq = i8042_aux_irq = 13 | 0x20; |
|---|
| 116 | 114 | kbd_iobase = ioremap(0x71300060, 8); |
|---|
| .. | .. |
|---|
| 139 | 137 | static inline void i8042_platform_exit(void) |
|---|
| 140 | 138 | { |
|---|
| 141 | 139 | struct device_node *root = of_find_node_by_path("/"); |
|---|
| 140 | + const char *name = of_get_property(root, "name", NULL); |
|---|
| 142 | 141 | |
|---|
| 143 | | - if (strcmp(root->name, "SUNW,JavaStation-1")) |
|---|
| 142 | + if (!name || strcmp(name, "SUNW,JavaStation-1")) |
|---|
| 144 | 143 | platform_driver_unregister(&sparc_i8042_driver); |
|---|
| 145 | 144 | } |
|---|
| 146 | 145 | |
|---|