summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Muellner <christoph.muellner@theobroma-systems.com>2018-12-20 14:44:18 +0100
committerChristoph Müllner <christophm30@gmail.com>2019-04-07 15:54:08 +0200
commit0732db90822eb76c9b29378ae6f982b43ed0b80c (patch)
tree31267b42326cd566ae1b457de6312f31c7251cbc
parent6289c71a5fbaf86ce3ee117d98b10988c989af22 (diff)
arm64: dts: Add rk3399-puma-haikou-mipidsi.dts.
This patch adds a DTS for the RK3399-Q7 to enable MIPI DSI output (HDMI will be disabled). Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
-rw-r--r--arch/arm64/boot/dts/rockchip/Makefile1
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3399-puma-haikou-mipidsi.dts137
2 files changed, 138 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 2113bdefa7a2..536a9c9f50f1 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -15,5 +15,6 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-bob.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-kevin.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou-eoltest.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou-mipidsi.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou-mipidsi.dts b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou-mipidsi.dts
new file mode 100644
index 000000000000..5e1e8d667366
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou-mipidsi.dts
@@ -0,0 +1,137 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2018 Theobroma Systems Design und Consulting GmbH
+ */
+
+/dts-v1/;
+#include "rk3399-puma-haikou.dts"
+#include <dt-bindings/display/drm_mipi_dsi.h>
+
+/*
+ * from rk3399-puma-mipidsi.dts
+ */
+
+/ {
+ backlight: backlight {
+ compatible = "gpio-backlight";
+ // GPIO4_C2 = Q7_LVDS_BLT_CTRL. Set high to enable the backlight. Use PWM to regulate brightness.
+ gpios = <&gpio4 18 GPIO_ACTIVE_HIGH>;
+ default-on;
+ };
+};
+
+&hdmi {
+ status = "disabled";
+};
+
+&mipi_dsi {
+ status = "okay";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+ panel {
+ compatible ="simple-panel-dt";
+ reg = <0>;
+ backlight = <&backlight>;
+ // GPIO2_A2 = SEL_EDP_1V8. Set low to switch the hardware mux from eDP to DSI.
+ enable-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
+ // GPIO4_D6 = LVDS_PPEN. Set low to send the panel into reset.
+ reset-gpios = <&gpio4 30 GPIO_ACTIVE_LOW>;
+ // Keep reset low for X milliseconds
+ reset-delay-ms = <10>;
+ // And wait X ms for the panel controller to boot up
+ init-delay-ms = <100>;
+
+ dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
+ MIPI_DSI_MODE_VIDEO_SYNC_PULSE | MIPI_DSI_MODE_LPM)>;
+ dsi,format = <MIPI_DSI_FMT_RGB888>;
+ dsi,lanes = <4>;
+ status = "okay";
+
+ panel-init-sequence = [
+ 15 01 02 cd aa
+ 15 01 02 30 00
+ 15 01 02 5e 03
+ 15 01 02 32 00
+ 15 01 02 33 25
+ 15 01 02 65 08
+ 15 01 02 3a 10
+ 15 01 02 36 49
+ 15 01 02 67 82
+ 15 01 02 69 27
+ 15 01 02 6c 27
+ 15 01 02 6d 14
+ 39 01 09 55 09 09 09 09 09 09 09 09
+ 39 01 11 56 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09
+ 15 01 02 6b 00
+ 15 01 02 58 08
+ 15 01 02 73 30
+ 15 01 02 74 10
+ 15 01 02 77 00
+ 15 01 02 68 00
+ 15 01 02 28 28
+ 39 01 05 57 00 00 09 09
+ 15 01 02 41 46
+ 15 01 02 4e 50
+ 15 01 02 4f 55
+ 15 01 02 63 04
+ 39 01 14 53 1f 1a 17 13 12 12 14 15 15 10 0d 0b 0b 0c 0d 0a 08 03 00
+ 39 01 14 54 1f 1a 17 13 12 12 14 15 15 10 0d 0b 0b 0c 0d 0a 08 03 00
+ 15 01 02 29 10
+ 15 01 02 2e 03
+ 15 01 02 78 67
+ 15 01 02 76 36
+ 15 01 02 47 18
+ 15 01 02 2d 31
+ 15 01 02 50 d0
+ 15 01 02 48 66
+ 15 01 02 3f 00
+ 15 01 02 31 01
+ 15 01 02 4d 00
+ ];
+
+
+ display-timings {
+ native-mode = <&timing0>;
+ timing0: timing0 {
+ clock-frequency = <71900000>;
+ hactive = <800>;
+ vactive = <1280>;
+ hback-porch = <24>;
+ hfront-porch = <72>;
+ vback-porch = <10>;
+ vfront-porch = <12>;
+ hsync-len = <24>;
+ vsync-len = <2>;
+ hsync-active = <0>;
+ vsync-active = <0>;
+ de-active = <1>;
+ pixelclk-active = <1>;
+ };
+ };
+ };
+};
+
+&i2c1 {
+ /* Touchscreen */
+ gsl1680 {
+ compatible = "silead,gsl1680";
+ reg = <0x40>;
+ // We don't have an interrupt line available on the dev kit.
+ // So we use 15 = arch_timer interrupt instead, tricking the driver into polling.
+ interrupts = <15 IRQ_TYPE_NONE>;
+ // Must be set but value is arbitrary (?)
+ interrupt-parent = <&gpio2>;
+ // GPIO1_C7 = LVDS_BLEN = gpio1 23
+ power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+ touchscreen-size-x = <1720>;
+ touchscreen-size-y = <1150>;
+ touchscreen-swapped-x-y;
+ touchscreen-inverted-x;
+ touchscreen-inverted-y;
+
+ silead,max-fingers = <5>;
+ // Place into /lib/firmware/silead
+ firmware-name = "ec080.fw";
+ };
+};