Lines Matching full:disp
35 #include <subdev/bios/disp.h>
49 struct nvkm_device *device = pior->disp->engine.subdev.device; in nv50_pior_clock()
82 struct nvkm_device *device = pior->disp->engine.subdev.device; in nv50_pior_power()
100 struct nvkm_head *head = nvkm_head_find(ior->disp, __ffs(state->head)); in nv50_pior_depth()
121 struct nvkm_device *device = pior->disp->engine.subdev.device; in nv50_pior_state()
147 nv50_pior_new(struct nvkm_disp *disp, int id) in nv50_pior_new() argument
149 return nvkm_ior_new_(&nv50_pior, disp, PIOR, id, false); in nv50_pior_new()
153 nv50_pior_cnt(struct nvkm_disp *disp, unsigned long *pmask) in nv50_pior_cnt() argument
155 struct nvkm_device *device = disp->engine.subdev.device; in nv50_pior_cnt()
164 struct nvkm_device *device = ior->disp->engine.subdev.device; in nv50_sor_bl_set()
176 struct nvkm_device *device = ior->disp->engine.subdev.device; in nv50_sor_bl_get()
195 struct nvkm_device *device = sor->disp->engine.subdev.device; in nv50_sor_clock()
214 struct nvkm_device *device = sor->disp->engine.subdev.device; in nv50_sor_power()
233 struct nvkm_device *device = sor->disp->engine.subdev.device; in nv50_sor_state()
260 nv50_sor_new(struct nvkm_disp *disp, int id) in nv50_sor_new() argument
262 return nvkm_ior_new_(&nv50_sor, disp, SOR, id, false); in nv50_sor_new()
266 nv50_sor_cnt(struct nvkm_disp *disp, unsigned long *pmask) in nv50_sor_cnt() argument
268 struct nvkm_device *device = disp->engine.subdev.device; in nv50_sor_cnt()
277 struct nvkm_device *device = dac->disp->engine.subdev.device; in nv50_dac_clock()
286 struct nvkm_device *device = dac->disp->engine.subdev.device; in nv50_dac_sense()
315 struct nvkm_device *device = dac->disp->engine.subdev.device; in nv50_dac_power()
332 struct nvkm_device *device = dac->disp->engine.subdev.device; in nv50_dac_state()
356 nv50_dac_new(struct nvkm_disp *disp, int id) in nv50_dac_new() argument
358 return nvkm_ior_new_(&nv50_dac, disp, DAC, id, false); in nv50_dac_new()
362 nv50_dac_cnt(struct nvkm_disp *disp, unsigned long *pmask) in nv50_dac_cnt() argument
364 struct nvkm_device *device = disp->engine.subdev.device; in nv50_dac_cnt()
373 struct nvkm_device *device = head->disp->engine.subdev.device; in nv50_head_vblank_put()
381 struct nvkm_device *device = head->disp->engine.subdev.device; in nv50_head_vblank_get()
389 struct nvkm_device *device = head->disp->engine.subdev.device; in nv50_head_rgclk()
397 struct nvkm_device *device = head->disp->engine.subdev.device; in nv50_head_rgpos()
408 struct nvkm_device *device = head->disp->engine.subdev.device; in nv50_head_state()
437 nv50_head_new(struct nvkm_disp *disp, int id) in nv50_head_new() argument
439 return nvkm_head_new_(&nv50_head, disp, id); in nv50_head_new()
443 nv50_head_cnt(struct nvkm_disp *disp, unsigned long *pmask) in nv50_head_cnt() argument
451 nv50_disp_mthd_list(struct nvkm_disp *disp, int debug, u32 base, int c, in nv50_disp_mthd_list() argument
454 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_mthd_list()
482 struct nvkm_disp *disp = chan->disp; in nv50_disp_chan_mthd() local
483 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_chan_mthd()
513 nv50_disp_mthd_list(disp, debug, base, mthd->prev, in nv50_disp_chan_mthd()
522 struct nvkm_disp *disp = container_of(event, typeof(*disp), uevent); in nv50_disp_chan_uevent_fini() local
523 struct nvkm_device *device = disp->engine.subdev.device; in nv50_disp_chan_uevent_fini()
531 struct nvkm_disp *disp = container_of(event, typeof(*disp), uevent); in nv50_disp_chan_uevent_init() local
532 struct nvkm_device *device = disp->engine.subdev.device; in nv50_disp_chan_uevent_init()
538 nv50_disp_chan_uevent_send(struct nvkm_disp *disp, int chid) in nv50_disp_chan_uevent_send() argument
540 nvkm_event_ntfy(&disp->uevent, chid, NVKM_DISP_EVENT_CHAN_AWAKEN); in nv50_disp_chan_uevent_send()
559 struct nvkm_device *device = chan->disp->engine.subdev.device; in nv50_disp_chan_intr()
568 struct nvkm_disp *disp = chan->disp; in nv50_disp_pioc_fini() local
569 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_pioc_fini()
587 struct nvkm_disp *disp = chan->disp; in nv50_disp_pioc_init() local
588 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_pioc_init()
628 return nvkm_ramht_insert(chan->disp->ramht, object, chan->chid.user, -10, handle, in nv50_disp_dmac_bind()
635 struct nvkm_subdev *subdev = &chan->disp->engine.subdev; in nv50_disp_dmac_fini()
657 struct nvkm_subdev *subdev = &chan->disp->engine.subdev; in nv50_disp_dmac_init()
945 struct nvkm_subdev *subdev = &chan->disp->engine.subdev; in nv50_disp_core_fini()
965 struct nvkm_subdev *subdev = &chan->disp->engine.subdev; in nv50_disp_core_init()
1018 struct nvkm_bios *bios = head->disp->engine.subdev.device->bios; in nv50_disp_super_iedt()
1032 struct nvkm_subdev *subdev = &head->disp->engine.subdev; in nv50_disp_super_ied_on()
1101 nvbios_init(&head->disp->engine.subdev, iedt.script[id], in nv50_disp_super_ied_off()
1113 list_for_each_entry(ior, &head->disp->iors, head) { in nv50_disp_super_ior_asy()
1127 list_for_each_entry(ior, &head->disp->iors, head) { in nv50_disp_super_ior_arm()
1138 nv50_disp_super_3_0(struct nvkm_disp *disp, struct nvkm_head *head) in nv50_disp_super_3_0() argument
1159 struct nvkm_subdev *subdev = &head->disp->engine.subdev; in nv50_disp_super_2_2_dp()
1263 nv50_disp_super_2_2(struct nvkm_disp *disp, struct nvkm_head *head) in nv50_disp_super_2_2() argument
1308 nv50_disp_super_2_1(struct nvkm_disp *disp, struct nvkm_head *head) in nv50_disp_super_2_1() argument
1310 struct nvkm_devinit *devinit = disp->engine.subdev.device->devinit; in nv50_disp_super_2_1()
1318 nv50_disp_super_2_0(struct nvkm_disp *disp, struct nvkm_head *head) in nv50_disp_super_2_0() argument
1333 nv50_disp_super_1_0(struct nvkm_disp *disp, struct nvkm_head *head) in nv50_disp_super_1_0() argument
1348 nv50_disp_super_1(struct nvkm_disp *disp) in nv50_disp_super_1() argument
1353 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_super_1()
1358 list_for_each_entry(ior, &disp->iors, head) { in nv50_disp_super_1()
1367 struct nvkm_disp *disp = container_of(work, struct nvkm_disp, super.work); in nv50_disp_super() local
1368 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_super()
1373 mutex_lock(&disp->super.mutex); in nv50_disp_super()
1376 nvkm_debug(subdev, "supervisor %08x %08x\n", disp->super.pending, super); in nv50_disp_super()
1378 if (disp->super.pending & 0x00000010) { in nv50_disp_super()
1379 nv50_disp_chan_mthd(disp->chan[0], NV_DBG_DEBUG); in nv50_disp_super()
1380 nv50_disp_super_1(disp); in nv50_disp_super()
1381 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_super()
1386 nv50_disp_super_1_0(disp, head); in nv50_disp_super()
1389 if (disp->super.pending & 0x00000020) { in nv50_disp_super()
1390 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_super()
1393 nv50_disp_super_2_0(disp, head); in nv50_disp_super()
1395 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_super()
1398 nv50_disp_super_2_1(disp, head); in nv50_disp_super()
1400 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_super()
1403 nv50_disp_super_2_2(disp, head); in nv50_disp_super()
1406 if (disp->super.pending & 0x00000040) { in nv50_disp_super()
1407 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_super()
1410 nv50_disp_super_3_0(disp, head); in nv50_disp_super()
1415 mutex_unlock(&disp->super.mutex); in nv50_disp_super()
1437 nv50_disp_intr_error(struct nvkm_disp *disp, int chid) in nv50_disp_intr_error() argument
1439 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_intr_error()
1456 if (chid < ARRAY_SIZE(disp->chan)) { in nv50_disp_intr_error()
1459 nv50_disp_chan_mthd(disp->chan[chid], NV_DBG_ERROR); in nv50_disp_intr_error()
1471 nv50_disp_intr(struct nvkm_disp *disp) in nv50_disp_intr() argument
1473 struct nvkm_device *device = disp->engine.subdev.device; in nv50_disp_intr()
1479 nv50_disp_intr_error(disp, chid); in nv50_disp_intr()
1485 nv50_disp_chan_uevent_send(disp, chid); in nv50_disp_intr()
1490 nvkm_disp_vblank(disp, 0); in nv50_disp_intr()
1495 nvkm_disp_vblank(disp, 1); in nv50_disp_intr()
1500 disp->super.pending = (intr1 & 0x00000070); in nv50_disp_intr()
1501 queue_work(disp->super.wq, &disp->super.work); in nv50_disp_intr()
1502 nvkm_wr32(device, 0x610024, disp->super.pending); in nv50_disp_intr()
1507 nv50_disp_fini(struct nvkm_disp *disp, bool suspend) in nv50_disp_fini() argument
1509 struct nvkm_device *device = disp->engine.subdev.device; in nv50_disp_fini()
1516 nv50_disp_init(struct nvkm_disp *disp) in nv50_disp_init() argument
1518 struct nvkm_device *device = disp->engine.subdev.device; in nv50_disp_init()
1531 list_for_each_entry(head, &disp->heads, head) { in nv50_disp_init()
1543 for (i = 0; i < disp->dac.nr; i++) { in nv50_disp_init()
1549 for (i = 0; i < disp->sor.nr; i++) { in nv50_disp_init()
1555 for (i = 0; i < disp->pior.nr; i++) { in nv50_disp_init()
1572 nvkm_wr32(device, 0x610010, (disp->inst->addr >> 8) | 9); in nv50_disp_init()
1581 nv50_disp_oneinit(struct nvkm_disp *disp) in nv50_disp_oneinit() argument
1583 const struct nvkm_disp_func *func = disp->func; in nv50_disp_oneinit()
1584 struct nvkm_subdev *subdev = &disp->engine.subdev; in nv50_disp_oneinit()
1597 disp->wndw.nr = func->wndw.cnt(disp, &disp->wndw.mask); in nv50_disp_oneinit()
1598 nvkm_debug(subdev, "Window(s): %d (%08lx)\n", disp->wndw.nr, disp->wndw.mask); in nv50_disp_oneinit()
1601 disp->head.nr = func->head.cnt(disp, &disp->head.mask); in nv50_disp_oneinit()
1602 nvkm_debug(subdev, " Head(s): %d (%02lx)\n", disp->head.nr, disp->head.mask); in nv50_disp_oneinit()
1603 for_each_set_bit(i, &disp->head.mask, disp->head.nr) { in nv50_disp_oneinit()
1604 ret = func->head.new(disp, i); in nv50_disp_oneinit()
1610 disp->dac.nr = func->dac.cnt(disp, &disp->dac.mask); in nv50_disp_oneinit()
1611 nvkm_debug(subdev, " DAC(s): %d (%02lx)\n", disp->dac.nr, disp->dac.mask); in nv50_disp_oneinit()
1612 for_each_set_bit(i, &disp->dac.mask, disp->dac.nr) { in nv50_disp_oneinit()
1613 ret = func->dac.new(disp, i); in nv50_disp_oneinit()
1620 disp->pior.nr = func->pior.cnt(disp, &disp->pior.mask); in nv50_disp_oneinit()
1621 nvkm_debug(subdev, " PIOR(s): %d (%02lx)\n", disp->pior.nr, disp->pior.mask); in nv50_disp_oneinit()
1622 for_each_set_bit(i, &disp->pior.mask, disp->pior.nr) { in nv50_disp_oneinit()
1623 ret = func->pior.new(disp, i); in nv50_disp_oneinit()
1629 disp->sor.nr = func->sor.cnt(disp, &disp->sor.mask); in nv50_disp_oneinit()
1630 nvkm_debug(subdev, " SOR(s): %d (%02lx)\n", disp->sor.nr, disp->sor.mask); in nv50_disp_oneinit()
1631 for_each_set_bit(i, &disp->sor.mask, disp->sor.nr) { in nv50_disp_oneinit()
1632 ret = func->sor.new(disp, i); in nv50_disp_oneinit()
1637 ret = nvkm_gpuobj_new(device, 0x10000, 0x10000, false, NULL, &disp->inst); in nv50_disp_oneinit()
1641 ret = nvkm_ramht_new(device, func->ramht_size ? func->ramht_size : 0x1000, 0, disp->inst, in nv50_disp_oneinit()
1642 &disp->ramht); in nv50_disp_oneinit()
1661 ret = nvkm_outp_new(disp, i, &dcbE, &outp); in nv50_disp_oneinit()
1664 ret = nvkm_dp_new(disp, i, &dcbE, &outp); in nv50_disp_oneinit()
1690 list_add_tail(&outp->head, &disp->outps); in nv50_disp_oneinit()
1694 list_for_each_entry_safe(outp, outt, &disp->outps, head) { in nv50_disp_oneinit()
1708 list_for_each_entry(pair, &disp->outps, head) { in nv50_disp_oneinit()
1728 list_for_each_entry(conn, &disp->conns, head) { in nv50_disp_oneinit()
1739 ret = nvkm_conn_new(disp, i, &connE, &outp->conn); in nv50_disp_oneinit()
1748 list_add_tail(&outp->conn->head, &disp->conns); in nv50_disp_oneinit()
1754 list_for_each_entry(outp, &disp->outps, head) { in nv50_disp_oneinit()
1757 ior = nvkm_ior_find(disp, SOR, ffs(outp->info.or) - 1); in nv50_disp_oneinit()