From nobody Wed Feb 8 04:08:57 2023 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 4PBRMG0rMtz3pM1t; Wed, 8 Feb 2023 04:08:58 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PBRMG0Hglz4LdQ; Wed, 8 Feb 2023 04:08:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675829338; 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=v8KdrGuSHXITL3MTcQc4DO70zQGIf4UuIAZeX+v+rkA=; b=wYvVglwVpkdtDbZQm0G8QdM9M47Fv2tSXM895sQtYnPh8FUhl8lwBAXheT7u347KJvFKHG a9K6dzz49A8eqgzRYI5UeK6GVF6ExNJOXN46bf52AqWHbkLZ6tO7G06y1+a3Sitkm5eCZF HfKOP6jbDRs7fSBwdjdd9L8v0Vw2QgnmqlXKk+UDWUxmc7/LJsNsI8pn5xu1BYejugXHkS vYz+GhZ8CjM9G3P6v5eAJl+9aX5AdkcbC7qWIoQTIOxM6dERZ5GCJSvkFSeBVPk7MhsdF6 nhKSab+4wTDuPQsACNkllETNcUqzOWL2vuHmioo8kCWeZb+NAisp1TpMw2LZOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675829338; 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=v8KdrGuSHXITL3MTcQc4DO70zQGIf4UuIAZeX+v+rkA=; b=Jvw4vsLRTAjVVoYn1Dinl9nXb+rufsFhQCEsQPh2Tee6GnOCFVo6ygY20FNey3Q1EQ06te 8cL+zYL7xP0Q6qkCaMiv5hauA+Sm5iNdfTQ8vRFSlKLTliTb65fDStnXLsgTV3LVhIqo0X A1ZqLLbyciVALLHz01Lkwtx3tKkspZFFLzPyzRbo6/XNszCFaE+i6kf5AKcJ/15/3m3Iyc 41qUyfgCh7KbP+k+qV3qregwV2Qhzn+BlI3Xuw5ncdjuyyVz0SQLvJ3MNppQ/Yf6z5o08S azfGN2+Cl/B163m+pv4r6Am1deX5fxGDCHjidme2U0rKQ7SgLsaZ1S3uPEMMTA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675829338; a=rsa-sha256; cv=none; b=EUOk/forwJf5mX13x6pKFrNhC1yXyvGONtJ+KQYzfoI2/1lRQyM9BoVc9Lcvl8BxWVOiLU /TgxXtw3K+A+4KX5PY6vi78MxdQcNAyBrwTZ5/S4qgPHNngGjFLTYu0MiR5XmCAUiU+gEX 7L/g3mebSr1YFoPYwrm3bQdxSQuG9ypKcjCBo8IXQpQVn0lamjJjtZWpNT3A6N0Y7nF8mR HoQpuuJH9dAjiH5mtDbSbiLl1kOx8N7VcQbri9bJF8+Q7my0q3CJKjjrtMQp3WcEDpuqGv BxNd5n6/BO/b1oYYbUezINUZNh5ffLk5VoIDbwxHP9bOiR45wxqpRBumqFnMrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PBRMF6TH0zjbr; Wed, 8 Feb 2023 04:08:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 31848vdj011411; Wed, 8 Feb 2023 04:08:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 31848vOk011410; Wed, 8 Feb 2023 04:08:57 GMT (envelope-from git) Date: Wed, 8 Feb 2023 04:08:57 GMT Message-Id: <202302080408.31848vOk011410@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: 2e9d05fd6848 - main - asmc: Add support for 10 byte light sensor payloads; MacBookAir6,1 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: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2e9d05fd684803dbba7dd52eb64856c639e4fde2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=2e9d05fd684803dbba7dd52eb64856c639e4fde2 commit 2e9d05fd684803dbba7dd52eb64856c639e4fde2 Author: Adrian Chadd AuthorDate: 2023-02-08 04:06:16 +0000 Commit: Adrian Chadd CommitDate: 2023-02-08 04:06:16 +0000 asmc: Add support for 10 byte light sensor payloads; MacBookAir6,1 The later macbook models use a different packet payload for the light sensors: * There's only one, done in the camera * It's a 4 byte sensor value, not a 2 byte value * It's in a 10 byte payload. So, this adds support for that and flips it on for the MacbookAir6,2. It also adds support for MacBookAir6,1 as that now works fine here. Tested - MacBookAir6,1 and 6,2 Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D38365 --- sys/dev/asmc/asmc.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index 337f641e4513..442463b9f47a 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -106,6 +107,7 @@ static int asmc_mb_sysctl_sms_z(SYSCTL_HANDLER_ARGS); 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); struct asmc_model { const char *smc_model; /* smbios.system.product env var. */ @@ -151,6 +153,11 @@ static const struct asmc_model *asmc_match(device_t dev); asmc_mbp_sysctl_light_right, \ asmc_mbp_sysctl_light_control +#define ASMC_LIGHT_FUNCS_10BYTE \ + asmc_mbp_sysctl_light_left_10byte, \ + NULL, \ + asmc_mbp_sysctl_light_control + #define ASMC_LIGHT_FUNCS_DISABLED NULL, NULL, NULL static const struct asmc_model asmc_models[] = { @@ -427,11 +434,18 @@ static const struct asmc_model asmc_models[] = { ASMC_LIGHT_FUNCS, ASMC_MBA5_TEMPS, ASMC_MBA5_TEMPNAMES, ASMC_MBA5_TEMPDESCS }, + { + "MacBookAir6,1", "Apple SMC MacBook Air 11-inch (Early 2013)", + ASMC_SMS_FUNCS_DISABLED, + ASMC_FAN_FUNCS2, + ASMC_LIGHT_FUNCS_10BYTE, + ASMC_MBA6_TEMPS, ASMC_MBA6_TEMPNAMES, ASMC_MBA6_TEMPDESCS + }, { "MacBookAir6,2", "Apple SMC MacBook Air 13-inch (Early 2013)", ASMC_SMS_FUNCS_DISABLED, ASMC_FAN_FUNCS2, - ASMC_LIGHT_FUNCS, + ASMC_LIGHT_FUNCS_10BYTE, ASMC_MBA6_TEMPS, ASMC_MBA6_TEMPNAMES, ASMC_MBA6_TEMPDESCS }, { @@ -1540,3 +1554,33 @@ asmc_mbp_sysctl_light_control(SYSCTL_HANDLER_ARGS) } return (error); } + +static int +asmc_mbp_sysctl_light_left_10byte(SYSCTL_HANDLER_ARGS) +{ + device_t dev = (device_t) arg1; + uint8_t buf[10]; + int error; + uint32_t v; + + asmc_key_read(dev, ASMC_KEY_LIGHTLEFT, buf, sizeof buf); + + /* + * This seems to be a 32 bit big endian value from buf[6] -> buf[9]. + * + * Extract it out manually here, then shift/clamp it. + */ + v = be32dec(&buf[6]); + + /* + * Shift out, clamp at 255; that way it looks like the + * earlier SMC firmware version responses. + */ + v = v >> 8; + if (v > 255) + v = 255; + + error = sysctl_handle_int(oidp, &v, 0, req); + + return (error); +}