diff options
-rw-r--r-- | drivers/gpu/drm/rcar-du/Kconfig | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_drv.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_plane.c | 45 |
3 files changed, 25 insertions, 37 deletions
diff --git a/drivers/gpu/drm/rcar-du/Kconfig b/drivers/gpu/drm/rcar-du/Kconfig index 11485a4a16ae..d4e0a39568f6 100644 --- a/drivers/gpu/drm/rcar-du/Kconfig +++ b/drivers/gpu/drm/rcar-du/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config DRM_RCAR_DU | 1 | config DRM_RCAR_DU |
2 | tristate "DRM Support for R-Car Display Unit" | 2 | tristate "DRM Support for R-Car Display Unit" |
3 | depends on DRM && ARM && HAVE_DMA_ATTRS | 3 | depends on DRM && ARM && HAVE_DMA_ATTRS && OF |
4 | depends on ARCH_SHMOBILE || COMPILE_TEST | 4 | depends on ARCH_SHMOBILE || COMPILE_TEST |
5 | select DRM_KMS_HELPER | 5 | select DRM_KMS_HELPER |
6 | select DRM_KMS_CMA_HELPER | 6 | select DRM_KMS_CMA_HELPER |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index feddda0aaea2..bebcc97db5e5 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c | |||
@@ -93,7 +93,7 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = { | |||
93 | * (currently unsupported) TCON output. | 93 | * (currently unsupported) TCON output. |
94 | */ | 94 | */ |
95 | [RCAR_DU_OUTPUT_DPAD0] = { | 95 | [RCAR_DU_OUTPUT_DPAD0] = { |
96 | .possible_crtcs = BIT(1), | 96 | .possible_crtcs = BIT(1) | BIT(0), |
97 | .encoder_type = DRM_MODE_ENCODER_NONE, | 97 | .encoder_type = DRM_MODE_ENCODER_NONE, |
98 | .port = 0, | 98 | .port = 0, |
99 | }, | 99 | }, |
@@ -106,15 +106,6 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = { | |||
106 | .num_lvds = 1, | 106 | .num_lvds = 1, |
107 | }; | 107 | }; |
108 | 108 | ||
109 | static const struct platform_device_id rcar_du_id_table[] = { | ||
110 | { "rcar-du-r8a7779", (kernel_ulong_t)&rcar_du_r8a7779_info }, | ||
111 | { "rcar-du-r8a7790", (kernel_ulong_t)&rcar_du_r8a7790_info }, | ||
112 | { "rcar-du-r8a7791", (kernel_ulong_t)&rcar_du_r8a7791_info }, | ||
113 | { } | ||
114 | }; | ||
115 | |||
116 | MODULE_DEVICE_TABLE(platform, rcar_du_id_table); | ||
117 | |||
118 | static const struct of_device_id rcar_du_of_table[] = { | 109 | static const struct of_device_id rcar_du_of_table[] = { |
119 | { .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info }, | 110 | { .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info }, |
120 | { .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info }, | 111 | { .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info }, |
@@ -167,8 +158,7 @@ static int rcar_du_load(struct drm_device *dev, unsigned long flags) | |||
167 | init_waitqueue_head(&rcdu->commit.wait); | 158 | init_waitqueue_head(&rcdu->commit.wait); |
168 | 159 | ||
169 | rcdu->dev = &pdev->dev; | 160 | rcdu->dev = &pdev->dev; |
170 | rcdu->info = np ? of_match_device(rcar_du_of_table, rcdu->dev)->data | 161 | rcdu->info = of_match_device(rcar_du_of_table, rcdu->dev)->data; |
171 | : (void *)platform_get_device_id(pdev)->driver_data; | ||
172 | rcdu->ddev = dev; | 162 | rcdu->ddev = dev; |
173 | dev->dev_private = rcdu; | 163 | dev->dev_private = rcdu; |
174 | 164 | ||
@@ -340,7 +330,6 @@ static struct platform_driver rcar_du_platform_driver = { | |||
340 | .pm = &rcar_du_pm_ops, | 330 | .pm = &rcar_du_pm_ops, |
341 | .of_match_table = rcar_du_of_table, | 331 | .of_match_table = rcar_du_of_table, |
342 | }, | 332 | }, |
343 | .id_table = rcar_du_id_table, | ||
344 | }; | 333 | }; |
345 | 334 | ||
346 | module_platform_driver(rcar_du_platform_driver); | 335 | module_platform_driver(rcar_du_platform_driver); |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_plane.c b/drivers/gpu/drm/rcar-du/rcar_du_plane.c index c66986414bb4..ffa583712cd9 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_plane.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_plane.c | |||
@@ -273,29 +273,6 @@ static const struct drm_plane_helper_funcs rcar_du_plane_helper_funcs = { | |||
273 | .atomic_update = rcar_du_plane_atomic_update, | 273 | .atomic_update = rcar_du_plane_atomic_update, |
274 | }; | 274 | }; |
275 | 275 | ||
276 | static void rcar_du_plane_reset(struct drm_plane *plane) | ||
277 | { | ||
278 | struct rcar_du_plane_state *state; | ||
279 | |||
280 | if (plane->state && plane->state->fb) | ||
281 | drm_framebuffer_unreference(plane->state->fb); | ||
282 | |||
283 | kfree(plane->state); | ||
284 | plane->state = NULL; | ||
285 | |||
286 | state = kzalloc(sizeof(*state), GFP_KERNEL); | ||
287 | if (state == NULL) | ||
288 | return; | ||
289 | |||
290 | state->hwindex = -1; | ||
291 | state->alpha = 255; | ||
292 | state->colorkey = RCAR_DU_COLORKEY_NONE; | ||
293 | state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1; | ||
294 | |||
295 | plane->state = &state->state; | ||
296 | plane->state->plane = plane; | ||
297 | } | ||
298 | |||
299 | static struct drm_plane_state * | 276 | static struct drm_plane_state * |
300 | rcar_du_plane_atomic_duplicate_state(struct drm_plane *plane) | 277 | rcar_du_plane_atomic_duplicate_state(struct drm_plane *plane) |
301 | { | 278 | { |
@@ -322,6 +299,28 @@ static void rcar_du_plane_atomic_destroy_state(struct drm_plane *plane, | |||
322 | kfree(to_rcar_plane_state(state)); | 299 | kfree(to_rcar_plane_state(state)); |
323 | } | 300 | } |
324 | 301 | ||
302 | static void rcar_du_plane_reset(struct drm_plane *plane) | ||
303 | { | ||
304 | struct rcar_du_plane_state *state; | ||
305 | |||
306 | if (plane->state) { | ||
307 | rcar_du_plane_atomic_destroy_state(plane, plane->state); | ||
308 | plane->state = NULL; | ||
309 | } | ||
310 | |||
311 | state = kzalloc(sizeof(*state), GFP_KERNEL); | ||
312 | if (state == NULL) | ||
313 | return; | ||
314 | |||
315 | state->hwindex = -1; | ||
316 | state->alpha = 255; | ||
317 | state->colorkey = RCAR_DU_COLORKEY_NONE; | ||
318 | state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1; | ||
319 | |||
320 | plane->state = &state->state; | ||
321 | plane->state->plane = plane; | ||
322 | } | ||
323 | |||
325 | static int rcar_du_plane_atomic_set_property(struct drm_plane *plane, | 324 | static int rcar_du_plane_atomic_set_property(struct drm_plane *plane, |
326 | struct drm_plane_state *state, | 325 | struct drm_plane_state *state, |
327 | struct drm_property *property, | 326 | struct drm_property *property, |