From b0b504cc344dcbe23b1beea61c1d70f964ff9ec3 Mon Sep 17 00:00:00 2001 From: Timon Skerutsch 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 --- arch/arm/boot/dts/overlays/Makefile | 1 + arch/arm/boot/dts/overlays/README | 31 ++++++ .../dts/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 diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile index faebe83..14ce8e7 100644 --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -294,6 +294,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 \ diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 1b5b936..6cd2b70 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -4789,6 +4789,37 @@ Params: sizex Touchscreen size x (default 800) 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,= +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 diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts new file mode 100644 index 0000000..cf4ca5b6 --- /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"; + }; + +}; -- 2.7.4