diff options
-rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 15 | ||||
-rw-r--r-- | drivers/input/serio/i8042.c | 6 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index 0ec9abbe31fe..381b20d4c561 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
@@ -702,6 +702,17 @@ static int i8042_pnp_aux_irq; | |||
702 | static char i8042_pnp_kbd_name[32]; | 702 | static char i8042_pnp_kbd_name[32]; |
703 | static char i8042_pnp_aux_name[32]; | 703 | static char i8042_pnp_aux_name[32]; |
704 | 704 | ||
705 | static void i8042_pnp_id_to_string(struct pnp_id *id, char *dst, int dst_size) | ||
706 | { | ||
707 | strlcpy(dst, "PNP:", dst_size); | ||
708 | |||
709 | while (id) { | ||
710 | strlcat(dst, " ", dst_size); | ||
711 | strlcat(dst, id->id, dst_size); | ||
712 | id = id->next; | ||
713 | } | ||
714 | } | ||
715 | |||
705 | static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id *did) | 716 | static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id *did) |
706 | { | 717 | { |
707 | if (pnp_port_valid(dev, 0) && pnp_port_len(dev, 0) == 1) | 718 | if (pnp_port_valid(dev, 0) && pnp_port_len(dev, 0) == 1) |
@@ -718,6 +729,8 @@ static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id * | |||
718 | strlcat(i8042_pnp_kbd_name, ":", sizeof(i8042_pnp_kbd_name)); | 729 | strlcat(i8042_pnp_kbd_name, ":", sizeof(i8042_pnp_kbd_name)); |
719 | strlcat(i8042_pnp_kbd_name, pnp_dev_name(dev), sizeof(i8042_pnp_kbd_name)); | 730 | strlcat(i8042_pnp_kbd_name, pnp_dev_name(dev), sizeof(i8042_pnp_kbd_name)); |
720 | } | 731 | } |
732 | i8042_pnp_id_to_string(dev->id, i8042_kbd_firmware_id, | ||
733 | sizeof(i8042_kbd_firmware_id)); | ||
721 | 734 | ||
722 | /* Keyboard ports are always supposed to be wakeup-enabled */ | 735 | /* Keyboard ports are always supposed to be wakeup-enabled */ |
723 | device_set_wakeup_enable(&dev->dev, true); | 736 | device_set_wakeup_enable(&dev->dev, true); |
@@ -742,6 +755,8 @@ static int i8042_pnp_aux_probe(struct pnp_dev *dev, const struct pnp_device_id * | |||
742 | strlcat(i8042_pnp_aux_name, ":", sizeof(i8042_pnp_aux_name)); | 755 | strlcat(i8042_pnp_aux_name, ":", sizeof(i8042_pnp_aux_name)); |
743 | strlcat(i8042_pnp_aux_name, pnp_dev_name(dev), sizeof(i8042_pnp_aux_name)); | 756 | strlcat(i8042_pnp_aux_name, pnp_dev_name(dev), sizeof(i8042_pnp_aux_name)); |
744 | } | 757 | } |
758 | i8042_pnp_id_to_string(dev->id, i8042_aux_firmware_id, | ||
759 | sizeof(i8042_aux_firmware_id)); | ||
745 | 760 | ||
746 | i8042_pnp_aux_devices++; | 761 | i8042_pnp_aux_devices++; |
747 | return 0; | 762 | return 0; |
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 020053fa5aaa..3807c3e971cc 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c | |||
@@ -87,6 +87,8 @@ MODULE_PARM_DESC(debug, "Turn i8042 debugging mode on and off"); | |||
87 | #endif | 87 | #endif |
88 | 88 | ||
89 | static bool i8042_bypass_aux_irq_test; | 89 | static bool i8042_bypass_aux_irq_test; |
90 | static char i8042_kbd_firmware_id[128]; | ||
91 | static char i8042_aux_firmware_id[128]; | ||
90 | 92 | ||
91 | #include "i8042.h" | 93 | #include "i8042.h" |
92 | 94 | ||
@@ -1218,6 +1220,8 @@ static int __init i8042_create_kbd_port(void) | |||
1218 | serio->dev.parent = &i8042_platform_device->dev; | 1220 | serio->dev.parent = &i8042_platform_device->dev; |
1219 | strlcpy(serio->name, "i8042 KBD port", sizeof(serio->name)); | 1221 | strlcpy(serio->name, "i8042 KBD port", sizeof(serio->name)); |
1220 | strlcpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys)); | 1222 | strlcpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys)); |
1223 | strlcpy(serio->firmware_id, i8042_kbd_firmware_id, | ||
1224 | sizeof(serio->firmware_id)); | ||
1221 | 1225 | ||
1222 | port->serio = serio; | 1226 | port->serio = serio; |
1223 | port->irq = I8042_KBD_IRQ; | 1227 | port->irq = I8042_KBD_IRQ; |
@@ -1244,6 +1248,8 @@ static int __init i8042_create_aux_port(int idx) | |||
1244 | if (idx < 0) { | 1248 | if (idx < 0) { |
1245 | strlcpy(serio->name, "i8042 AUX port", sizeof(serio->name)); | 1249 | strlcpy(serio->name, "i8042 AUX port", sizeof(serio->name)); |
1246 | strlcpy(serio->phys, I8042_AUX_PHYS_DESC, sizeof(serio->phys)); | 1250 | strlcpy(serio->phys, I8042_AUX_PHYS_DESC, sizeof(serio->phys)); |
1251 | strlcpy(serio->firmware_id, i8042_aux_firmware_id, | ||
1252 | sizeof(serio->firmware_id)); | ||
1247 | serio->close = i8042_port_close; | 1253 | serio->close = i8042_port_close; |
1248 | } else { | 1254 | } else { |
1249 | snprintf(serio->name, sizeof(serio->name), "i8042 AUX%d port", idx); | 1255 | snprintf(serio->name, sizeof(serio->name), "i8042 AUX%d port", idx); |