openwrt/target/linux/bcm27xx/patches-5.15/950-0599-dtoverlays-Add-a-generic-DPI-panel-overlay-for-KMS.patch
Álvaro Fernández Rojas 20ea6adbf1 bcm27xx: add support for linux v5.15
Build system: x86_64
Build-tested: bcm2708, bcm2709, bcm2710, bcm2711
Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B

Signed-off-by: Marty Jones <mj8263788@gmail.com>
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-05-17 15:11:22 +02:00

159 lines
5.0 KiB
Diff

From 208d270a7b613e5593390d38a9fba8bd248c5928 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Thu, 2 Dec 2021 18:06:37 +0000
Subject: [PATCH] dtoverlays: Add a generic DPI panel overlay for KMS
Uses the "panel-dpi" compatible to set panel timings from
DT.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
arch/arm/boot/dts/overlays/Makefile | 1 +
arch/arm/boot/dts/overlays/README | 28 ++++++
.../overlays/vc4-kms-dpi-generic-overlay.dts | 92 +++++++++++++++++++
3 files changed, 121 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -232,6 +232,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vc4-fkms-v3d.dtbo \
vc4-fkms-v3d-pi4.dtbo \
vc4-kms-dpi-at056tn53v1.dtbo \
+ vc4-kms-dpi-generic.dtbo \
vc4-kms-dsi-7inch.dtbo \
vc4-kms-dsi-lt070me05000.dtbo \
vc4-kms-dsi-lt070me05000-v2.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -3563,6 +3563,34 @@ Load: dtoverlay=vc4-kms-dpi-at056tn53v
Params: <None>
+Name: vc4-kms-dpi-generic
+Info: Enable a generic DPI display under KMS. Default timings are for the
+ Adafruit Kippah with 800x480 panel and RGB666 (GPIOs 0-21)
+ Requires vc4-kms-v3d to be loaded.
+Load: dtoverlay=vc4-kms-dpi-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
+ hsync-invert Horizontal sync active low
+ vsync-invert Vertical sync active low
+ de-invert Data Enable active low
+ pixclk-invert Negative edge pixel clock
+ width-mm Define the screen width in mm
+ height-mm Define the screen height in mm
+ rgb565 Change to RGB565 output on GPIOs 0-19
+ rgb666-padhi Change to RGB666 output on GPIOs 0-9, 12-17, and
+ 20-25
+ rgb888 Change to RGB888 output on GPIOs 0-27
+ bus-format Override the bus format for a MEDIA_BUS_FMT_*
+ value. NB also overridden by rgbXXX overrides.
+
+
Name: vc4-kms-dsi-7inch
Info: Enable the Raspberry Pi DSI 7" screen.
Includes the edt-ft5406 for the touchscreen element.
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts
@@ -0,0 +1,92 @@
+/*
+ * vc4-kms-dpi-at056tn53v1-overlay.dts
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/bcm2835.h>
+
+/ {
+ compatible = "brcm,bcm2835";
+
+ fragment@0 {
+ target-path = "/";
+ __overlay__ {
+ panel: panel {
+ compatible = "panel-dpi";
+
+ width-mm = <154>;
+ height-mm = <83>;
+ bus-format = <0x1009>;
+
+ timing: panel-timing {
+ clock-frequency = <29500000>;
+ hactive = <800>;
+ hfront-porch = <24>;
+ hsync-len = <72>;
+ hback-porch = <96>;
+ hsync-active = <0>;
+ vactive = <480>;
+ vfront-porch = <3>;
+ vsync-len = <10>;
+ vback-porch = <7>;
+ vsync-active = <0>;
+
+ de-active = <1>;
+ pixelclk-active = <1>;
+ };
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&dpi_out>;
+ };
+ };
+ };
+ };
+ };
+
+ fragment@1 {
+ target = <&dpi>;
+ dpi_node: __overlay__ {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&dpi_18bit_gpio0>;
+
+ port {
+ dpi_out: endpoint {
+ remote-endpoint = <&panel_in>;
+ };
+ };
+ };
+ };
+
+ __overrides__ {
+ 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";
+ hsync-invert = <&timing>, "hsync-active:0=0";
+ vsync-invert = <&timing>, "vsync-active:0=0";
+ de-invert = <&timing>, "de-active:0=0";
+ pixclk-invert = <&timing>, "pixelclk-active:0=0";
+
+ width-mm = <&panel>, "width-mm:0";
+ height-mm = <&panel>, "height-mm:0";
+
+ rgb565 = <&panel>, "bus-format:0=0x1017",
+ <&dpi_node>, "pinctrl-0:0=",<&dpi_16bit_gpio0>;
+ rgb666-padhi = <&panel>, "bus-format:0=0x1015",
+ <&dpi_node>, "pinctrl-0:0=",<&dpi_18bit_cpadhi_gpio0>;
+ rgb888 = <&panel>, "bus-format:0=0x100a",
+ <&dpi_node>, "pinctrl-0:0=",<&dpi_gpio0>;
+ bus-format = <&panel>, "bus-format:0";
+ };
+};