From nobody Wed Feb 25 06:42:28 2026 X-Original-To: dev-commits-src-main@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 4fLQ4h52W8z6Sgqc for ; Wed, 25 Feb 2026 06:42:28 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fLQ4h3yvGz3JhT for ; Wed, 25 Feb 2026 06:42:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772001748; 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=e2Q4ivKEd4sQhmLQNSzG75ijNJQFsrYU/rdB1vzzmBU=; b=dfju0Q2IKoklKHwS2aZygnLMIxe9J7rJ1YRWypI99GJmw/USk4P9vKDat8G+0eiz/L1Tba au5jqAbl+Z53yTW8qhH7Pxiw2zhehnWzEybsmQu6m186I+w0dbyx+r7bYRjlG7A1Ycn8GV xROGVQNzA2zgEV9sHZnynO1DJUYJxOajG0Y6phu7lVgtrYFYv4PmQk1iJE2nKr6MuFSnXQ PPai13kXllP2Z8lXYf06PK/801e6gjLdHlgCtbPdCaRsgdiS3ZOXScmvGqrpbWZ6JrZmOv ZIa5JbGLNnNIhxUI50EEuUwaT7IrrNJSfB5B19l0ntB1XvhK95fPiHQLOKVOrg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772001748; a=rsa-sha256; cv=none; b=yRQVr1UjZ28JMrWtIgA5DKRrr0oUjkJax3cTCn+JVE4/OoJbyAgyEXwHhO3+18xvo7/JOv mjbnFIFYlMFNko7CSTssiariXHCZAWjweFlmALuRaOyE13HnQD+qnuYxvMJPZ3w5GNThbx x/Rer4tBVeXIxF7WO2pwYSwvhPoxQG7IKvUuH1oA4xA1K4zen9Yab656LC5Hr9K+6vUT7+ cSaF3X9guYnOkNsQNmSb1C2+AFItxMNGTZ7FEqIoRD7u7kLJ10dkAqmKUIaOLKnbKOIF6j 052bb2G0gqR8fcgjvhdEys0JFRJMB5BGLlgo8s1a7qsuMqGgrfPA72uqzzb2wA== 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=1772001748; 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=e2Q4ivKEd4sQhmLQNSzG75ijNJQFsrYU/rdB1vzzmBU=; b=j0Usyt+2/1TIpuuIKiRFQvCySHGjsF41houVQ3x6vhcdVTkRYDssukmI2oajxOsLIPYsbS 0YpBZ3EDEXwl5Bm5kFU9Y0wzib2UBZf0nbmt4/VbEum/38+0HdwAy9aqcDmP6bSVtAkCqJ TN4j0HBZjRvto84himgR75LcTKfR0Q6uiB+IA+huFzAOdbtxUoEwKrFAs7PptN9bs2t802 9wM7qnG9lWusTjVM0ZfLIolhX9aiq0LELG0v9tA5VkASHsKJhZU76HL1gtpU2ggFguJUK/ XrXMleHoQCiVVL2jLPwF931FuS2WGGSMUJt3EhzPMoDBAZokGZ/qSroZLxVxgQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fLQ4h3JcBzrWf for ; Wed, 25 Feb 2026 06:42:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4478a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 25 Feb 2026 06:42:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Enji Cooper Subject: git: 3023bb49e115 - main - asmc: introduce the concept of generic models List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 3023bb49e115b4149f9fc0683dabde172ecb1336 Auto-Submitted: auto-generated Date: Wed, 25 Feb 2026 06:42:28 +0000 Message-Id: <699e99d4.4478a.67cccaa5@gitrepo.freebsd.org> The branch main has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=3023bb49e115b4149f9fc0683dabde172ecb1336 commit 3023bb49e115b4149f9fc0683dabde172ecb1336 Author: Enji Cooper AuthorDate: 2026-02-20 06:37:05 +0000 Commit: Enji Cooper CommitDate: 2026-02-25 06:41:42 +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 --- 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 35c050cab100..cf977071cc69 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -176,6 +176,11 @@ static const struct asmc_model *asmc_match(device_t dev); .smc_light_right = NULL, \ .smc_light_control = 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", @@ -517,8 +522,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 @@ -566,28 +605,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)) @@ -597,11 +649,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); }