From nobody Wed Mar  2 23:36:42 2022
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 33C5419F8461;
	Wed,  2 Mar 2022 23:36:43 +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 4K89Vy4zBPz3wN5;
	Wed,  2 Mar 2022 23:36:42 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1646264202;
	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=D5aceormIgWkfeK6Amfm4lf6An5hd5U+vnFBOQp/S8A=;
	b=p8LxUcFabJxm3oWDg9Adcf6/RqniCObtpeJ16/KAdVQduTF1hB6J5I8nBF6I6iz1CHBjop
	54oGcrm26Vbp9Y0gC1EKkV2Hh/f3g+q7vJXxHQODkr679wuaJyMlUZl3NoVzgO/uvpTj01
	tGNazJrOiZAPOsitSfsdVhVe2Y5jMinXTMlCjsiSoyJm55jBgpZj/hdOPjkDDnhuiWICSB
	oBpl4WAMlZoeOdmOE+1L78RYzBMFscyxcJKPdWC+qI9ndsYUsB/zqlb7xrcqpcbDa94P4s
	za3YzYnImoiThc5xr7YkQU3Or+4rZQxG1iApeMyGymMIGVCWRa6spCy746fDVQ==
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 2D85D4FB7;
	Wed,  2 Mar 2022 23:36:42 +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 222NagsY001651;
	Wed, 2 Mar 2022 23:36:42 GMT
	(envelope-from git@gitrepo.freebsd.org)
Received: (from git@localhost)
	by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 222Nag1p001650;
	Wed, 2 Mar 2022 23:36:42 GMT
	(envelope-from git)
Date: Wed, 2 Mar 2022 23:36:42 GMT
Message-Id: <202203022336.222Nag1p001650@gitrepo.freebsd.org>
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org,
        dev-commits-src-main@FreeBSD.org
From: Vladimir Kondratyev <wulf@FreeBSD.org>
Subject: git: 34e051c45cfc - main - iichid(4): Add support for ASUS C300 chromebook.
List-Id: Commit messages for the main branch of the src repository <dev-commits-src-main.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main
List-Help: <mailto:dev-commits-src-main+help@freebsd.org>
List-Post: <mailto:dev-commits-src-main@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-main+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-main+unsubscribe@freebsd.org>
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: wulf
X-Git-Repository: src
X-Git-Refname: refs/heads/main
X-Git-Reftype: branch
X-Git-Commit: 34e051c45cfc25f74dbfaa42e0dee45d670fecd3
Auto-Submitted: auto-generated
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1646264202;
	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=D5aceormIgWkfeK6Amfm4lf6An5hd5U+vnFBOQp/S8A=;
	b=kd1b9K/lPltwexeIu8QyGjQ9BNua0y1ubCxTjH4LQPjnRHa3rO8uTDZxC6vEdeJjP5EPND
	AUCOnuvKu5IHeDXVbNMk8OpnF1h08/2N/T6w1MBLk/T2AsfXWLntOqtT326aamVXFeiW59
	JyVt7oS6hgPDbfkRah29wYIlqCD0orW7hL9ANwK2XMZMSxP9dW5unNdWQXCFdZuedDY200
	w8C+EvX+9ufpjsnCnGm8apQib5nNBnBV+oMXMOy2xWFizFwYsbvaBxnsVvoitps76EYBfs
	Y6XQvvR0J6IQcxsVgqz6JPl7D8JKbmREleAXhnimBmPvrVmZDp9KHgZ0iMvVnQ==
ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1646264202; a=rsa-sha256; cv=none;
	b=B6hROM7+PlTRgC4H6djeVnijoHFJMJB/RM5dZcQ0shovCK2Qfb6RsFmkZ/ucEpFJhdTYxl
	kcqjhkI+zI4wgRa6L3vsgi//paiSGNvyZqwKVpSEwFzTe/xl/fDt/szYuUBxkB29Ze/h5w
	L+2JEDsZy6sSWIrTiGca1snwgGqUibHW76by6aODMJo4VmYZ5dUUrHRMPMJDpv2R7ipa6V
	IpF4UE6+/OY0/0/86KdMvyO6n8MUH3WZoO5cMuFK9jYGPPPLuyb0729OJHdBvsPLnvU3Mj
	2wx7EDvkFaCBfezYxSiW6c1hwFuZH9albx6uMwxQFhS5awZfab0ynn/tl54+Ww==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
X-ThisMailContainsUnwantedMimeParts: N

The branch main has been updated by wulf:

