diff mbox series

[2/2] Input: i8042: Add LoongArch support in i8042-acpipnpio.h

Message ID 20220917064020.1639709-2-chenhuacai@loongson.cn
State New
Headers show
Series [1/2] Input: i8042: Rename i8042-x86ia64io.h to i8042-acpipnpio.h | expand

Commit Message

陈华才 Sept. 17, 2022, 6:40 a.m. UTC
LoongArch uses ACPI and nearly the same as X86/IA64 for 8042. So modify
i8042-acpipnpio.h slightly and enable it for LoongArch in i8042.h. Then
i8042 driver can work well under the ACPI firmware with PNP typed key-
board and mouse configured in DSDT.

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
 drivers/input/serio/i8042-acpipnpio.h | 8 ++++++--
 drivers/input/serio/i8042.h           | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

Comments

Mattijs Korpershoek Sept. 22, 2022, 8:32 a.m. UTC | #1
On Sat, Sep 17, 2022 at 14:40, Huacai Chen <chenhuacai@loongson.cn> wrote:

> LoongArch uses ACPI and nearly the same as X86/IA64 for 8042. So modify
> i8042-acpipnpio.h slightly and enable it for LoongArch in i8042.h. Then
> i8042 driver can work well under the ACPI firmware with PNP typed key-
> board and mouse configured in DSDT.
>
> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>

I would have split the pr_info() move in its own patch since it seems
like a "valid fix" on its own, but i'm probably too pedantic about this.

So, please take my:

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>

> ---
>  drivers/input/serio/i8042-acpipnpio.h | 8 ++++++--
>  drivers/input/serio/i8042.h           | 2 +-
>  2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
> index d14b9fb59d6c..c22151f180bb 100644
> --- a/drivers/input/serio/i8042-acpipnpio.h
> +++ b/drivers/input/serio/i8042-acpipnpio.h
> @@ -2,6 +2,7 @@
>  #ifndef _I8042_ACPIPNPIO_H
>  #define _I8042_ACPIPNPIO_H
>  
> +#include <linux/acpi.h>
>  
>  #ifdef CONFIG_X86
>  #include <asm/x86_init.h>
> @@ -1449,16 +1450,19 @@ static int __init i8042_pnp_init(void)
>  
>  	if (!i8042_pnp_kbd_devices && !i8042_pnp_aux_devices) {
>  		i8042_pnp_exit();
> +		pr_info("PNP: No PS/2 controller found.\n");
>  #if defined(__ia64__)
>  		return -ENODEV;
> +#elif defined(__loongarch__)
> +		if (acpi_disabled == 0)
> +			return -ENODEV;
>  #else
> -		pr_info("PNP: No PS/2 controller found.\n");
>  		if (x86_platform.legacy.i8042 !=
>  				X86_LEGACY_I8042_EXPECTED_PRESENT)
>  			return -ENODEV;
> +#endif
>  		pr_info("Probing ports directly.\n");
>  		return 0;
> -#endif
>  	}
>  
>  	if (i8042_pnp_kbd_devices)
> diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
> index bf2592fa9a78..adb5173372d3 100644
> --- a/drivers/input/serio/i8042.h
> +++ b/drivers/input/serio/i8042.h
> @@ -19,7 +19,7 @@
>  #include "i8042-snirm.h"
>  #elif defined(CONFIG_SPARC)
>  #include "i8042-sparcio.h"
> -#elif defined(CONFIG_X86) || defined(CONFIG_IA64)
> +#elif defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_LOONGARCH)
>  #include "i8042-acpipnpio.h"
>  #else
>  #include "i8042-io.h"
> -- 
> 2.31.1
Huacai Chen Sept. 30, 2022, 2:41 a.m. UTC | #2
Hi, Mattijs,

On Thu, Sep 22, 2022 at 4:32 PM Mattijs Korpershoek
<mkorpershoek@baylibre.com> wrote:
>
> On Sat, Sep 17, 2022 at 14:40, Huacai Chen <chenhuacai@loongson.cn> wrote:
>
> > LoongArch uses ACPI and nearly the same as X86/IA64 for 8042. So modify
> > i8042-acpipnpio.h slightly and enable it for LoongArch in i8042.h. Then
> > i8042 driver can work well under the ACPI firmware with PNP typed key-
> > board and mouse configured in DSDT.
> >
> > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
>
> I would have split the pr_info() move in its own patch since it seems
> like a "valid fix" on its own, but i'm probably too pedantic about this.
>
> So, please take my:
>
> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
I think the pr_info is needed for all architectures, and the moving is
very simple so I haven't split it. But anyway, if Dmitry also thinks
this patch should be split, I will send a new version. :)

