diff mbox series

[v2,1/5] input/serio/i8042: Attach fwnode to serio i8042 kbd device

Message ID 20200324123518.239768-1-rajatja@google.com (mailing list archive)
State Superseded
Headers show
Series [v2,1/5] input/serio/i8042: Attach fwnode to serio i8042 kbd device | expand

Commit Message

Rajat Jain March 24, 2020, 12:35 p.m. UTC
Attach the firmware node to the serio i8042 kbd device so that device
properties can be passed from the firmware.

Signed-off-by: Rajat Jain <rajatja@google.com>
---
v2: Remove the Change-Id from the commit log

 drivers/input/serio/i8042-x86ia64io.h | 1 +
 drivers/input/serio/i8042.c           | 3 +++
 2 files changed, 4 insertions(+)

Comments

Dmitry Torokhov March 26, 2020, 9:25 p.m. UTC | #1
On Tue, Mar 24, 2020 at 05:35:14AM -0700, Rajat Jain wrote:
> Attach the firmware node to the serio i8042 kbd device so that device
> properties can be passed from the firmware.
> 
> Signed-off-by: Rajat Jain <rajatja@google.com>
> ---
> v2: Remove the Change-Id from the commit log
> 
>  drivers/input/serio/i8042-x86ia64io.h | 1 +
>  drivers/input/serio/i8042.c           | 3 +++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
> index dc974c288e880..ed9ec4310d976 100644
> --- a/drivers/input/serio/i8042-x86ia64io.h
> +++ b/drivers/input/serio/i8042-x86ia64io.h
> @@ -927,6 +927,7 @@ static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id *
>  	}
>  	i8042_pnp_id_to_string(dev->id, i8042_kbd_firmware_id,
>  			       sizeof(i8042_kbd_firmware_id));
> +	i8042_kbd_fwnode = dev_fwnode(&dev->dev);
>  
>  	/* Keyboard ports are always supposed to be wakeup-enabled */
>  	device_set_wakeup_enable(&dev->dev, true);
> diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
> index 20ff2bed3917a..0dddf273afd94 100644
> --- a/drivers/input/serio/i8042.c
> +++ b/drivers/input/serio/i8042.c
> @@ -21,6 +21,7 @@
>  #include <linux/i8042.h>
>  #include <linux/slab.h>
>  #include <linux/suspend.h>
> +#include <linux/property.h>
>  
>  #include <asm/io.h>
>  
> @@ -124,6 +125,7 @@ MODULE_PARM_DESC(unmask_kbd_data, "Unconditional enable (may reveal sensitive da
>  static bool i8042_bypass_aux_irq_test;
>  static char i8042_kbd_firmware_id[128];
>  static char i8042_aux_firmware_id[128];
> +static struct fwnode_handle *i8042_kbd_fwnode;
>  
>  #include "i8042.h"
>  
> @@ -1335,6 +1337,7 @@ static int __init i8042_create_kbd_port(void)
>  	strlcpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys));
>  	strlcpy(serio->firmware_id, i8042_kbd_firmware_id,
>  		sizeof(serio->firmware_id));
> +	set_primary_fwnode(&serio->dev, i8042_kbd_fwnode);

Rafael, do you have any concerns here? We want to be able to access
properties assigned to KBC or similar device in ACPI. Serio port devices
in i8042 essentially mirror the 2 PNP (typically called KBC, PS2K or
PS2M) devices in ACPI.

Thanks.
diff mbox series

Patch

diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index dc974c288e880..ed9ec4310d976 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -927,6 +927,7 @@  static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id *
 	}
 	i8042_pnp_id_to_string(dev->id, i8042_kbd_firmware_id,
 			       sizeof(i8042_kbd_firmware_id));
+	i8042_kbd_fwnode = dev_fwnode(&dev->dev);
 
 	/* Keyboard ports are always supposed to be wakeup-enabled */
 	device_set_wakeup_enable(&dev->dev, true);
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 20ff2bed3917a..0dddf273afd94 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -21,6 +21,7 @@ 
 #include <linux/i8042.h>
 #include <linux/slab.h>
 #include <linux/suspend.h>
+#include <linux/property.h>
 
 #include <asm/io.h>
 
@@ -124,6 +125,7 @@  MODULE_PARM_DESC(unmask_kbd_data, "Unconditional enable (may reveal sensitive da
 static bool i8042_bypass_aux_irq_test;
 static char i8042_kbd_firmware_id[128];
 static char i8042_aux_firmware_id[128];
+static struct fwnode_handle *i8042_kbd_fwnode;
 
 #include "i8042.h"
 
@@ -1335,6 +1337,7 @@  static int __init i8042_create_kbd_port(void)
 	strlcpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys));
 	strlcpy(serio->firmware_id, i8042_kbd_firmware_id,
 		sizeof(serio->firmware_id));
+	set_primary_fwnode(&serio->dev, i8042_kbd_fwnode);
 
 	port->serio = serio;
 	port->irq = I8042_KBD_IRQ;