From nobody Sat Apr 25 16:13:52 2026 X-Original-To: dev-commits-src-branches@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 4g2vym3VXnz6bksX for ; Sat, 25 Apr 2026 16:13:52 +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 4g2vym2ZyGz3wcj for ; Sat, 25 Apr 2026 16:13:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777133632; 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=wzdnVwnx7Zbkby1jdjmly7bhHeDb8oYuTBKvB3MG05Gwt35Ia//tjZkOTkXMfeFGoqB36g C3BA0xxs0tLA77cFbTtCzgr5vAs6AKW7OYFZ2gVeMjBkMghhaewEhG7nPwrUsaU3kAMpQq j1ovgL2LSFoW1Py8GwuLYhUszSZA+cKzpTsKzUxvSa+cwImd1ksxATCGjQIwIVC1wJBK/P 0OvOG72XIdthls4VdD0S86aDT3lbfMFocCD1fse6rdq6v8GeMdSRFNfeYqTdEvrmuei4rB G0wm24pUv9IMaxS2WgK7PiwPtXZ884FjmDZ/DroaXyv68PQM1tf2gtJFW99mPg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777133632; a=rsa-sha256; cv=none; b=SQkRCWDZ3tsd0n6xKKoapYAIOIgo9PhSd0KkNqlTIZjT2eethSqN8GkSQOmKLcZ2OshUcE HOQ1VPuJuKgJWpdZkHBUyZl4uN47Q7NnBYVVq9OBw0u6rPH+W9YKtijnCMI0QS5vI3pVaE vaVwFh5cPfk4dbP3j1bm7qyUAklGqfRC6sV3rzIBSJjV3NBSB+gjTZTt1qF/P1UsY/8Z+I udEYmNIaFT/8pb9fzMWFUO7cTqGGF2sBUmyg86j9PUpPC93UyL96NNx4O3ig5Ufwi6qwK2 yGasc0+i8oNHmNbx2Nrzhb+eGxB0b1EwnMmGdJLfBxlDnfmpVPBOm9+QNXqi7w== 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=1777133632; 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=UyiQxpNz2K5cSwHoxEuDxcqyBe9BS2u0pZrLuIf2o2jGWu56vFlaDh7FY4Nj2K6zfnvSnu IZFecwugyZZyct8pemkYBZqt4cznG6UF6ktnzhtgyAHnYksgBeOpnVo14PRDML1A+laxfz mzvun5zaNlKbKBmM2XzqMNtvaBzZonqEt56HQ/RDuYCyveOIIEZhg8SUzRoEMz6buSYYFj GiBbe/fFItL5oA3afU5GCvA8IvHyXKFzR6fFQYZQVJFOMahc92bVH5ucxu/iKllEqgf2io hMPTPswgEx++BSssOYZ7ru182ekEjstswcbsdd+jJgAdHxxXJvnuP6y8nCjR5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2vym26G5zhj7 for ; Sat, 25 Apr 2026 16:13:52 +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: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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); }