Huacai
>
> > ---
> >  drivers/input/serio/i8042-acpipnpio.h | 8 ++++++--
> >  drivers/input/serio/i8042.h           | 2 +-
> >  2 files changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
> > index d14b9fb59d6c..c22151f180bb 100644
> > --- a/drivers/input/serio/i8042-acpipnpio.h
> > +++ b/drivers/input/serio/i8042-acpipnpio.h
> > @@ -2,6 +2,7 @@
> >  #ifndef _I8042_ACPIPNPIO_H
> >  #define _I8042_ACPIPNPIO_H
> >
> > +#include <linux/acpi.h>
> >
> >  #ifdef CONFIG_X86
> >  #include <asm/x86_init.h>
> > @@ -1449,16 +1450,19 @@ static int __init i8042_pnp_init(void)
> >
> >       if (!i8042_pnp_kbd_devices && !i8042_pnp_aux_devices) {
> >               i8042_pnp_exit();
> > +             pr_info("PNP: No PS/2 controller found.\n");
> >  #if defined(__ia64__)
> >               return -ENODEV;
> > +#elif defined(__loongarch__)
> > +             if (acpi_disabled == 0)
> > +                     return -ENODEV;
> >  #else
> > -             pr_info("PNP: No PS/2 controller found.\n");
> >               if (x86_platform.legacy.i8042 !=
> >                               X86_LEGACY_I8042_EXPECTED_PRESENT)
> >                       return -ENODEV;
> > +#endif
> >               pr_info("Probing ports directly.\n");
> >               return 0;
> > -#endif
> >       }
> >
> >       if (i8042_pnp_kbd_devices)
> > diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
> > index bf2592fa9a78..adb5173372d3 100644
> > --- a/drivers/input/serio/i8042.h
> > +++ b/drivers/input/serio/i8042.h
> > @@ -19,7 +19,7 @@
> >  #include "i8042-snirm.h"
> >  #elif defined(CONFIG_SPARC)
> >  #include "i8042-sparcio.h"
> > -#elif defined(CONFIG_X86) || defined(CONFIG_IA64)
> > +#elif defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_LOONGARCH)
> >  #include "i8042-acpipnpio.h"
> >  #else
> >  #include "i8042-io.h"
> > --
> > 2.31.1
>
Dmitry Torokhov Oct. 1, 2022, 10:05 p.m. UTC | #3
On Fri, Sep 30, 2022 at 10:41:59AM +0800, Huacai Chen wrote:
> Hi, Mattijs,
> 
> On Thu, Sep 22, 2022 at 4:32 PM Mattijs Korpershoek
> <mkorpershoek@baylibre.com> wrote:
> >
> > On Sat, Sep 17, 2022 at 14:40, Huacai Chen <chenhuacai@loongson.cn> wrote:
> >
> > > LoongArch uses ACPI and nearly the same as X86/IA64 for 8042. So modify
> > > i8042-acpipnpio.h slightly and enable it for LoongArch in i8042.h. Then
> > > i8042 driver can work well under the ACPI firmware with PNP typed key-
> > > board and mouse configured in DSDT.
> > >
> > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> >
> > I would have split the pr_info() move in its own patch since it seems
> > like a "valid fix" on its own, but i'm probably too pedantic about this.
> >
> > So, please take my:
> >
> > Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> I think the pr_info is needed for all architectures, and the moving is
> very simple so I haven't split it. But anyway, if Dmitry also thinks
> this patch should be split, I will send a new version. :)

The reason for ia64 not emitting this message is because we "trust" ia64
firmware and it is quite normal for it not to have i8042 implementation,
whereas there are a lot of legacy devices on x86 and not having PS/2
keyboard is still not very common.

I moved the pr_info() back into x86/loongarch branch and applied.

Thanks.
diff mbox series

Patch

diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
index d14b9fb59d6c..c22151f180bb 100644
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -2,6 +2,7 @@ 
 #ifndef _I8042_ACPIPNPIO_H
 #define _I8042_ACPIPNPIO_H
 
+#include <linux/acpi.h>
 
 #ifdef CONFIG_X86
 #include <asm/x86_init.h>
@@ -1449,16 +1450,19 @@  static int __init i8042_pnp_init(void)
 
 	if (!i8042_pnp_kbd_devices && !i8042_pnp_aux_devices) {
 		i8042_pnp_exit();
+		pr_info("PNP: No PS/2 controller found.\n");
 #if defined(__ia64__)
 		return -ENODEV;
+#elif defined(__loongarch__)
+		if (acpi_disabled == 0)
+			return -ENODEV;
 #else
-		pr_info("PNP: No PS/2 controller found.\n");
 		if (x86_platform.legacy.i8042 !=
 				X86_LEGACY_I8042_EXPECTED_PRESENT)
 			return -ENODEV;
+#endif
 		pr_info("Probing ports directly.\n");
 		return 0;
-#endif
 	}
 
 	if (i8042_pnp_kbd_devices)
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index bf2592fa9a78..adb5173372d3 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -19,7 +19,7 @@ 
 #include "i8042-snirm.h"
 #elif defined(CONFIG_SPARC)
 #include "i8042-sparcio.h"
-#elif defined(CONFIG_X86) || defined(CONFIG_IA64)
+#elif defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_LOONGARCH)
 #include "i8042-acpipnpio.h"
 #else
 #include "i8042-io.h"