diff options
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_channel.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_dma.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drv.h | 1 |
3 files changed, 12 insertions, 6 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c index d1c7f8c911c7..343d718a9667 100644 --- a/drivers/gpu/drm/nouveau/nouveau_channel.c +++ b/drivers/gpu/drm/nouveau/nouveau_channel.c | |||
| @@ -158,6 +158,8 @@ nouveau_channel_alloc(struct drm_device *dev, struct nouveau_channel **chan_ret, | |||
| 158 | return ret; | 158 | return ret; |
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | nouveau_dma_pre_init(chan); | ||
| 162 | |||
| 161 | /* Locate channel's user control regs */ | 163 | /* Locate channel's user control regs */ |
| 162 | if (dev_priv->card_type < NV_40) | 164 | if (dev_priv->card_type < NV_40) |
| 163 | user = NV03_USER(channel); | 165 | user = NV03_USER(channel); |
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c b/drivers/gpu/drm/nouveau/nouveau_dma.c index 3f7f78e03d42..7afbe8b40d51 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dma.c +++ b/drivers/gpu/drm/nouveau/nouveau_dma.c | |||
| @@ -29,6 +29,15 @@ | |||
| 29 | #include "nouveau_drv.h" | 29 | #include "nouveau_drv.h" |
| 30 | #include "nouveau_dma.h" | 30 | #include "nouveau_dma.h" |
| 31 | 31 | ||
| 32 | void | ||
| 33 | nouveau_dma_pre_init(struct nouveau_channel *chan) | ||
| 34 | { | ||
| 35 | chan->dma.max = (chan->pushbuf_bo->bo.mem.size >> 2) - 2; | ||
| 36 | chan->dma.put = 0; | ||
| 37 | chan->dma.cur = chan->dma.put; | ||
| 38 | chan->dma.free = chan->dma.max - chan->dma.cur; | ||
| 39 | } | ||
| 40 | |||
| 32 | int | 41 | int |
| 33 | nouveau_dma_init(struct nouveau_channel *chan) | 42 | nouveau_dma_init(struct nouveau_channel *chan) |
| 34 | { | 43 | { |
| @@ -74,12 +83,6 @@ nouveau_dma_init(struct nouveau_channel *chan) | |||
| 74 | return ret; | 83 | return ret; |
| 75 | } | 84 | } |
| 76 | 85 | ||
| 77 | /* Initialise DMA vars */ | ||
| 78 | chan->dma.max = (chan->pushbuf_bo->bo.mem.size >> 2) - 2; | ||
| 79 | chan->dma.put = 0; | ||
| 80 | chan->dma.cur = chan->dma.put; | ||
| 81 | chan->dma.free = chan->dma.max - chan->dma.cur; | ||
| 82 | |||
| 83 | /* Insert NOPS for NOUVEAU_DMA_SKIPS */ | 86 | /* Insert NOPS for NOUVEAU_DMA_SKIPS */ |
| 84 | ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS); | 87 | ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS); |
| 85 | if (ret) | 88 | if (ret) |
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h index 4087a9a20ba9..026419fe8791 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h | |||
| @@ -837,6 +837,7 @@ nouveau_debugfs_channel_fini(struct nouveau_channel *chan) | |||
| 837 | #endif | 837 | #endif |
| 838 | 838 | ||
| 839 | /* nouveau_dma.c */ | 839 | /* nouveau_dma.c */ |
| 840 | extern void nouveau_dma_pre_init(struct nouveau_channel *); | ||
| 840 | extern int nouveau_dma_init(struct nouveau_channel *); | 841 | extern int nouveau_dma_init(struct nouveau_channel *); |
| 841 | extern int nouveau_dma_wait(struct nouveau_channel *, int size); | 842 | extern int nouveau_dma_wait(struct nouveau_channel *, int size); |
| 842 | 843 | ||
