From nobody Tue Sep 9 21:32:27 2025 Received: from mail-106113.protonmail.ch (mail-106113.protonmail.ch [79.135.106.113]) (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 E662F219301; Sun, 7 Sep 2025 23:18:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.113 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287108; cv=none; b=Y4qOFEK8yk6AuLSJUEB8viUgOjwayj+Sk2R8piOpXBXBPhX4nMwm+KUab2VVLC9iLZ0vAVv8HakYUH4WQDoNes8zeOAUKVkGUeNG7CgAdExxeK6UtmvMp7hSJTIraCQagB5hTegBhNbXqfIPXVMOo32CrT5YBTxnKBRY3RSAX/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287108; c=relaxed/simple; bh=lA2QBNyFzlfroElsH/5o9X8nJsuBowAAhH88dd9l8Ps=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ijFQs1eHtppMb0p/Cu2HwXXzcMjBemlWvHp8auKcbcL4rWjFJSNecMs2G1iVLgw08ZLrCsoCVMjfFTG35O8JxRmSn5eSFq57hDUjPbf+k9kRf1YkaOUNiZeZf6khhxtRh9nwq4TXe8IoBcnogKkrdRaVNLaYvh+r6UoHCWkGxaE= 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=GIB2EsRh; arc=none smtp.client-ip=79.135.106.113 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="GIB2EsRh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757287098; x=1757546298; bh=G5wfHuR5Ni6mkr7vlY10NwZv17+YPvp6/bhVfUx8fmY=; 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=GIB2EsRhlV8vmBMmFPTgDyzXJbBmWgiPqKkJXpGu6c2W2aqs54JFTXmbFTT4W5b/3 tkSCZEKRzYq/EP0dLimaJfO8HD0/KSm4Z1cSO7ljimL9mj/gMG3zWPBHJKpnWMcNsM x9lsW5HZfejdjJrwR4V10n2U5H1fKr8e7JIRSFimCJseh139SivutqbYhmEhBOWstk nNZn6t+TDa2eg3NNQ0DCnHcz2ejeg/5nDQ9iypsunewbJZNtuPvcngpq7VL3hlguhe Pzj/SY5Rgx5p6nl1CrK03+Ci/2A3Pb6Kz9h+2Phi5VGeYV7PIY3O/3PojxLoenG3Rd zApXiK3v5AlMA== X-Pm-Submission-Id: 4cKmGc3phGz1DF4K From: Aleksandrs Vinarskis Date: Mon, 08 Sep 2025 01:18:03 +0200 Subject: [PATCH v3 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: <20250908-leds-v3-1-5944dc400668@vinarskis.com> References: <20250908-leds-v3-0-5944dc400668@vinarskis.com> In-Reply-To: <20250908-leds-v3-0-5944dc400668@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 X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3355; i=alex@vinarskis.com; h=from:subject:message-id; bh=lA2QBNyFzlfroElsH/5o9X8nJsuBowAAhH88dd9l8Ps=; b=kA0DAAoW7a5xog9QAxAByyZiAGi+ErWiECneuhqcwXxifTl533t9DXrlE55CDJVNQEWQfuBsg 4h1BAAWCgAdFiEEi/z1Zoqina0A1yj27a5xog9QAxAFAmi+ErUACgkQ7a5xog9QAxBMvAD9EL04 Gi4Gqq+jcFyXgmAD3rA80birf0Z3KNzNtbN5gZ0BAN4D1Whrd466mj1N+Gxvs94p42Vh0hPg7ps escQgk+IP 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 | 89 ++++++++++++++++++= ++++ 1 file changed, 89 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..d50a3850f6336e9e3a52eb1374e= 36ea50de27f47 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/leds-consumer.yaml @@ -0,0 +1,89 @@ +# 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. + +select: true + +properties: + leds: + oneOf: + - type: object + - $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>; + + leds =3D <&privacy_led>; + led-names =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:32:27 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 38969230BF8; Sun, 7 Sep 2025 23:18:27 +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=1757287109; cv=none; b=qxuMS4Iz31rmwLf13Mgg7u2F/VUgUNuXp9e6UemMWfc5i61TZ7GkvxoufrntR4Dw2pg5aw+w8/XoUUrsRk7XVTrkmdK4cGhiMZnI3PoFd+zNcdXm/ROTmSPWxtIoHVw/ngf5orbKum9xVbE59+bM6R7+A+lH5QJ0Q2L5a38n9EA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287109; c=relaxed/simple; bh=s+EPK0JKM0Hb9Ko/RlfZn+9aGDfCgguChkOaX7vEQXs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JiMCh0NVMAGw7jxL6/bxQLqLAxRYfS6Di67YEuDDafZ0NRMuQFP5YiJbjx6zDwmkTSo7H3ekZDydk+QbXGa5WFXm6tN2beKNCIiLo0jK5CieE4ULgNBaASTAojX7I1D89Zl6kaPxgeEU+/UQpJdgZJbvcIpT3CATJFeR2rPouZ0= 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=aC4h2Z1D; 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="aC4h2Z1D" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757287099; x=1757546299; bh=m8uu3f2om0ehU8+WF4ls+SioKYV8FyIDb8bJA/kvdf4=; 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=aC4h2Z1Dhyz3ecbn62NbT4efSAyZgPUA7nGKYjCM/MHCubPuc8ZgvNdgD7AmdrXvN nox1qVmCLGYnpfQ7hg3quQUTFquRuIR863T22O/cpgJIuZ4ugtuYRbUiTSvWwP7dzu Ur0eJpDGLG8LMA10p7DvnP7bRobpAoWSLw0P8DQCaeJJ9zdoRlqFyQ+iFvfYiGgmxq RjO+Gr73zS9ru87z7l/mcBswEWXzI/Ra+yhU/TWXdXa700Z9vOxTTXEfpb/lnYs+Lo 1c52bmkP4aZUAS6BJLPEF22z3UHAmgMfYt0G4YYHwcOykQNQsdMTuuM6pvXE6Nzy1P 0P4oIT/fx6HkA== X-Pm-Submission-Id: 4cKmGf2ggLz1DF4H From: Aleksandrs Vinarskis Date: Mon, 08 Sep 2025 01:18:04 +0200 Subject: [PATCH v3 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: <20250908-leds-v3-2-5944dc400668@vinarskis.com> References: <20250908-leds-v3-0-5944dc400668@vinarskis.com> In-Reply-To: <20250908-leds-v3-0-5944dc400668@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 X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2868; i=alex@vinarskis.com; h=from:subject:message-id; bh=s+EPK0JKM0Hb9Ko/RlfZn+9aGDfCgguChkOaX7vEQXs=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBn7hLY23RD0f8ebnTXhvB5rrsre3TLWnEmfmV6vOlsSd CdOqGlqRykLgxgXg6yYIkv3n69pXYvmrmW4rvENZg4rE8gQBi5OAZhI5kuG//Ee2lOfXead0X7l YtTP+O8M85vZmC9tehRzTtuBy0ty5yNGhr3LHplv/bhr41e5OcZBc040sTWf+WtgYOq85O7k5Ok TH7ECAA== 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 | 6 +---= -- Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml | 5 +---- .../devicetree/bindings/media/video-interface-devices.yaml | 8 ++++= ++++ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Documentation/devicetree/bindings/leds/backlight/led-backlight= .yaml b/Documentation/devicetree/bindings/leds/backlight/led-backlight.yaml index f5554da6bc6c73e94c4a2c32b150b28351b25f16..8fc5af8f27f9eb95b88eeeee32a= d4774f5f21106 100644 --- a/Documentation/devicetree/bindings/leds/backlight/led-backlight.yaml +++ b/Documentation/devicetree/bindings/leds/backlight/led-backlight.yaml @@ -23,11 +23,7 @@ properties: compatible: const: led-backlight =20 - leds: - description: A list of LED nodes - $ref: /schemas/types.yaml#/definitions/phandle-array - items: - maxItems: 1 + leds: true =20 required: - compatible diff --git a/Documentation/devicetree/bindings/leds/leds-group-multicolor.y= aml b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml index 8ed059a5a724f68389a1d0c4396c85b9ccb2d9af..5c9cfa39396b0ba89830e520ade= 108bfd1a3f12e 100644 --- a/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml +++ b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml @@ -17,10 +17,7 @@ properties: compatible: const: leds-group-multicolor =20 - leds: - description: - An aray of monochromatic leds - $ref: /schemas/types.yaml#/definitions/phandle-array + leds: true =20 required: - leds diff --git a/Documentation/devicetree/bindings/media/video-interface-device= s.yaml b/Documentation/devicetree/bindings/media/video-interface-devices.ya= ml index cf7712ad297c01c946fa4dfdaf9a21646e125099..703bbc9960dd6bc68baff4f300c= 77813f5ccd37f 100644 --- a/Documentation/devicetree/bindings/media/video-interface-devices.yaml +++ b/Documentation/devicetree/bindings/media/video-interface-devices.yaml @@ -17,6 +17,14 @@ properties: An array of phandles, each referring to a flash LED, a sub-node of t= he LED driver device node. =20 + leds: + minItems: 1 + maxItems: 1 + + led-names: + enum: + - privacy-led + lens-focus: $ref: /schemas/types.yaml#/definitions/phandle description: --=20 2.48.1 From nobody Tue Sep 9 21:32:27 2025 Received: from mail-106112.protonmail.ch (mail-106112.protonmail.ch [79.135.106.112]) (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 762752367B3; Sun, 7 Sep 2025 23:18:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287110; cv=none; b=VCdGepZcU/w8YJro5/hei7pqpBhzKAet4EPK9hMt+0yLERwNjPGKdQ0LYWhDGw/+EfWG+2cqSwSibEebkHLbenqIdkZirFyhpnDQvr5brSglTciUIY6voDDeF1R8lBFDilih2/PTGZT6fiDYM/D1AyYLTlYYLkGh9CN7H9W1jT4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287110; c=relaxed/simple; bh=Gcb5IZdx91tE9heqd3TCL/vKpfvSJeT7p8ruz7OBMGE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PIMmzQTit4qnRccNjhyA9RDFkvnwsj3l7Qo61+F4jmbZ1TlnXs97xbP3tFxeMvy3o/C8j0u6DuJQ53h5901q/DtmgYRPZsrjgWt8Em84kE2brDJN7/n8yrZAyJGsNE9pJK/n4BLKPU0ZJpVf4e83/WdAHSzxyQrCkqObr5kIYzU= 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=fFcoMM0X; arc=none smtp.client-ip=79.135.106.112 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="fFcoMM0X" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757287101; x=1757546301; bh=amlesrrCjtNi/rMOXRLaP/ew+FLiQjpAjiXhBIB6iFo=; 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=fFcoMM0XKPtJJ46dEL/+YEsq0X/FnE7vPNGCFnQA+gM7JYF94hM0lcPgp2ERFnJQ0 E/9idkFSQuKDDcJMHwpQoHTibsncrDwJ8tHhjhofwC1XH5OoOKV3CBE/OOzgXJKKBR kMZfQLFJtSdNi7x/QXtuuhZiybJZL/y3fye0+q4lppns6ZbEsblpJcenyS9p3wTDfY gpQbJ/MuTYGNAZ73xQu5rZbodIqcYnvL6otH5MMnb4g86ZijzdJ2njWMx6aO1ZYyyJ MGjrkT6xIsIMrw9/9lh2u0Qsd6PPT0SxLW8K6soQdEbw+h5S9YbdoP8ch0DHZs/h3j yHuRS1zU6fZSQ== X-Pm-Submission-Id: 4cKmGg4JL6z1DF4M From: Aleksandrs Vinarskis Date: Mon, 08 Sep 2025 01:18:05 +0200 Subject: [PATCH v3 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: <20250908-leds-v3-3-5944dc400668@vinarskis.com> References: <20250908-leds-v3-0-5944dc400668@vinarskis.com> In-Reply-To: <20250908-leds-v3-0-5944dc400668@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, Andy Shevchenko , Linus Walleij X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2813; i=alex@vinarskis.com; h=from:subject:message-id; bh=YlfJ62d/o3pOGGQtdA6W03es+ClzT+tk2OK+jve8yPw=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBn7hLaxxj/h7Fn/7odZW9xhI8+HdRu8xKdF8jMa5Vof3 6hvv/FvRykLgxgXg6yYIkv3n69pXYvmrmW4rvENZg4rE8gQBi5OAZjI9X5GhuMFoQvLD7EfyJwt 0t2xJK91cm5q0ouvvHcen0xN+jNT0pCRYc+qa44PjGVfPWZ7+uyDr4brTRHuh30nTRr3/nyoM+d 1CB8A 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 | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 15633fbf3c166aa4f521774d245f6399a642bced..f3faf37f9a08ac762ed87b91cb3= cab5faa8eacb0 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,14 @@ 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 + 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:32:27 2025 Received: from mail-43171.protonmail.ch (mail-43171.protonmail.ch [185.70.43.171]) (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 4B62223C4F4; Sun, 7 Sep 2025 23:18:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287112; cv=none; b=SKX7NONSXdVgzo+J2+LfDUaD8lH/Q8dMW/dEsuWAz/14fN7TiF01387zxWUvT1dB9T449WdbNMCDy5hBcAmDrwdWCKj4NqrCGkc5a4zq9HpevCTZ/E3gtA2sD8oq483EBOgNPflZqckzeE2rkJl3XWkDeshrkP+wFmvyGtAFOYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757287112; c=relaxed/simple; bh=FDaW+KMG0SfKYAHwpy7yJNT1x/XSMWz+beB/dGcZHo4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l6tWrH1eF+/gZmcE86zPBXjD5QrRimQh2rtfy5G67aWBJ3/9hlYv4jxlbf+LObQWQ8X9at63iO+ZB2myMnY4OJGdm2H/VqY3p+O/t/AvN86Bx2e9TgVedjlg6YCtjwfXfhdwVVlC0BFFqDFrOpDokBNkK/7299H6bmjm801/+VE= 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=Q61wUY98; arc=none smtp.client-ip=185.70.43.171 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="Q61wUY98" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vinarskis.com; s=protonmail; t=1757287102; x=1757546302; bh=PhhYtIqKN2PYzCqhs14PuKEhGXRgdAp3KlX4hxKM0TY=; 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=Q61wUY98RVM/tluTfCJii2PQU//ploTQP86eib1eahsgwz0JwOMzsr7UKqiNB/EuS IQa2OuYjxTP1AltGHBufR4LGj0//vfH9bbezj8RlttH3ey6iwhqlHC8wI5YuYKba8/ wDLUmAiPDC7d+BjApx3u/2VF3/QPgTIx8+mHsHDePudFeV5EOfw6FWcuNRAZy1kXJJ 9LLEKycm5jbWpSJk2JDsegqF7AJdiUXDeViJU1TSbvXXngrAvqkXc/0uSOw6YnmxB0 uLI76bxfK3oXskuH/7G6NWyhDDKyn8JttkyYBZgo+T91Q7Tyx9UzHMO30vizU1QOYp is4NngsO8SdJg== X-Pm-Submission-Id: 4cKmGj10tMz1DF4K From: Aleksandrs Vinarskis Date: Mon, 08 Sep 2025 01:18:06 +0200 Subject: [PATCH v3 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: <20250908-leds-v3-4-5944dc400668@vinarskis.com> References: <20250908-leds-v3-0-5944dc400668@vinarskis.com> In-Reply-To: <20250908-leds-v3-0-5944dc400668@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 X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1663; i=alex@vinarskis.com; h=from:subject:message-id; bh=FDaW+KMG0SfKYAHwpy7yJNT1x/XSMWz+beB/dGcZHo4=; b=owGbwMvMwCX2dl3hIv4AZgHG02pJDBn7hLb9+dgp7HXtqfLjRxpBKx8+mnhdyDgiQN3pZWFd3 jQu10c6HaUsDGJcDLJiiizdf76mdS2au5bhusY3mDmsTCBDGLg4BWAiezgZ/qee3bTk0c/GRDmt pd+yF3qlzFl+OMGgNmr78ZqJmwWeH3Bk+O87V27ypaiFPMyfZVVTfVZvDthmZJubOEE3a3KZSNR 0ZWYA 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 | 8 ++++---- 1 file changed, 4 insertions(+), 4 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..ef5c7cbeda68c7eb4745cd2ec01= eaacf9a83040a 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts @@ -83,14 +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; }; }; @@ -685,6 +682,9 @@ camera@10 { pinctrl-names =3D "default"; pinctrl-0 =3D <&cam_rgb_default>; =20 + leds =3D <&privacy_led>; + led-names =3D "privacy-led"; + clocks =3D <&camcc CAMCC_MCLK3_CLK>; =20 orientation =3D <0>; /* Front facing */ --=20 2.48.1