[PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus

chipang_kao posted 1 patch 2 days, 12 hours ago
MAINTAINERS                                   |  1 +
drivers/platform/wmi/Kconfig                  |  1 +
drivers/platform/wmi/Makefile                 |  1 +
drivers/platform/wmi/asus/Kconfig             | 64 +++++++++++++++++++
drivers/platform/wmi/asus/Makefile            |  9 +++
.../platform/{x86 => wmi/asus}/asus-armoury.c |  0
.../platform/{x86 => wmi/asus}/asus-armoury.h |  0
.../platform/{x86 => wmi/asus}/asus-nb-wmi.c  |  0
drivers/platform/{x86 => wmi/asus}/asus-wmi.c |  0
drivers/platform/{x86 => wmi/asus}/asus-wmi.h |  0
drivers/platform/x86/Kconfig                  | 58 -----------------
drivers/platform/x86/Makefile                 |  3 -
12 files changed, 76 insertions(+), 61 deletions(-)
create mode 100644 drivers/platform/wmi/asus/Kconfig
create mode 100644 drivers/platform/wmi/asus/Makefile
rename drivers/platform/{x86 => wmi/asus}/asus-armoury.c (100%)
rename drivers/platform/{x86 => wmi/asus}/asus-armoury.h (100%)
rename drivers/platform/{x86 => wmi/asus}/asus-nb-wmi.c (100%)
rename drivers/platform/{x86 => wmi/asus}/asus-wmi.c (100%)
rename drivers/platform/{x86 => wmi/asus}/asus-wmi.h (100%)
[PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus
Posted by chipang_kao 2 days, 12 hours ago
ASUS WMI and related platform drivers currently reside under
drivers/platform/x86/. However, with ARM64 devices utilizing ACPI WMI
interfaces, maintaining these drivers exclusively under x86 creates
unnecessary architectural restrictions and Kconfig duplications.

To allow ARM64 architectures to build and utilize ASUS WMI drivers
cleanly:
1. Relocate all ASUS WMI-based drivers and headers from
   drivers/platform/x86/ to drivers/platform/wmi/asus/.
2. Create dedicated Kconfig and Makefile under
   drivers/platform/wmi/asus/ and source them in
   drivers/platform/wmi/Kconfig and Makefile.
3. Update drivers/platform/x86/Kconfig to remove duplicated entries
   and source the unified WMI-based ASUS configuration.

No functional code logic changes are introduced in this patch; this is
a pure code relocation and build infrastructure refactoring.

Signed-off-by: chipang_kao <chipang_kao@asus.com>
---

Changes in v3:
- Refined the file relocation scope to target ONLY pure WMI-based
  platform drivers (asus-wmi, asus-nb-wmi, and asus-armoury).
- Retained non-WMI x86 platform drivers (such as asus-laptop,
  asus-wireless, and asus-tf103c-dock) under drivers/platform/x86/.
- Updated drivers/platform/wmi/asus/Kconfig and Makefile to only build
  and export the relocated WMI components.
- Dropped patch 1/2 from the original series as CONFIG_ACPI_WMI
  dependency updates are handled by Armin's WMI refactoring series.

Changes in v2:
- Relocated ASUS platform drivers from drivers/platform/x86/ to
  drivers/platform/wmi/asus/ to eliminate Kconfig duplication and
  architectural restrictions for ARM64 platforms.
- Updated MAINTAINERS file to reflect the new path.

 MAINTAINERS                                   |  1 +
 drivers/platform/wmi/Kconfig                  |  1 +
 drivers/platform/wmi/Makefile                 |  1 +
 drivers/platform/wmi/asus/Kconfig             | 64 +++++++++++++++++++
 drivers/platform/wmi/asus/Makefile            |  9 +++
 .../platform/{x86 => wmi/asus}/asus-armoury.c |  0
 .../platform/{x86 => wmi/asus}/asus-armoury.h |  0
 .../platform/{x86 => wmi/asus}/asus-nb-wmi.c  |  0
 drivers/platform/{x86 => wmi/asus}/asus-wmi.c |  0
 drivers/platform/{x86 => wmi/asus}/asus-wmi.h |  0
 drivers/platform/x86/Kconfig                  | 58 -----------------
 drivers/platform/x86/Makefile                 |  3 -
 12 files changed, 76 insertions(+), 61 deletions(-)
 create mode 100644 drivers/platform/wmi/asus/Kconfig
 create mode 100644 drivers/platform/wmi/asus/Makefile
 rename drivers/platform/{x86 => wmi/asus}/asus-armoury.c (100%)
 rename drivers/platform/{x86 => wmi/asus}/asus-armoury.h (100%)
 rename drivers/platform/{x86 => wmi/asus}/asus-nb-wmi.c (100%)
 rename drivers/platform/{x86 => wmi/asus}/asus-wmi.c (100%)
 rename drivers/platform/{x86 => wmi/asus}/asus-wmi.h (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index cc3cae2e378b..2e4fa6812093 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4124,6 +4124,7 @@ M:	Denis Benato <denis.benato@linux.dev>
 L:	platform-driver-x86@vger.kernel.org
 S:	Maintained
 W:	https://asus-linux.org/
+F:	drivers/platform/wmi/asus/asus*.c
 F:	drivers/platform/x86/asus*.c
 F:	drivers/platform/x86/eeepc*.c
 
diff --git a/drivers/platform/wmi/Kconfig b/drivers/platform/wmi/Kconfig
index d62f51ff3b7f..acce8e9b7264 100644
--- a/drivers/platform/wmi/Kconfig
+++ b/drivers/platform/wmi/Kconfig
@@ -33,5 +33,6 @@ config ACPI_WMI_LEGACY_DEVICE_NAMES
 	  the same GUID to fail in some corner cases.
 
 source "drivers/platform/wmi/tests/Kconfig"
+source "drivers/platform/wmi/asus/Kconfig"
 
 endif # ACPI_WMI
diff --git a/drivers/platform/wmi/Makefile b/drivers/platform/wmi/Makefile
index 2feff94a5594..305f4688324f 100644
--- a/drivers/platform/wmi/Makefile
+++ b/drivers/platform/wmi/Makefile
@@ -6,6 +6,7 @@
 
 wmi-y			:= core.o marshalling.o string.o
 obj-$(CONFIG_ACPI_WMI)	+= wmi.o
+obj-$(CONFIG_ASUS_WMI) += asus/
 
 # Unit tests
 obj-y			+= tests/
diff --git a/drivers/platform/wmi/asus/Kconfig b/drivers/platform/wmi/asus/Kconfig
new file mode 100644
index 000000000000..75b6dd45af66
--- /dev/null
+++ b/drivers/platform/wmi/asus/Kconfig
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Asus Platform Specific Drivers
+#
+
+config ASUS_ARMOURY
+	tristate "ASUS Armoury driver"
+	depends on ASUS_WMI
+	select FW_ATTR_CLASS
+	help
+	  Say Y here if you have a WMI aware Asus machine and would like to use the
+	  firmware_attributes API to control various settings typically exposed in
+	  the ASUS Armoury Crate application available on Windows.
+
+	  To compile this driver as a module, choose M here: the module will
+	  be called asus-armoury.
+
+config ASUS_WMI
+	tristate "ASUS WMI Driver"
+	depends on ACPI_WMI
+	depends on ACPI_BATTERY
+	depends on INPUT
+	depends on HWMON
+	depends on BACKLIGHT_CLASS_DEVICE
+	depends on RFKILL || RFKILL = n
+	depends on HOTPLUG_PCI
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
+	depends on SERIO_I8042 || SERIO_I8042 = n
+	select INPUT_SPARSEKMAP
+	select LEDS_CLASS
+	select NEW_LEDS
+	select ACPI_PLATFORM_PROFILE
+	help
+	  Say Y here if you have a WMI aware Asus laptop (like Eee PCs or new
+	  Asus Notebooks).
+
+	  To compile this driver as a module, choose M here: the module will
+	  be called asus-wmi.
+
+config ASUS_WMI_DEPRECATED_ATTRS
+	bool "BIOS option support in WMI platform (DEPRECATED)"
+	depends on ASUS_WMI
+	default y
+	help
+	  Say Y to expose the configurable BIOS options through the asus-wmi
+	  driver.
+
+	  This can be used with or without the asus-armoury driver which
+	  has the same attributes, but more, and better features.
+
+config ASUS_NB_WMI
+	tristate "Asus Notebook WMI Driver"
+	depends on ASUS_WMI
+	help
+	  This is a driver for newer Asus notebooks. It adds extra features
+	  like wireless radio and bluetooth control, leds, hotkeys, backlight...
+
+	  For more information, see
+	  <file:Documentation/ABI/testing/sysfs-platform-asus-wmi>
+
+	  If you have an ACPI-WMI compatible Asus Notebook, say Y or M
+	  here.
+
+
diff --git a/drivers/platform/wmi/asus/Makefile b/drivers/platform/wmi/asus/Makefile
new file mode 100644
index 000000000000..8daa5ebff89f
--- /dev/null
+++ b/drivers/platform/wmi/asus/Makefile
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Makefile for linux/drivers/platform/wmi/asus
+# Asus Platform-Specific Drivers
+#
+
+obj-$(CONFIG_ASUS_ARMOURY)	+= asus-armoury.o
+obj-$(CONFIG_ASUS_WMI)		+= asus-wmi.o
+obj-$(CONFIG_ASUS_NB_WMI)	+= asus-nb-wmi.o
diff --git a/drivers/platform/x86/asus-armoury.c b/drivers/platform/wmi/asus/asus-armoury.c
similarity index 100%
rename from drivers/platform/x86/asus-armoury.c
rename to drivers/platform/wmi/asus/asus-armoury.c
diff --git a/drivers/platform/x86/asus-armoury.h b/drivers/platform/wmi/asus/asus-armoury.h
similarity index 100%
rename from drivers/platform/x86/asus-armoury.h
rename to drivers/platform/wmi/asus/asus-armoury.h
diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/wmi/asus/asus-nb-wmi.c
similarity index 100%
rename from drivers/platform/x86/asus-nb-wmi.c
rename to drivers/platform/wmi/asus/asus-nb-wmi.c
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/wmi/asus/asus-wmi.c
similarity index 100%
rename from drivers/platform/x86/asus-wmi.c
rename to drivers/platform/wmi/asus/asus-wmi.c
diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/wmi/asus/asus-wmi.h
similarity index 100%
rename from drivers/platform/x86/asus-wmi.h
rename to drivers/platform/wmi/asus/asus-wmi.h
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 957034f39e4e..68cf99de415d 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -253,64 +253,6 @@ config ASUS_WIRELESS
 	  If you choose to compile this driver as a module the module will be
 	  called asus-wireless.
 
-config ASUS_ARMOURY
-	tristate "ASUS Armoury driver"
-	depends on ASUS_WMI
-	select FW_ATTR_CLASS
-	help
-	  Say Y here if you have a WMI aware Asus machine and would like to use the
-	  firmware_attributes API to control various settings typically exposed in
-	  the ASUS Armoury Crate application available on Windows.
-
-	  To compile this driver as a module, choose M here: the module will
-	  be called asus-armoury.
-
-config ASUS_WMI
-	tristate "ASUS WMI Driver"
-	depends on ACPI_WMI
-	depends on ACPI_BATTERY
-	depends on INPUT
-	depends on HWMON
-	depends on BACKLIGHT_CLASS_DEVICE
-	depends on RFKILL || RFKILL = n
-	depends on HOTPLUG_PCI
-	depends on ACPI_VIDEO || ACPI_VIDEO = n
-	depends on SERIO_I8042 || SERIO_I8042 = n
-	select INPUT_SPARSEKMAP
-	select LEDS_CLASS
-	select NEW_LEDS
-	select ACPI_PLATFORM_PROFILE
-	help
-	  Say Y here if you have a WMI aware Asus laptop (like Eee PCs or new
-	  Asus Notebooks).
-
-	  To compile this driver as a module, choose M here: the module will
-	  be called asus-wmi.
-
-config ASUS_WMI_DEPRECATED_ATTRS
-	bool "BIOS option support in WMI platform (DEPRECATED)"
-	depends on ASUS_WMI
-	default y
-	help
-	  Say Y to expose the configurable BIOS options through the asus-wmi
-	  driver.
-
-	  This can be used with or without the asus-armoury driver which
-	  has the same attributes, but more, and better features.
-
-config ASUS_NB_WMI
-	tristate "Asus Notebook WMI Driver"
-	depends on ASUS_WMI
-	help
-	  This is a driver for newer Asus notebooks. It adds extra features
-	  like wireless radio and bluetooth control, leds, hotkeys, backlight...
-
-	  For more information, see
-	  <file:Documentation/ABI/testing/sysfs-platform-asus-wmi>
-
-	  If you have an ACPI-WMI compatible Asus Notebook, say Y or M
-	  here.
-
 config ASUS_TF103C_DOCK
 	tristate "Asus TF103C 2-in-1 keyboard dock"
 	depends on ACPI
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 872ac3842391..0bacd55f2fce 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -33,9 +33,6 @@ obj-$(CONFIG_APPLE_GMUX)	+= apple-gmux.o
 # ASUS
 obj-$(CONFIG_ASUS_LAPTOP)	+= asus-laptop.o
 obj-$(CONFIG_ASUS_WIRELESS)	+= asus-wireless.o
-obj-$(CONFIG_ASUS_ARMOURY)	+= asus-armoury.o
-obj-$(CONFIG_ASUS_WMI)		+= asus-wmi.o
-obj-$(CONFIG_ASUS_NB_WMI)	+= asus-nb-wmi.o
 obj-$(CONFIG_ASUS_TF103C_DOCK)	+= asus-tf103c-dock.o
 obj-$(CONFIG_EEEPC_LAPTOP)	+= eeepc-laptop.o
 obj-$(CONFIG_EEEPC_WMI)		+= eeepc-wmi.o
-- 
2.43.0
Re: [PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus
Posted by kernel test robot 13 hours ago
Hi chipang_kao,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v7.3-rc4 next-20260922]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/chipang_kao/platform-wmi-Move-ASUS-platform-drivers-from-x86-to-wmi-asus/20260922-112157
base:   linus/master
patch link:    https://lore.kernel.org/r/20260922032157.120188-1-chipang_kao%40asus.com
patch subject: [PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus
config: x86_64-rhel-9.4-rust (https://download.01.org/0day-ci/archive/20260924/202609241003.pdNIa1YN-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
rustc: rustc 1.96.0 (ac68faa20 2026-05-25)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260924/202609241003.pdNIa1YN-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609241003.pdNIa1YN-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/platform/x86/eeepc-wmi.c:25:10: fatal error: 'asus-wmi.h' file not found
      25 | #include "asus-wmi.h"
         |          ^~~~~~~~~~~~
   1 error generated.


vim +25 drivers/platform/x86/eeepc-wmi.c

e12e6d94db24e90 Corentin Chary 2011-02-26  24  
e12e6d94db24e90 Corentin Chary 2011-02-26 @25  #include "asus-wmi.h"
e12e6d94db24e90 Corentin Chary 2011-02-26  26  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus
Posted by kernel test robot 14 hours ago
Hi chipang_kao,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v7.3-rc4 next-20260922]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/chipang_kao/platform-wmi-Move-ASUS-platform-drivers-from-x86-to-wmi-asus/20260922-112157
base:   linus/master
patch link:    https://lore.kernel.org/r/20260922032157.120188-1-chipang_kao%40asus.com
patch subject: [PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20260924/202609240939.vOix0FZl-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260924/202609240939.vOix0FZl-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609240939.vOix0FZl-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/platform/x86/eeepc-wmi.c:25:10: fatal error: asus-wmi.h: No such file or directory
      25 | #include "asus-wmi.h"
         |          ^~~~~~~~~~~~
   compilation terminated.


vim +25 drivers/platform/x86/eeepc-wmi.c

e12e6d94db24e9 Corentin Chary 2011-02-26  24  
e12e6d94db24e9 Corentin Chary 2011-02-26 @25  #include "asus-wmi.h"
e12e6d94db24e9 Corentin Chary 2011-02-26  26  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Re: [PATCH v3] platform/wmi: Move ASUS platform drivers from x86 to wmi/asus
Posted by Armin Wolf 1 day, 20 hours ago
Am 22.09.26 um 05:21 schrieb chipang_kao:

> ASUS WMI and related platform drivers currently reside under
> drivers/platform/x86/. However, with ARM64 devices utilizing ACPI WMI
> interfaces, maintaining these drivers exclusively under x86 creates
> unnecessary architectural restrictions and Kconfig duplications.
>
> To allow ARM64 architectures to build and utilize ASUS WMI drivers
> cleanly:
> 1. Relocate all ASUS WMI-based drivers and headers from
>     drivers/platform/x86/ to drivers/platform/wmi/asus/.
> 2. Create dedicated Kconfig and Makefile under
>     drivers/platform/wmi/asus/ and source them in
>     drivers/platform/wmi/Kconfig and Makefile.
> 3. Update drivers/platform/x86/Kconfig to remove duplicated entries
>     and source the unified WMI-based ASUS configuration.
>
> No functional code logic changes are introduced in this patch; this is
> a pure code relocation and build infrastructure refactoring.

Hi,

i am two minds about moving the Asus WMI drivers to drivers/platform/wmi/asus,
because in my mind drivers/platform/wmi contains only code necessary for providing
access to ACPI-WMI objects. AFAIK the Asus WMI drivers are client drivers using the
WMI APIs to access WMI objects, not host drivers providing WMI objects.

Maybe moving the drivers to drivers/platform/asus would be better?

Thanks,
Armin Wolf

> Signed-off-by: chipang_kao <chipang_kao@asus.com>
> ---
>
> Changes in v3:
> - Refined the file relocation scope to target ONLY pure WMI-based
>    platform drivers (asus-wmi, asus-nb-wmi, and asus-armoury).
> - Retained non-WMI x86 platform drivers (such as asus-laptop,
>    asus-wireless, and asus-tf103c-dock) under drivers/platform/x86/.
> - Updated drivers/platform/wmi/asus/Kconfig and Makefile to only build
>    and export the relocated WMI components.
> - Dropped patch 1/2 from the original series as CONFIG_ACPI_WMI
>    dependency updates are handled by Armin's WMI refactoring series.
>
> Changes in v2:
> - Relocated ASUS platform drivers from drivers/platform/x86/ to
>    drivers/platform/wmi/asus/ to eliminate Kconfig duplication and
>    architectural restrictions for ARM64 platforms.
> - Updated MAINTAINERS file to reflect the new path.
>
>   MAINTAINERS                                   |  1 +
>   drivers/platform/wmi/Kconfig                  |  1 +
>   drivers/platform/wmi/Makefile                 |  1 +
>   drivers/platform/wmi/asus/Kconfig             | 64 +++++++++++++++++++
>   drivers/platform/wmi/asus/Makefile            |  9 +++
>   .../platform/{x86 => wmi/asus}/asus-armoury.c |  0
>   .../platform/{x86 => wmi/asus}/asus-armoury.h |  0
>   .../platform/{x86 => wmi/asus}/asus-nb-wmi.c  |  0
>   drivers/platform/{x86 => wmi/asus}/asus-wmi.c |  0
>   drivers/platform/{x86 => wmi/asus}/asus-wmi.h |  0
>   drivers/platform/x86/Kconfig                  | 58 -----------------
>   drivers/platform/x86/Makefile                 |  3 -
>   12 files changed, 76 insertions(+), 61 deletions(-)
>   create mode 100644 drivers/platform/wmi/asus/Kconfig
>   create mode 100644 drivers/platform/wmi/asus/Makefile
>   rename drivers/platform/{x86 => wmi/asus}/asus-armoury.c (100%)
>   rename drivers/platform/{x86 => wmi/asus}/asus-armoury.h (100%)
>   rename drivers/platform/{x86 => wmi/asus}/asus-nb-wmi.c (100%)
>   rename drivers/platform/{x86 => wmi/asus}/asus-wmi.c (100%)
>   rename drivers/platform/{x86 => wmi/asus}/asus-wmi.h (100%)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index cc3cae2e378b..2e4fa6812093 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4124,6 +4124,7 @@ M:	Denis Benato <denis.benato@linux.dev>
>   L:	platform-driver-x86@vger.kernel.org
>   S:	Maintained
>   W:	https://asus-linux.org/
> +F:	drivers/platform/wmi/asus/asus*.c
>   F:	drivers/platform/x86/asus*.c
>   F:	drivers/platform/x86/eeepc*.c
>   
> diff --git a/drivers/platform/wmi/Kconfig b/drivers/platform/wmi/Kconfig
> index d62f51ff3b7f..acce8e9b7264 100644
> --- a/drivers/platform/wmi/Kconfig
> +++ b/drivers/platform/wmi/Kconfig
> @@ -33,5 +33,6 @@ config ACPI_WMI_LEGACY_DEVICE_NAMES
>   	  the same GUID to fail in some corner cases.
>   
>   source "drivers/platform/wmi/tests/Kconfig"
> +source "drivers/platform/wmi/asus/Kconfig"
>   
>   endif # ACPI_WMI
> diff --git a/drivers/platform/wmi/Makefile b/drivers/platform/wmi/Makefile
> index 2feff94a5594..305f4688324f 100644
> --- a/drivers/platform/wmi/Makefile
> +++ b/drivers/platform/wmi/Makefile
> @@ -6,6 +6,7 @@
>   
>   wmi-y			:= core.o marshalling.o string.o
>   obj-$(CONFIG_ACPI_WMI)	+= wmi.o
> +obj-$(CONFIG_ASUS_WMI) += asus/
>   
>   # Unit tests
>   obj-y			+= tests/
> diff --git a/drivers/platform/wmi/asus/Kconfig b/drivers/platform/wmi/asus/Kconfig
> new file mode 100644
> index 000000000000..75b6dd45af66
> --- /dev/null
> +++ b/drivers/platform/wmi/asus/Kconfig
> @@ -0,0 +1,64 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Asus Platform Specific Drivers
> +#
> +
> +config ASUS_ARMOURY
> +	tristate "ASUS Armoury driver"
> +	depends on ASUS_WMI
> +	select FW_ATTR_CLASS
> +	help
> +	  Say Y here if you have a WMI aware Asus machine and would like to use the
> +	  firmware_attributes API to control various settings typically exposed in
> +	  the ASUS Armoury Crate application available on Windows.
> +
> +	  To compile this driver as a module, choose M here: the module will
> +	  be called asus-armoury.
> +
> +config ASUS_WMI
> +	tristate "ASUS WMI Driver"
> +	depends on ACPI_WMI
> +	depends on ACPI_BATTERY
> +	depends on INPUT
> +	depends on HWMON
> +	depends on BACKLIGHT_CLASS_DEVICE
> +	depends on RFKILL || RFKILL = n
> +	depends on HOTPLUG_PCI
> +	depends on ACPI_VIDEO || ACPI_VIDEO = n
> +	depends on SERIO_I8042 || SERIO_I8042 = n
> +	select INPUT_SPARSEKMAP
> +	select LEDS_CLASS
> +	select NEW_LEDS
> +	select ACPI_PLATFORM_PROFILE
> +	help
> +	  Say Y here if you have a WMI aware Asus laptop (like Eee PCs or new
> +	  Asus Notebooks).
> +
> +	  To compile this driver as a module, choose M here: the module will
> +	  be called asus-wmi.
> +
> +config ASUS_WMI_DEPRECATED_ATTRS
> +	bool "BIOS option support in WMI platform (DEPRECATED)"
> +	depends on ASUS_WMI
> +	default y
> +	help
> +	  Say Y to expose the configurable BIOS options through the asus-wmi
> +	  driver.
> +
> +	  This can be used with or without the asus-armoury driver which
> +	  has the same attributes, but more, and better features.
> +
> +config ASUS_NB_WMI
> +	tristate "Asus Notebook WMI Driver"
> +	depends on ASUS_WMI
> +	help
> +	  This is a driver for newer Asus notebooks. It adds extra features
> +	  like wireless radio and bluetooth control, leds, hotkeys, backlight...
> +
> +	  For more information, see
> +	  <file:Documentation/ABI/testing/sysfs-platform-asus-wmi>
> +
> +	  If you have an ACPI-WMI compatible Asus Notebook, say Y or M
> +	  here.
> +
> +
> diff --git a/drivers/platform/wmi/asus/Makefile b/drivers/platform/wmi/asus/Makefile
> new file mode 100644
> index 000000000000..8daa5ebff89f
> --- /dev/null
> +++ b/drivers/platform/wmi/asus/Makefile
> @@ -0,0 +1,9 @@
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# Makefile for linux/drivers/platform/wmi/asus
> +# Asus Platform-Specific Drivers
> +#
> +
> +obj-$(CONFIG_ASUS_ARMOURY)	+= asus-armoury.o
> +obj-$(CONFIG_ASUS_WMI)		+= asus-wmi.o
> +obj-$(CONFIG_ASUS_NB_WMI)	+= asus-nb-wmi.o
> diff --git a/drivers/platform/x86/asus-armoury.c b/drivers/platform/wmi/asus/asus-armoury.c
> similarity index 100%
> rename from drivers/platform/x86/asus-armoury.c
> rename to drivers/platform/wmi/asus/asus-armoury.c
> diff --git a/drivers/platform/x86/asus-armoury.h b/drivers/platform/wmi/asus/asus-armoury.h
> similarity index 100%
> rename from drivers/platform/x86/asus-armoury.h
> rename to drivers/platform/wmi/asus/asus-armoury.h
> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/wmi/asus/asus-nb-wmi.c
> similarity index 100%
> rename from drivers/platform/x86/asus-nb-wmi.c
> rename to drivers/platform/wmi/asus/asus-nb-wmi.c
> diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/wmi/asus/asus-wmi.c
> similarity index 100%
> rename from drivers/platform/x86/asus-wmi.c
> rename to drivers/platform/wmi/asus/asus-wmi.c
> diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/wmi/asus/asus-wmi.h
> similarity index 100%
> rename from drivers/platform/x86/asus-wmi.h
> rename to drivers/platform/wmi/asus/asus-wmi.h
> diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
> index 957034f39e4e..68cf99de415d 100644
> --- a/drivers/platform/x86/Kconfig
> +++ b/drivers/platform/x86/Kconfig
> @@ -253,64 +253,6 @@ config ASUS_WIRELESS
>   	  If you choose to compile this driver as a module the module will be
>   	  called asus-wireless.
>   
> -config ASUS_ARMOURY
> -	tristate "ASUS Armoury driver"
> -	depends on ASUS_WMI
> -	select FW_ATTR_CLASS
> -	help
> -	  Say Y here if you have a WMI aware Asus machine and would like to use the
> -	  firmware_attributes API to control various settings typically exposed in
> -	  the ASUS Armoury Crate application available on Windows.
> -
> -	  To compile this driver as a module, choose M here: the module will
> -	  be called asus-armoury.
> -
> -config ASUS_WMI
> -	tristate "ASUS WMI Driver"
> -	depends on ACPI_WMI
> -	depends on ACPI_BATTERY
> -	depends on INPUT
> -	depends on HWMON
> -	depends on BACKLIGHT_CLASS_DEVICE
> -	depends on RFKILL || RFKILL = n
> -	depends on HOTPLUG_PCI
> -	depends on ACPI_VIDEO || ACPI_VIDEO = n
> -	depends on SERIO_I8042 || SERIO_I8042 = n
> -	select INPUT_SPARSEKMAP
> -	select LEDS_CLASS
> -	select NEW_LEDS
> -	select ACPI_PLATFORM_PROFILE
> -	help
> -	  Say Y here if you have a WMI aware Asus laptop (like Eee PCs or new
> -	  Asus Notebooks).
> -
> -	  To compile this driver as a module, choose M here: the module will
> -	  be called asus-wmi.
> -
> -config ASUS_WMI_DEPRECATED_ATTRS
> -	bool "BIOS option support in WMI platform (DEPRECATED)"
> -	depends on ASUS_WMI
> -	default y
> -	help
> -	  Say Y to expose the configurable BIOS options through the asus-wmi
> -	  driver.
> -
> -	  This can be used with or without the asus-armoury driver which
> -	  has the same attributes, but more, and better features.
> -
> -config ASUS_NB_WMI
> -	tristate "Asus Notebook WMI Driver"
> -	depends on ASUS_WMI
> -	help
> -	  This is a driver for newer Asus notebooks. It adds extra features
> -	  like wireless radio and bluetooth control, leds, hotkeys, backlight...
> -
> -	  For more information, see
> -	  <file:Documentation/ABI/testing/sysfs-platform-asus-wmi>
> -
> -	  If you have an ACPI-WMI compatible Asus Notebook, say Y or M
> -	  here.
> -
>   config ASUS_TF103C_DOCK
>   	tristate "Asus TF103C 2-in-1 keyboard dock"
>   	depends on ACPI
> diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
> index 872ac3842391..0bacd55f2fce 100644
> --- a/drivers/platform/x86/Makefile
> +++ b/drivers/platform/x86/Makefile
> @@ -33,9 +33,6 @@ obj-$(CONFIG_APPLE_GMUX)	+= apple-gmux.o
>   # ASUS
>   obj-$(CONFIG_ASUS_LAPTOP)	+= asus-laptop.o
>   obj-$(CONFIG_ASUS_WIRELESS)	+= asus-wireless.o
> -obj-$(CONFIG_ASUS_ARMOURY)	+= asus-armoury.o
> -obj-$(CONFIG_ASUS_WMI)		+= asus-wmi.o
> -obj-$(CONFIG_ASUS_NB_WMI)	+= asus-nb-wmi.o
>   obj-$(CONFIG_ASUS_TF103C_DOCK)	+= asus-tf103c-dock.o
>   obj-$(CONFIG_EEEPC_LAPTOP)	+= eeepc-laptop.o
>   obj-$(CONFIG_EEEPC_WMI)		+= eeepc-wmi.o