From nobody Wed Feb 25 06:38:52 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 4fLQ0X2Yn6z6Sg0S for ; Wed, 25 Feb 2026 06:38: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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fLQ0X1fhWz3HVm for ; Wed, 25 Feb 2026 06:38:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772001532; 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=Nxbvbep1ciwEQcvB0bnEtGELxtsWMaTawBDi+ERF7jc=; b=KHuB99fkdv860MkItES24Os3a+MbXLTCnuiaFixZ2q3SpuIvEdR3ni/qJwJBMoKT7n4+jf yZTKwWyER+24rHGVuU+n1ofxEyx0qlhwnwSX7RzIcUrWLZ/Nb+i81uQOFwLC1DFIc+8rY9 wC+kR5VeYAHzvPUG7SCGXXGU+d0Kbiv/f5HYMsjkfH2FSM5VomuT5zfqyHt1LsAFulTDFI v9eld5riYxfDCgrzBA2mc30CfS9SrNBLZsdnSbljRohCUWuMrR2SMIbsNLZCjzq50czpkw JCIf7qRhvQZxdxK0dI72NGOZv2D+zJCLzujS8Kb9fNspl9W9mxG4/B9pbpuGQw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772001532; a=rsa-sha256; cv=none; b=kLABcIXytGCh52RtItL63EaVSYcghpyFqHN1vaNgqgz9RzzmRL4fH31K3tXeQMiFOOo2e9 0ZP6P/AWZOtX4c8NGVlNeG2l7LPxDkUB+IxCpnHiU+wk/th7q1WrWCIKoHf/rNsBbzWn3R 6TROp46LuoQc628mxYC0gBMp412Xq9gDgBxxWNPGqng3EkQpruvendJx8/lixRRQqmvtPS cAI3HVLWjLTAoeq6BrkyOt/EOkjwx0dnwZkcdXYZXS2TurgP2aO3fYAG9frvMlKZSGGi6E v/qcw9GSzMQOuX1reOCbovICI50SVQrTtyBHioXmkvdrVgBkLF400TXnvX8t/w== 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=1772001532; 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=Nxbvbep1ciwEQcvB0bnEtGELxtsWMaTawBDi+ERF7jc=; b=wGSdQLA6LEyj/7frPS4KdVLO7qL9FB9cRdmBWyXXmxU6ck0Vc5XzWlHzhv4sH2r1a0PIc2 990mZNlF4ADwZlvRpjLF5oNtX+msottNDk0Z9pwK9DCqH3uJZKF2kIHgFbP1uGiRdOH4N0 xpFuAS8rkMYnChk5SHOHkTXoT7NaHfk7tHmmJrWu9LgZCak8TTDfabkoDS0FuiAQrQAjjh LheBS48GOrXjyHyvUGiG+hUOWodmA0pqE2YY/GAJPhWUm43uBsDq+BzmwbrFyGLXO7GRCQ y3Yu8yG1FnKy57d3nn5wRbda7SRbQbmphnySEFRBs/Z+iQA2ql4IasbIT91FHA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fLQ0X0zSFzrL4 for ; Wed, 25 Feb 2026 06:38:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43456 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 25 Feb 2026 06:38:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Abdelkader Boudih From: Enji Cooper Subject: git: 94db365042d3 - main - asmc: add Wake-on-LAN control via sysctl 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: 94db365042d35ff7e3ee7365a87a89bab1560030 Auto-Submitted: auto-generated Date: Wed, 25 Feb 2026 06:38:52 +0000 Message-Id: <699e98fc.43456.7db13a6@gitrepo.freebsd.org> The branch main has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=94db365042d35ff7e3ee7365a87a89bab1560030 commit 94db365042d35ff7e3ee7365a87a89bab1560030 Author: Abdelkader Boudih AuthorDate: 2026-02-25 06:32:42 +0000 Commit: Enji Cooper CommitDate: 2026-02-25 06:38:19 +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 --- 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 dd7ad7d5e66d..35c050cab100 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. */ @@ -879,9 +880,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; @@ -951,6 +955,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, @@ -1704,3 +1718,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 a6e9c75017e0..97e5076455c9 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. */