On 3/18/26 7:34 PM, 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
>
> Reviewed-by: David Heidelberg <[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..ad5169a60937 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;
> };
>
> + flash_gpio_reg: regulator-flash {
"vreg_flash:"
> + compatible = "regulator-fixed";
> + regulator-name = "flash_led_en";
"_en" makes it sound like it's an enable pin - if we don't have a better
idea, perhaps 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";
> + };
> +
> + camera_flash: led-controller {
Let's drop the label since it's unused
> + compatible = "richtek,rt8515";
> + enf-gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
> + vin-supply = <&flash_gpio_reg>;
> + 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>;
> @@ -247,6 +274,13 @@ touchkey_irq_pin: touchkey-irq-state {
This label from the context seems not to be present in -next, FWIW
> drive-strength = <2>;
> bias-disable;
> };
> +
> + cam_flash_en: cam-flash-en-state {
> + pins = "gpio3";
Please keep the pinctrl entries sorted by the GPIO index
Konrad