URL: https://cgit.FreeBSD.org/src/commit/?id=34e051c45cfc25f74dbfaa42e0dee45d670fecd3

commit 34e051c45cfc25f74dbfaa42e0dee45d670fecd3
Author:     Vladimir Kondratyev <wulf@FreeBSD.org>
AuthorDate: 2022-03-02 23:35:23 +0000
Commit:     Vladimir Kondratyev <wulf@FreeBSD.org>
CommitDate: 2022-03-02 23:35:23 +0000

    iichid(4): Add support for ASUS C300 chromebook.
    
    Some chromebooks e.g. ASUS C300 have no valid _CID and _DSM ACPI
    objects required for device identification and HID descriptor address
    detection. Add quirk to allow required data to be hardcoded in to
    driver.
    
    MFC after:      2 month
---
 sys/dev/iicbus/iichid.c | 47 +++++++++++++++++++++++++++++++----------------
 1 file changed, 31 insertions(+), 16 deletions(-)

diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c
index 271a71ccc50e..32881c4462f0 100644
--- a/sys/dev/iicbus/iichid.c
+++ b/sys/dev/iicbus/iichid.c
@@ -130,10 +130,18 @@ struct i2c_hid_desc {
 	uint32_t reserved;
 } __packed;
 
-static char *iichid_ids[] = {
-	"PNP0C50",
-	"ACPI0C50",
-	NULL
+#define	IICHID_REG_NONE	-1
+#define	IICHID_REG_ACPI	(UINT16_MAX + 1)
+#define	IICHID_REG_ELAN	0x0001
+
+static const struct iichid_id {
+	char *id;
+	int reg;
+} iichid_ids[] = {
+	{ "ELAN0000",	IICHID_REG_ELAN },
+	{ "PNP0C50",	IICHID_REG_ACPI },
+	{ "ACPI0C50",	IICHID_REG_ACPI },
+	{ NULL,		0 },
 };
 
 enum iichid_powerstate_how {
@@ -197,18 +205,21 @@ static int	iichid_reset_callout(struct iichid_softc *);
 static void	iichid_teardown_callout(struct iichid_softc *);
 #endif
 
-static __inline bool
+static inline int
 acpi_is_iichid(ACPI_HANDLE handle)
 {
-	char	**ids;
+	const struct iichid_id *ids;
 	UINT32	sta;
+	int reg;
 
-	for (ids = iichid_ids; *ids != NULL; ids++) {
-		if (acpi_MatchHid(handle, *ids))
+	for (ids = iichid_ids; ids->id != NULL; ids++) {
+		if (acpi_MatchHid(handle, ids->id)) {
+			reg = ids->reg;
 			break;
+		}
 	}
-	if (*ids == NULL)
-		return (false);
+	if (ids->id == NULL)
+		return (IICHID_REG_NONE);
 
 	/*
 	 * If no _STA method or if it failed, then assume that
@@ -216,9 +227,9 @@ acpi_is_iichid(ACPI_HANDLE handle)
 	 */
 	if (ACPI_FAILURE(acpi_GetInteger(handle, "_STA", &sta)) ||
 	    ACPI_DEVICE_PRESENT(sta))
-		return (true);
+		return (reg);
 
-	return (false);
+	return (IICHID_REG_NONE);
 }
 
 static ACPI_STATUS
@@ -1007,7 +1018,7 @@ iichid_probe(device_t dev)
 	ACPI_HANDLE handle;
 	char buf[80];
 	uint16_t config_reg;
-	int error;
+	int error, reg;
 
 	sc = device_get_softc(dev);
 	sc->dev = dev;
@@ -1028,11 +1039,15 @@ iichid_probe(device_t dev)
 	if (handle == NULL)
 		return (ENXIO);
 
-	if (!acpi_is_iichid(handle))
+	reg = acpi_is_iichid(handle);
+	if (reg == IICHID_REG_NONE)
 		return (ENXIO);
 
-	if (ACPI_FAILURE(iichid_get_config_reg(handle, &config_reg)))
-		return (ENXIO);
+	if (reg == IICHID_REG_ACPI) {
+		if (ACPI_FAILURE(iichid_get_config_reg(handle, &config_reg)))
+			return (ENXIO);
+	} else
+		config_reg = (uint16_t)reg;
 
 	DPRINTF(sc, "  IICbus addr       : 0x%02X\n", sc->addr >> 1);
 	DPRINTF(sc, "  HID descriptor reg: 0x%02X\n", config_reg);