From nobody Sun Sep 06 19:48:29 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 4hdLNf5X24z6rcNd for ; Sun, 06 Sep 2026 19:48:34 +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 4hdLNf20FDz3hV8 for ; Sun, 06 Sep 2026 19:48:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788724114; 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=DmvkM2r2b5IuGH0OTwCQDuTjeg2fUfi1tpswq42ZpnH2P2A1Oj/RW0lr48Ncf1ZRGb449q lBJ+vAeEmIR1VhExNQ6nR9RT5l+6I4OXwI1uu5jtV3R+uZ5OM8ZQj+7cl29sANUJ10yf2M Pl1zvgysKClvmGrpLSZE2xNqVoZ9OL44/Dtufs9bQGQRwH3rDYveIuDuRKKg5rilrY4sLT MOJtp9QIVzDOosyYvOMzrBbSfhd80Wch+7bQobqtVCOeV4S1ZRY84d11rg73PyAjOcnMXp 9I0927LhVHH23xTR2nsEPTIC6xoJ/ANjgrSpBB7gVKwS5SvVYUzeFxYxfmU/rA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788724114; a=rsa-sha256; cv=none; b=a4p8BrtBcODQ8RA78TO1BN3rC3K5sgGW5QKucizJ5jv3rdT7DJbUYBY4So0XjBfKnXCyOX Pdxn+sbcHbpmw1wbFicp6nca7B/zmZ5ubT/kDAWgdZOnptqAkcAlmcbLWUnSxgdAePH/FS CU8x0E6ixWgAw6GZUMizyikcdMoU6hgxcR8g96ivdD/tUy7DZEJ911rcxFVPzzRd8DfIq0 WY/Tdroj1HE5ZRNzVeFYqxmjkcbqyLujcqDuEGa2qZ5Q5xusHtgQYEQwPdSiuih7NabvN+ W5HQou1X5xh1wOEhB4nDes0rQ8b5wH/Oyq1tcuE9rG32EmnILL5MnziuLFFHCg== 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=1788724114; 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=w4CyZFba0xU+OpDtBRoNmzxL54/eozAi42kAZ32Njn1SOBNQY+6BQEoo/xym+vy69t1uK9 IcwLNr/JZYDcqkV/QhLrhtIYEtJmRwmWkluVw/XbLDOOJUuRb3LdRBLpEEDquCSS6+uakh A1LS3k8SSBPET3Ezq18N/FsbRD03yFvEtnC+1oRNeNhZRBV7E3GET0fD6+cfy3BxBSBMvK LE1Sm5dqrlh9DmyIxYx+MZGPHMER2GrIHgJtWjO6ux7ipP7EPTD7RGAJuS67t/VoxW4xiZ JeooK7bk4HJFGq8bHs0cTI9b7Boiksqh0GivzhTcEWOdnLlywJrpoENYYwxtng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hdLNf0t3kzmLd for ; Sun, 06 Sep 2026 19:48:34 +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 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 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).