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