diff options
| -rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv04_crtc.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv50_crtc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/atombios_crtc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_mode.h | 7 | ||||
| -rw-r--r-- | include/drm/drm_crtc_helper.h | 7 |
8 files changed, 21 insertions, 13 deletions
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 8208e190faaa..d2849e4ea4d0 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c | |||
| @@ -289,8 +289,7 @@ int drm_fb_helper_debug_enter(struct fb_info *info) | |||
| 289 | mode_set->fb, | 289 | mode_set->fb, |
| 290 | mode_set->x, | 290 | mode_set->x, |
| 291 | mode_set->y, | 291 | mode_set->y, |
| 292 | 1); | 292 | ENTER_ATOMIC_MODE_SET); |
| 293 | |||
| 294 | } | 293 | } |
| 295 | } | 294 | } |
| 296 | 295 | ||
| @@ -336,7 +335,7 @@ int drm_fb_helper_debug_leave(struct fb_info *info) | |||
| 336 | 335 | ||
| 337 | drm_fb_helper_restore_lut_atomic(mode_set->crtc); | 336 | drm_fb_helper_restore_lut_atomic(mode_set->crtc); |
| 338 | funcs->mode_set_base_atomic(mode_set->crtc, fb, crtc->x, | 337 | funcs->mode_set_base_atomic(mode_set->crtc, fb, crtc->x, |
| 339 | crtc->y, 0); | 338 | crtc->y, LEAVE_ATOMIC_MODE_SET); |
| 340 | } | 339 | } |
| 341 | 340 | ||
| 342 | return 0; | 341 | return 0; |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 9109c00f3ead..96d08a9f3aaa 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -1492,7 +1492,7 @@ err_unpin: | |||
| 1492 | /* Assume fb object is pinned & idle & fenced and just update base pointers */ | 1492 | /* Assume fb object is pinned & idle & fenced and just update base pointers */ |
| 1493 | static int | 1493 | static int |
| 1494 | intel_pipe_set_base_atomic(struct drm_crtc *crtc, struct drm_framebuffer *fb, | 1494 | intel_pipe_set_base_atomic(struct drm_crtc *crtc, struct drm_framebuffer *fb, |
| 1495 | int x, int y, int enter) | 1495 | int x, int y, enum mode_set_atomic state) |
| 1496 | { | 1496 | { |
| 1497 | struct drm_device *dev = crtc->dev; | 1497 | struct drm_device *dev = crtc->dev; |
| 1498 | struct drm_i915_private *dev_priv = dev->dev_private; | 1498 | struct drm_i915_private *dev_priv = dev->dev_private; |
| @@ -1614,7 +1614,8 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 1614 | atomic_read(&obj_priv->pending_flip) == 0); | 1614 | atomic_read(&obj_priv->pending_flip) == 0); |
| 1615 | } | 1615 | } |
| 1616 | 1616 | ||
| 1617 | ret = intel_pipe_set_base_atomic(crtc, crtc->fb, x, y, 0); | 1617 | ret = intel_pipe_set_base_atomic(crtc, crtc->fb, x, y, |
| 1618 | LEAVE_ATOMIC_MODE_SET); | ||
| 1618 | if (ret) { | 1619 | if (ret) { |
| 1619 | i915_gem_object_unpin(to_intel_framebuffer(crtc->fb)->obj); | 1620 | i915_gem_object_unpin(to_intel_framebuffer(crtc->fb)->obj); |
| 1620 | mutex_unlock(&dev->struct_mutex); | 1621 | mutex_unlock(&dev->struct_mutex); |
diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c index 17f7cf0c11a8..c71abc2a34d5 100644 --- a/drivers/gpu/drm/nouveau/nv04_crtc.c +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c | |||
| @@ -860,12 +860,12 @@ nv04_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 860 | static int | 860 | static int |
| 861 | nv04_crtc_mode_set_base_atomic(struct drm_crtc *crtc, | 861 | nv04_crtc_mode_set_base_atomic(struct drm_crtc *crtc, |
| 862 | struct drm_framebuffer *fb, | 862 | struct drm_framebuffer *fb, |
| 863 | int x, int y, int enter) | 863 | int x, int y, enum mode_set_atomic state) |
| 864 | { | 864 | { |
| 865 | struct drm_nouveau_private *dev_priv = crtc->dev->dev_private; | 865 | struct drm_nouveau_private *dev_priv = crtc->dev->dev_private; |
| 866 | struct drm_device *dev = dev_priv->dev; | 866 | struct drm_device *dev = dev_priv->dev; |
| 867 | 867 | ||
| 868 | if (enter) | 868 | if (state == ENTER_ATOMIC_MODE_SET) |
| 869 | nouveau_fbcon_save_disable_accel(dev); | 869 | nouveau_fbcon_save_disable_accel(dev); |
| 870 | else | 870 | else |
| 871 | nouveau_fbcon_restore_accel(dev); | 871 | nouveau_fbcon_restore_accel(dev); |
diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c index ba91befd3734..16380d52cd88 100644 --- a/drivers/gpu/drm/nouveau/nv50_crtc.c +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c | |||
| @@ -708,7 +708,7 @@ nv50_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 708 | static int | 708 | static int |
| 709 | nv50_crtc_mode_set_base_atomic(struct drm_crtc *crtc, | 709 | nv50_crtc_mode_set_base_atomic(struct drm_crtc *crtc, |
| 710 | struct drm_framebuffer *fb, | 710 | struct drm_framebuffer *fb, |
| 711 | int x, int y, int enter) | 711 | int x, int y, enum mode_set_atomic state) |
| 712 | { | 712 | { |
| 713 | return nv50_crtc_do_mode_set_base(crtc, fb, x, y, true, true); | 713 | return nv50_crtc_do_mode_set_base(crtc, fb, x, y, true, true); |
| 714 | } | 714 | } |
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 176f424975ac..df2b6f2b35f8 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
| @@ -1270,7 +1270,7 @@ int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 1270 | 1270 | ||
| 1271 | int atombios_crtc_set_base_atomic(struct drm_crtc *crtc, | 1271 | int atombios_crtc_set_base_atomic(struct drm_crtc *crtc, |
| 1272 | struct drm_framebuffer *fb, | 1272 | struct drm_framebuffer *fb, |
| 1273 | int x, int y, int enter) | 1273 | int x, int y, enum mode_set_atomic state) |
| 1274 | { | 1274 | { |
| 1275 | struct drm_device *dev = crtc->dev; | 1275 | struct drm_device *dev = crtc->dev; |
| 1276 | struct radeon_device *rdev = dev->dev_private; | 1276 | struct radeon_device *rdev = dev->dev_private; |
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c index 326843ec51f6..ace2e6384d40 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c | |||
| @@ -353,7 +353,7 @@ int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 353 | 353 | ||
| 354 | int radeon_crtc_set_base_atomic(struct drm_crtc *crtc, | 354 | int radeon_crtc_set_base_atomic(struct drm_crtc *crtc, |
| 355 | struct drm_framebuffer *fb, | 355 | struct drm_framebuffer *fb, |
| 356 | int x, int y, int enter) | 356 | int x, int y, enum mode_set_atomic state) |
| 357 | { | 357 | { |
| 358 | return radeon_crtc_do_set_base(crtc, fb, x, y, 1); | 358 | return radeon_crtc_do_set_base(crtc, fb, x, y, 1); |
| 359 | } | 359 | } |
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h index f99e12daa81d..61b9243db217 100644 --- a/drivers/gpu/drm/radeon/radeon_mode.h +++ b/drivers/gpu/drm/radeon/radeon_mode.h | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #include <drm_edid.h> | 35 | #include <drm_edid.h> |
| 36 | #include <drm_dp_helper.h> | 36 | #include <drm_dp_helper.h> |
| 37 | #include <drm_fixed.h> | 37 | #include <drm_fixed.h> |
| 38 | #include <drm_crtc_helper.h> | ||
| 38 | #include <linux/i2c.h> | 39 | #include <linux/i2c.h> |
| 39 | #include <linux/i2c-id.h> | 40 | #include <linux/i2c-id.h> |
| 40 | #include <linux/i2c-algo-bit.h> | 41 | #include <linux/i2c-algo-bit.h> |
| @@ -526,7 +527,8 @@ extern int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 526 | struct drm_framebuffer *old_fb); | 527 | struct drm_framebuffer *old_fb); |
| 527 | extern int atombios_crtc_set_base_atomic(struct drm_crtc *crtc, | 528 | extern int atombios_crtc_set_base_atomic(struct drm_crtc *crtc, |
| 528 | struct drm_framebuffer *fb, | 529 | struct drm_framebuffer *fb, |
| 529 | int x, int y, int enter); | 530 | int x, int y, |
| 531 | enum mode_set_atomic state); | ||
| 530 | extern int atombios_crtc_mode_set(struct drm_crtc *crtc, | 532 | extern int atombios_crtc_mode_set(struct drm_crtc *crtc, |
| 531 | struct drm_display_mode *mode, | 533 | struct drm_display_mode *mode, |
| 532 | struct drm_display_mode *adjusted_mode, | 534 | struct drm_display_mode *adjusted_mode, |
| @@ -538,7 +540,8 @@ extern int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 538 | struct drm_framebuffer *old_fb); | 540 | struct drm_framebuffer *old_fb); |
| 539 | extern int radeon_crtc_set_base_atomic(struct drm_crtc *crtc, | 541 | extern int radeon_crtc_set_base_atomic(struct drm_crtc *crtc, |
| 540 | struct drm_framebuffer *fb, | 542 | struct drm_framebuffer *fb, |
| 541 | int x, int y, int enter); | 543 | int x, int y, |
| 544 | enum mode_set_atomic state); | ||
| 542 | extern int radeon_crtc_do_set_base(struct drm_crtc *crtc, | 545 | extern int radeon_crtc_do_set_base(struct drm_crtc *crtc, |
| 543 | struct drm_framebuffer *fb, | 546 | struct drm_framebuffer *fb, |
| 544 | int x, int y, int atomic); | 547 | int x, int y, int atomic); |
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h index 6a9f3935ea0b..73b071203dcc 100644 --- a/include/drm/drm_crtc_helper.h +++ b/include/drm/drm_crtc_helper.h | |||
| @@ -39,6 +39,11 @@ | |||
| 39 | 39 | ||
| 40 | #include <linux/fb.h> | 40 | #include <linux/fb.h> |
| 41 | 41 | ||
| 42 | enum mode_set_atomic { | ||
| 43 | LEAVE_ATOMIC_MODE_SET, | ||
| 44 | ENTER_ATOMIC_MODE_SET, | ||
| 45 | }; | ||
| 46 | |||
| 42 | struct drm_crtc_helper_funcs { | 47 | struct drm_crtc_helper_funcs { |
| 43 | /* | 48 | /* |
| 44 | * Control power levels on the CRTC. If the mode passed in is | 49 | * Control power levels on the CRTC. If the mode passed in is |
| @@ -62,7 +67,7 @@ struct drm_crtc_helper_funcs { | |||
| 62 | struct drm_framebuffer *old_fb); | 67 | struct drm_framebuffer *old_fb); |
| 63 | int (*mode_set_base_atomic)(struct drm_crtc *crtc, | 68 | int (*mode_set_base_atomic)(struct drm_crtc *crtc, |
| 64 | struct drm_framebuffer *fb, int x, int y, | 69 | struct drm_framebuffer *fb, int x, int y, |
| 65 | int is_enter); | 70 | enum mode_set_atomic); |
| 66 | 71 | ||
| 67 | /* reload the current crtc LUT */ | 72 | /* reload the current crtc LUT */ |
| 68 | void (*load_lut)(struct drm_crtc *crtc); | 73 | void (*load_lut)(struct drm_crtc *crtc); |
