mbox series

[v4,00/12] platform/x86: alienware-wmi-wmax: HWMON support + DebugFS + Improvements

Message ID 20250308-hwm-v4-0-afa1342828f5@gmail.com (mailing list archive)
Headers show
Series platform/x86: alienware-wmi-wmax: HWMON support + DebugFS + Improvements | expand

Message

Kurt Borja March 8, 2025, 8:23 p.m. UTC
Hi all,

This set mainly adds hwmon and manual fan control support (patches 7-8)
to the alienware-wmi driver, after some improvements.

I have a question for anyone that may know how to solve it. In version 2
of these series the kernel test robot found a build error

	https://lore.kernel.org/platform-driver-x86/202503051819.bQ9P70Og-lkp@intel.com/

I think this happened because

	CONFIG_ALIENWARE_WMI=y

while

	CONFIG_ACPI_PLATFORM_PROFILE=m
	CONFIG_HWMON=m

How should I Kconfig to avoid this?

Thank you for your feedback :)

---
Changes in v4:

[03/12]
  - Dropped awcc_profile_id_to_pprof because it's no longer used for
    pwm*_enable attributes

[07/12]
  - Dropped pwm*_enable visibility
  - Dropped fan_data->related_temps
  - Allocate fan_data->auto_channels_temp statically
  - Allocate priv->temp_sensors statically
  - Determine and allocate fan label while probing

[08/12]
  - Dropped pwm*_enable attributes because it's incompatible with
    current ABI
  - Renamed pwm*_boost attributes to fan*_boost
  - Added dev_err logs to awcc_hwmon_suspend/resume

[11/12]
  - Introduced laptop documentation

[12/12]
  - Introduced ABI documentation

Link to v3: https://lore.kernel.org/r/20250305-hwm-v3-0-395e7a1407e2@gmail.com

---
Kurt Borja (12):
      platform/x86: alienware-wmi-wmax: Rename thermal related symbols
      platform/x86: alienware-wmi-wmax: Refactor is_awcc_thermal_mode()
      platform/x86: alienware-wmi-wmax: Improve internal AWCC API
      platform/x86: alienware-wmi-wmax: Modify supported_thermal_profiles[]
      platform/x86: alienware-wmi-wmax: Improve platform profile probe
      platform/x86: alienware-wmi-wmax: Add support for the "custom" thermal profile
      platform/x86: alienware-wmi-wmax: Add HWMON support
      platform/x86: alienware-wmi-wmax: Add support for manual fan control
      platform/x86: alienware-wmi-wmax: Add a DebugFS interface
      Documentation: wmi: Improve and update alienware-wmi documentation
      Documentation: admin-guide: laptops: Add documentation for alienware-wmi
      Documentation: ABI: Add sysfs platform and debugfs ABI documentation for alienware-wmi

 Documentation/ABI/testing/debugfs-alienware-wmi    |   44 +
 .../ABI/testing/sysfs-platform-alienware-wmi       |   14 +
 .../admin-guide/laptops/alienware-wmi.rst          |  128 +++
 Documentation/admin-guide/laptops/index.rst        |    1 +
 Documentation/wmi/devices/alienware-wmi.rst        |  383 +++-----
 MAINTAINERS                                        |    3 +
 drivers/platform/x86/dell/Kconfig                  |    1 +
 drivers/platform/x86/dell/alienware-wmi-wmax.c     | 1023 +++++++++++++++++---
 8 files changed, 1187 insertions(+), 410 deletions(-)
---
base-commit: e57eabe2fb044950e6ffdfe01803895043dec0b7
change-id: 20250305-hwm-f7bd91902b57

Best regards,

Comments

Guenter Roeck March 8, 2025, 9:23 p.m. UTC | #1
On 3/8/25 12:23, Kurt Borja wrote:
> Hi all,
> 
> This set mainly adds hwmon and manual fan control support (patches 7-8)
> to the alienware-wmi driver, after some improvements.
> 
> I have a question for anyone that may know how to solve it. In version 2
> of these series the kernel test robot found a build error
> 
> 	https://lore.kernel.org/platform-driver-x86/202503051819.bQ9P70Og-lkp@intel.com/
> 
> I think this happened because
> 
> 	CONFIG_ALIENWARE_WMI=y
> 
> while
> 
> 	CONFIG_ACPI_PLATFORM_PROFILE=m
> 	CONFIG_HWMON=m
> 
> How should I Kconfig to avoid this?
> 

If hwmon is considered to be mandatory, you'll need
	depends on HWMON=y

Alternative would be to use
	depends on HWMON=y || HWMON=n

and use IS_ENABLED(). Something like

	if (IS_ENABLED(CONFIG_HWMON) && awcc->hwmon) {
		ret = awcc_hwmon_init(wdev);
		if (ret)
			return ret;
	}

Using IS_REACHABLE() would be another option.

The CONFIG_ACPI_PLATFORM_PROFILE problem is probably similar. You can not
have CONFIG_ALIENWARE_WMI as boolean depending on code which can be built
as module.

Guenter
Kurt Borja March 9, 2025, 4:05 p.m. UTC | #2
Hi Guenter,

On Sat Mar 8, 2025 at 4:23 PM -05, Guenter Roeck wrote:
> On 3/8/25 12:23, Kurt Borja wrote:
>> Hi all,
>> 
>> This set mainly adds hwmon and manual fan control support (patches 7-8)
>> to the alienware-wmi driver, after some improvements.
>> 
>> I have a question for anyone that may know how to solve it. In version 2
>> of these series the kernel test robot found a build error
>> 
>> 	https://lore.kernel.org/platform-driver-x86/202503051819.bQ9P70Og-lkp@intel.com/
>> 
>> I think this happened because
>> 
>> 	CONFIG_ALIENWARE_WMI=y
>> 
>> while
>> 
>> 	CONFIG_ACPI_PLATFORM_PROFILE=m
>> 	CONFIG_HWMON=m
>> 
>> How should I Kconfig to avoid this?
>> 
>
> If hwmon is considered to be mandatory, you'll need
> 	depends on HWMON=y
>
> Alternative would be to use
> 	depends on HWMON=y || HWMON=n
>
> and use IS_ENABLED(). Something like
>
> 	if (IS_ENABLED(CONFIG_HWMON) && awcc->hwmon) {
> 		ret = awcc_hwmon_init(wdev);
> 		if (ret)
> 			return ret;
> 	}
>
> Using IS_REACHABLE() would be another option.

Oh - Now I understand why I saw this pattern in a few drivers. I'll
think about this option for the next revision.

>
> The CONFIG_ACPI_PLATFORM_PROFILE problem is probably similar. You can not
> have CONFIG_ALIENWARE_WMI as boolean depending on code which can be built
> as module.

Actually ALIENWARE_WMI is tristate, but the symbol that actually pulls
the dependency is ALIENWARE_WMI_WMAX, which is indeed bool.

Thank you, this gave me the clue to fix the issue!