2022-09-17 06:45:06

by Huacai Chen

[permalink] [raw]
Subject: [PATCH 2/2] Input: i8042: Add LoongArch support in i8042-acpipnpio.h

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 <[email protected]>
---
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


2022-09-22 08:40:47

by Mattijs Korpershoek

[permalink] [raw]
Subject: Re: [PATCH 2/2] Input: i8042: Add LoongArch support in i8042-acpipnpio.h

On Sat, Sep 17, 2022 at 14:40, Huacai Chen <[email protected]> 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 <[email protected]>

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 <[email protected]>

> ---
> 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

2022-09-30 02:53:30

by Huacai Chen

[permalink] [raw]
Subject: Re: [PATCH 2/2] Input: i8042: Add LoongArch support in i8042-acpipnpio.h

Hi, Mattijs,

On Thu, Sep 22, 2022 at 4:32 PM Mattijs Korpershoek
<[email protected]> wrote:
>
> On Sat, Sep 17, 2022 at 14:40, Huacai Chen <[email protected]> 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 <[email protected]>
>
> 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 <[email protected]>
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
>

2022-10-01 22:09:23

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH 2/2] Input: i8042: Add LoongArch support in i8042-acpipnpio.h

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
> <[email protected]> wrote:
> >
> > On Sat, Sep 17, 2022 at 14:40, Huacai Chen <[email protected]> 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 <[email protected]>
> >
> > 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 <[email protected]>
> 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.

--
Dmitry