diff options
| author | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2018-11-24 12:57:17 -0500 |
|---|---|---|
| committer | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2019-01-13 20:51:24 -0500 |
| commit | cef0d9cfe4e5b6c756c268c1b7dda7fa257336fc (patch) | |
| tree | 8fba970806f0399ff260ea3d1b39631de8c07f95 /drivers | |
| parent | f41cb153e6faf0d1f4bbe0b0f15aa20de1e43e90 (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.c | 14 | ||||
| -rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_drv.h | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_group.c | 4 |
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 @@ | |||
| 36 | static const struct rcar_du_device_info rzg1_du_r8a7743_info = { | 36 | static 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 = { | |||
| 59 | static const struct rcar_du_device_info rzg1_du_r8a7745_info = { | 58 | static 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 = { | |||
| 81 | static const struct rcar_du_device_info rzg1_du_r8a77470_info = { | 79 | static 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 | ||
| 134 | static const struct rcar_du_device_info rcar_du_r8a7779_info = { | 131 | static 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 = { | |||
| 155 | static const struct rcar_du_device_info rcar_du_r8a7790_info = { | 152 | static 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 = { | |||
| 185 | static const struct rcar_du_device_info rcar_du_r8a7791_info = { | 181 | static 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 = { | |||
| 209 | static const struct rcar_du_device_info rcar_du_r8a7792_info = { | 204 | static 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 = { | |||
| 229 | static const struct rcar_du_device_info rcar_du_r8a7794_info = { | 223 | static 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 = { | |||
| 252 | static const struct rcar_du_device_info rcar_du_r8a7795_info = { | 245 | static 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 = { | |||
| 286 | static const struct rcar_du_device_info rcar_du_r8a7796_info = { | 278 | static 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 = { | |||
| 316 | static const struct rcar_du_device_info rcar_du_r8a77965_info = { | 307 | static 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 = { | |||
| 346 | static const struct rcar_du_device_info rcar_du_r8a77970_info = { | 336 | static 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 = { | |||
| 368 | static const struct rcar_du_device_info rcar_du_r8a7799x_info = { | 357 | static 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; | |||
| 23 | struct rcar_du_device; | 23 | struct 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 | /* |
