From nobody Sat Apr 25 16:15:32 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 4g2w0h5p1Lz6blD2 for ; Sat, 25 Apr 2026 16:15:32 +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 4g2w0h311hz3x8s for ; Sat, 25 Apr 2026 16:15:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777133732; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gtdDPrFHeZbkz3IkN0dBGi09rwYjKeFTI1IwMeEhlWs=; b=uVItfvkrMhFaPvGa9VLloyiNH9rHDcPUtw3RYjGbzjbI/Dnf6vuSbmsKYafjN6B/DC0lCX 23Z1XwEdZ7pmcLm549J5YidLihLmk/tjOY+44ZS7qnlyW00vxfxb57k35zzK2812f1sDL7 XsOajhCJ4iV++eIPHc6s1zF/iUNziakVEkLPKSzCZiDL8k4RNf3fb+PZWPWvQVo857C0tX 86VUAhgAZsdm89G4UL//phlZE0D2y+DYRZ2hAgnzOUpxfN9TbJs7LHhUCYHu1HlB/HoJwz PMcU9sxXuOJutUjX/w7+Ev+u0g8Lx/oSAxRjjmQNkaiQM+zDJoAL6JqEhYOGjA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777133732; a=rsa-sha256; cv=none; b=MEODyPtCnZedwQ1g5vKZZvJzw3GZ/0cZhYWPA8SiiCVuEslW5K2Ds++E8sdN0Za+AHgPII xYYyPI/7P3zWlnKzpq2rVCqVAtu1rramh5Ze7bE7v35IH3HK1Wd3TWLfPxmetPu5y8MeJy zXP+rg1Gx3L9ArcmlRsShYBVlOFmw68o4umgh+pjVIxEW7Hk4v8yUhqqz5aB1mbrQlyqSE UdpiQtBQZy21alE2UWIy9qZqiZ92YndXE4/aCg3yTa981Zm5WrM8UrmyuAdsrcgzPoEKy+ nxJhzJSTCrCu97arD8WUnMSBY0hCpItrTem0vca2SDwbLAQ/pyHwDHeqrL93qQ== 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=1777133732; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gtdDPrFHeZbkz3IkN0dBGi09rwYjKeFTI1IwMeEhlWs=; b=K8NcHG8fP50BBo+8sUKssGoIcwBIRnar1rENpZCUXF6SJ1+RAaUcp01p5UbjpHg65vKNJs MbqxdBXfetf/7PYNjasLTQq1+V9tHfGcm6BaD5yqzEm7LJY7IDrDUrkwferSMfZsCeJ93S tZ7zItbup7wuyjThX/d9nuwnRQrFKhw6dmSmavUSfy3E+4ewdE4gEPpOFrm5WsNPxeo3aZ ohyu4xUpQtqMtQTx/PbRbVnzMkaQiL8lfUMsCfv1OdPt5Ityc0F21DQrETg2+dTXA4OMCg qIDEghY5Y0Fvz+I68ZqFXyFmx6ldRSbH7bLDOVu0MGUHEEgJ8EMXjGoXbvRRDA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2w0h2K27zhWV for ; Sat, 25 Apr 2026 16:15:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 415ec by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 25 Apr 2026 16:15:32 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Abdelkader Boudih From: Enji Cooper Subject: git: a0d44a70bae8 - stable/15 - asmc: add Wake-on-LAN control via sysctl 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: a0d44a70bae878bdcb4bf65987a5c13b5162c0a2 Auto-Submitted: auto-generated Date: Sat, 25 Apr 2026 16:15:32 +0000 Message-Id: <69ece8a4.415ec.596dede3@gitrepo.freebsd.org> The branch stable/15 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=a0d44a70bae878bdcb4bf65987a5c13b5162c0a2 commit a0d44a70bae878bdcb4bf65987a5c13b5162c0a2 Author: Abdelkader Boudih AuthorDate: 2026-02-25 06:32:42 +0000 Commit: Enji Cooper CommitDate: 2026-04-25 16:14:50 +0000 asmc: add Wake-on-LAN control via sysctl Apple Mac systems support Wake-on-LAN from powered-off state (S5/G2) via the AUPO SMC key. This change adds a convenience sysctl, `dev.asmc.0.wol`. This can be disabled if set to 0 and enabled if set to 1. The AUPO key is volatile and resets to 0x00 on every boot, so WoL must be manually enabled before each shutdown to work from powered-off state. Users need to run: `sysctl dev.asmc.0.wol=1` before shutting down the system. The sysctl is best set to persist in `/etc/sysctl.conf`. MFC after: 1 week Reviewed By: markj, ngie Differential Revision: https://reviews.freebsd.org/D54439 (cherry picked from commit 94db365042d35ff7e3ee7365a87a89bab1560030) --- sys/dev/asmc/asmc.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ sys/dev/asmc/asmcvar.h | 5 +++++ 2 files changed, 50 insertions(+) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index cdaf5d0f45eb..1623d2d9bf98 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -108,6 +108,7 @@ static int asmc_mbp_sysctl_light_left(SYSCTL_HANDLER_ARGS); static int asmc_mbp_sysctl_light_right(SYSCTL_HANDLER_ARGS); static int asmc_mbp_sysctl_light_control(SYSCTL_HANDLER_ARGS); static int asmc_mbp_sysctl_light_left_10byte(SYSCTL_HANDLER_ARGS); +static int asmc_wol_sysctl(SYSCTL_HANDLER_ARGS); struct asmc_model { const char *smc_model; /* smbios.system.product env var. */ @@ -916,9 +917,12 @@ static int asmc_init(device_t dev) { struct asmc_softc *sc = device_get_softc(dev); + struct sysctl_ctx_list *sysctlctx; int i, error = 1; uint8_t buf[4]; + sysctlctx = device_get_sysctl_ctx(dev); + if (sc->sc_model->smc_sms_x == NULL) goto nosms; @@ -988,6 +992,16 @@ asmc_init(device_t dev) out: asmc_sms_calibrate(dev); nosms: + /* Wake-on-LAN convenience sysctl */ + if (asmc_key_read(dev, ASMC_KEY_AUPO, buf, 1) == 0) { + SYSCTL_ADD_PROC(sysctlctx, + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "wol", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + dev, 0, asmc_wol_sysctl, "I", + "Wake-on-LAN enable (0=off, 1=on)"); + } + sc->sc_nfan = asmc_fan_count(dev); if (sc->sc_nfan > ASMC_MAXFANS) { device_printf(dev, "more than %d fans were detected. Please " @@ -1742,3 +1756,34 @@ asmc_mbp_sysctl_light_left_10byte(SYSCTL_HANDLER_ARGS) return (error); } + +/* + * Wake-on-LAN convenience sysctl. + * Reading returns 1 if WoL is enabled, 0 if disabled. + * Writing 1 enables WoL, 0 disables it. + */ +static int +asmc_wol_sysctl(SYSCTL_HANDLER_ARGS) +{ + device_t dev = (device_t)arg1; + uint8_t aupo; + int val, error; + + /* Read current AUPO value */ + if (asmc_key_read(dev, ASMC_KEY_AUPO, &aupo, 1) != 0) + return (EIO); + + val = (aupo != 0) ? 1 : 0; + error = sysctl_handle_int(oidp, &val, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + + /* Clamp to 0 or 1 */ + aupo = (val != 0) ? 1 : 0; + + /* Write AUPO */ + if (asmc_key_write(dev, ASMC_KEY_AUPO, &aupo, 1) != 0) + return (EIO); + + return (0); +} diff --git a/sys/dev/asmc/asmcvar.h b/sys/dev/asmc/asmcvar.h index 102bee8a15b7..602f363594b9 100644 --- a/sys/dev/asmc/asmcvar.h +++ b/sys/dev/asmc/asmcvar.h @@ -125,6 +125,11 @@ struct asmc_softc { */ #define ASMC_KEY_CLAMSHELL "MSLD" /* RO; 1 byte */ +/* + * Auto power on / Wake-on-LAN. + */ +#define ASMC_KEY_AUPO "AUPO" /* RW; 1 byte */ + /* * Interrupt keys. */