kernel: bump 6.1 to 6.1.76
[openwrt/staging/stintel.git] / target / linux / bcm27xx / patches-6.1 / 950-0521-drm-panel-simple-Add-Innolux-AT056tN53V1-5.6-VGA.patch
1 From ca58a9eacc862c84c9caf066aaa32ea16195d2c2 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <8911409+pelwell@users.noreply.github.com>
3 Date: Mon, 19 Dec 2022 16:32:33 +0000
4 Subject: [PATCH] drm/panel: simple: Add Innolux AT056tN53V1 5.6" VGA
5
6 Add support for the Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD
7 panel.
8
9 Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
10 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
11 ---
12 .../bindings/display/panel/panel-simple.yaml | 2 +
13 .../media/v4l/subdev-formats.rst | 76 ++++++++++++++++++-
14 drivers/gpu/drm/panel/panel-simple.c | 35 +++++++++
15 3 files changed, 112 insertions(+), 1 deletion(-)
16
17 --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
18 +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
19 @@ -174,6 +174,8 @@ properties:
20 - ivo,m133nwf4-r0
21 # Innolux AT043TN24 4.3" WQVGA TFT LCD panel
22 - innolux,at043tn24
23 + # Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD panel
24 + - innolux,at056tn53v1
25 # Innolux AT070TN92 7.0" WQVGA TFT LCD panel
26 - innolux,at070tn92
27 # Innolux G070Y2-L01 7" WVGA (800x480) TFT LCD panel
28 --- a/Documentation/userspace-api/media/v4l/subdev-formats.rst
29 +++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst
30 @@ -627,7 +627,7 @@ The following tables list existing packe
31 * .. _MEDIA_BUS_FMT_RGB565_1X24_CPADHI:
32
33 - MEDIA_BUS_FMT_RGB565_1X24_CPADHI
34 - - 0x1020
35 + - 0x1022
36 -
37 -
38 -
39 @@ -949,6 +949,43 @@ The following tables list existing packe
40 - g\ :sub:`5`
41 - g\ :sub:`4`
42 - g\ :sub:`3`
43 + * .. _MEDIA-BUS-FMT-BGR666-1X18:
44 +
45 + - MEDIA_BUS_FMT-BGR666_1X18
46 + - 0x1023
47 + -
48 + -
49 + -
50 + -
51 + -
52 + -
53 + -
54 + -
55 + -
56 + -
57 + -
58 + -
59 + -
60 + -
61 + -
62 + - b\ :sub:`5`
63 + - b\ :sub:`4`
64 + - b\ :sub:`3`
65 + - b\ :sub:`2`
66 + - b\ :sub:`1`
67 + - b\ :sub:`0`
68 + - g\ :sub:`5`
69 + - g\ :sub:`4`
70 + - g\ :sub:`3`
71 + - g\ :sub:`2`
72 + - g\ :sub:`1`
73 + - g\ :sub:`0`
74 + - r\ :sub:`5`
75 + - r\ :sub:`4`
76 + - r\ :sub:`3`
77 + - r\ :sub:`2`
78 + - r\ :sub:`1`
79 + - r\ :sub:`0`
80 * .. _MEDIA-BUS-FMT-RGB666-1X18:
81
82 - MEDIA_BUS_FMT_RGB666_1X18
83 @@ -1023,6 +1060,43 @@ The following tables list existing packe
84 - g\ :sub:`2`
85 - g\ :sub:`1`
86 - g\ :sub:`0`
87 + * .. _MEDIA-BUS-FMT-BGR666-1X24_CPADHI:
88 +
89 + - MEDIA_BUS_FMT_BGR666_1X24_CPADHI
90 + - 0x1024
91 + -
92 + -
93 + -
94 + -
95 + -
96 + -
97 + -
98 + -
99 + -
100 + - 0
101 + - 0
102 + - b\ :sub:`5`
103 + - b\ :sub:`4`
104 + - b\ :sub:`3`
105 + - b\ :sub:`2`
106 + - b\ :sub:`1`
107 + - b\ :sub:`0`
108 + - 0
109 + - 0
110 + - g\ :sub:`5`
111 + - g\ :sub:`4`
112 + - g\ :sub:`3`
113 + - g\ :sub:`2`
114 + - g\ :sub:`1`
115 + - g\ :sub:`0`
116 + - 0
117 + - 0
118 + - r\ :sub:`5`
119 + - r\ :sub:`4`
120 + - r\ :sub:`3`
121 + - r\ :sub:`2`
122 + - r\ :sub:`1`
123 + - r\ :sub:`0`
124 * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
125
126 - MEDIA_BUS_FMT_RGB666_1X24_CPADHI
127 --- a/drivers/gpu/drm/panel/panel-simple.c
128 +++ b/drivers/gpu/drm/panel/panel-simple.c
129 @@ -2138,6 +2138,38 @@ static const struct panel_desc innolux_a
130 .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
131 };
132
133 +static const struct display_timing innolux_at056tn53v1_timing = {
134 + .pixelclock = { 39700000, 39700000, 39700000},
135 + .hactive = { 640, 640, 640 },
136 + .hfront_porch = { 16, 16, 16 },
137 + .hback_porch = { 134, 134, 134 },
138 + .hsync_len = { 10, 10, 10},
139 + .vactive = { 480, 480, 480 },
140 + .vfront_porch = { 32, 32, 32},
141 + .vback_porch = { 11, 11, 11 },
142 + .vsync_len = { 2, 2, 2 },
143 + .flags = DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PHSYNC,
144 +};
145 +
146 +static const struct panel_desc innolux_at056tn53v1 = {
147 + .timings = &innolux_at056tn53v1_timing,
148 + .num_timings = 1,
149 + .bpc = 6,
150 + .size = {
151 + .width = 112,
152 + .height = 84,
153 + },
154 + .delay = {
155 + .prepare = 50,
156 + .enable = 200,
157 + .disable = 110,
158 + .unprepare = 200,
159 + },
160 + .bus_format = MEDIA_BUS_FMT_BGR666_1X24_CPADHI,
161 + .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE,
162 + .connector_type = DRM_MODE_CONNECTOR_DPI,
163 +};
164 +
165 static const struct drm_display_mode innolux_at070tn92_mode = {
166 .clock = 33333,
167 .hdisplay = 800,
168 @@ -4146,6 +4178,9 @@ static const struct of_device_id platfor
169 .compatible = "innolux,at043tn24",
170 .data = &innolux_at043tn24,
171 }, {
172 + .compatible = "innolux,at056tn53v1",
173 + .data = &innolux_at056tn53v1,
174 + }, {
175 .compatible = "innolux,at070tn92",
176 .data = &innolux_at070tn92,
177 }, {