mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2024-06-01 20:36:19 +02:00
8299d1f057
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>
215 lines
6.1 KiB
Diff
215 lines
6.1 KiB
Diff
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
|