From nobody Sat Apr 25 16:13:52 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g2vys5G3tz6bkh6 for ; Sat, 25 Apr 2026 16:13:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g2vys370fz3wjZ for ; Sat, 25 Apr 2026 16:13:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777133637; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OW3LnjNH6OEYZXwV1mjl2ZEZSoDW0bwKi5ieSDcdk0g=; b=r/EfzyRqMDhHM1K74uFAQfx/SYlseh/9ScLog1U1T5mLmaSFmKaNlHurIdAxEOs0Hx+lso t4IXCxjF3OMP57xW3syZ7c9If1nbA66H1s1b6VITGNGJAMQzAw5LCGcKykVVdF+4b/3UrH OmVwcd3UYIltPy0n/q1k3tEdIBSoPN3WeJB7i2et81tIa/XtUZlXX3e1x+3chifeOk+lMS sTUsT5hrUYgR0JID7zUu2EDrkM1dDX2tsR6XXOmJ+Qrip2fY5GtwC5GMmeeo32qOBM4l6g Gvv+WwwJqReyJk5WURCNJ50zmrYLjmUbSZd2RRPuN9jae0eY14w3rMBH0N3ObQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777133637; a=rsa-sha256; cv=none; b=LCa68dw+RfCezcoh8f5UuSH2k8nCcCM0M7v9qibPrnNHI/ClcoyEijtSsyE4fDnmkLsAF5 ukhKlunTlvBNrqarw6mdMEu9WdV32Tu8mTQ5GOzWLhws/HV2kWfOgvgUtZjjuz08ITLJ7s LYTX3coHFPJzivABwFRTr+XQxWYovPRCy+RdqkmDKEt7zZoX80t33Nt7GqC6Dk3nGmp9sw +5KiRzX0JkIp5DyGEtNrXYQN7/Zn1Na/qhdC2mo1c0SD7/BiLCu5LRNCHLyB1FcKmRSzGV ImXikIZ+xk/hDPqcSvlXCqNRZT/wLFcxuei47Yx0m5TSOp0+M9ZFmukXI5Cd/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777133637; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OW3LnjNH6OEYZXwV1mjl2ZEZSoDW0bwKi5ieSDcdk0g=; b=a49SHrOgfExe1Pana86R/VgngqU1cNhOL0d2LFcNR361g33Kl3r6GmsmiqJAOPB6ZOFWlk JoqNmzpwGICp3fW64lAUHX/YWlN4BtIVw+fSTCuYFOkD6Gk0TVi1W3udFXjRtxMPkaiqZO wRjJIT3bkXLGQ2TAQXTUeLJrpgtRKJmtWkpkewfyKixjb4bqPdc6L2ntfM6IQa0BPs/qoW Pg+bIAVZyOR831RMoYsbRSYHW/aKfx7z+IsNcqOTqfeNz+NBJ/ARXXw8077nXnQCaSpseY KkbUIV6YOwpzK6QvDrm9F0+U9PHv61bzQ50ic6KcE6dqPrXvHZIjfcG3gBy/5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2vys2jzzzh0M for ; Sat, 25 Apr 2026 16:13:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4381e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 25 Apr 2026 16:13:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: ca38f51b4c58 - stable/15 - asmc: introduce the concept of generic models List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ca38f51b4c58edf78b8a7c0d25e5afb414bb9831 Auto-Submitted: auto-generated Date: Sat, 25 Apr 2026 16:13:52 +0000 Message-Id: <69ece840.4381e.16f00e3e@gitrepo.freebsd.org> The branch stable/15 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=ca38f51b4c58edf78b8a7c0d25e5afb414bb9831 commit ca38f51b4c58edf78b8a7c0d25e5afb414bb9831 Author: Enji Cooper AuthorDate: 2026-02-20 06:37:05 +0000 Commit: Enji Cooper CommitDate: 2026-04-25 16:10:00 +0000 asmc: introduce the concept of generic models Having to enter in each of the models for Apple hardware, recompiling, etc, is tedious. Provide generic models so end-users can leverage some of the capabilities provided by the driver, i.e., common features like minimal fans and lights (if present on the generic model) support. The generic models are as follows: - Macmini - MacBookAir - MacBookPro - MacPro This sort of follows the pattern established by the `applesmc` driver in Linux. MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55395 (cherry picked from commit 3023bb49e115b4149f9fc0683dabde172ecb1336) --- sys/dev/asmc/asmc.c | 80 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 13 deletions(-) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index 772df00f34eb..cdaf5d0f45eb 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -160,6 +160,11 @@ static const struct asmc_model *asmc_match(device_t dev); #define ASMC_LIGHT_FUNCS_DISABLED NULL, NULL, NULL +#define ASMC_TEMPS_FUNCS_DISABLED \ + .smc_temps = {}, \ + .smc_tempnames = {}, \ + .smc_tempdescs = {} \ + static const struct asmc_model asmc_models[] = { { "MacBook1,1", "Apple SMC MacBook Core Duo", @@ -492,8 +497,42 @@ static const struct asmc_model asmc_models[] = { ASMC_FAN_FUNCS2, ASMC_LIGHT_FUNCS, ASMC_MBA7_TEMPS, ASMC_MBA7_TEMPNAMES, ASMC_MBA7_TEMPDESCS + } +}; + +static const struct asmc_model asmc_generic_models[] = { + { + .smc_model = "MacBookAir", + .smc_desc = NULL, + ASMC_SMS_FUNCS_DISABLED, + ASMC_FAN_FUNCS2, + ASMC_LIGHT_FUNCS, + ASMC_TEMPS_FUNCS_DISABLED + }, + { + .smc_model = "MacBookPro", + .smc_desc = NULL, + ASMC_SMS_FUNCS_DISABLED, + ASMC_FAN_FUNCS2, + ASMC_LIGHT_FUNCS, + ASMC_TEMPS_FUNCS_DISABLED + }, + { + .smc_model = "MacPro", + .smc_desc = NULL, + ASMC_SMS_FUNCS_DISABLED, + ASMC_FAN_FUNCS2, + ASMC_LIGHT_FUNCS_DISABLED, + ASMC_TEMPS_FUNCS_DISABLED }, - { NULL, NULL } + { + .smc_model = "Macmini", + .smc_desc = NULL, + ASMC_SMS_FUNCS_DISABLED, + ASMC_FAN_FUNCS2, + ASMC_LIGHT_FUNCS_DISABLED, + ASMC_TEMPS_FUNCS_DISABLED + } }; #undef ASMC_SMS_FUNCS @@ -542,28 +581,41 @@ MODULE_DEPEND(asmc, acpi, 1, 1, 1); static const struct asmc_model * asmc_match(device_t dev) { + const struct asmc_model *model; + char *model_name; int i; - char *model; - model = kern_getenv("smbios.system.product"); - if (model == NULL) - return (NULL); + model = NULL; + + model_name = kern_getenv("smbios.system.product"); + if (model_name == NULL) + goto out; - for (i = 0; asmc_models[i].smc_model; i++) { - if (!strncmp(model, asmc_models[i].smc_model, strlen(model))) { - freeenv(model); - return (&asmc_models[i]); + for (i = 0; i < nitems(asmc_models); i++) { + if (strncmp(model_name, asmc_models[i].smc_model, + strlen(model_name)) == 0) { + model = &asmc_models[i]; + goto out; + } + } + for (i = 0; i < nitems(asmc_generic_models); i++) { + if (strncmp(model_name, asmc_generic_models[i].smc_model, + strlen(asmc_generic_models[i].smc_model)) == 0) { + model = &asmc_generic_models[i]; + goto out; } } - freeenv(model); - return (NULL); +out: + freeenv(model_name); + return (model); } static int asmc_probe(device_t dev) { const struct asmc_model *model; + const char *device_desc; int rv; if (resource_disabled("asmc", 0)) @@ -573,11 +625,13 @@ asmc_probe(device_t dev) return (rv); model = asmc_match(dev); - if (!model) { + if (model == NULL) { device_printf(dev, "model not recognized\n"); return (ENXIO); } - device_set_desc(dev, model->smc_desc); + device_desc = model->smc_desc == NULL ? + model->smc_model : model->smc_desc; + device_set_desc(dev, device_desc); return (rv); }