diff options
| -rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/fifo/nv50.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/nv50.c b/drivers/gpu/drm/nouveau/core/engine/fifo/nv50.c index 89bf459d584b..e9b8217d0075 100644 --- a/drivers/gpu/drm/nouveau/core/engine/fifo/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/fifo/nv50.c | |||
| @@ -40,14 +40,13 @@ | |||
| 40 | * FIFO channel objects | 40 | * FIFO channel objects |
| 41 | ******************************************************************************/ | 41 | ******************************************************************************/ |
| 42 | 42 | ||
| 43 | void | 43 | static void |
| 44 | nv50_fifo_playlist_update(struct nv50_fifo_priv *priv) | 44 | nv50_fifo_playlist_update_locked(struct nv50_fifo_priv *priv) |
| 45 | { | 45 | { |
| 46 | struct nouveau_bar *bar = nouveau_bar(priv); | 46 | struct nouveau_bar *bar = nouveau_bar(priv); |
| 47 | struct nouveau_gpuobj *cur; | 47 | struct nouveau_gpuobj *cur; |
| 48 | int i, p; | 48 | int i, p; |
| 49 | 49 | ||
| 50 | mutex_lock(&nv_subdev(priv)->mutex); | ||
| 51 | cur = priv->playlist[priv->cur_playlist]; | 50 | cur = priv->playlist[priv->cur_playlist]; |
| 52 | priv->cur_playlist = !priv->cur_playlist; | 51 | priv->cur_playlist = !priv->cur_playlist; |
| 53 | 52 | ||
| @@ -61,6 +60,13 @@ nv50_fifo_playlist_update(struct nv50_fifo_priv *priv) | |||
| 61 | nv_wr32(priv, 0x0032f4, cur->addr >> 12); | 60 | nv_wr32(priv, 0x0032f4, cur->addr >> 12); |
| 62 | nv_wr32(priv, 0x0032ec, p); | 61 | nv_wr32(priv, 0x0032ec, p); |
| 63 | nv_wr32(priv, 0x002500, 0x00000101); | 62 | nv_wr32(priv, 0x002500, 0x00000101); |
| 63 | } | ||
| 64 | |||
| 65 | void | ||
| 66 | nv50_fifo_playlist_update(struct nv50_fifo_priv *priv) | ||
| 67 | { | ||
| 68 | mutex_lock(&nv_subdev(priv)->mutex); | ||
| 69 | nv50_fifo_playlist_update_locked(priv); | ||
| 64 | mutex_unlock(&nv_subdev(priv)->mutex); | 70 | mutex_unlock(&nv_subdev(priv)->mutex); |
| 65 | } | 71 | } |
| 66 | 72 | ||
| @@ -489,7 +495,7 @@ nv50_fifo_init(struct nouveau_object *object) | |||
| 489 | 495 | ||
| 490 | for (i = 0; i < 128; i++) | 496 | for (i = 0; i < 128; i++) |
| 491 | nv_wr32(priv, 0x002600 + (i * 4), 0x00000000); | 497 | nv_wr32(priv, 0x002600 + (i * 4), 0x00000000); |
| 492 | nv50_fifo_playlist_update(priv); | 498 | nv50_fifo_playlist_update_locked(priv); |
| 493 | 499 | ||
| 494 | nv_wr32(priv, 0x003200, 0x00000001); | 500 | nv_wr32(priv, 0x003200, 0x00000001); |
| 495 | nv_wr32(priv, 0x003250, 0x00000001); | 501 | nv_wr32(priv, 0x003250, 0x00000001); |
