From: "Filip Gołaś" <filip.golas@3mdeb.com>
To: "Michał Kopeć" <michal.kopec@3mdeb.com>,
"Hans de Goede" <hansg@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: platform-driver-x86@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Guenter Roeck" <linux@roeck-us.net>,
"Filip Gołaś" <filip.golas@3mdeb.com>
Subject: [PATCH 1/3] platform/x86: dasharo-acpi: Extract dasharo_call() from dasharo_read_channel()
Date: Fri, 13 Nov 2026 08:43:45 +0100 [thread overview]
Message-ID: <20261113074347.2301465-2-filip.golas@3mdeb.com> (raw)
In-Reply-To: <20261113074347.2301465-1-filip.golas@3mdeb.com>
Move the ACPI method evaluation out of dasharo_read_channel() into a new
dasharo_call() helper, which additionally accepts up to two extra integer
arguments after the channel's group and index. This allows the upcoming
write and fan curve support to reuse the same code path.
No functional change intended.
Signed-off-by: Filip Gołaś <filip.golas@3mdeb.com>
---
drivers/platform/x86/dasharo-acpi.c | 40 +++++++++++++++++++++--------
1 file changed, 30 insertions(+), 10 deletions(-)
diff --git a/drivers/platform/x86/dasharo-acpi.c b/drivers/platform/x86/dasharo-acpi.c
index dfea00cdde18..13d97eb43511 100644
--- a/drivers/platform/x86/dasharo-acpi.c
+++ b/drivers/platform/x86/dasharo-acpi.c
@@ -93,13 +93,18 @@ static int dasharo_get_feature_cap_count(struct dasharo_data *data, enum dasharo
return count;
}
-static int dasharo_read_channel(struct dasharo_data *data, char *method, enum dasharo_feature feat, int channel, long *value)
+/*
+ * Evaluate a DASH method taking the group and index of a channel, followed by
+ * up to two more integer arguments, and returning an integer.
+ */
+static int dasharo_call(struct dasharo_data *data, const char *method, enum dasharo_feature feat,
+ int channel, const u64 *args, unsigned int n_args, u64 *ret)
{
struct acpi_object_list obj_list;
- union acpi_object obj[2];
+ union acpi_object obj[4];
acpi_handle handle;
acpi_status status;
- u64 val;
+ unsigned int i;
if (feat >= ARRAY_SIZE(data->capabilities))
return -EINVAL;
@@ -107,20 +112,35 @@ static int dasharo_read_channel(struct dasharo_data *data, char *method, enum da
if (channel >= data->caps_found[feat])
return -EINVAL;
+ if (n_args > ARRAY_SIZE(obj) - 2) // 2 fixed args always at obj[0] and obj[1]
+ return -EINVAL;
+
obj[0].type = ACPI_TYPE_INTEGER;
obj[0].integer.value = data->capabilities[feat][channel].group;
obj[1].type = ACPI_TYPE_INTEGER;
obj[1].integer.value = data->capabilities[feat][channel].index;
- obj_list.count = 2;
- obj_list.pointer = &obj[0];
+ for (i = 0; i < n_args; ++i) {
+ obj[2 + i].type = ACPI_TYPE_INTEGER;
+ obj[2 + i].integer.value = args[i];
+ }
+ obj_list.count = 2 + n_args;
+ obj_list.pointer = obj;
handle = ACPI_HANDLE(&data->pdev->dev);
- status = acpi_evaluate_integer(handle, method, &obj_list, &val);
- if (ACPI_FAILURE(status))
- return -ENODEV;
+ status = acpi_evaluate_integer(handle, (acpi_string)method, &obj_list, ret);
+ return ACPI_FAILURE(status) ? -ENODEV : 0;
+}
- *value = val;
- return 0;
+static int dasharo_read_channel(struct dasharo_data *data, const char *method,
+ enum dasharo_feature feat, int channel, long *value)
+{
+ u64 val;
+ int ret;
+
+ ret = dasharo_call(data, method, feat, channel, NULL, 0, &val);
+ if (!ret)
+ *value = val;
+ return ret;
}
static int dasharo_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
--
2.56.0
next prev parent reply other threads:[~2026-11-13 7:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-13 7:43 [PATCH 0/3] platform/x86: dasharo-acpi: Add fan control Filip Gołaś
2026-11-13 7:43 ` Filip Gołaś [this message]
2026-11-13 7:43 ` [PATCH 2/3] platform/x86: dasharo-acpi: Add fan mode and PWM write support Filip Gołaś
2026-11-13 7:43 ` [PATCH 3/3] platform/x86: dasharo-acpi: Add EC fan curve support Filip Gołaś
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=20261113074347.2301465-2-filip.golas@3mdeb.com \
--to=filip.golas@3mdeb.com \
--cc=hansg@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=michal.kopec@3mdeb.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
all inboxes | Powered by JetHome®