Lines Matching refs:chan

32 nv84_fence_crtc(struct nouveau_channel *chan, int crtc)  in nv84_fence_crtc()  argument
34 struct nv84_fence_chan *fctx = chan->fence; in nv84_fence_crtc()
39 nv84_fence_emit32(struct nouveau_channel *chan, u64 virtual, u32 sequence) in nv84_fence_emit32() argument
41 int ret = RING_SPACE(chan, 8); in nv84_fence_emit32()
43 BEGIN_NV04(chan, 0, NV11_SUBCHAN_DMA_SEMAPHORE, 1); in nv84_fence_emit32()
44 OUT_RING (chan, chan->vram.handle); in nv84_fence_emit32()
45 BEGIN_NV04(chan, 0, NV84_SUBCHAN_SEMAPHORE_ADDRESS_HIGH, 5); in nv84_fence_emit32()
46 OUT_RING (chan, upper_32_bits(virtual)); in nv84_fence_emit32()
47 OUT_RING (chan, lower_32_bits(virtual)); in nv84_fence_emit32()
48 OUT_RING (chan, sequence); in nv84_fence_emit32()
49 OUT_RING (chan, NV84_SUBCHAN_SEMAPHORE_TRIGGER_WRITE_LONG); in nv84_fence_emit32()
50 OUT_RING (chan, 0x00000000); in nv84_fence_emit32()
51 FIRE_RING (chan); in nv84_fence_emit32()
57 nv84_fence_sync32(struct nouveau_channel *chan, u64 virtual, u32 sequence) in nv84_fence_sync32() argument
59 int ret = RING_SPACE(chan, 7); in nv84_fence_sync32()
61 BEGIN_NV04(chan, 0, NV11_SUBCHAN_DMA_SEMAPHORE, 1); in nv84_fence_sync32()
62 OUT_RING (chan, chan->vram.handle); in nv84_fence_sync32()
63 BEGIN_NV04(chan, 0, NV84_SUBCHAN_SEMAPHORE_ADDRESS_HIGH, 4); in nv84_fence_sync32()
64 OUT_RING (chan, upper_32_bits(virtual)); in nv84_fence_sync32()
65 OUT_RING (chan, lower_32_bits(virtual)); in nv84_fence_sync32()
66 OUT_RING (chan, sequence); in nv84_fence_sync32()
67 OUT_RING (chan, NV84_SUBCHAN_SEMAPHORE_TRIGGER_ACQUIRE_GEQUAL); in nv84_fence_sync32()
68 FIRE_RING (chan); in nv84_fence_sync32()
76 struct nouveau_channel *chan = fence->channel; in nv84_fence_emit() local
77 struct nv84_fence_chan *fctx = chan->fence; in nv84_fence_emit()
78 u64 addr = chan->chid * 16; in nv84_fence_emit()
85 return fctx->base.emit32(chan, addr, fence->base.seqno); in nv84_fence_emit()
90 struct nouveau_channel *prev, struct nouveau_channel *chan) in nv84_fence_sync() argument
92 struct nv84_fence_chan *fctx = chan->fence; in nv84_fence_sync()
100 return fctx->base.sync32(chan, addr, fence->base.seqno); in nv84_fence_sync()
104 nv84_fence_read(struct nouveau_channel *chan) in nv84_fence_read() argument
106 struct nv84_fence_priv *priv = chan->drm->fence; in nv84_fence_read()
107 return nouveau_bo_rd32(priv->bo, chan->chid * 16/4); in nv84_fence_read()
111 nv84_fence_context_del(struct nouveau_channel *chan) in nv84_fence_context_del() argument
113 struct drm_device *dev = chan->drm->dev; in nv84_fence_context_del()
114 struct nv84_fence_priv *priv = chan->drm->fence; in nv84_fence_context_del()
115 struct nv84_fence_chan *fctx = chan->fence; in nv84_fence_context_del()
123 nouveau_bo_wr32(priv->bo, chan->chid * 16 / 4, fctx->base.sequence); in nv84_fence_context_del()
127 chan->fence = NULL; in nv84_fence_context_del()
132 nv84_fence_context_new(struct nouveau_channel *chan) in nv84_fence_context_new() argument
134 struct nouveau_cli *cli = (void *)chan->user.client; in nv84_fence_context_new()
135 struct nv84_fence_priv *priv = chan->drm->fence; in nv84_fence_context_new()
139 fctx = chan->fence = kzalloc(sizeof(*fctx), GFP_KERNEL); in nv84_fence_context_new()
143 nouveau_fence_context_new(chan, &fctx->base); in nv84_fence_context_new()
149 fctx->base.sequence = nv84_fence_read(chan); in nv84_fence_context_new()
158 for (i = 0; !ret && i < chan->drm->dev->mode_config.num_crtc; i++) { in nv84_fence_context_new()
159 struct nouveau_bo *bo = nv50_display_crtc_sema(chan->drm->dev, i); in nv84_fence_context_new()
164 nv84_fence_context_del(chan); in nv84_fence_context_new()