Message ID | 20250105153019.19206-21-kuurtb@gmail.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
Series | platform/x86: alienware-wmi driver rework | expand |
On 1/5/2025 09:30, Kurt Borja wrote: > Add config entries for each WMI driver managed by the alienware-wmi > module to be able to conditionally compile them. > > Reviewed-by: Armin Wolf <W_Armin@gmx.de> > Signed-off-by: Kurt Borja <kuurtb@gmail.com> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> > --- > drivers/platform/x86/dell/Kconfig | 30 +++++++++++++++++++---- > drivers/platform/x86/dell/Makefile | 4 +-- > drivers/platform/x86/dell/alienware-wmi.h | 23 +++++++++++++++++ > 3 files changed, 50 insertions(+), 7 deletions(-) > > diff --git a/drivers/platform/x86/dell/Kconfig b/drivers/platform/x86/dell/Kconfig > index d09060aedd3f..f8a0dffcaab7 100644 > --- a/drivers/platform/x86/dell/Kconfig > +++ b/drivers/platform/x86/dell/Kconfig > @@ -18,15 +18,35 @@ config ALIENWARE_WMI > tristate "Alienware Special feature control" > default m > depends on ACPI > + depends on ACPI_WMI > + depends on DMI > depends on LEDS_CLASS > depends on NEW_LEDS > - depends on ACPI_WMI > + help > + This is a driver for controlling Alienware WMI driven features. > + > + On legacy devices, 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. > + > + On newer devices, it exposes the AWCC thermal control interface through > + known Kernel APIs. > + > +config ALIENWARE_WMI_LEGACY > + bool "Alienware Legacy WMI device driver" > + default y > + depends on ALIENWARE_WMI > + help > + Legacy Alienware WMI driver with AlienFX LED control capabilities. > + > +config ALIENWARE_WMI_WMAX > + bool "Alienware WMAX WMI device driver" > + default y > + depends on ALIENWARE_WMI > select ACPI_PLATFORM_PROFILE > 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. > + Alienware WMI driver with AlienFX LED, HDMI, amplifier, deep sleep and > + AWCC thermal control capabilities. > > config DCDBAS > tristate "Dell Systems Management Base Driver" > diff --git a/drivers/platform/x86/dell/Makefile b/drivers/platform/x86/dell/Makefile > index d5718ef34c48..8ac9a933c770 100644 > --- a/drivers/platform/x86/dell/Makefile > +++ b/drivers/platform/x86/dell/Makefile > @@ -6,8 +6,8 @@ > > obj-$(CONFIG_ALIENWARE_WMI) += alienware-wmi.o > alienware-wmi-objs := alienware-wmi-base.o > -alienware-wmi-y += alienware-wmi-legacy.o > -alienware-wmi-y += alienware-wmi-wmax.o > +alienware-wmi-$(CONFIG_ALIENWARE_WMI_LEGACY) += alienware-wmi-legacy.o > +alienware-wmi-$(CONFIG_ALIENWARE_WMI_WMAX) += alienware-wmi-wmax.o > obj-$(CONFIG_DCDBAS) += dcdbas.o > obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o > obj-$(CONFIG_DELL_RBTN) += dell-rbtn.o > diff --git a/drivers/platform/x86/dell/alienware-wmi.h b/drivers/platform/x86/dell/alienware-wmi.h > index e4b75b1acd10..a810767a0eb7 100644 > --- a/drivers/platform/x86/dell/alienware-wmi.h > +++ b/drivers/platform/x86/dell/alienware-wmi.h > @@ -72,10 +72,33 @@ int alienware_wmi_command(struct wmi_device *wdev, u32 method_id, > int alienware_alienfx_setup(struct alienfx_platdata *pdata); > void alienware_alienfx_exit(struct wmi_device *wdev); > > +#if IS_ENABLED(CONFIG_ALIENWARE_WMI_LEGACY) > int __init alienware_legacy_wmi_init(void); > void __exit alienware_legacy_wmi_exit(void); > +#else > +static inline int alienware_legacy_wmi_init(void) > +{ > + return -ENODEV; > +} > + > +static inline void alienware_legacy_wmi_exit(void) > +{ > +} > +#endif > > +#if IS_ENABLED(CONFIG_ALIENWARE_WMI_WMAX) > int __init alienware_wmax_wmi_init(void); > void __exit alienware_wmax_wmi_exit(void); > +#else > +static inline int alienware_wmax_wmi_init(void) > +{ > + return -ENODEV; > +} > + > + > +static inline void alienware_wmax_wmi_exit(void) > +{ > +} > +#endif > > #endif
diff --git a/drivers/platform/x86/dell/Kconfig b/drivers/platform/x86/dell/Kconfig index d09060aedd3f..f8a0dffcaab7 100644 --- a/drivers/platform/x86/dell/Kconfig +++ b/drivers/platform/x86/dell/Kconfig @@ -18,15 +18,35 @@ config ALIENWARE_WMI tristate "Alienware Special feature control" default m depends on ACPI + depends on ACPI_WMI + depends on DMI depends on LEDS_CLASS depends on NEW_LEDS - depends on ACPI_WMI + help + This is a driver for controlling Alienware WMI driven features. + + On legacy devices, 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. + + On newer devices, it exposes the AWCC thermal control interface through + known Kernel APIs. + +config ALIENWARE_WMI_LEGACY + bool "Alienware Legacy WMI device driver" + default y + depends on ALIENWARE_WMI + help + Legacy Alienware WMI driver with AlienFX LED control capabilities. + +config ALIENWARE_WMI_WMAX + bool "Alienware WMAX WMI device driver" + default y + depends on ALIENWARE_WMI select ACPI_PLATFORM_PROFILE 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. + Alienware WMI driver with AlienFX LED, HDMI, amplifier, deep sleep and + AWCC thermal control capabilities. config DCDBAS tristate "Dell Systems Management Base Driver" diff --git a/drivers/platform/x86/dell/Makefile b/drivers/platform/x86/dell/Makefile index d5718ef34c48..8ac9a933c770 100644 --- a/drivers/platform/x86/dell/Makefile +++ b/drivers/platform/x86/dell/Makefile @@ -6,8 +6,8 @@ obj-$(CONFIG_ALIENWARE_WMI) += alienware-wmi.o alienware-wmi-objs := alienware-wmi-base.o -alienware-wmi-y += alienware-wmi-legacy.o -alienware-wmi-y += alienware-wmi-wmax.o +alienware-wmi-$(CONFIG_ALIENWARE_WMI_LEGACY) += alienware-wmi-legacy.o +alienware-wmi-$(CONFIG_ALIENWARE_WMI_WMAX) += alienware-wmi-wmax.o obj-$(CONFIG_DCDBAS) += dcdbas.o obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o obj-$(CONFIG_DELL_RBTN) += dell-rbtn.o diff --git a/drivers/platform/x86/dell/alienware-wmi.h b/drivers/platform/x86/dell/alienware-wmi.h index e4b75b1acd10..a810767a0eb7 100644 --- a/drivers/platform/x86/dell/alienware-wmi.h +++ b/drivers/platform/x86/dell/alienware-wmi.h @@ -72,10 +72,33 @@ int alienware_wmi_command(struct wmi_device *wdev, u32 method_id, int alienware_alienfx_setup(struct alienfx_platdata *pdata); void alienware_alienfx_exit(struct wmi_device *wdev); +#if IS_ENABLED(CONFIG_ALIENWARE_WMI_LEGACY) int __init alienware_legacy_wmi_init(void); void __exit alienware_legacy_wmi_exit(void); +#else +static inline int alienware_legacy_wmi_init(void) +{ + return -ENODEV; +} + +static inline void alienware_legacy_wmi_exit(void) +{ +} +#endif +#if IS_ENABLED(CONFIG_ALIENWARE_WMI_WMAX) int __init alienware_wmax_wmi_init(void); void __exit alienware_wmax_wmi_exit(void); +#else +static inline int alienware_wmax_wmi_init(void) +{ + return -ENODEV; +} + + +static inline void alienware_wmax_wmi_exit(void) +{ +} +#endif #endif