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";
+ };
+
+};