diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile index faebe83cf76da2..452461197d29ce 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 \ 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 1b5b936fa87e78..49ba4d19fec600 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -4712,6 +4712,35 @@ Params: clock-frequency Display clock frequency (Hz) rotate Display rotation {0,90,180,270} (default 0) +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 + + Name: vc4-kms-dpi-hyperpixel2r Info: Enable the KMS drivers for the Pimoroni HyperPixel2 Round DPI display. Requires vc4-kms-v3d to be loaded. 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 00000000000000..d2efe25ef4aaa0 --- /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"; + }; + +};