aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/disp/nv50.c4
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_abi16.c5
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bo.c4
-rw-r--r--drivers/gpu/drm/nouveau/nv50_display.c1
4 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
index 5fa13267bd9f..02e369f80449 100644
--- a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
+++ b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
@@ -544,13 +544,13 @@ nv50_disp_curs_ofuncs = {
544static void 544static void
545nv50_disp_base_vblank_enable(struct nouveau_event *event, int head) 545nv50_disp_base_vblank_enable(struct nouveau_event *event, int head)
546{ 546{
547 nv_mask(event->priv, 0x61002c, (1 << head), (1 << head)); 547 nv_mask(event->priv, 0x61002c, (4 << head), (4 << head));
548} 548}
549 549
550static void 550static void
551nv50_disp_base_vblank_disable(struct nouveau_event *event, int head) 551nv50_disp_base_vblank_disable(struct nouveau_event *event, int head)
552{ 552{
553 nv_mask(event->priv, 0x61002c, (1 << head), (0 << head)); 553 nv_mask(event->priv, 0x61002c, (4 << head), 0);
554} 554}
555 555
556static int 556static int
diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
index 41241922263f..3b6dc883e150 100644
--- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
+++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
@@ -116,6 +116,11 @@ nouveau_abi16_chan_fini(struct nouveau_abi16 *abi16,
116{ 116{
117 struct nouveau_abi16_ntfy *ntfy, *temp; 117 struct nouveau_abi16_ntfy *ntfy, *temp;
118 118
119 /* wait for all activity to stop before releasing notify object, which
120 * may be still in use */
121 if (chan->chan && chan->ntfy)
122 nouveau_channel_idle(chan->chan);
123
119 /* cleanup notifier state */ 124 /* cleanup notifier state */
120 list_for_each_entry_safe(ntfy, temp, &chan->notifiers, head) { 125 list_for_each_entry_safe(ntfy, temp, &chan->notifiers, head) {
121 nouveau_abi16_ntfy_fini(chan, ntfy); 126 nouveau_abi16_ntfy_fini(chan, ntfy);
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 11ca82148edc..7ff10711a4d0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -801,7 +801,7 @@ nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
801 stride = 16 * 4; 801 stride = 16 * 4;
802 height = amount / stride; 802 height = amount / stride;
803 803
804 if (new_mem->mem_type == TTM_PL_VRAM && 804 if (old_mem->mem_type == TTM_PL_VRAM &&
805 nouveau_bo_tile_layout(nvbo)) { 805 nouveau_bo_tile_layout(nvbo)) {
806 ret = RING_SPACE(chan, 8); 806 ret = RING_SPACE(chan, 8);
807 if (ret) 807 if (ret)
@@ -823,7 +823,7 @@ nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
823 BEGIN_NV04(chan, NvSubCopy, 0x0200, 1); 823 BEGIN_NV04(chan, NvSubCopy, 0x0200, 1);
824 OUT_RING (chan, 1); 824 OUT_RING (chan, 1);
825 } 825 }
826 if (old_mem->mem_type == TTM_PL_VRAM && 826 if (new_mem->mem_type == TTM_PL_VRAM &&
827 nouveau_bo_tile_layout(nvbo)) { 827 nouveau_bo_tile_layout(nvbo)) {
828 ret = RING_SPACE(chan, 8); 828 ret = RING_SPACE(chan, 8);
829 if (ret) 829 if (ret)
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
index 87a5a56ed358..2db57990f65c 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -2276,6 +2276,7 @@ nv50_display_create(struct drm_device *dev)
2276 NV_WARN(drm, "failed to create encoder %d/%d/%d: %d\n", 2276 NV_WARN(drm, "failed to create encoder %d/%d/%d: %d\n",
2277 dcbe->location, dcbe->type, 2277 dcbe->location, dcbe->type,
2278 ffs(dcbe->or) - 1, ret); 2278 ffs(dcbe->or) - 1, ret);
2279 ret = 0;
2279 } 2280 }
2280 } 2281 }
2281 2282