diff options
author | Dave Airlie <airlied@redhat.com> | 2016-05-16 17:06:14 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-05-16 17:06:14 -0400 |
commit | 99ee87295017e36abb6925e6139ca303cb55aee7 (patch) | |
tree | 259fb5d2fd348147fd17378fdbf98761c32116e5 | |
parent | 76e9cab5403809fa1fa6f698d2f7c1b7dd224022 (diff) | |
parent | 9ecb549867d7f642f0379f574f0e52870009a8bf (diff) |
Merge tag 'topic/drm-misc-2016-05-13' of git://anongit.freedesktop.org/drm-intel into drm-next
I kinda hoped that I could still sneak in Noralf's
drm_simple_display_pipe, since there's intereset by others now (for tilcdc
at least). But it wasn't ready by a hair. Oh well.
Otherwise random stuff plus prep patches from Noralf.
* tag 'topic/drm-misc-2016-05-13' of git://anongit.freedesktop.org/drm-intel:
drm/atomic: Add drm_atomic_helper_best_encoder()
drm/atomic: Don't skip drm_bridge_*() calls if !drm_encoder_helper_funcs
drm/fb-cma-helper: Hook up to DocBook and fix some docs
drm/fb-helper: Remove mention of CONFIG_FB_DEFERRED_IO in docs
drm/sti: include linux/seq_file.h where needed
drm/tegra: Use lockless gem BO free callback
drm/exynos: Use lockless gem BO free callback
drm: Make drm_encoder_helper_funcs optional
-rw-r--r-- | Documentation/DocBook/gpu.tmpl | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_atomic_helper.c | 49 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_crtc_helper.c | 41 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_fb_cma_helper.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 16 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_drv.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_cursor.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_gdp.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_hda.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_hqvdp.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_mixer.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_tvout.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/sti/sti_vid.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/tegra/drm.c | 2 | ||||
-rw-r--r-- | include/drm/drm_atomic_helper.h | 2 |
15 files changed, 95 insertions, 38 deletions
diff --git a/Documentation/DocBook/gpu.tmpl b/Documentation/DocBook/gpu.tmpl index 9dd48f7490df..4a0c599b6a6d 100644 --- a/Documentation/DocBook/gpu.tmpl +++ b/Documentation/DocBook/gpu.tmpl | |||
@@ -1617,6 +1617,11 @@ void intel_crt_init(struct drm_device *dev) | |||
1617 | !Iinclude/drm/drm_fb_helper.h | 1617 | !Iinclude/drm/drm_fb_helper.h |
1618 | </sect2> | 1618 | </sect2> |
1619 | <sect2> | 1619 | <sect2> |
1620 | <title>Framebuffer CMA Helper Functions Reference</title> | ||
1621 | !Pdrivers/gpu/drm/drm_fb_cma_helper.c framebuffer cma helper functions | ||
1622 | !Edrivers/gpu/drm/drm_fb_cma_helper.c | ||
1623 | </sect2> | ||
1624 | <sect2> | ||
1620 | <title>Display Port Helper Functions Reference</title> | 1625 | <title>Display Port Helper Functions Reference</title> |
1621 | !Pdrivers/gpu/drm/drm_dp_helper.c dp helpers | 1626 | !Pdrivers/gpu/drm/drm_dp_helper.c dp helpers |
1622 | !Iinclude/drm/drm_dp_helper.h | 1627 | !Iinclude/drm/drm_dp_helper.h |
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 997fd21e5388..43a0b3dfa846 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c | |||
@@ -384,8 +384,6 @@ mode_fixup(struct drm_atomic_state *state) | |||
384 | */ | 384 | */ |
385 | encoder = conn_state->best_encoder; | 385 | encoder = conn_state->best_encoder; |
386 | funcs = encoder->helper_private; | 386 | funcs = encoder->helper_private; |
387 | if (!funcs) | ||
388 | continue; | ||
389 | 387 | ||
390 | ret = drm_bridge_mode_fixup(encoder->bridge, &crtc_state->mode, | 388 | ret = drm_bridge_mode_fixup(encoder->bridge, &crtc_state->mode, |
391 | &crtc_state->adjusted_mode); | 389 | &crtc_state->adjusted_mode); |
@@ -394,7 +392,7 @@ mode_fixup(struct drm_atomic_state *state) | |||
394 | return -EINVAL; | 392 | return -EINVAL; |
395 | } | 393 | } |
396 | 394 | ||
397 | if (funcs->atomic_check) { | 395 | if (funcs && funcs->atomic_check) { |
398 | ret = funcs->atomic_check(encoder, crtc_state, | 396 | ret = funcs->atomic_check(encoder, crtc_state, |
399 | conn_state); | 397 | conn_state); |
400 | if (ret) { | 398 | if (ret) { |
@@ -402,7 +400,7 @@ mode_fixup(struct drm_atomic_state *state) | |||
402 | encoder->base.id, encoder->name); | 400 | encoder->base.id, encoder->name); |
403 | return ret; | 401 | return ret; |
404 | } | 402 | } |
405 | } else if (funcs->mode_fixup) { | 403 | } else if (funcs && funcs->mode_fixup) { |
406 | ret = funcs->mode_fixup(encoder, &crtc_state->mode, | 404 | ret = funcs->mode_fixup(encoder, &crtc_state->mode, |
407 | &crtc_state->adjusted_mode); | 405 | &crtc_state->adjusted_mode); |
408 | if (!ret) { | 406 | if (!ret) { |
@@ -707,12 +705,14 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state) | |||
707 | drm_bridge_disable(encoder->bridge); | 705 | drm_bridge_disable(encoder->bridge); |
708 | 706 | ||
709 | /* Right function depends upon target state. */ | 707 | /* Right function depends upon target state. */ |
710 | if (connector->state->crtc && funcs->prepare) | 708 | if (funcs) { |
711 | funcs->prepare(encoder); | 709 | if (connector->state->crtc && funcs->prepare) |
712 | else if (funcs->disable) | 710 | funcs->prepare(encoder); |
713 | funcs->disable(encoder); | 711 | else if (funcs->disable) |
714 | else | 712 | funcs->disable(encoder); |
715 | funcs->dpms(encoder, DRM_MODE_DPMS_OFF); | 713 | else if (funcs->dpms) |
714 | funcs->dpms(encoder, DRM_MODE_DPMS_OFF); | ||
715 | } | ||
716 | 716 | ||
717 | drm_bridge_post_disable(encoder->bridge); | 717 | drm_bridge_post_disable(encoder->bridge); |
718 | } | 718 | } |
@@ -873,7 +873,7 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) | |||
873 | * Each encoder has at most one connector (since we always steal | 873 | * Each encoder has at most one connector (since we always steal |
874 | * it away), so we won't call mode_set hooks twice. | 874 | * it away), so we won't call mode_set hooks twice. |
875 | */ | 875 | */ |
876 | if (funcs->mode_set) | 876 | if (funcs && funcs->mode_set) |
877 | funcs->mode_set(encoder, mode, adjusted_mode); | 877 | funcs->mode_set(encoder, mode, adjusted_mode); |
878 | 878 | ||
879 | drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode); | 879 | drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode); |
@@ -974,10 +974,12 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, | |||
974 | */ | 974 | */ |
975 | drm_bridge_pre_enable(encoder->bridge); | 975 | drm_bridge_pre_enable(encoder->bridge); |
976 | 976 | ||
977 | if (funcs->enable) | 977 | if (funcs) { |
978 | funcs->enable(encoder); | 978 | if (funcs->enable) |
979 | else | 979 | funcs->enable(encoder); |
980 | funcs->commit(encoder); | 980 | else if (funcs->commit) |
981 | funcs->commit(encoder); | ||
982 | } | ||
981 | 983 | ||
982 | drm_bridge_enable(encoder->bridge); | 984 | drm_bridge_enable(encoder->bridge); |
983 | } | 985 | } |
@@ -2481,6 +2483,23 @@ backoff: | |||
2481 | EXPORT_SYMBOL(drm_atomic_helper_connector_dpms); | 2483 | EXPORT_SYMBOL(drm_atomic_helper_connector_dpms); |
2482 | 2484 | ||
2483 | /** | 2485 | /** |
2486 | * drm_atomic_helper_best_encoder - Helper for &drm_connector_helper_funcs | ||
2487 | * ->best_encoder callback | ||
2488 | * @connector: Connector control structure | ||
2489 | * | ||
2490 | * This is a &drm_connector_helper_funcs ->best_encoder callback helper for | ||
2491 | * connectors that support exactly 1 encoder, statically determined at driver | ||
2492 | * init time. | ||
2493 | */ | ||
2494 | struct drm_encoder * | ||
2495 | drm_atomic_helper_best_encoder(struct drm_connector *connector) | ||
2496 | { | ||
2497 | WARN_ON(connector->encoder_ids[1]); | ||
2498 | return drm_encoder_find(connector->dev, connector->encoder_ids[0]); | ||
2499 | } | ||
2500 | EXPORT_SYMBOL(drm_atomic_helper_best_encoder); | ||
2501 | |||
2502 | /** | ||
2484 | * DOC: atomic state reset and initialization | 2503 | * DOC: atomic state reset and initialization |
2485 | * | 2504 | * |
2486 | * Both the drm core and the atomic helpers assume that there is always the full | 2505 | * Both the drm core and the atomic helpers assume that there is always the full |
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index f47a252ffa89..a6e42433ef0e 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
@@ -170,11 +170,14 @@ drm_encoder_disable(struct drm_encoder *encoder) | |||
170 | { | 170 | { |
171 | const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; | 171 | const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; |
172 | 172 | ||
173 | if (!encoder_funcs) | ||
174 | return; | ||
175 | |||
173 | drm_bridge_disable(encoder->bridge); | 176 | drm_bridge_disable(encoder->bridge); |
174 | 177 | ||
175 | if (encoder_funcs->disable) | 178 | if (encoder_funcs->disable) |
176 | (*encoder_funcs->disable)(encoder); | 179 | (*encoder_funcs->disable)(encoder); |
177 | else | 180 | else if (encoder_funcs->dpms) |
178 | (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF); | 181 | (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF); |
179 | 182 | ||
180 | drm_bridge_post_disable(encoder->bridge); | 183 | drm_bridge_post_disable(encoder->bridge); |
@@ -248,6 +251,9 @@ drm_crtc_prepare_encoders(struct drm_device *dev) | |||
248 | 251 | ||
249 | drm_for_each_encoder(encoder, dev) { | 252 | drm_for_each_encoder(encoder, dev) { |
250 | encoder_funcs = encoder->helper_private; | 253 | encoder_funcs = encoder->helper_private; |
254 | if (!encoder_funcs) | ||
255 | continue; | ||
256 | |||
251 | /* Disable unused encoders */ | 257 | /* Disable unused encoders */ |
252 | if (encoder->crtc == NULL) | 258 | if (encoder->crtc == NULL) |
253 | drm_encoder_disable(encoder); | 259 | drm_encoder_disable(encoder); |
@@ -326,6 +332,10 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
326 | if (encoder->crtc != crtc) | 332 | if (encoder->crtc != crtc) |
327 | continue; | 333 | continue; |
328 | 334 | ||
335 | encoder_funcs = encoder->helper_private; | ||
336 | if (!encoder_funcs) | ||
337 | continue; | ||
338 | |||
329 | ret = drm_bridge_mode_fixup(encoder->bridge, | 339 | ret = drm_bridge_mode_fixup(encoder->bridge, |
330 | mode, adjusted_mode); | 340 | mode, adjusted_mode); |
331 | if (!ret) { | 341 | if (!ret) { |
@@ -360,11 +370,15 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
360 | if (encoder->crtc != crtc) | 370 | if (encoder->crtc != crtc) |
361 | continue; | 371 | continue; |
362 | 372 | ||
373 | encoder_funcs = encoder->helper_private; | ||
374 | if (!encoder_funcs) | ||
375 | continue; | ||
376 | |||
363 | drm_bridge_disable(encoder->bridge); | 377 | drm_bridge_disable(encoder->bridge); |
364 | 378 | ||
365 | encoder_funcs = encoder->helper_private; | ||
366 | /* Disable the encoders as the first thing we do. */ | 379 | /* Disable the encoders as the first thing we do. */ |
367 | encoder_funcs->prepare(encoder); | 380 | if (encoder_funcs->prepare) |
381 | encoder_funcs->prepare(encoder); | ||
368 | 382 | ||
369 | drm_bridge_post_disable(encoder->bridge); | 383 | drm_bridge_post_disable(encoder->bridge); |
370 | } | 384 | } |
@@ -385,11 +399,15 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
385 | if (encoder->crtc != crtc) | 399 | if (encoder->crtc != crtc) |
386 | continue; | 400 | continue; |
387 | 401 | ||
402 | encoder_funcs = encoder->helper_private; | ||
403 | if (!encoder_funcs) | ||
404 | continue; | ||
405 | |||
388 | DRM_DEBUG_KMS("[ENCODER:%d:%s] set [MODE:%d:%s]\n", | 406 | DRM_DEBUG_KMS("[ENCODER:%d:%s] set [MODE:%d:%s]\n", |
389 | encoder->base.id, encoder->name, | 407 | encoder->base.id, encoder->name, |
390 | mode->base.id, mode->name); | 408 | mode->base.id, mode->name); |
391 | encoder_funcs = encoder->helper_private; | 409 | if (encoder_funcs->mode_set) |
392 | encoder_funcs->mode_set(encoder, mode, adjusted_mode); | 410 | encoder_funcs->mode_set(encoder, mode, adjusted_mode); |
393 | 411 | ||
394 | drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode); | 412 | drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode); |
395 | } | 413 | } |
@@ -402,10 +420,14 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, | |||
402 | if (encoder->crtc != crtc) | 420 | if (encoder->crtc != crtc) |
403 | continue; | 421 | continue; |
404 | 422 | ||
423 | encoder_funcs = encoder->helper_private; | ||
424 | if (!encoder_funcs) | ||
425 | continue; | ||
426 | |||
405 | drm_bridge_pre_enable(encoder->bridge); | 427 | drm_bridge_pre_enable(encoder->bridge); |
406 | 428 | ||
407 | encoder_funcs = encoder->helper_private; | 429 | if (encoder_funcs->commit) |
408 | encoder_funcs->commit(encoder); | 430 | encoder_funcs->commit(encoder); |
409 | 431 | ||
410 | drm_bridge_enable(encoder->bridge); | 432 | drm_bridge_enable(encoder->bridge); |
411 | } | 433 | } |
@@ -790,12 +812,15 @@ static void drm_helper_encoder_dpms(struct drm_encoder *encoder, int mode) | |||
790 | struct drm_bridge *bridge = encoder->bridge; | 812 | struct drm_bridge *bridge = encoder->bridge; |
791 | const struct drm_encoder_helper_funcs *encoder_funcs; | 813 | const struct drm_encoder_helper_funcs *encoder_funcs; |
792 | 814 | ||
815 | encoder_funcs = encoder->helper_private; | ||
816 | if (!encoder_funcs) | ||
817 | return; | ||
818 | |||
793 | if (mode == DRM_MODE_DPMS_ON) | 819 | if (mode == DRM_MODE_DPMS_ON) |
794 | drm_bridge_pre_enable(bridge); | 820 | drm_bridge_pre_enable(bridge); |
795 | else | 821 | else |
796 | drm_bridge_disable(bridge); | 822 | drm_bridge_disable(bridge); |
797 | 823 | ||
798 | encoder_funcs = encoder->helper_private; | ||
799 | if (encoder_funcs->dpms) | 824 | if (encoder_funcs->dpms) |
800 | encoder_funcs->dpms(encoder, mode); | 825 | encoder_funcs->dpms(encoder, mode); |
801 | 826 | ||
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c index 086f600a975a..3165ac0e93e5 100644 --- a/drivers/gpu/drm/drm_fb_cma_helper.c +++ b/drivers/gpu/drm/drm_fb_cma_helper.c | |||
@@ -43,14 +43,12 @@ struct drm_fbdev_cma { | |||
43 | * Provides helper functions for creating a cma (contiguous memory allocator) | 43 | * Provides helper functions for creating a cma (contiguous memory allocator) |
44 | * backed framebuffer. | 44 | * backed framebuffer. |
45 | * | 45 | * |
46 | * drm_fb_cma_create() is used in the | 46 | * drm_fb_cma_create() is used in the &drm_mode_config_funcs ->fb_create |
47 | * (struct drm_mode_config_funcs *)->fb_create callback function to create the | 47 | * callback function to create a cma backed framebuffer. |
48 | * cma backed framebuffer. | ||
49 | * | 48 | * |
50 | * An fbdev framebuffer backed by cma is also available by calling | 49 | * An fbdev framebuffer backed by cma is also available by calling |
51 | * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down. | 50 | * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down. |
52 | * If CONFIG_FB_DEFERRED_IO is enabled and the callback | 51 | * If the &drm_framebuffer_funcs ->dirty callback is set, fb_deferred_io |
53 | * (struct drm_framebuffer_funcs)->dirty is set, fb_deferred_io | ||
54 | * will be set up automatically. dirty() is called by | 52 | * will be set up automatically. dirty() is called by |
55 | * drm_fb_helper_deferred_io() in process context (struct delayed_work). | 53 | * drm_fb_helper_deferred_io() in process context (struct delayed_work). |
56 | * | 54 | * |
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 385284bc773c..e03f8ad90b3a 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c | |||
@@ -85,14 +85,14 @@ static LIST_HEAD(kernel_fb_helper_list); | |||
85 | * should call drm_fb_helper_single_add_all_connectors() followed by | 85 | * should call drm_fb_helper_single_add_all_connectors() followed by |
86 | * drm_fb_helper_initial_config(). | 86 | * drm_fb_helper_initial_config(). |
87 | * | 87 | * |
88 | * If CONFIG_FB_DEFERRED_IO is enabled and &drm_framebuffer_funcs ->dirty is | 88 | * If &drm_framebuffer_funcs ->dirty is set, the |
89 | * set, the drm_fb_helper_{cfb,sys}_{write,fillrect,copyarea,imageblit} | 89 | * drm_fb_helper_{cfb,sys}_{write,fillrect,copyarea,imageblit} functions will |
90 | * functions will accumulate changes and schedule &fb_helper .dirty_work to run | 90 | * accumulate changes and schedule &drm_fb_helper ->dirty_work to run right |
91 | * right away. This worker then calls the dirty() function ensuring that it | 91 | * away. This worker then calls the dirty() function ensuring that it will |
92 | * will always run in process context since the fb_*() function could be | 92 | * always run in process context since the fb_*() function could be running in |
93 | * running in atomic context. If drm_fb_helper_deferred_io() is used as the | 93 | * atomic context. If drm_fb_helper_deferred_io() is used as the deferred_io |
94 | * deferred_io callback it will also schedule dirty_work with the damage | 94 | * callback it will also schedule dirty_work with the damage collected from the |
95 | * collected from the mmap page writes. | 95 | * mmap page writes. |
96 | */ | 96 | */ |
97 | 97 | ||
98 | /** | 98 | /** |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 6c4dd49de993..21c719e8e02b 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c | |||
@@ -418,7 +418,7 @@ static struct drm_driver exynos_drm_driver = { | |||
418 | .get_vblank_counter = drm_vblank_no_hw_counter, | 418 | .get_vblank_counter = drm_vblank_no_hw_counter, |
419 | .enable_vblank = exynos_drm_crtc_enable_vblank, | 419 | .enable_vblank = exynos_drm_crtc_enable_vblank, |
420 | .disable_vblank = exynos_drm_crtc_disable_vblank, | 420 | .disable_vblank = exynos_drm_crtc_disable_vblank, |
421 | .gem_free_object = exynos_drm_gem_free_object, | 421 | .gem_free_object_unlocked = exynos_drm_gem_free_object, |
422 | .gem_vm_ops = &exynos_drm_gem_vm_ops, | 422 | .gem_vm_ops = &exynos_drm_gem_vm_ops, |
423 | .dumb_create = exynos_drm_gem_dumb_create, | 423 | .dumb_create = exynos_drm_gem_dumb_create, |
424 | .dumb_map_offset = exynos_drm_gem_dumb_map_offset, | 424 | .dumb_map_offset = exynos_drm_gem_dumb_map_offset, |
diff --git a/drivers/gpu/drm/sti/sti_cursor.c b/drivers/gpu/drm/sti/sti_cursor.c index 3abb400151ac..4e990299735c 100644 --- a/drivers/gpu/drm/sti/sti_cursor.c +++ b/drivers/gpu/drm/sti/sti_cursor.c | |||
@@ -6,6 +6,8 @@ | |||
6 | * License terms: GNU General Public License (GPL), version 2 | 6 | * License terms: GNU General Public License (GPL), version 2 |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/seq_file.h> | ||
10 | |||
9 | #include <drm/drm_atomic.h> | 11 | #include <drm/drm_atomic.h> |
10 | #include <drm/drm_fb_cma_helper.h> | 12 | #include <drm/drm_fb_cma_helper.h> |
11 | #include <drm/drm_gem_cma_helper.h> | 13 | #include <drm/drm_gem_cma_helper.h> |
diff --git a/drivers/gpu/drm/sti/sti_gdp.c b/drivers/gpu/drm/sti/sti_gdp.c index ff3d3e7e7704..ff33c38da197 100644 --- a/drivers/gpu/drm/sti/sti_gdp.c +++ b/drivers/gpu/drm/sti/sti_gdp.c | |||
@@ -5,6 +5,7 @@ | |||
5 | * for STMicroelectronics. | 5 | * for STMicroelectronics. |
6 | * License terms: GNU General Public License (GPL), version 2 | 6 | * License terms: GNU General Public License (GPL), version 2 |
7 | */ | 7 | */ |
8 | #include <linux/seq_file.h> | ||
8 | 9 | ||
9 | #include <drm/drm_atomic.h> | 10 | #include <drm/drm_atomic.h> |
10 | #include <drm/drm_fb_cma_helper.h> | 11 | #include <drm/drm_fb_cma_helper.h> |
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c index ec0d017eaf1a..f7d3464cdf09 100644 --- a/drivers/gpu/drm/sti/sti_hda.c +++ b/drivers/gpu/drm/sti/sti_hda.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/component.h> | 8 | #include <linux/component.h> |
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/platform_device.h> | 10 | #include <linux/platform_device.h> |
11 | #include <linux/seq_file.h> | ||
11 | 12 | ||
12 | #include <drm/drmP.h> | 13 | #include <drm/drmP.h> |
13 | #include <drm/drm_atomic_helper.h> | 14 | #include <drm/drm_atomic_helper.h> |
diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c index e05b0dc523ff..1edec29b9e45 100644 --- a/drivers/gpu/drm/sti/sti_hqvdp.c +++ b/drivers/gpu/drm/sti/sti_hqvdp.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/component.h> | 7 | #include <linux/component.h> |
8 | #include <linux/firmware.h> | 8 | #include <linux/firmware.h> |
9 | #include <linux/reset.h> | 9 | #include <linux/reset.h> |
10 | #include <linux/seq_file.h> | ||
10 | 11 | ||
11 | #include <drm/drm_atomic.h> | 12 | #include <drm/drm_atomic.h> |
12 | #include <drm/drm_fb_cma_helper.h> | 13 | #include <drm/drm_fb_cma_helper.h> |
diff --git a/drivers/gpu/drm/sti/sti_mixer.c b/drivers/gpu/drm/sti/sti_mixer.c index e7425c38fc93..aed7801b51f7 100644 --- a/drivers/gpu/drm/sti/sti_mixer.c +++ b/drivers/gpu/drm/sti/sti_mixer.c | |||
@@ -5,6 +5,7 @@ | |||
5 | * for STMicroelectronics. | 5 | * for STMicroelectronics. |
6 | * License terms: GNU General Public License (GPL), version 2 | 6 | * License terms: GNU General Public License (GPL), version 2 |
7 | */ | 7 | */ |
8 | #include <linux/seq_file.h> | ||
8 | 9 | ||
9 | #include "sti_compositor.h" | 10 | #include "sti_compositor.h" |
10 | #include "sti_mixer.h" | 11 | #include "sti_mixer.h" |
diff --git a/drivers/gpu/drm/sti/sti_tvout.c b/drivers/gpu/drm/sti/sti_tvout.c index 2c99016443e5..f983db5a59da 100644 --- a/drivers/gpu/drm/sti/sti_tvout.c +++ b/drivers/gpu/drm/sti/sti_tvout.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/of_platform.h> | 12 | #include <linux/of_platform.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/reset.h> | 14 | #include <linux/reset.h> |
15 | #include <linux/seq_file.h> | ||
15 | 16 | ||
16 | #include <drm/drmP.h> | 17 | #include <drm/drmP.h> |
17 | #include <drm/drm_crtc_helper.h> | 18 | #include <drm/drm_crtc_helper.h> |
diff --git a/drivers/gpu/drm/sti/sti_vid.c b/drivers/gpu/drm/sti/sti_vid.c index 5a2c5dc3687b..523ed19f5ac6 100644 --- a/drivers/gpu/drm/sti/sti_vid.c +++ b/drivers/gpu/drm/sti/sti_vid.c | |||
@@ -3,6 +3,7 @@ | |||
3 | * Author: Fabien Dessenne <fabien.dessenne@st.com> for STMicroelectronics. | 3 | * Author: Fabien Dessenne <fabien.dessenne@st.com> for STMicroelectronics. |
4 | * License terms: GNU General Public License (GPL), version 2 | 4 | * License terms: GNU General Public License (GPL), version 2 |
5 | */ | 5 | */ |
6 | #include <linux/seq_file.h> | ||
6 | 7 | ||
7 | #include <drm/drmP.h> | 8 | #include <drm/drmP.h> |
8 | 9 | ||
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 71a52f4e688b..45deb8fd8e7c 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c | |||
@@ -932,7 +932,7 @@ static struct drm_driver tegra_drm_driver = { | |||
932 | .debugfs_cleanup = tegra_debugfs_cleanup, | 932 | .debugfs_cleanup = tegra_debugfs_cleanup, |
933 | #endif | 933 | #endif |
934 | 934 | ||
935 | .gem_free_object = tegra_bo_free_object, | 935 | .gem_free_object_unlocked = tegra_bo_free_object, |
936 | .gem_vm_ops = &tegra_bo_vm_ops, | 936 | .gem_vm_ops = &tegra_bo_vm_ops, |
937 | 937 | ||
938 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, | 938 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, |
diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h index 03642878bc51..ccca709a255b 100644 --- a/include/drm/drm_atomic_helper.h +++ b/include/drm/drm_atomic_helper.h | |||
@@ -110,6 +110,8 @@ int drm_atomic_helper_page_flip(struct drm_crtc *crtc, | |||
110 | uint32_t flags); | 110 | uint32_t flags); |
111 | int drm_atomic_helper_connector_dpms(struct drm_connector *connector, | 111 | int drm_atomic_helper_connector_dpms(struct drm_connector *connector, |
112 | int mode); | 112 | int mode); |
113 | struct drm_encoder * | ||
114 | drm_atomic_helper_best_encoder(struct drm_connector *connector); | ||
113 | 115 | ||
114 | /* default implementations for state handling */ | 116 | /* default implementations for state handling */ |
115 | void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc); | 117 | void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc); |