These patches add the necessary nodes and configuration for supporting the
flash LED found on the Fairphone 4 that's powered by the pm6150l flash led
block.
This depends on the patches by Fenglin Wu adding the driver, the latest
revision can be found at [0].
[0] https://lore.kernel.org/linux-arm-msm/[email protected]/
To: Andy Gross <[email protected]>
To: Bjorn Andersson <[email protected]>
To: Konrad Dybcio <[email protected]>
To: Pavel Machek <[email protected]>
To: Rob Herring <[email protected]>
To: Krzysztof Kozlowski <[email protected]>
Cc: Fenglin Wu <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Luca Weiss <[email protected]>
---
Luca Weiss (3):
dt-bindings: leds: spmi-flash-led: Add pm6150l compatible
arm64: dts: qcom: pm6150l: add spmi-flash-led node
arm64: dts: qcom: sm7225-fairphone-fp4: configure flash LED
.../bindings/leds/qcom,spmi-flash-led.yaml | 1 +
arch/arm64/boot/dts/qcom/pm6150l.dtsi | 6 ++++++
arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts | 23 ++++++++++++++++++++++
3 files changed, 30 insertions(+)
---
base-commit: 0392f3ea67781a215382d2dba7d172d83d4aa37b
change-id: 20221209-fp4-pm6150l-flash-c450e8f6c568
Best regards,
--
Luca Weiss <[email protected]>
Add a node describing the flash block found on pm6150l.
Signed-off-by: Luca Weiss <[email protected]>
---
arch/arm64/boot/dts/qcom/pm6150l.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/pm6150l.dtsi b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
index 90aac61ad264..86e659fcbba6 100644
--- a/arch/arm64/boot/dts/qcom/pm6150l.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
@@ -112,6 +112,12 @@ pm6150l_lsid5: pmic@5 {
#address-cells = <1>;
#size-cells = <0>;
+ pm6150l_flash: led-controller@d300 {
+ compatible = "qcom,pm6150l-flash-led", "qcom,spmi-flash-led";
+ reg = <0xd300>;
+ status = "disabled";
+ };
+
pm6150l_wled: leds@d800 {
compatible = "qcom,pm6150l-wled";
reg = <0xd800>, <0xd900>;
--
2.38.1
Configure the pm6150l flash node for the dual flash LEDs found on FP4.
Signed-off-by: Luca Weiss <[email protected]>
---
arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
index c456e9594ea5..fef7d1d02925 100644
--- a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
+++ b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
@@ -7,6 +7,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sm7225.dtsi"
@@ -367,6 +368,28 @@ &mpss {
firmware-name = "qcom/sm7225/fairphone4/modem.mdt";
};
+&pm6150l_flash {
+ status = "okay";
+
+ led-0 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_YELLOW>;
+ led-sources = <1>;
+ led-max-microamp = <180000>;
+ flash-max-microamp = <1000000>;
+ flash-max-timeout-us = <1280000>;
+ };
+
+ led-1 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <2>;
+ led-max-microamp = <180000>;
+ flash-max-microamp = <1000000>;
+ flash-max-timeout-us = <1280000>;
+ };
+};
+
&pm6150l_wled {
status = "okay";
--
2.38.1
On 9.12.2022 14:54, Luca Weiss wrote:
> Add a node describing the flash block found on pm6150l.
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
Reviewed-by: Konrad Dybcio <[email protected]>
Konrad
> arch/arm64/boot/dts/qcom/pm6150l.dtsi | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/pm6150l.dtsi b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
> index 90aac61ad264..86e659fcbba6 100644
> --- a/arch/arm64/boot/dts/qcom/pm6150l.dtsi
> +++ b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
> @@ -112,6 +112,12 @@ pm6150l_lsid5: pmic@5 {
> #address-cells = <1>;
> #size-cells = <0>;
>
> + pm6150l_flash: led-controller@d300 {
> + compatible = "qcom,pm6150l-flash-led", "qcom,spmi-flash-led";
> + reg = <0xd300>;
> + status = "disabled";
> + };
> +
> pm6150l_wled: leds@d800 {
> compatible = "qcom,pm6150l-wled";
> reg = <0xd800>, <0xd900>;
>
On 9.12.2022 14:54, Luca Weiss wrote:
> Configure the pm6150l flash node for the dual flash LEDs found on FP4.
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
Reviewed-by: Konrad Dybcio <[email protected]>
Konrad
> arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> index c456e9594ea5..fef7d1d02925 100644
> --- a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> +++ b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> @@ -7,6 +7,7 @@
>
> #include <dt-bindings/gpio/gpio.h>
> #include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> #include "sm7225.dtsi"
> @@ -367,6 +368,28 @@ &mpss {
> firmware-name = "qcom/sm7225/fairphone4/modem.mdt";
> };
>
> +&pm6150l_flash {
> + status = "okay";
> +
> + led-0 {
> + function = LED_FUNCTION_FLASH;
> + color = <LED_COLOR_ID_YELLOW>;
> + led-sources = <1>;
> + led-max-microamp = <180000>;
> + flash-max-microamp = <1000000>;
> + flash-max-timeout-us = <1280000>;
> + };
> +
> + led-1 {
> + function = LED_FUNCTION_FLASH;
> + color = <LED_COLOR_ID_WHITE>;
> + led-sources = <2>;
> + led-max-microamp = <180000>;
> + flash-max-microamp = <1000000>;
> + flash-max-timeout-us = <1280000>;
> + };
> +};
> +
> &pm6150l_wled {
> status = "okay";
>
>
On Fri 2022-12-09 14:54:07, Luca Weiss wrote:
> Add a node describing the flash block found on pm6150l.
>
> Signed-off-by: Luca Weiss <[email protected]>
Acked-by: Pavel Machek <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/pm6150l.dtsi | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/pm6150l.dtsi b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
> index 90aac61ad264..86e659fcbba6 100644
> --- a/arch/arm64/boot/dts/qcom/pm6150l.dtsi
> +++ b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
> @@ -112,6 +112,12 @@ pm6150l_lsid5: pmic@5 {
> #address-cells = <1>;
> #size-cells = <0>;
>
> + pm6150l_flash: led-controller@d300 {
> + compatible = "qcom,pm6150l-flash-led", "qcom,spmi-flash-led";
> + reg = <0xd300>;
> + status = "disabled";
> + };
> +
> pm6150l_wled: leds@d800 {
> compatible = "qcom,pm6150l-wled";
> reg = <0xd800>, <0xd900>;
>
--
People of Russia, stop Putin before his war on Ukraine escalates.
Hi!
> Configure the pm6150l flash node for the dual flash LEDs found on FP4.
> +&pm6150l_flash {
> + status = "okay";
> +
> + led-0 {
> + function = LED_FUNCTION_FLASH;
> + color = <LED_COLOR_ID_YELLOW>;
> + led-sources = <1>;
> + led-max-microamp = <180000>;
> + flash-max-microamp = <1000000>;
> + flash-max-timeout-us = <1280000>;
> + };
I'm pretty sure the flash is not yellow.
Plus, how is the node in /sys/class/leds called? Can you make an entry
in Documentation/leds/well-known-leds.txt and ensure the name stays
consistent across devices?
Best regards,
Pavel
--
People of Russia, stop Putin before his war on Ukraine escalates.
On Sat Dec 10, 2022 at 6:16 PM CET, Pavel Machek wrote:
> Hi!
>
> > Configure the pm6150l flash node for the dual flash LEDs found on FP4.
>
> > +&pm6150l_flash {
> > + status = "okay";
> > +
> > + led-0 {
> > + function = LED_FUNCTION_FLASH;
> > + color = <LED_COLOR_ID_YELLOW>;
> > + led-sources = <1>;
> > + led-max-microamp = <180000>;
> > + flash-max-microamp = <1000000>;
> > + flash-max-timeout-us = <1280000>;
> > + };
Hi Pavel,
>
> I'm pretty sure the flash is not yellow.
The marketing term is Dual LED flash or Dual-tone flash, one LED is a
blue-ish white and one is a yellow-ish white, but from what I can tell,
in the original code it's always referred to as white and yellow so I
also followed that here.
Also the LEDs are right next to each other so in practise for torch just
both go on, and for camera flash I cannot really tell you but I guess
it's doing something there with the camera tuning.
See also this picture:
https://shop.fairphone.com/media/catalog/product/cache/b752d78484639b19641a8560800d919d/p/_/p_5b_main_camera_back.jpg
>
> Plus, how is the node in /sys/class/leds called? Can you make an entry
> in Documentation/leds/well-known-leds.txt and ensure the name stays
> consistent across devices?
/ # ls -al /sys/class/leds/white:flash/
total 0
drwxr-xr-x 3 0 0 0 Jan 1 00:00 .
drwxr-xr-x 4 0 0 0 Jan 1 00:00 ..
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 brightness
lrwxrwxrwx 1 0 0 0 Jan 1 00:00 device -> ../../../c440000.spmi:pmic@5:led-controller@d300
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_brightness
-r--r--r-- 1 0 0 4096 Jan 1 00:00 flash_fault
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_strobe
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_timeout
-r--r--r-- 1 0 0 4096 Jan 1 00:00 max_brightness
-r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_brightness
-r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_timeout
drwxr-xr-x 2 0 0 0 Jan 1 00:00 power
lrwxrwxrwx 1 0 0 0 Jan 1 00:00 subsystem -> ../../../../../../../../../class/leds
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 uevent
/ # ls -al /sys/class/leds/yellow:flash/
total 0
drwxr-xr-x 3 0 0 0 Jan 1 00:00 .
drwxr-xr-x 4 0 0 0 Jan 1 00:00 ..
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 brightness
lrwxrwxrwx 1 0 0 0 Jan 1 00:00 device -> ../../../c440000.spmi:pmic@5:led-controller@d300
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_brightness
-r--r--r-- 1 0 0 4096 Jan 1 00:00 flash_fault
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_strobe
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_timeout
-r--r--r-- 1 0 0 4096 Jan 1 00:00 max_brightness
-r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_brightness
-r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_timeout
drwxr-xr-x 2 0 0 0 Jan 1 00:00 power
lrwxrwxrwx 1 0 0 0 Jan 1 00:00 subsystem -> ../../../../../../../../../class/leds
-rw-r--r-- 1 0 0 4096 Jan 1 00:00 uevent
There's also already flash LED on PinePhone and some MSM8916 devices,
but I think they also have white:flash based on the dt.
>
> Best regards,
> Pavel
> --
> People of Russia, stop Putin before his war on Ukraine escalates.
On Fri, 09 Dec 2022 14:54:05 +0100, Luca Weiss wrote:
> These patches add the necessary nodes and configuration for supporting the
> flash LED found on the Fairphone 4 that's powered by the pm6150l flash led
> block.
>
> This depends on the patches by Fenglin Wu adding the driver, the latest
> revision can be found at [0].
>
> [...]
Applied, thanks!
[2/3] arm64: dts: qcom: pm6150l: add spmi-flash-led node
commit: e48b2f1fb1749e6ceeca13ac80e6e46b954dce41
[3/3] arm64: dts: qcom: sm7225-fairphone-fp4: configure flash LED
commit: 1c170714490e4d8c0886019145c9d90dfade14f9
Best regards,
--
Bjorn Andersson <[email protected]>
On 2022/12/12 21:59, Luca Weiss wrote:
> On Sat Dec 10, 2022 at 6:16 PM CET, Pavel Machek wrote:
>> Hi!
>>
>>> Configure the pm6150l flash node for the dual flash LEDs found on FP4.
>>
>>> +&pm6150l_flash {
>>> + status = "okay";
>>> +
>>> + led-0 {
>>> + function = LED_FUNCTION_FLASH;
>>> + color = <LED_COLOR_ID_YELLOW>;
>>> + led-sources = <1>;
>>> + led-max-microamp = <180000>;
>>> + flash-max-microamp = <1000000>;
>>> + flash-max-timeout-us = <1280000>;
>>> + };
>
> Hi Pavel,
>
>>
>> I'm pretty sure the flash is not yellow.
>
> The marketing term is Dual LED flash or Dual-tone flash, one LED is a
> blue-ish white and one is a yellow-ish white, but from what I can tell,
> in the original code it's always referred to as white and yellow so I
> also followed that here.
>
> Also the LEDs are right next to each other so in practise for torch just
> both go on, and for camera flash I cannot really tell you but I guess
> it's doing something there with the camera tuning.
>
> See also this picture:
> https://shop.fairphone.com/media/catalog/product/cache/b752d78484639b19641a8560800d919d/p/_/p_5b_main_camera_back.jpg
>
Hi Pavel,
Luca is right. It is normally called dual CCT (Correlated Color
Temperature) flash LED. It has 2 LEDs, one is with higher CCT (~6000K)
so it looks like a white LED, another is with lower CCT (~2000K) and it
looks like a yellow LED. I am not an expert of this but my understanding
is the camera tuning process normally adjusts the brightness of the two
LEDs and enables them to get different CCT for different snapshots.
I was thinking to use the "white" and "yellow" to name the flash LEDs
which should be much better that just using indexes, it implicitly tell
that the "white" one is having higher CCT and the "yellow" one is having
lower CCT.
Fenglin
>>
>> Plus, how is the node in /sys/class/leds called? Can you make an entry
>> in Documentation/leds/well-known-leds.txt and ensure the name stays
>> consistent across devices?
>
> / # ls -al /sys/class/leds/white:flash/
> total 0
> drwxr-xr-x 3 0 0 0 Jan 1 00:00 .
> drwxr-xr-x 4 0 0 0 Jan 1 00:00 ..
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 brightness
> lrwxrwxrwx 1 0 0 0 Jan 1 00:00 device -> ../../../c440000.spmi:pmic@5:led-controller@d300
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_brightness
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 flash_fault
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_strobe
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_timeout
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 max_brightness
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_brightness
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_timeout
> drwxr-xr-x 2 0 0 0 Jan 1 00:00 power
> lrwxrwxrwx 1 0 0 0 Jan 1 00:00 subsystem -> ../../../../../../../../../class/leds
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 uevent
> / # ls -al /sys/class/leds/yellow:flash/
> total 0
> drwxr-xr-x 3 0 0 0 Jan 1 00:00 .
> drwxr-xr-x 4 0 0 0 Jan 1 00:00 ..
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 brightness
> lrwxrwxrwx 1 0 0 0 Jan 1 00:00 device -> ../../../c440000.spmi:pmic@5:led-controller@d300
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_brightness
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 flash_fault
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_strobe
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 flash_timeout
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 max_brightness
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_brightness
> -r--r--r-- 1 0 0 4096 Jan 1 00:00 max_flash_timeout
> drwxr-xr-x 2 0 0 0 Jan 1 00:00 power
> lrwxrwxrwx 1 0 0 0 Jan 1 00:00 subsystem -> ../../../../../../../../../class/leds
> -rw-r--r-- 1 0 0 4096 Jan 1 00:00 uevent
>
> There's also already flash LED on PinePhone and some MSM8916 devices,
> but I think they also have white:flash based on the dt.
>
>>
>> Best regards,
>> Pavel
>> --
>> People of Russia, stop Putin before his war on Ukraine escalates.
>
Hi!
> > > I'm pretty sure the flash is not yellow.
> >
> > The marketing term is Dual LED flash or Dual-tone flash, one LED is a
> > blue-ish white and one is a yellow-ish white, but from what I can tell,
> > in the original code it's always referred to as white and yellow so I
> > also followed that here.
> >
> > Also the LEDs are right next to each other so in practise for torch just
> > both go on, and for camera flash I cannot really tell you but I guess
> > it's doing something there with the camera tuning.
> >
> > See also this picture:
> > https://shop.fairphone.com/media/catalog/product/cache/b752d78484639b19641a8560800d919d/p/_/p_5b_main_camera_back.jpg
> >
> Hi Pavel,
>
> Luca is right. It is normally called dual CCT (Correlated Color Temperature)
> flash LED. It has 2 LEDs, one is with higher CCT (~6000K) so it looks like a
> white LED, another is with lower CCT (~2000K) and it looks like a yellow
> LED. I am not an expert of this but my understanding is the camera tuning
> process normally adjusts the brightness of the two LEDs and enables them to
> get different CCT for different snapshots.
I believe this is normally called "warm white" and "cool white", no?
Yellow would be monochromatic light at cca 575nm, see
https://en.wikipedia.org/wiki/Shades_of_yellow .
If we need to add some defines for that, lets do that.
BR,
Pavel
--
People of Russia, stop Putin before his war on Ukraine escalates.
Hi Pavel,
On Thu Mar 23, 2023 at 8:54 PM CET, Pavel Machek wrote:
> Hi!
>
>
> > > > I'm pretty sure the flash is not yellow.
> > >
> > > The marketing term is Dual LED flash or Dual-tone flash, one LED is a
> > > blue-ish white and one is a yellow-ish white, but from what I can tell,
> > > in the original code it's always referred to as white and yellow so I
> > > also followed that here.
> > >
> > > Also the LEDs are right next to each other so in practise for torch just
> > > both go on, and for camera flash I cannot really tell you but I guess
> > > it's doing something there with the camera tuning.
> > >
> > > See also this picture:
> > > https://shop.fairphone.com/media/catalog/product/cache/b752d78484639b19641a8560800d919d/p/_/p_5b_main_camera_back.jpg
> > >
> > Hi Pavel,
> >
> > Luca is right. It is normally called dual CCT (Correlated Color Temperature)
> > flash LED. It has 2 LEDs, one is with higher CCT (~6000K) so it looks like a
> > white LED, another is with lower CCT (~2000K) and it looks like a yellow
> > LED. I am not an expert of this but my understanding is the camera tuning
> > process normally adjusts the brightness of the two LEDs and enables them to
> > get different CCT for different snapshots.
>
> I believe this is normally called "warm white" and "cool white", no?
> Yellow would be monochromatic light at cca 575nm, see
> https://en.wikipedia.org/wiki/Shades_of_yellow .
I don't really have any more information I can provide right now. If you
feel it should be called warm white and cool white, feel free to send a
patch changing it.
I'm personally okay with it being called white & yellow since that seems
to be the term used in (downstream) software for these kinds of leds.
Regards
Luca
>
> If we need to add some defines for that, lets do that.
>
> BR,
> Pavel
> --
> People of Russia, stop Putin before his war on Ukraine escalates.