From: Icenowy Zheng <icen...@aosc.io>

PinePhone uses PWM backlight and a XBD599 LCD panel over DSI for
display.

Backlight levels curve was optimized by Martijn Braam using a
lux meter.

Add its device nodes.

Signed-off-by: Icenowy Zheng <icen...@aosc.io>
Signed-off-by: Martijn Braam <mart...@brixit.nl>
Signed-off-by: Ondrej Jirman <meg...@megous.com>
---
 .../allwinner/sun50i-a64-pinephone-1.1.dts    | 19 ++++++++++
 .../dts/allwinner/sun50i-a64-pinephone.dtsi   | 35 +++++++++++++++++++
 2 files changed, 54 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts 
b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
index 06a775c41664..3e99a87e9ce5 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
@@ -9,3 +9,22 @@ / {
        model = "Pine64 PinePhone Braveheart (1.1)";
        compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64";
 };
+
+&backlight {
+       power-supply = <&reg_ldo_io0>;
+       /*
+        * PWM backlight circuit on this PinePhone revision was changed since
+        * 1.0, and the lowest PWM duty cycle that doesn't lead to backlight
+        * being off is around 20%. Duty cycle for the lowest brightness level
+        * also varries quite a bit between individual boards, so the lowest
+        * value here was chosen as a safe default.
+        */
+       brightness-levels = <
+               774  793  814  842
+               882  935  1003 1088
+               1192 1316 1462 1633
+               1830 2054 2309 2596
+               2916 3271 3664 4096>;
+       num-interpolated-steps = <50>;
+       default-brightness-level = <400>;
+};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi 
b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
index cefda145c3c9..85a7aa5efd32 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
@@ -16,6 +16,13 @@ aliases {
                serial0 = &uart0;
        };
 
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>;
+               enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */
+               /* Backlight configuration differs per PinePhone revision. */
+       };
+
        chosen {
                stdout-path = "serial0:115200n8";
        };
@@ -84,6 +91,30 @@ &dai {
        status = "okay";
 };
 
+&de {
+       status = "okay";
+};
+
+&dphy {
+       status = "okay";
+};
+
+&dsi {
+       vcc-dsi-supply = <&reg_dldo1>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "xingbangda,xbd599";
+               reg = <0>;
+               reset-gpios = <&pio 3 23 GPIO_ACTIVE_LOW>; /* PD23 */
+               iovcc-supply = <&reg_dldo2>;
+               vcc-supply = <&reg_ldo_io0>;
+               backlight = <&backlight>;
+       };
+};
+
 &ehci0 {
        status = "okay";
 };
@@ -188,6 +219,10 @@ &r_pio {
         */
 };
 
+&r_pwm {
+       status = "okay";
+};
+
 &r_rsb {
        status = "okay";
 
-- 
2.27.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to