From nobody Tue Sep 9 21:31:31 2025 Received: from mail-244106.protonmail.ch (mail-244106.protonmail.ch [109.224.244.106]) (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 F33E12F99BE; Fri, 5 Sep 2025 08:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059216; cv=none; b=gYhbXJfv3ytqkkbCiXQk0L7jYTG9+X2pG1Mw2fNYC2H4Bmx4Xgnz0QmCr7D29wex1gdQ3LpArSbLS5lye36Wegx8tgrZ52NhG8SGFowdElkk49uEZ6sOnhgCpxnsl8GedU8reQEjBXtbZAbLukK9fKxDH9D8wtzXEF29Ij6/Cbw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059216; c=relaxed/simple; bh=nP9rg1wKAkVRusTZ2c0jnkA80hYnpRvR6G4GNRKcI0g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G0a0RevNmfPewOZvSEoaGMLlT1e7qrwSoOndIXozy7E3b+w9nhOjvgZdOktnwWfnId+gbEi2u91HmZseb5qVwjUpJbWiGCyhG6xIvi4URlPquFuZ/y0KW38XyoNdE8lsti4pakwYEqozT2duvS4wceWsq8D74lo52bDaiUF6JIM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com; spf=pass smtp.mailfrom=vinarskis.com; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b=mNreFVT3; arc=none smtp.client-ip=109.224.244.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b="mNreFVT3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757059204; x=1757318404; bh=uoIYEwoUOKQ8hDvtn9QS/tZ30qGWL076tFQXBcdtxzc=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=mNreFVT3EScWZcD9cyfAIMtnR7+shAr0lJ8IwB95orMmu8m9E6YhFFuTf2HazPK99 qtwk/eBlE6SbfTuRtscgCemE35czLfSJDQcynNjZlRX0TeJeKI928xWJUQczIh6oW6 rTRAL+2/A3RlOOnUpHBUKzTKOg/+iZ8EFZYen0x6ihgdIkYNBAF95R1j+cuHPjanrc zxED2UK3yfgislgy4DveqTi5uxA/fd/F+noBmeXnzGfOx+YV0RGDbgWBwytotr2/To O3Uz399ui3an/ZwKrkZzjFby6FvzZ0vypeYrmLwTJv4SWM8J0xbNKJLiHoYqjRjzJb waS7+tusvqdow== X-Pm-Submission-Id: 4cJ8025rK4z2ScWS From: Aleksandrs Vinarskis Date: Fri, 05 Sep 2025 09:59:29 +0200 Subject: [PATCH v2 1/4] dt-bindings: leds: add generic LED consumer documentation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250905-leds-v2-1-ed8f66f56da8@vinarskis.com> References: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> In-Reply-To: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> To: Hans de Goede , Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bryan O'Donoghue , Daniel Thompson , Jingoo Han , Mauro Carvalho Chehab , Jean-Jacques Hiblot , Jacopo Mondi , Sakari Ailus , Bjorn Andersson , Konrad Dybcio Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Thompson , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, Aleksandrs Vinarskis X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3281; i=alex@vinarskis.com; h=from:subject:message-id; bh=nP9rg1wKAkVRusTZ2c0jnkA80hYnpRvR6G4GNRKcI0g=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBm7ZtStcyipULxqtCrez/OU8Vdx2zfGf+xe2qwsv+YTk VXGsZC5o5SFQYyLQVZMkaX7z9e0rkVz1zJc1/gGM4eVCWQIAxenAExEsIrhr+C75PnBonH3lHbZ cdz86a8XKv5Mf+IsPk/LW0c2+frkGzAyLIza4s339JpWyIMnnXuW7jWSCtz1RFT6xRQfw3lskiV +DAA= X-Developer-Key: i=alex@vinarskis.com; a=openpgp; fpr=8E21FAE2D2967BB123303E8C684FD4BA28133815 Introduce common generic led consumer binding, where consumer defines led(s) by phandle, as opposed to trigger-source binding where the trigger source is defined in led itself. Add already used in some schemas 'leds' parameter which expects phandle-array. Additionally, introduce 'led-names' which could be used by consumers to map LED devices to their respective functions. Signed-off-by: Aleksandrs Vinarskis --- .../devicetree/bindings/leds/leds-consumer.yaml | 85 ++++++++++++++++++= ++++ 1 file changed, 85 insertions(+) diff --git a/Documentation/devicetree/bindings/leds/leds-consumer.yaml b/Do= cumentation/devicetree/bindings/leds/leds-consumer.yaml new file mode 100644 index 0000000000000000000000000000000000000000..077dbe3ad9ff3fa15236b8dd1f4= 48c00271e4810 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/leds-consumer.yaml @@ -0,0 +1,85 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/leds-consumer.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Common leds consumer + +maintainers: + - Aleksandrs Vinarskis + +description: + Some LED defined in DT are required by other DT consumers, for example + v4l2 subnode may require privacy or flash LED. Unlike trigger-source + approach which is typically used as 'soft' binding, referencing LED + devices by phandle makes things simpler when 'hard' binding is desired. + + Document LED properties that its consumers may define. + +properties: + leds: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: + A list of LED device(s) required by a particular consumer. + items: + maxItems: 1 + + led-names: + description: + A list of device name(s). Used to map LED devices to their respective + functions, when consumer requires more than one LED. + +additionalProperties: true + +examples: + - | + #include + #include + + leds { + compatible =3D "gpio-leds"; + + privacy_led: privacy-led { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_INDICATOR; + gpios =3D <&tlmm 110 GPIO_ACTIVE_HIGH>; + }; + }; + + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + camera@36 { + compatible =3D "ovti,ov02c10"; + reg =3D <0x36>; + + reset-gpios =3D <&tlmm 237 GPIO_ACTIVE_LOW>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&cam_rgb_default>; + + led-names =3D "privacy-led"; + leds =3D <&privacy_led>; + + clocks =3D <&ov02e10_clk>; + + assigned-clocks =3D <&ov02e10_clk>; + assigned-clock-rates =3D <19200000>; + + avdd-supply =3D <&vreg_l7b_2p8>; + dvdd-supply =3D <&vreg_l7b_2p8>; + dovdd-supply =3D <&vreg_cam_1p8>; + + port { + ov02e10_ep: endpoint { + data-lanes =3D <1 2>; + link-frequencies =3D /bits/ 64 <400000000>; + remote-endpoint =3D <&csiphy4_ep>; + }; + }; + }; + }; + +... --=20 2.48.1 From nobody Tue Sep 9 21:31:31 2025 Received: from mail-43170.protonmail.ch (mail-43170.protonmail.ch [185.70.43.170]) (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 823622FC026; Fri, 5 Sep 2025 08:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059217; cv=none; b=pOVXMyLE0jSnIimMXl5bUH1br7WB+ZS6JWOqXBNUYbOfQEjz1ViPpwqK4JyEELCE2JIV7kjckIGe/LWkOZIXDbo3XHojLZCsFegD5WBKJlUf26j5Iu0vTSZGi2nWfKgNBLMocTN5aKKadaMMaG6kpjosWGH2/s6sBeJ+iMsF1xY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059217; c=relaxed/simple; bh=kLPrQ659PXpBtUHxSKyrlCPL8odBGqiSsZ+49Xj2WT4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HrxcjsV1YpOR67dgcntRZ3JGDZl9fchqWvuaQmiFrqhDeVA+mrWKxGzzVWRDLfjx44SnPdboLaRxJ3G2OM6VJsyJXWeo3s1Ve6E75BfRxmxaFJ4eSSg321D88diGTgiQDMBoQQnpcNRVa9uN6PiacH3CrAE84foerD0IpsaNyTQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com; spf=pass smtp.mailfrom=vinarskis.com; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b=VBfMhe2F; arc=none smtp.client-ip=185.70.43.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b="VBfMhe2F" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757059208; x=1757318408; bh=BJo0FJum8sQrRT4jsiM538uClhfHDmbKIzs7j5jXPQc=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=VBfMhe2FjrHeHJG53FiZ5vPPZ+AZ6DgtfeNSLJIKJTNA6nqgJT2MFiZu5zHAHPiAo WkAfizok97IA3GPc1sML1fz8rrOf/2nMLq/j8X8eqFZVdmpPlMDhkE/dbDZZglA444 I+Ryi2EaRW9j8sS+m1YM5KVR+lQz0SRv0OvgoKS7S73N6aFhpa1jepFYU7xMlZGKmr krKC9TvxD62F94MJcA7hatjSzNflML6MruPoKGe8x86TXQXykyDxkvLgjFLoCLDyyK UeRd5CQdSEWhBUOTo95fvc8Sr8B0o9+fiNQu1eMLQz+eFFsvSnF2Zo7LWvw36H06iT Yg/akqmCu+++g== X-Pm-Submission-Id: 4cJ8050D40z2ScWX From: Aleksandrs Vinarskis Date: Fri, 05 Sep 2025 09:59:30 +0200 Subject: [PATCH v2 2/4] dt-bindings: leds: commonize leds property Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250905-leds-v2-2-ed8f66f56da8@vinarskis.com> References: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> In-Reply-To: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> To: Hans de Goede , Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bryan O'Donoghue , Daniel Thompson , Jingoo Han , Mauro Carvalho Chehab , Jean-Jacques Hiblot , Jacopo Mondi , Sakari Ailus , Bjorn Andersson , Konrad Dybcio Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Thompson , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, Aleksandrs Vinarskis X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3023; i=alex@vinarskis.com; h=from:subject:message-id; bh=kLPrQ659PXpBtUHxSKyrlCPL8odBGqiSsZ+49Xj2WT4=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBm7ZtTX877LP3guYc/u7lkf1hckTE5rDF0VHdJ2N+D00 wvHT03Y1lHKwiDGxSArpsjS/edrWteiuWsZrmt8g5nDygQyhIGLUwAmIpHF8M9YNdZYddEO+VP1 7naREvM7zu6x3ujhfNNNvk/44uaKi3KMDN3Ghnd/MjwpYPmxaXmcypyq1+3977pn2C1edHRdsHX KVD4A X-Developer-Key: i=alex@vinarskis.com; a=openpgp; fpr=8E21FAE2D2967BB123303E8C684FD4BA28133815 A number of existing schemas use 'leds' property to provide phandle-array of LED(s) to the consumer. Additionally, with the upcoming privacy-led support in device-tree, v4l2 subnode could be a LED consumer, meaning that all camera sensors should support 'leds' and 'led-names' property via common 'video-interface-devices.yaml'. To avoid dublication, commonize 'leds' property from existing schemas to newly introduced 'led-consumer.yaml'. Signed-off-by: Aleksandrs Vinarskis --- .../devicetree/bindings/leds/backlight/led-backlight.yaml | 7 +--= ---- Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml | 6 +--= --- .../devicetree/bindings/media/video-interface-devices.yaml | 3 +++ 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Documentation/devicetree/bindings/leds/backlight/led-backlight= .yaml b/Documentation/devicetree/bindings/leds/backlight/led-backlight.yaml index f5554da6bc6c73e94c4a2c32b150b28351b25f16..5e19b4376715eeb05cb789255db= 209ed27f8822f 100644 --- a/Documentation/devicetree/bindings/leds/backlight/led-backlight.yaml +++ b/Documentation/devicetree/bindings/leds/backlight/led-backlight.yaml @@ -18,17 +18,12 @@ description: =20 allOf: - $ref: common.yaml# + - $ref: /schemas/leds/leds-consumer.yaml# =20 properties: compatible: const: led-backlight =20 - leds: - description: A list of LED nodes - $ref: /schemas/types.yaml#/definitions/phandle-array - items: - maxItems: 1 - required: - compatible - leds diff --git a/Documentation/devicetree/bindings/leds/leds-group-multicolor.y= aml b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml index 8ed059a5a724f68389a1d0c4396c85b9ccb2d9af..b4f326e8822a3bf452b22f5b9fa= 7189696f760a4 100644 --- a/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml +++ b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml @@ -17,16 +17,12 @@ properties: compatible: const: leds-group-multicolor =20 - leds: - description: - An aray of monochromatic leds - $ref: /schemas/types.yaml#/definitions/phandle-array - required: - leds =20 allOf: - $ref: leds-class-multicolor.yaml# + - $ref: /schemas/leds/leds-consumer.yaml# =20 unevaluatedProperties: false =20 diff --git a/Documentation/devicetree/bindings/media/video-interface-device= s.yaml b/Documentation/devicetree/bindings/media/video-interface-devices.ya= ml index cf7712ad297c01c946fa4dfdaf9a21646e125099..1e25cea0ff71da2cfd1c7c46427= 13199f3542c0a 100644 --- a/Documentation/devicetree/bindings/media/video-interface-devices.yaml +++ b/Documentation/devicetree/bindings/media/video-interface-devices.yaml @@ -10,6 +10,9 @@ maintainers: - Jacopo Mondi - Sakari Ailus =20 +allOf: + - $ref: /schemas/leds/leds-consumer.yaml# + properties: flash-leds: $ref: /schemas/types.yaml#/definitions/phandle-array --=20 2.48.1 From nobody Tue Sep 9 21:31:31 2025 Received: from mail-244107.protonmail.ch (mail-244107.protonmail.ch [109.224.244.107]) (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 E695E2F998E; Fri, 5 Sep 2025 08:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.107 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059214; cv=none; b=I/I37NPXRNJCNxtMp19Mu9zsczMMADh/teSSZs1qyVHCUyzvAQ0bNXQM93wDGrTz6lZxOT0Xw6x0RYdN2vKKm7FrRkxSHe40oHD5bI4o612tK7XzqCCu857h+UE0WbIEVS9ZFSarz+Wzx8mOfo3WYMCS330rhe1ilVQTOMXdFkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059214; c=relaxed/simple; bh=yMCxA1YBoWSwXEzfIBx2mS17OtHXmCeiYqirRRvAdG4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l/y9nv57E3d4HzQjL4xHM0TA6BBgm3n1m0go6YBopMt6l8E+RBB038QrABmHUePXZPfnWfRkRIFtjL4XfxuMHcTQ5YwpzNx/QEuDsY7WZYF2hwPHrTiwfhklPvMmsU+Bvv5TW+hPxbJnJG56A0oaeASwtAZCMdrPGDFBIWLOKkA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com; spf=pass smtp.mailfrom=vinarskis.com; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b=JOQD/D9E; arc=none smtp.client-ip=109.224.244.107 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b="JOQD/D9E" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757059210; x=1757318410; bh=TKLUfGH8uv3WLk2SOPxFiRNjJURmOMHDoaZeUzdLiOs=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=JOQD/D9Et30KnY8JwuEIwpaQHwFLtBFnWWCN6ak9KOYk2pjw4OyrVEsZXHm0WhXxo IxCB8k28ZVSTNkDiFFlmMt+wIkk6i306RgMQnuvXYYVMxi1vXovM3T8uPxkmR0/CTN 6uaDjJPr5kvs7DR+k+Wl9qJj3yN3/PRk3e7phsrjk198586Ye9Sj4h1FOGcYCCS7Up mJSCCIHtCVHG4sw3XaeYO9paRD0DIATQaIct4eruYaz6BQXoMzctwj+zxAoYfxZb5H w/p+QVzhb5IcWV+AiLzFyRYS+C2l69McwbCbP96wya76u1SN0AInvi55ThTyXWYdXP ls/jvkJCI6L6Q== X-Pm-Submission-Id: 4cJ8080fKzz2ScWY From: Aleksandrs Vinarskis Date: Fri, 05 Sep 2025 09:59:31 +0200 Subject: [PATCH v2 3/4] leds: led-class: Add devicetree support to led_get() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250905-leds-v2-3-ed8f66f56da8@vinarskis.com> References: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> In-Reply-To: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> To: Hans de Goede , Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bryan O'Donoghue , Daniel Thompson , Jingoo Han , Mauro Carvalho Chehab , Jean-Jacques Hiblot , Jacopo Mondi , Sakari Ailus , Bjorn Andersson , Konrad Dybcio Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Thompson , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, Aleksandrs Vinarskis , Andy Shevchenko , Linus Walleij X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2846; i=alex@vinarskis.com; h=from:subject:message-id; bh=q4BZRBIPBJ3imnNcJBChAehI+qOXxd1Xc7eYB34jKo0=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBm7ZtS/ku/L05jXe15Y9c+f/171HP/OSgiKxjL0x6tr6 1WtXf6+o5SFQYyLQVZMkaX7z9e0rkVz1zJc1/gGM4eVCWQIAxenAExk5XSGf5pWrnd+TLlbUfbR Xu1MdIj46oXztyadC5wyrf37SefTigsZGa4Jq80+MeVfUP4j349Cq2qnWfve+OAqtmpjZ8B240c XKlkA X-Developer-Key: i=alex@vinarskis.com; a=openpgp; fpr=8E21FAE2D2967BB123303E8C684FD4BA28133815 From: Hans de Goede Add 'name' argument to of_led_get() such that it can lookup LEDs in devicetree by either name or index. And use this modified function to add devicetree support to the generic (non devicetree specific) [devm_]led_get() function. This uses the standard devicetree pattern of adding a -names string array to map names to the indexes for an array of resources. Reviewed-by: Andy Shevchenko Reviewed-by: Lee Jones Reviewed-by: Linus Walleij Signed-off-by: Hans de Goede Signed-off-by: Aleksandrs Vinarskis --- drivers/leds/led-class.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 15633fbf3c166aa4f521774d245f6399a642bced..982eb4c1aac998e85b104d7cba2= 6e786ca62056f 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c @@ -252,15 +252,23 @@ static const struct class leds_class =3D { * of_led_get() - request a LED device via the LED framework * @np: device node to get the LED device from * @index: the index of the LED + * @name: the name of the LED used to map it to its function, if present * * Returns the LED device parsed from the phandle specified in the "leds" * property of a device tree node or a negative error-code on failure. */ -static struct led_classdev *of_led_get(struct device_node *np, int index) +static struct led_classdev *of_led_get(struct device_node *np, int index, + const char *name) { struct device *led_dev; struct device_node *led_node; =20 + /* + * For named LEDs, first look up the name in the "led-names" property. + * If it cannot be found, then of_parse_phandle() will propagate the erro= r. + */ + if (name) + index =3D of_property_match_string(np, "led-names", name); led_node =3D of_parse_phandle(np, "leds", index); if (!led_node) return ERR_PTR(-ENOENT); @@ -324,7 +332,7 @@ struct led_classdev *__must_check devm_of_led_get(struc= t device *dev, if (!dev) return ERR_PTR(-EINVAL); =20 - led =3D of_led_get(dev->of_node, index); + led =3D of_led_get(dev->of_node, index, NULL); if (IS_ERR(led)) return led; =20 @@ -342,9 +350,16 @@ EXPORT_SYMBOL_GPL(devm_of_led_get); struct led_classdev *led_get(struct device *dev, char *con_id) { struct led_lookup_data *lookup; + struct led_classdev *led_cdev; const char *provider =3D NULL; struct device *led_dev; =20 + if (dev->of_node) { + led_cdev =3D of_led_get(dev->of_node, -1, con_id); + if (!IS_ERR(led_cdev) || PTR_ERR(led_cdev) !=3D -ENOENT) + return led_cdev; + } + mutex_lock(&leds_lookup_lock); list_for_each_entry(lookup, &leds_lookup_list, list) { if (!strcmp(lookup->dev_id, dev_name(dev)) && --=20 2.48.1 From nobody Tue Sep 9 21:31:31 2025 Received: from mail-106111.protonmail.ch (mail-106111.protonmail.ch [79.135.106.111]) (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 467FD2FAC12; Fri, 5 Sep 2025 08:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.111 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059216; cv=none; b=Ld7XfSIX/7J6WHhW6YCprIPlcnsrlyZIBxdqa8HrC6YYGQThaMPaqIlixo7m8tGLiweaYaAFzqixVfu2C/PaBV25z5dJ+lO+fokQij1Jq0dw/IwnQFpO0ZyVVOh6+CvgczKx3L7UqebkBNMZK5gIHRR3qHJ80SiJhlWUkuhY/70= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757059216; c=relaxed/simple; bh=edWT6KdBWyksJJHrbWQQWgcHw91Jmbb/HxPT7wxRo/w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nH71u/lz1Z8z5xDzOryJxpNc4rQ6rH0ci2G/Ob9Rk3eUOO66yz73FJiDQIt3NUrM054AArUFLtd1Dz7dXe5YrdGtS53X7w6UVIQmu4SsE30//cEVG7WxKQfGhFNF/0S+4Sl2JfWNGSyGyI0gnG/Ls/XsxQWOO+Tac1+dQHKI4WY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com; spf=pass smtp.mailfrom=vinarskis.com; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b=byR/Ou5J; arc=none smtp.client-ip=79.135.106.111 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vinarskis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vinarskis.com header.i=@vinarskis.com header.b="byR/Ou5J" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757059213; x=1757318413; bh=91qDt4aSXmfJHmp9z9JEKedQZehuTGRF2Qw0y+ToL4c=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=byR/Ou5JsdLbXUMHPk15tlUl0O7VgudGiQrUKw+EObIXH5Kg24RKVpnurvOBc6qsp Wlz0VIc2Xq8xkSuurQiMBWj7en4ol4ksaUvRzzI0eBWNLRmczZ5tIqfz4TgsGkVbw8 6oCW7lvNQBEOe0hE0PlZ1+gRvjYdPUnHuuc9O5kNFeHoLJTcg1ybR2Jm43jLILUWYm UwaAAK/Ie6/6nmbZf8z3tmur8MLWKPe4htq1ntv54uP+HkOW1FBrnFUcrkFDFz0fpt oIFzuUmci8/YFdEO7Nu8BGAVtsRtIu/DrxoHoxPJoc2sWQZetLGkK1Vj3lVtonHkei BQGdVBg0R8fMw== X-Pm-Submission-Id: 4cJ80B4J0gz2ScWP From: Aleksandrs Vinarskis Date: Fri, 05 Sep 2025 09:59:32 +0200 Subject: [PATCH v2 4/4] arm64: dts: qcom: sc8280xp-x13s: enable camera privacy indicator Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250905-leds-v2-4-ed8f66f56da8@vinarskis.com> References: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> In-Reply-To: <20250905-leds-v2-0-ed8f66f56da8@vinarskis.com> To: Hans de Goede , Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bryan O'Donoghue , Daniel Thompson , Jingoo Han , Mauro Carvalho Chehab , Jean-Jacques Hiblot , Jacopo Mondi , Sakari Ailus , Bjorn Andersson , Konrad Dybcio Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Thompson , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, Aleksandrs Vinarskis X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1667; i=alex@vinarskis.com; h=from:subject:message-id; bh=edWT6KdBWyksJJHrbWQQWgcHw91Jmbb/HxPT7wxRo/w=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBm7ZtQn+QrvYmBferxhro26SRLDQ/c7UwVnzq4QytJWM OleJRreUcrCIMbFICumyNL952ta16K5axmua3yDmcPKBDKEgYtTACYS957hn+UtoyaP4xP8Ikv5 vZlWvHkX0snO9OXInZqTnK8jD8p4PWFk2BPx1l09o+pyA2/fxKd/6kMUi9tzTM7zuU2y+ZU1a+k VZgA= X-Developer-Key: i=alex@vinarskis.com; a=openpgp; fpr=8E21FAE2D2967BB123303E8C684FD4BA28133815 Leverage newly introduced 'leds' and 'led-names' properties to pass indicator's phandle and function to v4l2 subnode. The latter supports privacy led since couple of years ago under 'privacy-led' designation. Unlike initially proposed trigger-source based approach, this solution cannot be easily bypassed from userspace, thus reducing privacy concerns. Signed-off-by: Aleksandrs Vinarskis --- arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/a= rch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts index 637430719e6d7d3c0eeb4abf2b80eea1f8289530..03801b174713cb9962c10072a73= e9516abc45930 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts @@ -83,15 +83,11 @@ leds { pinctrl-names =3D "default"; pinctrl-0 =3D <&cam_indicator_en>; =20 - led-camera-indicator { - label =3D "white:camera-indicator"; + privacy_led: privacy-led { function =3D LED_FUNCTION_INDICATOR; color =3D ; gpios =3D <&tlmm 28 GPIO_ACTIVE_HIGH>; - linux,default-trigger =3D "none"; default-state =3D "off"; - /* Reuse as a panic indicator until we get a "camera on" trigger */ - panic-indicator; }; }; =20 @@ -685,6 +681,9 @@ camera@10 { pinctrl-names =3D "default"; pinctrl-0 =3D <&cam_rgb_default>; =20 + led-names =3D "privacy-led"; + leds =3D <&privacy_led>; + clocks =3D <&camcc CAMCC_MCLK3_CLK>; =20 orientation =3D <0>; /* Front facing */ --=20 2.48.1