From nobody Sun Sep 06 19:48:29 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 4hdLNY49TBz6rc9Y for ; Sun, 06 Sep 2026 19:48:29 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hdLNY2Bmcz3hR7 for ; Sun, 06 Sep 2026 19:48:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788724109; 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=nFhBV61l8Q66/joHLNbTMI0t9SygJ62WFOITkcfLta0=; b=KuiNRFRIaBpSbmL8RH9l/kINVaCYhSbx/Lc9bj+bG3A+EB1xAwx10teR7emzMDtAwOv7tT u6Uk8kOFH4t3mWYO9uwCWxriZSg4PmG9tOB8i/Pjuq44wK983rGi1CQkPQH7sGJQ4aYEC+ 9HqbTweTihHNHVmevAjXJL8w3bblloqmdL6ma900gRQbkh+SjPO6DTqrDY6wsDfgfaMgTi zczhEIfP3B1+ZVBBI0IqIjo9tj1SU3CBt0dJxH59Q2asw5Z6t+zrK3xiTgzqIGoaEDEqFI zKAeWryiAJe5pvX4wO+NRlT6DfqkpPGhNOX7xnz32vX+DwxAwdGWEMr6U/bbuw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788724109; a=rsa-sha256; cv=none; b=L6mDNobC2SN12dV68NUPLknE2NKynOL1IWVT2gqbnhT2AsozISRFGOR3rzBeqCdm/WxOe/ DxUa51yM5VchSVtKi6V02L1J9+zzT5/ovJQu5WiuLGXB45a2aknVfAtbW1T6zjj2YEzm35 nBBQhFPJqqJXYqnQyT2JJhncn7Us0cgGrISIdG2nKNzAj3yjRda4AHf/r0rwG1bLGPDETC nfu2FvgRUA1P1Y9vUBDFVqdf6SEDfL8f7xkt69g6sXcav9DI6JsnCct8dC9Q/VBq8vUVsp PxuXBJzE2O8rKwEcZCuBSjGiqgsuEtgpI7UWc8kIhqK3nq0cNWByre7MaQWXPw== 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=1788724109; 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=nFhBV61l8Q66/joHLNbTMI0t9SygJ62WFOITkcfLta0=; b=S3ZTeNRsSfvTJxhR3u3ld4SAbpZCkhqsFGPSWqBD84LK4xjRCONsH1pTlSyd/F0pI8Z8xv XKGifCUIRkT2w5lITb1qTDmmNDzwpehJzvKuL2wfoUGIMUCd162Pdm/yyHXTzbFOMT79M/ eu/SooGOM4nUOWlQVT7eZdig9i3Q6dVPFAH4nOuRIL3TvYS3ZmC0c1IEE0j3tS1HLClvV6 s4EBJY2+h2liNzSYn/UF0vAyLsjlP9RjGduXUfwIltvFZsPOCryR56kqYiV0WnUcXG5z29 THVj366zcM84vv+UmZytd/ZFEMjvGMYnz6B9iFcUG1fl1Mx7j2oyOKih5PgKxQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hdLNY0WmgzmNf for ; Sun, 06 Sep 2026 19:48:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3dad6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 06 Sep 2026 19:48:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Abdelkader Boudih Subject: git: c6db719a548f - main - asmc: add sleep indicator LED 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: seuros X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c6db719a548ff6d49564c68ef52c2cbe02b7db15 Auto-Submitted: auto-generated Date: Sun, 06 Sep 2026 19:48:29 +0000 Message-Id: <6a9dc38d.3dad6.63c8072c@gitrepo.freebsd.org> The branch main has been updated by seuros: URL: https://cgit.FreeBSD.org/src/commit/?id=c6db719a548ff6d49564c68ef52c2cbe02b7db15 commit c6db719a548ff6d49564c68ef52c2cbe02b7db15 Author: Abdelkader Boudih AuthorDate: 2026-09-06 17:53:34 +0000 Commit: Abdelkader Boudih CommitDate: 2026-09-06 19:47:44 +0000 asmc: add sleep indicator LED control via sysctl Add dev.asmc.0.sil sysctl to control the SIL LED via SMC keys MSLD (duty/brightness) and MSLS (state latch, must be set before re-enabling). MFC After: 1 week Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58865 --- sys/dev/asmc/asmc.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ sys/dev/asmc/asmcvar.h | 15 +++++++++++++-- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index 80412b9c8daf..4eaa3bf06252 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -126,6 +126,7 @@ 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_aupo_sysctl(SYSCTL_HANDLER_ARGS); +static int asmc_sil_sysctl(SYSCTL_HANDLER_ARGS); static int asmc_key_getinfo(device_t, const char *, uint8_t *, char *); @@ -939,6 +940,16 @@ asmc_init(device_t dev) "Auto power-on after AC power loss (0=off, 1=on)"); } + /* Sleep Indicator LED (SIL) control via MSLD/MSLS keys. */ + if (asmc_key_read(dev, ASMC_KEY_MSLD, buf, 1) == 0) { + SYSCTL_ADD_PROC(sysctlctx, + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "sil", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + dev, 0, asmc_sil_sysctl, "I", + "Sleep indicator LED (0=off, 1=on)"); + } + sc->sc_nfan = asmc_fan_count(dev); if (sc->sc_nfan > ASMC_MAXFANS) { device_printf(dev, @@ -2538,6 +2549,40 @@ asmc_aupo_sysctl(SYSCTL_HANDLER_ARGS) return (0); } +/* Sleep Indicator LED (SIL) control; see ASMC_KEY_MSLD/MSLS in asmcvar.h. */ +static int +asmc_sil_sysctl(SYSCTL_HANDLER_ARGS) +{ + device_t dev = (device_t)arg1; + uint8_t msld; + int val, error; + + if (asmc_key_read(dev, ASMC_KEY_MSLD, &msld, 1) != 0) + return (EIO); + + /* MSLD 0xff means off, anything else means on */ + val = (msld != 0xff) ? 1 : 0; + error = sysctl_handle_int(oidp, &val, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + + if (val != 0) { + /* Turn on: unlatch MSLS first, then set MSLD duty */ + uint8_t msls = 0x01; + if (asmc_key_write(dev, ASMC_KEY_MSLS, &msls, 1) != 0) + return (EIO); + msld = 0x01; + } else { + /* Turn off: just set MSLD to 0xff */ + msld = 0xff; + } + + if (asmc_key_write(dev, ASMC_KEY_MSLD, &msld, 1) != 0) + return (EIO); + + return (0); +} + static int asmc_backlight_update_status(device_t dev, struct backlight_props *props) { diff --git a/sys/dev/asmc/asmcvar.h b/sys/dev/asmc/asmcvar.h index 940119e59774..76c17f4ba2dd 100644 --- a/sys/dev/asmc/asmcvar.h +++ b/sys/dev/asmc/asmcvar.h @@ -175,9 +175,20 @@ struct asmc_softc { #define ASMC_KEY_FANSAFESPEED0 "F0Sf" /* RO; 2 bytes */ /* - * Clamshell. + * Sleep Indicator LED (SIL). + * + * MSLD controls the duty cycle of the front-panel sleep indicator LED. + * 0x00 = LED at idle brightness, 0xff = LED fully off. + * MSLS is the SIL state latch — must be written to 0x01 before MSLD + * can re-enable the LED after it has been turned off. + * + * Protocol: OFF = write MSLD 0xff + * ON = write MSLS 0x01, then write MSLD 0x01 + * + * Present on all Intel Macs with a sleep indicator (laptops + Mac Mini). */ -#define ASMC_KEY_CLAMSHELL "MSLD" /* RO; 1 byte */ +#define ASMC_KEY_MSLD "MSLD" /* RW; 1 byte, SIL duty */ +#define ASMC_KEY_MSLS "MSLS" /* RW; 1 byte, SIL state latch */ /* * Auto power-on after AC power loss (AUPO).