The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Derek J. Clark" <derekjohn.clark@gmail.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Hans de Goede" <hansg@kernel.org>
Cc: "Mark Pearson" <mpearson-lenovo@squebb.ca>,
	"Armin Wolf" <W_Armin@gmx.de>, "Jonathan Corbet" <corbet@lwn.net>,
	"Rong Zhang" <i@rong.moe>, "Kurt Borja" <kuurtb@gmail.com>,
	"Derek J . Clark" <derekjohn.clark@gmail.com>,
	"Pierre-Loup A . Griffais" <pgriffais@valvesoftware.com>,
	"Nícolas F . R . A . Prado" <nfraprado@collabora.com>,
	marshall@shzj.cc, hyacinth@shzj.cc,
	platform-driver-x86@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v13 5/7] platform/x86: lenovo-wmi-other: Add force_load_psy_ext module parameter
Date: Tue, 12 May 2026 23:58:06 +0000	[thread overview]
Message-ID: <20260512235808.691046-6-derekjohn.clark@gmail.com> (raw)
In-Reply-To: <20260512235808.691046-1-derekjohn.clark@gmail.com>

Some Lenovo BIOS have been shown to have incomplete and/or broken
capability data and WMI attribute IDs. In some cases the capability data
reports that a feature is not supported when the get/set methods are
fully implemented. It is also possible that the ACPI methods from the
ideapad_laptop driver we defer to could be bugged while the WMI method
is fully working. To aid end users in submitting more complete bug
reports in these situations, add an override to skip the ACPI and
compatibility checks to force load the power supply extension as if it
is fully supported and has no conflicts.

Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
---
v13:
  - Ensure is_writable and is_supported always return true when
    force_load_psy_ext is true.
v12:
  - Move the force_load_psy_ext into its own distinct patch.
---
 drivers/platform/x86/lenovo/wmi-other.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/platform/x86/lenovo/wmi-other.c b/drivers/platform/x86/lenovo/wmi-other.c
index a423bd563291..9d5250d41a3f 100644
--- a/drivers/platform/x86/lenovo/wmi-other.c
+++ b/drivers/platform/x86/lenovo/wmi-other.c
@@ -185,6 +185,16 @@ MODULE_PARM_DESC(relax_fan_constraint,
 	"Enabling this may results in HWMON attributes being out-of-sync, "
 	"and setting a too low RPM stops the fan. Use with caution.");
 
+/* Visibility of power supply extensions */
+static bool force_load_psy_ext;
+module_param(force_load_psy_ext, bool, 0444);
+MODULE_PARM_DESC(force_load_psy_ext,
+	"This option will skip checking if the ideapad_laptop driver will conflict "
+	"with adding an extension to set the battery charge behavior and battery charge "
+	"control end threshold. It will also skip checking if the BIOS reports that "
+	"those features are fully supported. It is recommended to blacklist the ideapad "
+	"driver before using this option.");
+
 /* ======== HWMON (component: lenovo-wmi-capdata 00 & fan) ======== */
 
 /**
@@ -755,6 +765,9 @@ static bool lwmi_psy_prop_is_supported(struct lwmi_om_priv *priv, enum power_sup
 {
 	int ret;
 
+	if (force_load_psy_ext)
+		return true;
+
 	ret = lwmi_psy_prop_get_supported(priv, prop);
 	if (ret < 0)
 		return false;
@@ -781,6 +794,9 @@ static int lwmi_psy_prop_is_writeable(struct power_supply *ps,
 	struct lwmi_om_priv *priv = ext_data;
 	int ret;
 
+	if (force_load_psy_ext)
+		return true;
+
 	ret = lwmi_psy_prop_get_supported(priv, prop);
 	if (ret < 0)
 		return false;
@@ -909,6 +925,8 @@ static void lwmi_om_psy_ext_init(struct lwmi_om_priv *priv)
 		props |= LWMI_PSY_PROP_TYPES;
 	if (!props)
 		return;
+	if (force_load_psy_ext)
+		goto load_psy_ext;
 
 	/* Deconflict ideapad_laptop driver */
 	ret = acpi_get_devices(ideapad_hid, lwmi_acpi_match, &handle, NULL);
@@ -920,6 +938,7 @@ static void lwmi_om_psy_ext_init(struct lwmi_om_priv *priv)
 		return;
 	}
 
+load_psy_ext:
 	/* Add battery hooks */
 	priv->battery_ext = lwmi_psy_exts[props];
 	priv->battery_hook.add_battery = lwmi_add_battery;
-- 
2.53.0


  parent reply	other threads:[~2026-05-12 23:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 23:58 [PATCH v13 0/7] lenovo-wmi: Add fixes and enhancement Derek J. Clark
2026-05-12 23:58 ` [PATCH v13 1/7] platform/x86: lenovo-wmi-other: Add missing CPU tunable attributes Derek J. Clark
2026-05-12 23:58 ` [PATCH v13 2/7] platform/x86: lenovo-wmi-other: Add GPU " Derek J. Clark
2026-05-12 23:58 ` [PATCH v13 3/7] platform/x86: lenovo-wmi-other: Rename LWMI_OM_FW_ATTR_BASE_PATH Derek J. Clark
2026-05-12 23:58 ` [PATCH v13 4/7] platform/x86: lenovo-wmi-other: Add WMI battery charge limiting Derek J. Clark
2026-05-13 14:43   ` Rong Zhang
2026-05-12 23:58 ` Derek J. Clark [this message]
2026-05-13 14:44   ` [PATCH v13 5/7] platform/x86: lenovo-wmi-other: Add force_load_psy_ext module parameter Rong Zhang
2026-05-12 23:58 ` [PATCH v13 6/7] platform/x86: lenovo-wmi-helpers: Add helper for creating per-device debugfs dir Derek J. Clark
2026-05-12 23:58 ` [PATCH v13 7/7] platform/x86: lenovo-wmi-capdata: Add debugfs file for dumping capdata Derek J. Clark

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260512235808.691046-6-derekjohn.clark@gmail.com \
    --to=derekjohn.clark@gmail.com \
    --cc=W_Armin@gmx.de \
    --cc=corbet@lwn.net \
    --cc=hansg@kernel.org \
    --cc=hyacinth@shzj.cc \
    --cc=i@rong.moe \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=kuurtb@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marshall@shzj.cc \
    --cc=mpearson-lenovo@squebb.ca \
    --cc=nfraprado@collabora.com \
    --cc=pgriffais@valvesoftware.com \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox