Re: [PATCH v4 3/3] ARM: dts: qcom: msm8960: expressatt: Add camera flash

From: Dmitry Baryshkov

Date: Tue Mar 31 2026 - 14:30:38 EST


On Tue, Mar 31, 2026 at 10:08:09AM -0700, Rudraksha Gupta via B4 Relay wrote:
> From: Rudraksha Gupta <guptarud@xxxxxxxxx>
>
> Add camera flash support for the Samsung Galaxy Express (expressatt).
>
> The flash IC uses a one-wire pulse-count protocol on GPIO 3, powered
> by a GPIO-controlled fixed regulator on PMIC MPP 4. The regulator is
> modeled as a regulator-fixed node and supplied to the flash IC via
> vin-supply.
>
> Downstream references:
> Link: https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/leds/Makefile#L51
> Link: https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/arch/arm/mach-msm/board-apexq-camera.c#L591
>
> Assisted-by: Claude:claude-opus-4.6
> Reviewed-by: David Heidelberg <david@xxxxxxx>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
> Signed-off-by: Rudraksha Gupta <guptarud@xxxxxxxxx>
> ---
> .../dts/qcom/qcom-msm8960-samsung-expressatt.dts | 43 ++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
> index c4b98af6955d..35514fd53e3d 100644
> --- a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
> +++ b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
> @@ -1,5 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> #include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> #include <dt-bindings/reset/qcom,gcc-msm8960.h>
>
> #include "qcom-msm8960.dtsi"
> @@ -61,6 +62,32 @@ touchkey_enable: touchkey-enable {
> regulator-boot-on;
> };
>
> + vreg_flash: regulator-flash {
> + compatible = "regulator-fixed";
> + regulator-name = "VREG_FLASH_3P3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&pm8921_mpps 4 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + pinctrl-0 = <&flash_led_unlock>;
> + pinctrl-names = "default";
> + };
> +
> + led-controller {

It looks like the nodes are not sorted. Could you please make sure that
they are sorted alphanumerically (if there is no node address)?

> + compatible = "richtek,rt8515";
> + enf-gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
> + vin-supply = <&vreg_flash>;
> + richtek,rfs-ohms = <16000>;
> + pinctrl-0 = <&cam_flash_en>;
> + pinctrl-names = "default";
> +
> + led {
> + function = LED_FUNCTION_FLASH;
> + color = <LED_COLOR_ID_WHITE>;
> + flash-max-timeout-us = <250000>;
> + };
> + };
> +
> i2c-gpio-touchkey {
> compatible = "i2c-gpio";
> #address-cells = <1>;
> @@ -172,6 +199,13 @@ touchscreen@4a {
> };
>
> &tlmm {
> + cam_flash_en: cam-flash-en-state {
> + pins = "gpio3";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-pull-down;
> + };
> +
> spi1_default: spi1-default-state {
> mosi-pins {
> pins = "gpio6";
> @@ -572,3 +606,12 @@ magnetometer@2e {
> /* TODO: Figure out Mount Matrix */
> };
> };
> +
> +&pm8921_mpps {
> + flash_led_unlock: flash-led-unlock-state {
> + pins = "mpp4";
> + function = "digital";
> + output-low;
> + power-source = <PM8921_GPIO_S4>;
> + };
> +};
>
> --
> 2.53.0
>
>

--
With best wishes
Dmitry