Message ID | 20200701162928.1638874-13-megous@megous.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for PinePhone LCD panel | expand |
On Wed, Jul 01, 2020 at 06:29:27PM +0200, Ondrej Jirman wrote: > From: Icenowy Zheng <icenowy@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 <icenowy@aosc.io> > Signed-off-by: Martijn Braam <martijn@brixit.nl> > Signed-off-by: Ondrej Jirman <megous@megous.com> > Acked-by: Linus Walleij <linus.walleij@linaro.org> > --- > .../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 = <®_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 = <®_dldo1>; > + #address-cells = <1>; > + #size-cells = <0>; > + status = "okay"; If you're about to send a new version, you can remove #address-cells and #size-cells too, they're already set in the DTSI. Maxime
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 = <®_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 = <®_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 = <®_dldo2>; + vcc-supply = <®_ldo_io0>; + backlight = <&backlight>; + }; +}; + &ehci0 { status = "okay"; }; @@ -188,6 +219,10 @@ &r_pio { */ }; +&r_pwm { + status = "okay"; +}; + &r_rsb { status = "okay";