aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2018-11-24 12:57:17 -0500
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2019-01-13 20:51:24 -0500
commitcef0d9cfe4e5b6c756c268c1b7dda7fa257336fc (patch)
tree8fba970806f0399ff260ea3d1b39631de8c07f95 /drivers
parentf41cb153e6faf0d1f4bbe0b0f15aa20de1e43e90 (diff)
drm: rcar-du: Replace EXT_CTRL_REGS feature flag with generation check
The RCAR_DU_FEATURE_EXT_CTRL_REGS feature flag is missing for H1 only, which is a first generation device, not a second generation device as reported in the device information table. Fix the H1 generation and use generation checks to replace the feature flag. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Simon Horman <horms+renesas@verge.net.au> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_drv.c14
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_drv.h7
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_group.c4
3 files changed, 6 insertions, 19 deletions
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index e3386706c63c..eef86c48edad 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -36,7 +36,6 @@
36static const struct rcar_du_device_info rzg1_du_r8a7743_info = { 36static const struct rcar_du_device_info rzg1_du_r8a7743_info = {
37 .gen = 2, 37 .gen = 2,
38 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 38 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
39 | RCAR_DU_FEATURE_EXT_CTRL_REGS
40 | RCAR_DU_FEATURE_INTERLACED 39 | RCAR_DU_FEATURE_INTERLACED
41 | RCAR_DU_FEATURE_TVM_SYNC, 40 | RCAR_DU_FEATURE_TVM_SYNC,
42 .channels_mask = BIT(1) | BIT(0), 41 .channels_mask = BIT(1) | BIT(0),
@@ -59,7 +58,6 @@ static const struct rcar_du_device_info rzg1_du_r8a7743_info = {
59static const struct rcar_du_device_info rzg1_du_r8a7745_info = { 58static const struct rcar_du_device_info rzg1_du_r8a7745_info = {
60 .gen = 2, 59 .gen = 2,
61 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 60 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
62 | RCAR_DU_FEATURE_EXT_CTRL_REGS
63 | RCAR_DU_FEATURE_INTERLACED 61 | RCAR_DU_FEATURE_INTERLACED
64 | RCAR_DU_FEATURE_TVM_SYNC, 62 | RCAR_DU_FEATURE_TVM_SYNC,
65 .channels_mask = BIT(1) | BIT(0), 63 .channels_mask = BIT(1) | BIT(0),
@@ -81,7 +79,6 @@ static const struct rcar_du_device_info rzg1_du_r8a7745_info = {
81static const struct rcar_du_device_info rzg1_du_r8a77470_info = { 79static const struct rcar_du_device_info rzg1_du_r8a77470_info = {
82 .gen = 2, 80 .gen = 2,
83 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 81 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
84 | RCAR_DU_FEATURE_EXT_CTRL_REGS
85 | RCAR_DU_FEATURE_INTERLACED 82 | RCAR_DU_FEATURE_INTERLACED
86 | RCAR_DU_FEATURE_TVM_SYNC, 83 | RCAR_DU_FEATURE_TVM_SYNC,
87 .channels_mask = BIT(1) | BIT(0), 84 .channels_mask = BIT(1) | BIT(0),
@@ -132,7 +129,7 @@ static const struct rcar_du_device_info rcar_du_r8a774c0_info = {
132}; 129};
133 130
134static const struct rcar_du_device_info rcar_du_r8a7779_info = { 131static const struct rcar_du_device_info rcar_du_r8a7779_info = {
135 .gen = 2, 132 .gen = 1,
136 .features = RCAR_DU_FEATURE_INTERLACED 133 .features = RCAR_DU_FEATURE_INTERLACED
137 | RCAR_DU_FEATURE_TVM_SYNC, 134 | RCAR_DU_FEATURE_TVM_SYNC,
138 .channels_mask = BIT(1) | BIT(0), 135 .channels_mask = BIT(1) | BIT(0),
@@ -155,7 +152,6 @@ static const struct rcar_du_device_info rcar_du_r8a7779_info = {
155static const struct rcar_du_device_info rcar_du_r8a7790_info = { 152static const struct rcar_du_device_info rcar_du_r8a7790_info = {
156 .gen = 2, 153 .gen = 2,
157 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 154 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
158 | RCAR_DU_FEATURE_EXT_CTRL_REGS
159 | RCAR_DU_FEATURE_INTERLACED 155 | RCAR_DU_FEATURE_INTERLACED
160 | RCAR_DU_FEATURE_TVM_SYNC, 156 | RCAR_DU_FEATURE_TVM_SYNC,
161 .quirks = RCAR_DU_QUIRK_ALIGN_128B, 157 .quirks = RCAR_DU_QUIRK_ALIGN_128B,
@@ -185,7 +181,6 @@ static const struct rcar_du_device_info rcar_du_r8a7790_info = {
185static const struct rcar_du_device_info rcar_du_r8a7791_info = { 181static const struct rcar_du_device_info rcar_du_r8a7791_info = {
186 .gen = 2, 182 .gen = 2,
187 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 183 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
188 | RCAR_DU_FEATURE_EXT_CTRL_REGS
189 | RCAR_DU_FEATURE_INTERLACED 184 | RCAR_DU_FEATURE_INTERLACED
190 | RCAR_DU_FEATURE_TVM_SYNC, 185 | RCAR_DU_FEATURE_TVM_SYNC,
191 .channels_mask = BIT(1) | BIT(0), 186 .channels_mask = BIT(1) | BIT(0),
@@ -209,7 +204,6 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = {
209static const struct rcar_du_device_info rcar_du_r8a7792_info = { 204static const struct rcar_du_device_info rcar_du_r8a7792_info = {
210 .gen = 2, 205 .gen = 2,
211 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 206 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
212 | RCAR_DU_FEATURE_EXT_CTRL_REGS
213 | RCAR_DU_FEATURE_INTERLACED 207 | RCAR_DU_FEATURE_INTERLACED
214 | RCAR_DU_FEATURE_TVM_SYNC, 208 | RCAR_DU_FEATURE_TVM_SYNC,
215 .channels_mask = BIT(1) | BIT(0), 209 .channels_mask = BIT(1) | BIT(0),
@@ -229,7 +223,6 @@ static const struct rcar_du_device_info rcar_du_r8a7792_info = {
229static const struct rcar_du_device_info rcar_du_r8a7794_info = { 223static const struct rcar_du_device_info rcar_du_r8a7794_info = {
230 .gen = 2, 224 .gen = 2,
231 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 225 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
232 | RCAR_DU_FEATURE_EXT_CTRL_REGS
233 | RCAR_DU_FEATURE_INTERLACED 226 | RCAR_DU_FEATURE_INTERLACED
234 | RCAR_DU_FEATURE_TVM_SYNC, 227 | RCAR_DU_FEATURE_TVM_SYNC,
235 .channels_mask = BIT(1) | BIT(0), 228 .channels_mask = BIT(1) | BIT(0),
@@ -252,7 +245,6 @@ static const struct rcar_du_device_info rcar_du_r8a7794_info = {
252static const struct rcar_du_device_info rcar_du_r8a7795_info = { 245static const struct rcar_du_device_info rcar_du_r8a7795_info = {
253 .gen = 3, 246 .gen = 3,
254 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 247 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
255 | RCAR_DU_FEATURE_EXT_CTRL_REGS
256 | RCAR_DU_FEATURE_VSP1_SOURCE 248 | RCAR_DU_FEATURE_VSP1_SOURCE
257 | RCAR_DU_FEATURE_INTERLACED 249 | RCAR_DU_FEATURE_INTERLACED
258 | RCAR_DU_FEATURE_TVM_SYNC, 250 | RCAR_DU_FEATURE_TVM_SYNC,
@@ -286,7 +278,6 @@ static const struct rcar_du_device_info rcar_du_r8a7795_info = {
286static const struct rcar_du_device_info rcar_du_r8a7796_info = { 278static const struct rcar_du_device_info rcar_du_r8a7796_info = {
287 .gen = 3, 279 .gen = 3,
288 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 280 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
289 | RCAR_DU_FEATURE_EXT_CTRL_REGS
290 | RCAR_DU_FEATURE_VSP1_SOURCE 281 | RCAR_DU_FEATURE_VSP1_SOURCE
291 | RCAR_DU_FEATURE_INTERLACED 282 | RCAR_DU_FEATURE_INTERLACED
292 | RCAR_DU_FEATURE_TVM_SYNC, 283 | RCAR_DU_FEATURE_TVM_SYNC,
@@ -316,7 +307,6 @@ static const struct rcar_du_device_info rcar_du_r8a7796_info = {
316static const struct rcar_du_device_info rcar_du_r8a77965_info = { 307static const struct rcar_du_device_info rcar_du_r8a77965_info = {
317 .gen = 3, 308 .gen = 3,
318 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 309 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
319 | RCAR_DU_FEATURE_EXT_CTRL_REGS
320 | RCAR_DU_FEATURE_VSP1_SOURCE 310 | RCAR_DU_FEATURE_VSP1_SOURCE
321 | RCAR_DU_FEATURE_INTERLACED 311 | RCAR_DU_FEATURE_INTERLACED
322 | RCAR_DU_FEATURE_TVM_SYNC, 312 | RCAR_DU_FEATURE_TVM_SYNC,
@@ -346,7 +336,6 @@ static const struct rcar_du_device_info rcar_du_r8a77965_info = {
346static const struct rcar_du_device_info rcar_du_r8a77970_info = { 336static const struct rcar_du_device_info rcar_du_r8a77970_info = {
347 .gen = 3, 337 .gen = 3,
348 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 338 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
349 | RCAR_DU_FEATURE_EXT_CTRL_REGS
350 | RCAR_DU_FEATURE_VSP1_SOURCE 339 | RCAR_DU_FEATURE_VSP1_SOURCE
351 | RCAR_DU_FEATURE_INTERLACED 340 | RCAR_DU_FEATURE_INTERLACED
352 | RCAR_DU_FEATURE_TVM_SYNC, 341 | RCAR_DU_FEATURE_TVM_SYNC,
@@ -368,7 +357,6 @@ static const struct rcar_du_device_info rcar_du_r8a77970_info = {
368static const struct rcar_du_device_info rcar_du_r8a7799x_info = { 357static const struct rcar_du_device_info rcar_du_r8a7799x_info = {
369 .gen = 3, 358 .gen = 3,
370 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 359 .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
371 | RCAR_DU_FEATURE_EXT_CTRL_REGS
372 | RCAR_DU_FEATURE_VSP1_SOURCE, 360 | RCAR_DU_FEATURE_VSP1_SOURCE,
373 .channels_mask = BIT(1) | BIT(0), 361 .channels_mask = BIT(1) | BIT(0),
374 .routes = { 362 .routes = {
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.h b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
index a68da79b424e..2ba311734f30 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
@@ -23,10 +23,9 @@ struct drm_device;
23struct rcar_du_device; 23struct rcar_du_device;
24 24
25#define RCAR_DU_FEATURE_CRTC_IRQ_CLOCK BIT(0) /* Per-CRTC IRQ and clock */ 25#define RCAR_DU_FEATURE_CRTC_IRQ_CLOCK BIT(0) /* Per-CRTC IRQ and clock */
26#define RCAR_DU_FEATURE_EXT_CTRL_REGS BIT(1) /* Has extended control registers */ 26#define RCAR_DU_FEATURE_VSP1_SOURCE BIT(1) /* Has inputs from VSP1 */
27#define RCAR_DU_FEATURE_VSP1_SOURCE BIT(2) /* Has inputs from VSP1 */ 27#define RCAR_DU_FEATURE_INTERLACED BIT(2) /* HW supports interlaced */
28#define RCAR_DU_FEATURE_INTERLACED BIT(3) /* HW supports interlaced */ 28#define RCAR_DU_FEATURE_TVM_SYNC BIT(3) /* Has TV switch/sync modes */
29#define RCAR_DU_FEATURE_TVM_SYNC BIT(4) /* Has TV switch/sync modes */
30 29
31#define RCAR_DU_QUIRK_ALIGN_128B BIT(0) /* Align pitches to 128 bytes */ 30#define RCAR_DU_QUIRK_ALIGN_128B BIT(0) /* Align pitches to 128 bytes */
32 31
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_group.c b/drivers/gpu/drm/rcar-du/rcar_du_group.c
index cebf313c6e1f..3366cda6086c 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_group.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_group.c
@@ -147,7 +147,7 @@ static void rcar_du_group_setup(struct rcar_du_group *rgrp)
147 147
148 rcar_du_group_setup_pins(rgrp); 148 rcar_du_group_setup_pins(rgrp);
149 149
150 if (rcar_du_has(rgrp->dev, RCAR_DU_FEATURE_EXT_CTRL_REGS)) { 150 if (rcdu->info->gen >= 2) {
151 rcar_du_group_setup_defr8(rgrp); 151 rcar_du_group_setup_defr8(rgrp);
152 rcar_du_group_setup_didsr(rgrp); 152 rcar_du_group_setup_didsr(rgrp);
153 } 153 }
@@ -262,7 +262,7 @@ int rcar_du_set_dpad0_vsp1_routing(struct rcar_du_device *rcdu)
262 unsigned int index; 262 unsigned int index;
263 int ret; 263 int ret;
264 264
265 if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_EXT_CTRL_REGS)) 265 if (rcdu->info->gen < 2)
266 return 0; 266 return 0;
267 267
268 /* 268 /*