summaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-6.1/950-1184-overlays-example-overlay-for-using-panel-dsi-on-RPi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-6.1/950-1184-overlays-example-overlay-for-using-panel-dsi-on-RPi.patch')
-rw-r--r--target/linux/bcm27xx/patches-6.1/950-1184-overlays-example-overlay-for-using-panel-dsi-on-RPi.patch176
1 files changed, 176 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-6.1/950-1184-overlays-example-overlay-for-using-panel-dsi-on-RPi.patch b/target/linux/bcm27xx/patches-6.1/950-1184-overlays-example-overlay-for-using-panel-dsi-on-RPi.patch
new file mode 100644
index 0000000000..28a82d596d
--- /dev/null
+++ b/target/linux/bcm27xx/patches-6.1/950-1184-overlays-example-overlay-for-using-panel-dsi-on-RPi.patch
@@ -0,0 +1,176 @@
+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";
++ };
++
++};