From nobody Thu Apr 2 18:46:23 2026 Received: from spark.kcore.it (spark.kcore.it [49.13.27.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 636D73D9044; Fri, 27 Mar 2026 09:08:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=49.13.27.68 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774602487; cv=none; b=YI3s+fBw7BQc2PluPWA8Hjhmwz7AB5JMd4+qaJiBGOfNEnJZcYTqzui1Ux0GEXX7I++/SbUArVst62rxFI4WwjkzsAsJsxu4p1nknl4Yni0Q2vTsEEKFZpqJ1Lb+k4O21fUwMvQlVUx1l6hqI5Alxr9x3JYG8DI0TBRRDn6ws5c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774602487; c=relaxed/simple; bh=IW8wT+nYV2b3gblOL+QMjAa4/8maVyR/QCWIP2hCZS4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MkjBnt4g66daA2R5wvzKEGa3xcPBz3BCI/43xkVE6Jz1Fzqps6JCF5RtLNJ3EnOB+gXeZ4mQNJraMYSXdrbxItpEiRjeHIjCZonu3f+Pn9K8Sx6HY2mjtLLDgUJT8Av4YMkKS2Ns9rUvolw9RrIBnp8PuWIQShb14SnEfYN6Kig= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kcore.it; spf=pass smtp.mailfrom=kcore.it; dkim=pass (1024-bit key) header.d=kcore.it header.i=@kcore.it header.b=FS76bz0i; arc=none smtp.client-ip=49.13.27.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kcore.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kcore.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=kcore.it header.i=@kcore.it header.b="FS76bz0i" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kcore.it; s=spark; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=SrNwU+vCM7AcLOv3Lgv7rg4YZN7d0YGaFgHQS2YG+cM=; b=FS76bz0i2FHmjP+4C5riFTJdHy ehYSjh0NTStdL/bH8BO+hHJwZBE1CtMcIuvO88n23B3SfwSE32TJuCfE4lIS2bTAwFAzVjdg30JiJ WOQ1gTdz/RCiqjXf4fNPU74O8S3F5aVvZ2e/WUMVGwsiX3SNtb2iNuQ+ESAvLodBevjE=; Received: from mnencia by spark.kcore.it with local (Exim 4.96) (envelope-from ) id 1w63AX-006DOh-30; Fri, 27 Mar 2026 10:07:53 +0100 From: Marco Nenciarini To: Daniel Scally , Sakari Ailus , Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Cc: Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Marco Nenciarini Subject: [PATCH v4 4/4] platform/x86: int3472: Add support for GPIO type 0x02 (strobe LED) Date: Fri, 27 Mar 2026 10:07:53 +0100 Message-Id: <20260327090753.1481453-5-mnencia@kcore.it> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260327090753.1481453-1-mnencia@kcore.it> References: <20260327090753.1481453-1-mnencia@kcore.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some ACPI INT3472 devices include a GPIO with DSM type 0x02, used for IR flood (strobe) illumination. This GPIO type was previously unhandled, resulting in the following warning during probe: int3472-discrete INT3472:00: GPIO type 0x02 unknown; the sensor may not work Add INT3472_GPIO_TYPE_STROBE (0x02) handling that registers the GPIO as an LED class device via skl_int3472_register_led(). Unlike the privacy LED, the strobe LED is not consumed by the sensor driver, so no LED lookup is registered. Signed-off-by: Marco Nenciarini --- Cc: Andy Shevchenko drivers/platform/x86/intel/int3472/discrete.c | 13 +++++++++++++ drivers/platform/x86/intel/int3472/led.c | 2 ++ include/linux/platform_data/x86/int3472.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/drivers/platform/x86/intel/int3472/discrete.c b/drivers/platfo= rm/x86/intel/int3472/discrete.c index 2c554a0..03f0b49 100644 --- a/drivers/platform/x86/intel/int3472/discrete.c +++ b/drivers/platform/x86/intel/int3472/discrete.c @@ -207,6 +207,10 @@ static void int3472_get_con_id_and_polarity(struct int= 3472_discrete_device *int3 *con_id =3D "powerdown"; *gpio_flags =3D GPIO_ACTIVE_LOW; break; + case INT3472_GPIO_TYPE_STROBE: + *con_id =3D "strobe"; + *gpio_flags =3D GPIO_ACTIVE_HIGH; + break; case INT3472_GPIO_TYPE_CLK_ENABLE: *con_id =3D "clk-enable"; *gpio_flags =3D GPIO_ACTIVE_HIGH; @@ -248,6 +252,7 @@ static void int3472_get_con_id_and_polarity(struct int3= 472_discrete_device *int3 * * 0x00 Reset * 0x01 Power down + * 0x02 Strobe (IR flood LED) * 0x0b Power enable * 0x0c Clock enable * 0x0d Privacy LED @@ -329,6 +334,7 @@ static int skl_int3472_handle_gpio_resources(struct acp= i_resource *ares, err_msg =3D "Failed to map GPIO pin to sensor\n"; =20 break; + case INT3472_GPIO_TYPE_STROBE: case INT3472_GPIO_TYPE_CLK_ENABLE: case INT3472_GPIO_TYPE_PRIVACY_LED: case INT3472_GPIO_TYPE_POWER_ENABLE: @@ -353,6 +359,13 @@ static int skl_int3472_handle_gpio_resources(struct ac= pi_resource *ares, if (ret) err_msg =3D "Failed to register privacy LED\n"; =20 + break; + case INT3472_GPIO_TYPE_STROBE: + ret =3D skl_int3472_register_led(int3472, gpio, + INT3472_LED_TYPE_STROBE); + if (ret) + err_msg =3D "Failed to register strobe LED\n"; + break; case INT3472_GPIO_TYPE_POWER_ENABLE: second_sensor =3D int3472->quirks.avdd_second_sensor; diff --git a/drivers/platform/x86/intel/int3472/led.c b/drivers/platform/x8= 6/intel/int3472/led.c index 33b30f3..e6faba4 100644 --- a/drivers/platform/x86/intel/int3472/led.c +++ b/drivers/platform/x86/intel/int3472/led.c @@ -8,10 +8,12 @@ =20 static const char * const int3472_led_names[] =3D { [INT3472_LED_TYPE_PRIVACY] =3D "privacy", + [INT3472_LED_TYPE_STROBE] =3D "strobe", }; =20 static const char * const int3472_led_con_ids[] =3D { [INT3472_LED_TYPE_PRIVACY] =3D "privacy", + [INT3472_LED_TYPE_STROBE] =3D NULL, }; =20 static int int3472_led_set(struct led_classdev *led_cdev, diff --git a/include/linux/platform_data/x86/int3472.h b/include/linux/plat= form_data/x86/int3472.h index b6b5b36..9893711 100644 --- a/include/linux/platform_data/x86/int3472.h +++ b/include/linux/platform_data/x86/int3472.h @@ -23,6 +23,7 @@ /* PMIC GPIO Types */ #define INT3472_GPIO_TYPE_RESET 0x00 #define INT3472_GPIO_TYPE_POWERDOWN 0x01 +#define INT3472_GPIO_TYPE_STROBE 0x02 #define INT3472_GPIO_TYPE_POWER_ENABLE 0x0b #define INT3472_GPIO_TYPE_CLK_ENABLE 0x0c #define INT3472_GPIO_TYPE_PRIVACY_LED 0x0d @@ -71,6 +72,7 @@ =20 enum int3472_led_type { INT3472_LED_TYPE_PRIVACY, + INT3472_LED_TYPE_STROBE, }; =20 struct acpi_device; --=20 2.47.3