diff mbox series

[PATCHv3] arm64: dts: allwinner: a64: teres-i: enable backlight

Message ID 20190208141629.14323-1-harald@ccbib.org (mailing list archive)
State New, archived
Headers show
Series [PATCHv3] arm64: dts: allwinner: a64: teres-i: enable backlight | expand

Commit Message

Harald Geyer Feb. 8, 2019, 2:16 p.m. UTC
Enable pwm and add a pretty standard backlight node.

The regulator is always on, but we include it anyway, because it is
required by the binding document.

Signed-off-by: Harald Geyer <harald@ccbib.org>
---
The backlight node got dropped from the initial submission of the
teres-i DT, because PWM support wasn't available in time, and I
kind of forgot to resubmit once PWM was in. Sorry about that.

While testing this patch I noticed, that sometimes on boot the
brightness is set to max_brightness instead of the default specified
in DT. I couldn't reproduce it reliably, but it seems to be related
to changing the pwm period. I guess the logic trying to detect
the brightness set by the boot loader gets confused in some corner
case if the pwm periods don't match. However unbinding and rebinding
the device to the driver always made it go to the proper default
brightness, so the problem is clearly not in the DT.

If the theory above is true, then it implies that the version of
u-boot running on my laptop doesn't completely overwrite all pwm
parameters. As this might be specific to my installation, I didn't
mention the issue in the commit message.

Changes since v2:
 * Drop all the other stuff that got merged a year ago.
 * Rebased on current sunxi/for-next branch
 * Add power-supply property (just to conform to the binding)
 * Use slightly different brightness-levels

Actually I tried omitting brightness-levels completely, as it is now
optional. However automatic calculation gives unreasonable results
(depending on the exact value of pwm period). A report has been sent
to the author of the code.


 .../arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Maxime Ripard Feb. 8, 2019, 8:17 p.m. UTC | #1
Hi Harald,

On Fri, Feb 08, 2019 at 02:16:29PM +0000, Harald Geyer wrote:
> Enable pwm and add a pretty standard backlight node.
> 
> The regulator is always on, but we include it anyway, because it is
> required by the binding document.
> 
> Signed-off-by: Harald Geyer <harald@ccbib.org>
> ---
> The backlight node got dropped from the initial submission of the
> teres-i DT, because PWM support wasn't available in time, and I
> kind of forgot to resubmit once PWM was in. Sorry about that.
> 
> While testing this patch I noticed, that sometimes on boot the
> brightness is set to max_brightness instead of the default specified
> in DT. I couldn't reproduce it reliably, but it seems to be related
> to changing the pwm period. I guess the logic trying to detect
> the brightness set by the boot loader gets confused in some corner
> case if the pwm periods don't match. However unbinding and rebinding
> the device to the driver always made it go to the proper default
> brightness, so the problem is clearly not in the DT.
> 
> If the theory above is true, then it implies that the version of
> u-boot running on my laptop doesn't completely overwrite all pwm
> parameters. As this might be specific to my installation, I didn't
> mention the issue in the commit message.
> 
> Changes since v2:
>  * Drop all the other stuff that got merged a year ago.
>  * Rebased on current sunxi/for-next branch
>  * Add power-supply property (just to conform to the binding)
>  * Use slightly different brightness-levels
> 
> Actually I tried omitting brightness-levels completely, as it is now
> optional. However automatic calculation gives unreasonable results
> (depending on the exact value of pwm period). A report has been sent
> to the author of the code.
> 
> 
>  .../arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
> index 7b7b14ba58e6..2a78932d5d3b 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
> @@ -21,6 +21,15 @@
>  		serial0 = &uart0;
>  	};
>  
> +	backlight: backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm 0 50000 0>;
> +		power-supply = <&reg_dcdc1>;
> +		brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>;

The backlight perceived brightness should increase lineary with each
step, which means that if you have ten steps, each step should
increase the perceived brightness by 10%. The eye being what it is, a
exponential sequence is usually a much better approximation.

It looks good otherwise, thanks!
Maxime
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
index 7b7b14ba58e6..2a78932d5d3b 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
@@ -21,6 +21,15 @@ 
 		serial0 = &uart0;
 	};
 
+	backlight: backlight {
+		compatible = "pwm-backlight";
+		pwms = <&pwm 0 50000 0>;
+		power-supply = <&reg_dcdc1>;
+		brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>;
+		default-brightness-level = <4>;
+		enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
+	};
+
 	chosen {
 		stdout-path = "serial0:115200n8";
 
@@ -131,6 +140,10 @@ 
 	status = "okay";
 };
 
+&pwm {
+	status = "okay";
+};
+
 &r_rsb {
 	status = "okay";