Re: [PATCH v2] platform/x86: Move all dell drivers to their own subdirectory

From: Hans de Goede
Date: Thu Feb 04 2021 - 07:31:05 EST


Hi,

On 2/3/21 8:58 PM, Mario Limonciello wrote:
> A user without a Dell system doesn't need to pick any of these
> drivers.
>
> Users with a Dell system can enable this submenu and all drivers
> behind it will be enabled.
>
> Suggested-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxxx>

Thank you for your patch, I've applied this patch to my review-hans
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

There was one small issue with the patch, all the "default m" lines
which you added were indented with 4 spaces instead of a tab, I've
fixed this up locally.

The patch will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans


> ---
> Changes from v1->v2:
> - Rename menu per Andy's suggestion
> - Move if/endif for menu into subdirectory
> - Set default for menu to "n" but individual modules to "m"
> Should be same defaults as previous, but allow an "easy" switch
> MAINTAINERS | 22 +-
> drivers/platform/x86/Kconfig | 176 +--------------
> drivers/platform/x86/Makefile | 16 +-
> drivers/platform/x86/dell/Kconfig | 207 ++++++++++++++++++
> drivers/platform/x86/dell/Makefile | 21 ++
> .../platform/x86/{ => dell}/alienware-wmi.c | 0
> drivers/platform/x86/{ => dell}/dcdbas.c | 0
> drivers/platform/x86/{ => dell}/dcdbas.h | 0
> drivers/platform/x86/{ => dell}/dell-laptop.c | 0
> drivers/platform/x86/{ => dell}/dell-rbtn.c | 0
> drivers/platform/x86/{ => dell}/dell-rbtn.h | 0
> .../x86/{ => dell}/dell-smbios-base.c | 0
> .../platform/x86/{ => dell}/dell-smbios-smm.c | 0
> .../platform/x86/{ => dell}/dell-smbios-wmi.c | 0
> drivers/platform/x86/{ => dell}/dell-smbios.h | 0
> .../platform/x86/{ => dell}/dell-smo8800.c | 0
> .../platform/x86/{ => dell}/dell-wmi-aio.c | 0
> .../x86/{ => dell}/dell-wmi-descriptor.c | 0
> .../x86/{ => dell}/dell-wmi-descriptor.h | 0
> .../platform/x86/{ => dell}/dell-wmi-led.c | 0
> .../x86/{ => dell}/dell-wmi-sysman/Makefile | 0
> .../dell-wmi-sysman/biosattr-interface.c | 0
> .../dell-wmi-sysman/dell-wmi-sysman.h | 0
> .../dell-wmi-sysman/enum-attributes.c | 0
> .../dell-wmi-sysman/int-attributes.c | 0
> .../dell-wmi-sysman/passobj-attributes.c | 0
> .../dell-wmi-sysman/passwordattr-interface.c | 0
> .../dell-wmi-sysman/string-attributes.c | 0
> .../x86/{ => dell}/dell-wmi-sysman/sysman.c | 0
> drivers/platform/x86/{ => dell}/dell-wmi.c | 0
> drivers/platform/x86/{ => dell}/dell_rbu.c | 0
> 31 files changed, 241 insertions(+), 201 deletions(-)
> create mode 100644 drivers/platform/x86/dell/Kconfig
> create mode 100644 drivers/platform/x86/dell/Makefile
> rename drivers/platform/x86/{ => dell}/alienware-wmi.c (100%)
> rename drivers/platform/x86/{ => dell}/dcdbas.c (100%)
> rename drivers/platform/x86/{ => dell}/dcdbas.h (100%)
> rename drivers/platform/x86/{ => dell}/dell-laptop.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-rbtn.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-rbtn.h (100%)
> rename drivers/platform/x86/{ => dell}/dell-smbios-base.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-smbios-smm.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-smbios-wmi.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-smbios.h (100%)
> rename drivers/platform/x86/{ => dell}/dell-smo8800.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-aio.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-descriptor.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-descriptor.h (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-led.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/Makefile (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/biosattr-interface.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/dell-wmi-sysman.h (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/enum-attributes.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/int-attributes.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/passobj-attributes.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/passwordattr-interface.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/string-attributes.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi-sysman/sysman.c (100%)
> rename drivers/platform/x86/{ => dell}/dell-wmi.c (100%)
> rename drivers/platform/x86/{ => dell}/dell_rbu.c (100%)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d3e847f7f3dc..ae83c6cff843 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4970,17 +4970,17 @@ M: Matthew Garrett <mjg59@xxxxxxxxxxxxx>
> M: Pali Rohár <pali@xxxxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> -F: drivers/platform/x86/dell-laptop.c
> +F: drivers/platform/x86/dell/dell-laptop.c
>
> DELL LAPTOP FREEFALL DRIVER
> M: Pali Rohár <pali@xxxxxxxxxx>
> S: Maintained
> -F: drivers/platform/x86/dell-smo8800.c
> +F: drivers/platform/x86/dell/dell-smo8800.c
>
> DELL LAPTOP RBTN DRIVER
> M: Pali Rohár <pali@xxxxxxxxxx>
> S: Maintained
> -F: drivers/platform/x86/dell-rbtn.*
> +F: drivers/platform/x86/dell/dell-rbtn.*
>
> DELL LAPTOP SMM DRIVER
> M: Pali Rohár <pali@xxxxxxxxxx>
> @@ -4992,26 +4992,26 @@ DELL REMOTE BIOS UPDATE DRIVER
> M: Stuart Hayes <stuart.w.hayes@xxxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> -F: drivers/platform/x86/dell_rbu.c
> +F: drivers/platform/x86/dell/dell_rbu.c
>
> DELL SMBIOS DRIVER
> M: Pali Rohár <pali@xxxxxxxxxx>
> M: Mario Limonciello <mario.limonciello@xxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> -F: drivers/platform/x86/dell-smbios.*
> +F: drivers/platform/x86/dell/dell-smbios.*
>
> DELL SMBIOS SMM DRIVER
> M: Mario Limonciello <mario.limonciello@xxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> -F: drivers/platform/x86/dell-smbios-smm.c
> +F: drivers/platform/x86/dell/dell-smbios-smm.c
>
> DELL SMBIOS WMI DRIVER
> M: Mario Limonciello <mario.limonciello@xxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> -F: drivers/platform/x86/dell-smbios-wmi.c
> +F: drivers/platform/x86/dell/dell-smbios-wmi.c
> F: tools/wmi/dell-smbios-example.c
>
> DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas)
> @@ -5019,12 +5019,12 @@ M: Stuart Hayes <stuart.w.hayes@xxxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> F: Documentation/driver-api/dcdbas.rst
> -F: drivers/platform/x86/dcdbas.*
> +F: drivers/platform/x86/dell/dcdbas.*
>
> DELL WMI DESCRIPTOR DRIVER
> M: Mario Limonciello <mario.limonciello@xxxxxxxx>
> S: Maintained
> -F: drivers/platform/x86/dell-wmi-descriptor.c
> +F: drivers/platform/x86/dell/dell-wmi-descriptor.c
>
> DELL WMI SYSMAN DRIVER
> M: Divya Bharathi <divya.bharathi@xxxxxxxx>
> @@ -5033,13 +5033,13 @@ M: Prasanth Ksr <prasanth.ksr@xxxxxxxx>
> L: platform-driver-x86@xxxxxxxxxxxxxxx
> S: Maintained
> F: Documentation/ABI/testing/sysfs-class-firmware-attributes
> -F: drivers/platform/x86/dell-wmi-sysman/
> +F: drivers/platform/x86/dell/dell-wmi-sysman/
>
> DELL WMI NOTIFICATIONS DRIVER
> M: Matthew Garrett <mjg59@xxxxxxxxxxxxx>
> M: Pali Rohár <pali@xxxxxxxxxx>
> S: Maintained
> -F: drivers/platform/x86/dell-wmi.c
> +F: drivers/platform/x86/dell/dell-wmi.c
>
> DELTA ST MEDIA DRIVER
> M: Hugues Fruchet <hugues.fruchet@xxxxxx>
> diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
> index 91e6176cdfbd..211cf907f041 100644
> --- a/drivers/platform/x86/Kconfig
> +++ b/drivers/platform/x86/Kconfig
> @@ -49,18 +49,6 @@ config WMI_BMOF
> To compile this driver as a module, choose M here: the module will
> be called wmi-bmof.
>
> -config ALIENWARE_WMI
> - tristate "Alienware Special feature control"
> - depends on ACPI
> - depends on LEDS_CLASS
> - depends on NEW_LEDS
> - depends on ACPI_WMI
> - help
> - This is a driver for controlling Alienware BIOS driven
> - features. It exposes an interface for controlling the AlienFX
> - zones on Alienware machines that don't contain a dedicated AlienFX
> - USB MCU such as the X51 and X51-R2.
> -
> config HUAWEI_WMI
> tristate "Huawei WMI laptop extras driver"
> depends on ACPI_BATTERY
> @@ -327,169 +315,7 @@ config EEEPC_WMI
> If you have an ACPI-WMI compatible Eee PC laptop (>= 1000), say Y or M
> here.
>
> -config DCDBAS
> - tristate "Dell Systems Management Base Driver"
> - depends on X86
> - help
> - The Dell Systems Management Base Driver provides a sysfs interface
> - for systems management software to perform System Management
> - Interrupts (SMIs) and Host Control Actions (system power cycle or
> - power off after OS shutdown) on certain Dell systems.
> -
> - See <file:Documentation/driver-api/dcdbas.rst> for more details on the driver
> - and the Dell systems on which Dell systems management software makes
> - use of this driver.
> -
> - Say Y or M here to enable the driver for use by Dell systems
> - management software such as Dell OpenManage.
> -
> -#
> -# The DELL_SMBIOS driver depends on ACPI_WMI and/or DCDBAS if those
> -# backends are selected. The "depends" line prevents a configuration
> -# where DELL_SMBIOS=y while either of those dependencies =m.
> -#
> -config DELL_SMBIOS
> - tristate "Dell SMBIOS driver"
> - depends on DCDBAS || DCDBAS=n
> - depends on ACPI_WMI || ACPI_WMI=n
> - help
> - This provides support for the Dell SMBIOS calling interface.
> - If you have a Dell computer you should enable this option.
> -
> - Be sure to select at least one backend for it to work properly.
> -
> -config DELL_SMBIOS_WMI
> - bool "Dell SMBIOS driver WMI backend"
> - default y
> - depends on ACPI_WMI
> - select DELL_WMI_DESCRIPTOR
> - depends on DELL_SMBIOS
> - help
> - This provides an implementation for the Dell SMBIOS calling interface
> - communicated over ACPI-WMI.
> -
> - If you have a Dell computer from >2007 you should say Y here.
> - If you aren't sure and this module doesn't work for your computer
> - it just won't load.
> -
> -config DELL_SMBIOS_SMM
> - bool "Dell SMBIOS driver SMM backend"
> - default y
> - depends on DCDBAS
> - depends on DELL_SMBIOS
> - help
> - This provides an implementation for the Dell SMBIOS calling interface
> - communicated over SMI/SMM.
> -
> - If you have a Dell computer from <=2017 you should say Y here.
> - If you aren't sure and this module doesn't work for your computer
> - it just won't load.
> -
> -config DELL_LAPTOP
> - tristate "Dell Laptop Extras"
> - depends on DMI
> - depends on BACKLIGHT_CLASS_DEVICE
> - depends on ACPI_VIDEO || ACPI_VIDEO = n
> - depends on RFKILL || RFKILL = n
> - depends on SERIO_I8042
> - depends on DELL_SMBIOS
> - select POWER_SUPPLY
> - select LEDS_CLASS
> - select NEW_LEDS
> - select LEDS_TRIGGERS
> - select LEDS_TRIGGER_AUDIO
> - help
> - This driver adds support for rfkill and backlight control to Dell
> - laptops (except for some models covered by the Compal driver).
> -
> -config DELL_RBTN
> - tristate "Dell Airplane Mode Switch driver"
> - depends on ACPI
> - depends on INPUT
> - depends on RFKILL
> - help
> - Say Y here if you want to support Dell Airplane Mode Switch ACPI
> - device on Dell laptops. Sometimes it has names: DELLABCE or DELRBTN.
> - This driver register rfkill device or input hotkey device depending
> - on hardware type (hw switch slider or keyboard toggle button). For
> - rfkill devices it receive HW switch events and set correct hard
> - rfkill state.
> -
> - To compile this driver as a module, choose M here: the module will
> - be called dell-rbtn.
> -
> -config DELL_RBU
> - tristate "BIOS update support for DELL systems via sysfs"
> - depends on X86
> - select FW_LOADER
> - select FW_LOADER_USER_HELPER
> - help
> - Say m if you want to have the option of updating the BIOS for your
> - DELL system. Note you need a Dell OpenManage or Dell Update package (DUP)
> - supporting application to communicate with the BIOS regarding the new
> - image for the image update to take effect.
> - See <file:Documentation/admin-guide/dell_rbu.rst> for more details on the driver.
> -
> -config DELL_SMO8800
> - tristate "Dell Latitude freefall driver (ACPI SMO88XX)"
> - depends on ACPI
> - help
> - Say Y here if you want to support SMO88XX freefall devices
> - on Dell Latitude laptops.
> -
> - To compile this driver as a module, choose M here: the module will
> - be called dell-smo8800.
> -
> -config DELL_WMI
> - tristate "Dell WMI notifications"
> - depends on ACPI_WMI
> - depends on DMI
> - depends on INPUT
> - depends on ACPI_VIDEO || ACPI_VIDEO = n
> - depends on DELL_SMBIOS
> - select DELL_WMI_DESCRIPTOR
> - select INPUT_SPARSEKMAP
> - help
> - Say Y here if you want to support WMI-based hotkeys on Dell laptops.
> -
> - To compile this driver as a module, choose M here: the module will
> - be called dell-wmi.
> -
> -config DELL_WMI_SYSMAN
> - tristate "Dell WMI-based Systems management driver"
> - depends on ACPI_WMI
> - depends on DMI
> - select NLS
> - help
> - This driver allows changing BIOS settings on many Dell machines from
> - 2018 and newer without the use of any additional software.
> -
> - To compile this driver as a module, choose M here: the module will
> - be called dell-wmi-sysman.
> -
> -config DELL_WMI_DESCRIPTOR
> - tristate
> - depends on ACPI_WMI
> -
> -config DELL_WMI_AIO
> - tristate "WMI Hotkeys for Dell All-In-One series"
> - depends on ACPI_WMI
> - depends on INPUT
> - select INPUT_SPARSEKMAP
> - help
> - Say Y here if you want to support WMI-based hotkeys on Dell
> - All-In-One machines.
> -
> - To compile this driver as a module, choose M here: the module will
> - be called dell-wmi-aio.
> -
> -config DELL_WMI_LED
> - tristate "External LED on Dell Business Netbooks"
> - depends on LEDS_CLASS
> - depends on ACPI_WMI
> - help
> - This adds support for the Latitude 2100 and similar
> - notebooks that have an external LED.
> +source "drivers/platform/x86/dell/Kconfig"
>
> config AMILO_RFKILL
> tristate "Fujitsu-Siemens Amilo rfkill support"
> diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
> index 581475f59819..98ad9bcac293 100644
> --- a/drivers/platform/x86/Makefile
> +++ b/drivers/platform/x86/Makefile
> @@ -9,7 +9,6 @@ obj-$(CONFIG_ACPI_WMI) += wmi.o
> obj-$(CONFIG_WMI_BMOF) += wmi-bmof.o
>
> # WMI drivers
> -obj-$(CONFIG_ALIENWARE_WMI) += alienware-wmi.o
> obj-$(CONFIG_HUAWEI_WMI) += huawei-wmi.o
> obj-$(CONFIG_INTEL_WMI_SBL_FW_UPDATE) += intel-wmi-sbl-fw-update.o
> obj-$(CONFIG_INTEL_WMI_THUNDERBOLT) += intel-wmi-thunderbolt.o
> @@ -37,20 +36,7 @@ obj-$(CONFIG_EEEPC_LAPTOP) += eeepc-laptop.o
> obj-$(CONFIG_EEEPC_WMI) += eeepc-wmi.o
>
> # Dell
> -obj-$(CONFIG_DCDBAS) += dcdbas.o
> -obj-$(CONFIG_DELL_SMBIOS) += dell-smbios.o
> -dell-smbios-objs := dell-smbios-base.o
> -dell-smbios-$(CONFIG_DELL_SMBIOS_WMI) += dell-smbios-wmi.o
> -dell-smbios-$(CONFIG_DELL_SMBIOS_SMM) += dell-smbios-smm.o
> -obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o
> -obj-$(CONFIG_DELL_RBTN) += dell-rbtn.o
> -obj-$(CONFIG_DELL_RBU) += dell_rbu.o
> -obj-$(CONFIG_DELL_SMO8800) += dell-smo8800.o
> -obj-$(CONFIG_DELL_WMI) += dell-wmi.o
> -obj-$(CONFIG_DELL_WMI_DESCRIPTOR) += dell-wmi-descriptor.o
> -obj-$(CONFIG_DELL_WMI_AIO) += dell-wmi-aio.o
> -obj-$(CONFIG_DELL_WMI_LED) += dell-wmi-led.o
> -obj-$(CONFIG_DELL_WMI_SYSMAN) += dell-wmi-sysman/
> +obj-$(CONFIG_X86_PLATFORM_DRIVERS_DELL) += dell/
>
> # Fujitsu
> obj-$(CONFIG_AMILO_RFKILL) += amilo-rfkill.o
> diff --git a/drivers/platform/x86/dell/Kconfig b/drivers/platform/x86/dell/Kconfig
> new file mode 100644
> index 000000000000..31601679d1cc
> --- /dev/null
> +++ b/drivers/platform/x86/dell/Kconfig
> @@ -0,0 +1,207 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Dell X86 Platform Specific Drivers
> +#
> +
> +menuconfig X86_PLATFORM_DRIVERS_DELL
> + bool "Dell X86 Platform Specific Device Drivers"
> + default n
> + depends on X86_PLATFORM_DEVICES
> + help
> + Say Y here to get to see options for device drivers for various
> + Dell x86 platforms, including vendor-specific laptop extension drivers.
> + This option alone does not add any kernel code.
> +
> + If you say N, all options in this submenu will be skipped and disabled.
> +
> +if X86_PLATFORM_DRIVERS_DELL
> +
> +config ALIENWARE_WMI
> + tristate "Alienware Special feature control"
> + default m
> + depends on ACPI
> + depends on LEDS_CLASS
> + depends on NEW_LEDS
> + depends on ACPI_WMI
> + help
> + This is a driver for controlling Alienware BIOS driven
> + features. It exposes an interface for controlling the AlienFX
> + zones on Alienware machines that don't contain a dedicated AlienFX
> + USB MCU such as the X51 and X51-R2.
> +
> +config DCDBAS
> + tristate "Dell Systems Management Base Driver"
> + default m
> + depends on X86
> + help
> + The Dell Systems Management Base Driver provides a sysfs interface
> + for systems management software to perform System Management
> + Interrupts (SMIs) and Host Control Actions (system power cycle or
> + power off after OS shutdown) on certain Dell systems.
> +
> + See <file:Documentation/driver-api/dcdbas.rst> for more details on the driver
> + and the Dell systems on which Dell systems management software makes
> + use of this driver.
> +
> + Say Y or M here to enable the driver for use by Dell systems
> + management software such as Dell OpenManage.
> +
> +config DELL_LAPTOP
> + tristate "Dell Laptop Extras"
> + default m
> + depends on DMI
> + depends on BACKLIGHT_CLASS_DEVICE
> + depends on ACPI_VIDEO || ACPI_VIDEO = n
> + depends on RFKILL || RFKILL = n
> + depends on SERIO_I8042
> + depends on DELL_SMBIOS
> + select POWER_SUPPLY
> + select LEDS_CLASS
> + select NEW_LEDS
> + select LEDS_TRIGGERS
> + select LEDS_TRIGGER_AUDIO
> + help
> + This driver adds support for rfkill and backlight control to Dell
> + laptops (except for some models covered by the Compal driver).
> +
> +config DELL_RBU
> + tristate "BIOS update support for DELL systems via sysfs"
> + default m
> + depends on X86
> + select FW_LOADER
> + select FW_LOADER_USER_HELPER
> + help
> + Say m if you want to have the option of updating the BIOS for your
> + DELL system. Note you need a Dell OpenManage or Dell Update package (DUP)
> + supporting application to communicate with the BIOS regarding the new
> + image for the image update to take effect.
> + See <file:Documentation/admin-guide/dell_rbu.rst> for more details on the driver.
> +
> +config DELL_RBTN
> + tristate "Dell Airplane Mode Switch driver"
> + default m
> + depends on ACPI
> + depends on INPUT
> + depends on RFKILL
> + help
> + Say Y here if you want to support Dell Airplane Mode Switch ACPI
> + device on Dell laptops. Sometimes it has names: DELLABCE or DELRBTN.
> + This driver register rfkill device or input hotkey device depending
> + on hardware type (hw switch slider or keyboard toggle button). For
> + rfkill devices it receive HW switch events and set correct hard
> + rfkill state.
> +
> + To compile this driver as a module, choose M here: the module will
> + be called dell-rbtn.
> +
> +#
> +# The DELL_SMBIOS driver depends on ACPI_WMI and/or DCDBAS if those
> +# backends are selected. The "depends" line prevents a configuration
> +# where DELL_SMBIOS=y while either of those dependencies =m.
> +#
> +config DELL_SMBIOS
> + tristate "Dell SMBIOS driver"
> + default m
> + depends on DCDBAS || DCDBAS=n
> + depends on ACPI_WMI || ACPI_WMI=n
> + help
> + This provides support for the Dell SMBIOS calling interface.
> + If you have a Dell computer you should enable this option.
> +
> + Be sure to select at least one backend for it to work properly.
> +
> +config DELL_SMBIOS_WMI
> + bool "Dell SMBIOS driver WMI backend"
> + default y
> + depends on ACPI_WMI
> + select DELL_WMI_DESCRIPTOR
> + depends on DELL_SMBIOS
> + help
> + This provides an implementation for the Dell SMBIOS calling interface
> + communicated over ACPI-WMI.
> +
> + If you have a Dell computer from >2007 you should say Y here.
> + If you aren't sure and this module doesn't work for your computer
> + it just won't load.
> +
> +config DELL_SMBIOS_SMM
> + bool "Dell SMBIOS driver SMM backend"
> + default y
> + depends on DCDBAS
> + depends on DELL_SMBIOS
> + help
> + This provides an implementation for the Dell SMBIOS calling interface
> + communicated over SMI/SMM.
> +
> + If you have a Dell computer from <=2017 you should say Y here.
> + If you aren't sure and this module doesn't work for your computer
> + it just won't load.
> +
> +config DELL_SMO8800
> + tristate "Dell Latitude freefall driver (ACPI SMO88XX)"
> + default m
> + depends on ACPI
> + help
> + Say Y here if you want to support SMO88XX freefall devices
> + on Dell Latitude laptops.
> +
> + To compile this driver as a module, choose M here: the module will
> + be called dell-smo8800.
> +
> +config DELL_WMI
> + tristate "Dell WMI notifications"
> + default m
> + depends on ACPI_WMI
> + depends on DMI
> + depends on INPUT
> + depends on ACPI_VIDEO || ACPI_VIDEO = n
> + depends on DELL_SMBIOS
> + select DELL_WMI_DESCRIPTOR
> + select INPUT_SPARSEKMAP
> + help
> + Say Y here if you want to support WMI-based hotkeys on Dell laptops.
> +
> + To compile this driver as a module, choose M here: the module will
> + be called dell-wmi.
> +
> +config DELL_WMI_AIO
> + tristate "WMI Hotkeys for Dell All-In-One series"
> + default m
> + depends on ACPI_WMI
> + depends on INPUT
> + select INPUT_SPARSEKMAP
> + help
> + Say Y here if you want to support WMI-based hotkeys on Dell
> + All-In-One machines.
> +
> + To compile this driver as a module, choose M here: the module will
> + be called dell-wmi-aio.
> +
> +config DELL_WMI_DESCRIPTOR
> + tristate
> + default m
> + depends on ACPI_WMI
> +
> +config DELL_WMI_LED
> + tristate "External LED on Dell Business Netbooks"
> + default m
> + depends on LEDS_CLASS
> + depends on ACPI_WMI
> + help
> + This adds support for the Latitude 2100 and similar
> + notebooks that have an external LED.
> +
> +config DELL_WMI_SYSMAN
> + tristate "Dell WMI-based Systems management driver"
> + default m
> + depends on ACPI_WMI
> + depends on DMI
> + select NLS
> + help
> + This driver allows changing BIOS settings on many Dell machines from
> + 2018 and newer without the use of any additional software.
> +
> + To compile this driver as a module, choose M here: the module will
> + be called dell-wmi-sysman.
> +
> +endif # X86_PLATFORM_DRIVERS_DELL
> diff --git a/drivers/platform/x86/dell/Makefile b/drivers/platform/x86/dell/Makefile
> new file mode 100644
> index 000000000000..d720a3e42ae3
> --- /dev/null
> +++ b/drivers/platform/x86/dell/Makefile
> @@ -0,0 +1,21 @@
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# Makefile for linux/drivers/platform/x86/dell
> +# Dell x86 Platform-Specific Drivers
> +#
> +
> +obj-$(CONFIG_ALIENWARE_WMI) += alienware-wmi.o
> +obj-$(CONFIG_DCDBAS) += dcdbas.o
> +obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o
> +obj-$(CONFIG_DELL_RBTN) += dell-rbtn.o
> +obj-$(CONFIG_DELL_RBU) += dell_rbu.o
> +obj-$(CONFIG_DELL_SMBIOS) += dell-smbios.o
> +dell-smbios-objs := dell-smbios-base.o
> +dell-smbios-$(CONFIG_DELL_SMBIOS_WMI) += dell-smbios-wmi.o
> +dell-smbios-$(CONFIG_DELL_SMBIOS_SMM) += dell-smbios-smm.o
> +obj-$(CONFIG_DELL_SMO8800) += dell-smo8800.o
> +obj-$(CONFIG_DELL_WMI) += dell-wmi.o
> +obj-$(CONFIG_DELL_WMI_AIO) += dell-wmi-aio.o
> +obj-$(CONFIG_DELL_WMI_DESCRIPTOR) += dell-wmi-descriptor.o
> +obj-$(CONFIG_DELL_WMI_LED) += dell-wmi-led.o
> +obj-$(CONFIG_DELL_WMI_SYSMAN) += dell-wmi-sysman/
> diff --git a/drivers/platform/x86/alienware-wmi.c b/drivers/platform/x86/dell/alienware-wmi.c
> similarity index 100%
> rename from drivers/platform/x86/alienware-wmi.c
> rename to drivers/platform/x86/dell/alienware-wmi.c
> diff --git a/drivers/platform/x86/dcdbas.c b/drivers/platform/x86/dell/dcdbas.c
> similarity index 100%
> rename from drivers/platform/x86/dcdbas.c
> rename to drivers/platform/x86/dell/dcdbas.c
> diff --git a/drivers/platform/x86/dcdbas.h b/drivers/platform/x86/dell/dcdbas.h
> similarity index 100%
> rename from drivers/platform/x86/dcdbas.h
> rename to drivers/platform/x86/dell/dcdbas.h
> diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell/dell-laptop.c
> similarity index 100%
> rename from drivers/platform/x86/dell-laptop.c
> rename to drivers/platform/x86/dell/dell-laptop.c
> diff --git a/drivers/platform/x86/dell-rbtn.c b/drivers/platform/x86/dell/dell-rbtn.c
> similarity index 100%
> rename from drivers/platform/x86/dell-rbtn.c
> rename to drivers/platform/x86/dell/dell-rbtn.c
> diff --git a/drivers/platform/x86/dell-rbtn.h b/drivers/platform/x86/dell/dell-rbtn.h
> similarity index 100%
> rename from drivers/platform/x86/dell-rbtn.h
> rename to drivers/platform/x86/dell/dell-rbtn.h
> diff --git a/drivers/platform/x86/dell-smbios-base.c b/drivers/platform/x86/dell/dell-smbios-base.c
> similarity index 100%
> rename from drivers/platform/x86/dell-smbios-base.c
> rename to drivers/platform/x86/dell/dell-smbios-base.c
> diff --git a/drivers/platform/x86/dell-smbios-smm.c b/drivers/platform/x86/dell/dell-smbios-smm.c
> similarity index 100%
> rename from drivers/platform/x86/dell-smbios-smm.c
> rename to drivers/platform/x86/dell/dell-smbios-smm.c
> diff --git a/drivers/platform/x86/dell-smbios-wmi.c b/drivers/platform/x86/dell/dell-smbios-wmi.c
> similarity index 100%
> rename from drivers/platform/x86/dell-smbios-wmi.c
> rename to drivers/platform/x86/dell/dell-smbios-wmi.c
> diff --git a/drivers/platform/x86/dell-smbios.h b/drivers/platform/x86/dell/dell-smbios.h
> similarity index 100%
> rename from drivers/platform/x86/dell-smbios.h
> rename to drivers/platform/x86/dell/dell-smbios.h
> diff --git a/drivers/platform/x86/dell-smo8800.c b/drivers/platform/x86/dell/dell-smo8800.c
> similarity index 100%
> rename from drivers/platform/x86/dell-smo8800.c
> rename to drivers/platform/x86/dell/dell-smo8800.c
> diff --git a/drivers/platform/x86/dell-wmi-aio.c b/drivers/platform/x86/dell/dell-wmi-aio.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-aio.c
> rename to drivers/platform/x86/dell/dell-wmi-aio.c
> diff --git a/drivers/platform/x86/dell-wmi-descriptor.c b/drivers/platform/x86/dell/dell-wmi-descriptor.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-descriptor.c
> rename to drivers/platform/x86/dell/dell-wmi-descriptor.c
> diff --git a/drivers/platform/x86/dell-wmi-descriptor.h b/drivers/platform/x86/dell/dell-wmi-descriptor.h
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-descriptor.h
> rename to drivers/platform/x86/dell/dell-wmi-descriptor.h
> diff --git a/drivers/platform/x86/dell-wmi-led.c b/drivers/platform/x86/dell/dell-wmi-led.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-led.c
> rename to drivers/platform/x86/dell/dell-wmi-led.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/Makefile b/drivers/platform/x86/dell/dell-wmi-sysman/Makefile
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/Makefile
> rename to drivers/platform/x86/dell/dell-wmi-sysman/Makefile
> diff --git a/drivers/platform/x86/dell-wmi-sysman/biosattr-interface.c b/drivers/platform/x86/dell/dell-wmi-sysman/biosattr-interface.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/biosattr-interface.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/biosattr-interface.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/dell-wmi-sysman.h b/drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/dell-wmi-sysman.h
> rename to drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h
> diff --git a/drivers/platform/x86/dell-wmi-sysman/enum-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/enum-attributes.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/enum-attributes.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/enum-attributes.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/int-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/int-attributes.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/int-attributes.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/int-attributes.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/passobj-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/passobj-attributes.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/passobj-attributes.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/passwordattr-interface.c b/drivers/platform/x86/dell/dell-wmi-sysman/passwordattr-interface.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/passwordattr-interface.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/passwordattr-interface.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/string-attributes.c b/drivers/platform/x86/dell/dell-wmi-sysman/string-attributes.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/string-attributes.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/string-attributes.c
> diff --git a/drivers/platform/x86/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi-sysman/sysman.c
> rename to drivers/platform/x86/dell/dell-wmi-sysman/sysman.c
> diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell/dell-wmi.c
> similarity index 100%
> rename from drivers/platform/x86/dell-wmi.c
> rename to drivers/platform/x86/dell/dell-wmi.c
> diff --git a/drivers/platform/x86/dell_rbu.c b/drivers/platform/x86/dell/dell_rbu.c
> similarity index 100%
> rename from drivers/platform/x86/dell_rbu.c
> rename to drivers/platform/x86/dell/dell_rbu.c
>