From nobody Sat Apr 25 16:26:53 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 4g2wFn5kq6z6blkC for ; Sat, 25 Apr 2026 16:26:53 +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 4g2wFn3jbdz42Zf for ; Sat, 25 Apr 2026 16:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777134413; 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=M33prnmV4ylp7995Ia9njPvAFlyRSDdxnXmF2xIHVlM=; b=QQse19hJoJJT5NIh7nw/2Swcjy/XHnPrkmBjaqUAaWRJR/gCrggIBr568nyKoT+fsVKPet z2M/O9cMMQXYrYyTpJ8ciBsIXYvGzZ3ko6WzKu/R/gOFeYbZbelwL2LMrvqF4xhs4Z4Jpi rOfmK3NfOJ+KECN/Ztr3wo77Rbu9H7NB4Yv4JjNw9WnRcYCWg77vz2uxo5LR8SNlNIFJd3 osE32XDSUcedJYo0IINMOgQtohyWvU790tm/ObVghxJBMt4B8Yeiz3UksOAaaIMlGf1Qpx gBThhFxKdTipyHADLzx4Zd0BOB/2T+4MHiuHbJG69aqbqATSNFu4oiwVlGMoTQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777134413; a=rsa-sha256; cv=none; b=fa10NjM3Yw5LYpIdu3pF7hiJMLRjh22RD66myIYPSO5dRtqkhNmajjvWncnYoonG9nS6bu AwglKQVyY8Bl5qpc9iH5sPGDJlzB8FgdBI9Ci4QJSvPkz/pj1yyJOG1kI25M34LzubBcBm QIlUz0cdRU2Dpws1KMDxbxfo1UjltPGSp3vkvRpiimSmzT0mWPH0vqVG/sdkCtT06rREFh LLYVNx1l0QyBxBf8ydecLGBTngVUJ/JSYD1RJ9tMRnHke8ZT68h/51fdcqDeq7snef09rN RO9R7WW0XWQI/cCbaiN34yJko67NeCvZe5x3buIWiT0twIZJsGXbzHqsltOpDQ== 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=1777134413; 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=M33prnmV4ylp7995Ia9njPvAFlyRSDdxnXmF2xIHVlM=; b=l0iSESStobs3ADMSrWmmhVJ3apcopEd+PYmMPJItrbmz9PiP+y3iOMdmcvP0D6N4hlJfYm 7Fnxrg2XJb4rnoLFGKkR70izLqK9e8APBRNI4RXwDhQWbkAyzqhepoTSevHeKDnwqKKgLH MAqZ+CiAzXuvsq4t7ja+cRX+px4nDG6K6+TiS6J6o4qGbyPLYCKl/Oe4ht6KdTuFCnNAfI 5CpKAV1UbUwoiyCCGSvm2eZUB7b7MuBAzlegGIoDwTklZ0cRmVgbo1Rkru8VLJwWpgTiP1 8AOirCPF81/y9J6LLueD+LbphCaKFOBMYIE2jXHxTeM8cBK0q5RIV2FebTGwQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2wFn30XHzj0q for ; Sat, 25 Apr 2026 16:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42dfe by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 25 Apr 2026 16:26:53 +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: 1198b0ca9d6d - stable/14 - asmc: add Wake-on-LAN control via sysctl 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/14 X-Git-Reftype: branch X-Git-Commit: 1198b0ca9d6d7b579304404bc38ed17d394fc5a4 Auto-Submitted: auto-generated Date: Sat, 25 Apr 2026 16:26:53 +0000 Message-Id: <69eceb4d.42dfe.4e622f8c@gitrepo.freebsd.org> The branch stable/14 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=1198b0ca9d6d7b579304404bc38ed17d394fc5a4 commit 1198b0ca9d6d7b579304404bc38ed17d394fc5a4 Author: Abdelkader Boudih AuthorDate: 2026-02-25 06:32:42 +0000 Commit: Enji Cooper CommitDate: 2026-04-25 16:25:42 +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 56518269be07..40aa74202a67 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. */ @@ -915,9 +916,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; @@ -987,6 +991,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 " @@ -1741,3 +1755,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. */