Lines Matching refs:chan

23 #include "chan.h"
54 r535_chan_user(struct nvkm_disp_chan *chan, u64 *psize)
56 switch (chan->object.oclass & 0xff) {
58 case 0x7e: *psize = 0x01000; return 0x690000 + (chan->head * *psize);
59 case 0x7b: *psize = 0x01000; return 0x6b0000 + (chan->head * *psize);
60 case 0x7a: *psize = 0x01000; return 0x6d8000 + (chan->head * *psize);
70 r535_chan_intr(struct nvkm_disp_chan *chan, bool en)
75 r535_chan_fini(struct nvkm_disp_chan *chan)
77 nvkm_gsp_rm_free(&chan->rm.object);
81 r535_chan_push(struct nvkm_disp_chan *chan)
83 struct nvkm_gsp *gsp = chan->disp->engine.subdev.device->gsp;
92 if (chan->memory) {
93 switch (nvkm_memory_target(chan->memory)) {
110 ctrl->physicalAddr = nvkm_memory_addr(chan->memory);
111 ctrl->limit = nvkm_memory_size(chan->memory) - 1;
114 ctrl->hclass = chan->object.oclass;
115 ctrl->channelInstance = chan->head;
116 ctrl->valid = ((chan->object.oclass & 0xff) != 0x7a) ? 1 : 0;
122 r535_curs_init(struct nvkm_disp_chan *chan)
127 ret = r535_chan_push(chan);
131 args = nvkm_gsp_rm_alloc_get(&chan->disp->rm.object,
132 (chan->object.oclass << 16) | chan->head,
133 chan->object.oclass, sizeof(*args), &chan->rm.object);
137 args->channelInstance = chan->head;
139 return nvkm_gsp_rm_alloc_wr(&chan->rm.object, args);
157 r535_dmac_bind(struct nvkm_disp_chan *chan, struct nvkm_object *object, u32 handle)
159 return nvkm_ramht_insert(chan->disp->ramht, object, chan->chid.user, -9, handle,
160 chan->chid.user << 25 |
161 (chan->disp->rm.client.object.handle & 0x3fff));
165 r535_dmac_fini(struct nvkm_disp_chan *chan)
167 struct nvkm_device *device = chan->disp->engine.subdev.device;
168 const u32 uoff = (chan->chid.user - 1) * 0x1000;
170 chan->suspend_put = nvkm_rd32(device, 0x690000 + uoff);
171 r535_chan_fini(chan);
175 r535_dmac_init(struct nvkm_disp_chan *chan)
180 ret = r535_chan_push(chan);
184 args = nvkm_gsp_rm_alloc_get(&chan->disp->rm.object,
185 (chan->object.oclass << 16) | chan->head,
186 chan->object.oclass, sizeof(*args), &chan->rm.object);
190 args->channelInstance = chan->head;
191 args->offset = chan->suspend_put;
193 return nvkm_gsp_rm_alloc_wr(&chan->rm.object, args);
197 r535_dmac_push(struct nvkm_disp_chan *chan, u64 memory)
199 chan->memory = nvkm_umem_search(chan->object.client, memory);
200 if (IS_ERR(chan->memory))
201 return PTR_ERR(chan->memory);
238 r535_core_fini(struct nvkm_disp_chan *chan)
240 struct nvkm_device *device = chan->disp->engine.subdev.device;
242 chan->suspend_put = nvkm_rd32(device, 0x680000);
243 r535_chan_fini(chan);
1698 case 0x7d: rm->user[i] = hw->user[i]; rm->user[i].chan = &r535_core; break;
1699 case 0x7e: rm->user[i] = hw->user[i]; rm->user[i].chan = &r535_wndw; break;
1700 case 0x7b: rm->user[i] = hw->user[i]; rm->user[i].chan = &r535_wimm; break;
1701 case 0x7a: rm->user[i] = hw->user[i]; rm->user[i].chan = &r535_curs; break;