aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2021-08-21 10:54:34 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2021-08-21 19:07:07 +0200
commit8299d1f057439f94c6a4412e2e5c5082b82a30c9 (patch)
tree1bf678d61f11f7394493be464c7876e496f7faed /target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
parent33b6885975ce376ff075362b7f0890326043111b (diff)
downloadupstream-8299d1f057439f94c6a4412e2e5c5082b82a30c9.tar.gz
upstream-8299d1f057439f94c6a4412e2e5c5082b82a30c9.tar.bz2
upstream-8299d1f057439f94c6a4412e2e5c5082b82a30c9.zip
bcm27xx: add kernel 5.10 support
Rebased RPi foundation patches on linux 5.10.59, removed applied and reverted patches, wireless patches and defconfig patches. bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 4B v1.1 4G bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch214
1 files changed, 214 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch b/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
new file mode 100644
index 0000000000..56a1e6862b
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
@@ -0,0 +1,214 @@
+From 16edbdfde51fc3180cecb00ad0aa311bd4567650 Mon Sep 17 00:00:00 2001
+From: Joerg Quinten <aBUGSworstnightmare@gmail.com>
+Date: Fri, 18 Jun 2021 13:02:29 +0200
+Subject: [PATCH] Support RPi DPI interface in mode6 for 18-bit color
+
+A matching media bus format was added and an overlay for using it,
+both with FB and VC4 was added as well.
+
+Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
+---
+ .../bindings/display/panel/panel-simple.yaml | 2 +
+ .../media/v4l/subdev-formats.rst | 74 +++++++++++++++++++
+ drivers/gpu/drm/panel/panel-simple.c | 35 +++++++++
+ drivers/gpu/drm/vc4/vc4_dpi.c | 10 +++
+ include/uapi/linux/media-bus-format.h | 4 +-
+ 5 files changed, 124 insertions(+), 1 deletion(-)
+
+--- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
++++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
+@@ -147,6 +147,8 @@ properties:
+ - ivo,m133nwf4-r0
+ # Innolux AT043TN24 4.3" WQVGA TFT LCD panel
+ - innolux,at043tn24
++ # Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD panel
++ - innolux,at056tn53v1
+ # Innolux AT070TN92 7.0" WQVGA TFT LCD panel
+ - innolux,at070tn92
+ # Innolux G070Y2-L01 7" WVGA (800x480) TFT LCD panel
+--- a/Documentation/userspace-api/media/v4l/subdev-formats.rst
++++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst
+@@ -908,6 +908,43 @@ The following tables list existing packe
+ - g\ :sub:`5`
+ - g\ :sub:`4`
+ - g\ :sub:`3`
++ * .. _MEDIA-BUS-FMT-BGR666-1X18:
++
++ - MEDIA_BUS_FMT_RGB666_1X18
++ - 0x101f
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ - b\ :sub:`5`
++ - b\ :sub:`4`
++ - b\ :sub:`3`
++ - b\ :sub:`2`
++ - b\ :sub:`1`
++ - b\ :sub:`0`
++ - g\ :sub:`5`
++ - g\ :sub:`4`
++ - g\ :sub:`3`
++ - g\ :sub:`2`
++ - g\ :sub:`1`
++ - g\ :sub:`0`
++ - r\ :sub:`5`
++ - r\ :sub:`4`
++ - r\ :sub:`3`
++ - r\ :sub:`2`
++ - r\ :sub:`1`
++ - r\ :sub:`0`
+ * .. _MEDIA-BUS-FMT-RGB666-1X18:
+
+ - MEDIA_BUS_FMT_RGB666_1X18
+@@ -982,6 +1019,43 @@ The following tables list existing packe
+ - g\ :sub:`2`
+ - g\ :sub:`1`
+ - g\ :sub:`0`
++ * .. _MEDIA-BUS-FMT-BGR666-1X24_CPADHI:
++
++ - MEDIA_BUS_FMT_BGR666_1X24_CPADHI
++ - 0x101e
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ -
++ - 0
++ - 0
++ - b\ :sub:`5`
++ - b\ :sub:`4`
++ - b\ :sub:`3`
++ - b\ :sub:`2`
++ - b\ :sub:`1`
++ - b\ :sub:`0`
++ - 0
++ - 0
++ - g\ :sub:`5`
++ - g\ :sub:`4`
++ - g\ :sub:`3`
++ - g\ :sub:`2`
++ - g\ :sub:`1`
++ - g\ :sub:`0`
++ - 0
++ - 0
++ - r\ :sub:`5`
++ - r\ :sub:`4`
++ - r\ :sub:`3`
++ - r\ :sub:`2`
++ - r\ :sub:`1`
++ - r\ :sub:`0`
+ * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
+
+ - MEDIA_BUS_FMT_RGB666_1X24_CPADHI
+--- a/drivers/gpu/drm/panel/panel-simple.c
++++ b/drivers/gpu/drm/panel/panel-simple.c
+@@ -2093,6 +2093,38 @@ static const struct panel_desc innolux_a
+ .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
+ };
+
++static const struct display_timing innolux_at056tn53v1_timing = {
++ .pixelclock = { 39700000, 39700000, 39700000},
++ .hactive = { 640, 640, 640 },
++ .hfront_porch = { 16, 16, 16 },
++ .hback_porch = { 134, 134, 134 },
++ .hsync_len = { 10, 10, 10},
++ .vactive = { 480, 480, 480 },
++ .vfront_porch = { 32, 32, 32},
++ .vback_porch = { 11, 11, 11 },
++ .vsync_len = { 2, 2, 2 },
++ .flags = DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PHSYNC,
++};
++
++static const struct panel_desc innolux_at056tn53v1 = {
++ .timings = &innolux_at056tn53v1_timing,
++ .num_timings = 1,
++ .bpc = 6,
++ .size = {
++ .width = 112,
++ .height = 84,
++ },
++ .delay = {
++ .prepare = 50,
++ .enable = 200,
++ .disable = 110,
++ .unprepare = 200,
++ },
++ .bus_format = MEDIA_BUS_FMT_BGR666_1X24_CPADHI,
++ .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE,
++ .connector_type = DRM_MODE_CONNECTOR_DPI,
++};
++
+ static const struct drm_display_mode innolux_at070tn92_mode = {
+ .clock = 33333,
+ .hdisplay = 800,
+@@ -4076,6 +4108,9 @@ static const struct of_device_id platfor
+ .compatible = "innolux,at043tn24",
+ .data = &innolux_at043tn24,
+ }, {
++ .compatible = "innolux,at056tn53v1",
++ .data = &innolux_at056tn53v1,
++ }, {
+ .compatible = "innolux,at070tn92",
+ .data = &innolux_at070tn92,
+ }, {
+--- a/drivers/gpu/drm/vc4/vc4_dpi.c
++++ b/drivers/gpu/drm/vc4/vc4_dpi.c
+@@ -165,10 +165,20 @@ static void vc4_dpi_encoder_enable(struc
+ dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
+ DPI_FORMAT);
+ break;
++ case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
++ dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
++ DPI_FORMAT);
++ dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
++ break;
+ case MEDIA_BUS_FMT_RGB666_1X18:
+ dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
+ DPI_FORMAT);
+ break;
++ case MEDIA_BUS_FMT_BGR666_1X18:
++ dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
++ DPI_FORMAT);
++ dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
++ break;
+ case MEDIA_BUS_FMT_RGB565_1X16:
+ dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
+ DPI_FORMAT);
+--- a/include/uapi/linux/media-bus-format.h
++++ b/include/uapi/linux/media-bus-format.h
+@@ -34,7 +34,7 @@
+
+ #define MEDIA_BUS_FMT_FIXED 0x0001
+
+-/* RGB - next is 0x101d */
++/* RGB - next is 0x1020 */
+ #define MEDIA_BUS_FMT_RGB444_1X12 0x1016
+ #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
+ #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
+@@ -45,8 +45,10 @@
+ #define MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006
+ #define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007
+ #define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008
++#define MEDIA_BUS_FMT_BGR666_1X18 0x101f
+ #define MEDIA_BUS_FMT_RGB666_1X18 0x1009
+ #define MEDIA_BUS_FMT_RBG888_1X24 0x100e
++#define MEDIA_BUS_FMT_BGR666_1X24_CPADHI 0x101e
+ #define MEDIA_BUS_FMT_RGB666_1X24_CPADHI 0x1015
+ #define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG 0x1010
+ #define MEDIA_BUS_FMT_BGR888_1X24 0x1013