From: Shih-Yuan Lee <fourdollars@debian.org>
To: Henrik Rydberg <rydberg@bitmath.org>, Guenter Roeck <linux@roeck-us.net>
Cc: Armin Wolf <W_Armin@gmx.de>,
linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org,
Shih-Yuan Lee <fourdollars@debian.org>
Subject: [PATCH v5 1/3] hwmon: (applesmc) Cache fan positions during register initialization
Date: Sat, 11 Jul 2026 15:57:52 +0800 [thread overview]
Message-ID: <20260711075754.11358-2-fourdollars@debian.org> (raw)
In-Reply-To: <20260711075754.11358-1-fourdollars@debian.org>
To support the read_string callback for fan labels in the modern HWMON
API, load and cache the fan position names in smcreg.fan_positions
during register initialization.
Pre-pad fallback labels with four spaces to match the "+ 4" pointer
arithmetic offset used by all fan labels in the read_string callback.
Signed-off-by: Shih-Yuan Lee <fourdollars@debian.org>
---
drivers/hwmon/applesmc.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
index 90a14a7f2c4c..9b2d9ecb20c0 100644
--- a/drivers/hwmon/applesmc.c
+++ b/drivers/hwmon/applesmc.c
@@ -133,6 +133,7 @@ static struct applesmc_registers {
bool init_complete; /* true when fully initialized */
struct applesmc_entry *cache; /* cached key entries */
const char **index; /* temperature key index */
+ char fan_positions[10][17]; /* cached fan position labels */
} smcreg = {
.mutex = __MUTEX_INITIALIZER(smcreg.mutex),
};
@@ -566,7 +567,7 @@ static int applesmc_init_smcreg_try(void)
{
struct applesmc_registers *s = &smcreg;
bool left_light_sensor = false, right_light_sensor = false;
- unsigned int count;
+ unsigned int count, i;
u8 tmp[1];
int ret;
@@ -597,6 +598,16 @@ static int applesmc_init_smcreg_try(void)
if (s->fan_count > 10)
s->fan_count = 10;
+ for (i = 0; i < s->fan_count; i++) {
+ char newkey[5];
+
+ scnprintf(newkey, sizeof(newkey), FAN_ID_FMT, i);
+ ret = applesmc_read_key(newkey, s->fan_positions[i], 16);
+ s->fan_positions[i][16] = 0;
+ if (ret)
+ scnprintf(s->fan_positions[i], 17, " Fan %d", i);
+ }
+
ret = applesmc_get_lower_bound(&s->temp_begin, "T");
if (ret)
return ret;
--
2.39.5
next prev parent reply other threads:[~2026-07-11 7:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-10 12:32 [PATCH 0/1] hwmon: (applesmc) Convert to hwmon_device_register_with_info Shih-Yuan Lee
2026-07-10 12:32 ` [PATCH 1/1] " Shih-Yuan Lee
2026-07-10 12:47 ` sashiko-bot
2026-07-10 14:01 ` Guenter Roeck
2026-07-10 21:10 ` Armin Wolf
2026-07-10 22:28 ` Guenter Roeck
2026-07-11 2:51 ` Shih-Yuan Lee (FourDollars)
2026-07-11 3:36 ` [PATCH v2 0/1] " Shih-Yuan Lee
2026-07-11 3:37 ` [PATCH v2 1/1] " Shih-Yuan Lee
2026-07-11 3:47 ` sashiko-bot
2026-07-11 5:39 ` [PATCH v3 0/1] " Shih-Yuan Lee
2026-07-11 5:39 ` [PATCH v3 1/1] " Shih-Yuan Lee
2026-07-11 5:52 ` sashiko-bot
2026-07-11 6:06 ` [PATCH v4 0/1] " Shih-Yuan Lee
2026-07-11 6:06 ` [PATCH v4 1/1] " Shih-Yuan Lee
2026-07-11 6:17 ` sashiko-bot
2026-07-11 7:57 ` [PATCH v5 0/3] " Shih-Yuan Lee
2026-07-11 7:57 ` Shih-Yuan Lee [this message]
2026-07-11 8:06 ` [PATCH v5 1/3] hwmon: (applesmc) Cache fan positions during register initialization sashiko-bot
2026-07-11 7:57 ` [PATCH v5 2/3] hwmon: (applesmc) Fix lockless cache validation data race Shih-Yuan Lee
2026-07-11 8:10 ` sashiko-bot
2026-07-11 7:57 ` [PATCH v5 3/3] hwmon: (applesmc) Convert to hwmon_device_register_with_info Shih-Yuan Lee
2026-07-11 8:12 ` sashiko-bot
2026-07-11 9:33 ` [PATCH v6 0/3] " Shih-Yuan Lee
2026-07-11 9:33 ` [PATCH v6 1/3] hwmon: (applesmc) Cache fan positions during register initialization Shih-Yuan Lee
2026-07-11 9:42 ` sashiko-bot
2026-07-11 9:33 ` [PATCH v6 2/3] hwmon: (applesmc) Fix lockless cache validation data race Shih-Yuan Lee
2026-07-11 9:43 ` sashiko-bot
2026-07-11 9:33 ` [PATCH v6 3/3] hwmon: (applesmc) Convert to hwmon_device_register_with_info Shih-Yuan Lee
2026-07-11 9:42 ` sashiko-bot
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=20260711075754.11358-2-fourdollars@debian.org \
--to=fourdollars@debian.org \
--cc=W_Armin@gmx.de \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=rydberg@bitmath.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.