mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 22:23:27 +00:00
177 lines
5.5 KiB
Diff
177 lines
5.5 KiB
Diff
|
From ccf75f2a6f4045484c4539f7d47264f8f6b8453c Mon Sep 17 00:00:00 2001
|
||
|
From: Timon Skerutsch <kernel@diodes-delight.com>
|
||
|
Date: Mon, 13 Nov 2023 22:52:35 +0100
|
||
|
Subject: [PATCH] overlays: example overlay for using panel-dsi on RPi
|
||
|
|
||
|
Analog to the generic panel-dpi overlay to use panel-dsi with dtparam
|
||
|
to not require a panel specific overlay for simple use cases that
|
||
|
do not require setting more niche DSI modes.
|
||
|
|
||
|
Signed-off-by: Timon Skerutsch <kernel@diodes-delight.com>
|
||
|
---
|
||
|
arch/arm/boot/dts/overlays/Makefile | 1 +
|
||
|
arch/arm/boot/dts/overlays/README | 31 +++++
|
||
|
.../overlays/vc4-kms-dsi-generic-overlay.dts | 106 ++++++++++++++++++
|
||
|
3 files changed, 138 insertions(+)
|
||
|
create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts
|
||
|
|
||
|
--- a/arch/arm/boot/dts/overlays/Makefile
|
||
|
+++ b/arch/arm/boot/dts/overlays/Makefile
|
||
|
@@ -293,6 +293,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||
|
vc4-kms-dpi-hyperpixel4sq.dtbo \
|
||
|
vc4-kms-dpi-panel.dtbo \
|
||
|
vc4-kms-dsi-7inch.dtbo \
|
||
|
+ vc4-kms-dsi-generic.dtbo \
|
||
|
vc4-kms-dsi-lt070me05000.dtbo \
|
||
|
vc4-kms-dsi-lt070me05000-v2.dtbo \
|
||
|
vc4-kms-dsi-waveshare-panel.dtbo \
|
||
|
--- a/arch/arm/boot/dts/overlays/README
|
||
|
+++ b/arch/arm/boot/dts/overlays/README
|
||
|
@@ -4785,6 +4785,37 @@ Params: sizex Touchscr
|
||
|
the default DSI1 and i2c_csi_dsi).
|
||
|
|
||
|
|
||
|
+Name: vc4-kms-dsi-generic
|
||
|
+Info: Enable a generic DSI display under KMS.
|
||
|
+ Default timings are for a 840x480 RGB888 panel.
|
||
|
+ Requires vc4-kms-v3d to be loaded.
|
||
|
+Load: dtoverlay=vc4-kms-dsi-generic,<param>=<val>
|
||
|
+Params: clock-frequency Display clock frequency (Hz)
|
||
|
+ hactive Horizontal active pixels
|
||
|
+ hfp Horizontal front porch
|
||
|
+ hsync Horizontal sync pulse width
|
||
|
+ hbp Horizontal back porch
|
||
|
+ vactive Vertical active lines
|
||
|
+ vfp Vertical front porch
|
||
|
+ vsync Vertical sync pulse width
|
||
|
+ vbp Vertical back porch
|
||
|
+ width-mm Define the screen width in mm
|
||
|
+ height-mm Define the screen height in mm
|
||
|
+ rgb565 Change to RGB565 output
|
||
|
+ rgb666 Change to RGB666 output
|
||
|
+ rgb666p Change to RGB666 output with pixel packing
|
||
|
+ rgb888 Change to RGB888 output, this is the default
|
||
|
+ one-lane Use one DSI lane for data transmission
|
||
|
+ This is the default
|
||
|
+ two-lane Use two DSI lanes for data transmission
|
||
|
+ three-lane Use three DSI lanes for data transmission
|
||
|
+ Only supported on Pi5 and CM
|
||
|
+ four-lane Use four DSI lanes for data transmission
|
||
|
+ Only supported on Pi5 and CM
|
||
|
+ dsi0 Switch DSI port to DSI0
|
||
|
+ Only supported on Pi5 and CM
|
||
|
+
|
||
|
+
|
||
|
Name: vc4-kms-dsi-lt070me05000
|
||
|
Info: Enable a JDI LT070ME05000 DSI display on DSI1.
|
||
|
Note that this is a 4 lane DSI device, so it will only work on a Compute
|
||
|
--- /dev/null
|
||
|
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts
|
||
|
@@ -0,0 +1,106 @@
|
||
|
+/dts-v1/;
|
||
|
+/plugin/;
|
||
|
+
|
||
|
+/ {
|
||
|
+ compatible = "brcm,bcm2835";
|
||
|
+
|
||
|
+ dsi_frag: fragment@0 {
|
||
|
+ target = <&dsi1>;
|
||
|
+ __overlay__{
|
||
|
+ status = "okay";
|
||
|
+ #address-cells = <1>;
|
||
|
+ #size-cells = <0>;
|
||
|
+ port {
|
||
|
+ dsi_out:endpoint {
|
||
|
+ remote-endpoint = <&panel_dsi_port>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+ panel: panel-dsi-generic@0 {
|
||
|
+ // See panel-dsi.yaml binding
|
||
|
+ // Using dummy name for panel model
|
||
|
+ compatible = "Generic,panel-dsi","panel-dsi";
|
||
|
+ reg = <0>;
|
||
|
+ power-supply = <0>;
|
||
|
+ backlight = <0>;
|
||
|
+ dsi-color-format = "RGB888";
|
||
|
+ mode = "MODE_VIDEO";
|
||
|
+ width-mm = <0>;
|
||
|
+ height-mm = <0>;
|
||
|
+
|
||
|
+ port {
|
||
|
+ panel_dsi_port: endpoint {
|
||
|
+ data-lanes = <1>;
|
||
|
+ remote-endpoint = <&dsi_out>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ timing: panel-timing {
|
||
|
+ clock-frequency = <30000000>;
|
||
|
+ hactive = <840>;
|
||
|
+ vactive = <480>;
|
||
|
+ hback-porch = <44>;
|
||
|
+ hfront-porch = <46>;
|
||
|
+ hsync-len = <2>;
|
||
|
+ vback-porch = <18>;
|
||
|
+ vfront-porch = <16>;
|
||
|
+ vsync-len = <2>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ fragment@1 {
|
||
|
+ target = <&panel_dsi_port>;
|
||
|
+ __dormant__ {
|
||
|
+ data-lanes = <1>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ fragment@2 {
|
||
|
+ target = <&panel_dsi_port>;
|
||
|
+ __dormant__ {
|
||
|
+ data-lanes = <1 2>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ fragment@3 {
|
||
|
+ target = <&panel_dsi_port>;
|
||
|
+ __dormant__ {
|
||
|
+ data-lanes = <1 2 3>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ fragment@4 {
|
||
|
+ target = <&panel_dsi_port>;
|
||
|
+ __dormant__ {
|
||
|
+ data-lanes = <1 2 3 4>;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
+ __overrides__ {
|
||
|
+ dsi0 = <&dsi_frag>, "target:0=",<&dsi0>;
|
||
|
+
|
||
|
+ clock-frequency = <&timing>, "clock-frequency:0";
|
||
|
+ hactive = <&timing>, "hactive:0";
|
||
|
+ hfp = <&timing>, "hfront-porch:0";
|
||
|
+ hsync = <&timing>, "hsync-len:0";
|
||
|
+ hbp = <&timing>, "hback-porch:0";
|
||
|
+ vactive = <&timing>, "vactive:0";
|
||
|
+ vfp = <&timing>, "vfront-porch:0";
|
||
|
+ vsync = <&timing>, "vsync-len:0";
|
||
|
+ vbp = <&timing>, "vback-porch:0";
|
||
|
+
|
||
|
+ width-mm = <&panel>, "width-mm:0";
|
||
|
+ height-mm = <&panel>, "height-mm:0";
|
||
|
+
|
||
|
+ rgb565 = <&panel>, "dsi-color-format=RGB565";
|
||
|
+ rgb666p = <&panel>, "dsi-color-format=RGB666_PACKED";
|
||
|
+ rgb666 = <&panel>, "dsi-color-format=RGB666";
|
||
|
+ rgb888 = <&panel>, "dsi-color-format=RGB888";
|
||
|
+ one-lane = <0>,"+1";
|
||
|
+ two-lane = <0>,"+2";
|
||
|
+ three-lane = <0>,"+3";
|
||
|
+ four-lane = <0>,"+4";
|
||
|
+ };
|
||
|
+
|
||
|
+};
|