Enable the onboard 240x320 SPI display using panel-mipi-dbi. Add its
D/C and reset GPIOs, display timing, and PWM1 backlight, and enable
SPI2 with a maximum transfer frequency of 50 MHz.

Assign SPI2 a 100 MHz input clock from DPLL so that the controller's
even baud-rate divider can provide 50 MHz for pixel transfers.

Describe the 43.2 x 57.6 mm active area as 43 x 58 mm in the integer
millimetre properties. The panel uses RGB565 pixel data and requires the
external
initialization file dfrobot,unihiker-m10-display.bin. No DRM or SPI
controller driver changes are needed.

Signed-off-by: Mizuno Miotsuki <[email protected]>
---
 .../dts/rockchip/rk3308-unihiker-m10-v1.2.dts | 53 +++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3308-unihiker-m10-v1.2.dts 
b/arch/arm64/boot/dts/rockchip/rk3308-unihiker-m10-v1.2.dts
index 0c03f118378a..4dc01ea73e44 100644
--- a/arch/arm64/boot/dts/rockchip/rk3308-unihiker-m10-v1.2.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3308-unihiker-m10-v1.2.dts
@@ -22,6 +22,14 @@ chosen {
                stdout-path = "serial0:1500000n8";
        };
 
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 10000 0>;
+               brightness-levels = <0 16 32 48 64 80 96 112 128
+                                    144 160 176 192 208 224 240 255>;
+               default-brightness-level = <12>;
+       };
+
        keys {
                compatible = "gpio-keys";
 
@@ -154,6 +162,13 @@ &pinctrl {
        pinctrl-names = "default";
        pinctrl-0 = <&rtc_32k>;
 
+       lcd {
+               lcd_control: lcd-control {
+                       rockchip,pins = <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>,
+                                      <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        sdmmc {
                sd_vcc_en: sd-vcc-en {
                        rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
@@ -183,6 +198,10 @@ &pwm0 {
        status = "okay";
 };
 
+&pwm1 {
+       status = "okay";
+};
+
 &sdio {
        #address-cells = <1>;
        #size-cells = <0>;
@@ -216,6 +235,40 @@ &sdmmc {
        status = "okay";
 };
 
+&spi2 {
+       assigned-clocks = <&cru SCLK_SPI2>;
+       assigned-clock-parents = <&cru PLL_DPLL>;
+       assigned-clock-rates = <100000000>;
+       status = "okay";
+
+       display@0 {
+               compatible = "dfrobot,unihiker-m10-display", 
"panel-mipi-dbi-spi";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_control>;
+               dc-gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
+               /* The DBI reset helper drives logical low, then high. */
+               reset-gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_HIGH>;
+               backlight = <&backlight>;
+               format = "r5g6b5";
+               width-mm = <43>;
+               height-mm = <58>;
+
+               panel-timing {
+                       clock-frequency = <0>;
+                       hactive = <240>;
+                       vactive = <320>;
+                       hback-porch = <0>;
+                       hfront-porch = <0>;
+                       hsync-len = <0>;
+                       vback-porch = <0>;
+                       vfront-porch = <0>;
+                       vsync-len = <0>;
+               };
+       };
+};
+
 &u2phy {
        status = "okay";
 };
-- 
2.56.0

Reply via email to