On Tue, Mar 31, 2026 at 10:08:09AM -0700, Rudraksha Gupta via B4 Relay wrote:
> From: Rudraksha Gupta <[email protected]>
> 
> 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 <[email protected]>
> Reviewed-by: Konrad Dybcio <[email protected]>
> Signed-off-by: Rudraksha Gupta <[email protected]>
> ---
>  .../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

Reply via email to