Lines Matching refs:disp
46 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_outp_internal_crt_() local
47 return disp->func->outp.internal.crt(base, index, dcb, poutp); in nv50_disp_outp_internal_crt_()
55 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_outp_internal_tmds_() local
56 return disp->func->outp.internal.tmds(base, index, dcb, poutp); in nv50_disp_outp_internal_tmds_()
64 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_outp_internal_lvds_() local
65 return disp->func->outp.internal.lvds(base, index, dcb, poutp); in nv50_disp_outp_internal_lvds_()
72 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_outp_internal_dp_() local
73 if (disp->func->outp.internal.dp) in nv50_disp_outp_internal_dp_()
74 return disp->func->outp.internal.dp(base, index, dcb, poutp); in nv50_disp_outp_internal_dp_()
83 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_outp_external_tmds_() local
84 if (disp->func->outp.external.tmds) in nv50_disp_outp_external_tmds_()
85 return disp->func->outp.external.tmds(base, index, dcb, poutp); in nv50_disp_outp_external_tmds_()
93 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_outp_external_dp_() local
94 if (disp->func->outp.external.dp) in nv50_disp_outp_external_dp_()
95 return disp->func->outp.external.dp(base, index, dcb, poutp); in nv50_disp_outp_external_dp_()
102 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_vblank_fini_() local
103 disp->func->head.vblank_fini(disp, head); in nv50_disp_vblank_fini_()
109 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_vblank_init_() local
110 disp->func->head.vblank_init(disp, head); in nv50_disp_vblank_init_()
116 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_intr_() local
117 disp->func->intr(disp); in nv50_disp_intr_()
123 struct nv50_disp *disp = nv50_disp(base); in nv50_disp_dtor_() local
124 nvkm_event_fini(&disp->uevent); in nv50_disp_dtor_()
125 return disp; in nv50_disp_dtor_()
147 struct nv50_disp *disp; in nv50_disp_new_() local
150 if (!(disp = kzalloc(sizeof(*disp), GFP_KERNEL))) in nv50_disp_new_()
152 INIT_WORK(&disp->supervisor, func->super); in nv50_disp_new_()
153 disp->func = func; in nv50_disp_new_()
154 *pdisp = &disp->base; in nv50_disp_new_()
156 ret = nvkm_disp_ctor(&nv50_disp_, device, index, heads, &disp->base); in nv50_disp_new_()
160 return nvkm_event_init(func->uevent, 1, 1 + (heads * 4), &disp->uevent); in nv50_disp_new_()
164 nv50_disp_vblank_fini(struct nv50_disp *disp, int head) in nv50_disp_vblank_fini() argument
166 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_vblank_fini()
171 nv50_disp_vblank_init(struct nv50_disp *disp, int head) in nv50_disp_vblank_init() argument
173 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_vblank_init()
193 nv50_disp_intr_error(struct nv50_disp *disp, int chid) in nv50_disp_intr_error() argument
195 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in nv50_disp_intr_error()
212 if (chid < ARRAY_SIZE(disp->chan)) { in nv50_disp_intr_error()
215 nv50_disp_chan_mthd(disp->chan[chid], NV_DBG_ERROR); in nv50_disp_intr_error()
227 exec_lookup(struct nv50_disp *disp, int head, int or, u32 ctrl, in exec_lookup() argument
231 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in exec_lookup()
258 case 0x00000000: type |= disp->pior.type[or]; break; in exec_lookup()
269 list_for_each_entry(outp, &disp->base.outp, head) { in exec_lookup()
285 exec_script(struct nv50_disp *disp, int head, int id) in exec_script() argument
287 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in exec_script()
298 for (i = 0; !(ctrl & (1 << head)) && i < disp->func->dac.nr; i++) in exec_script()
310 for (i = 0; !(ctrl & (1 << head)) && i < disp->func->sor.nr; i++) in exec_script()
317 for (i = 0; !(ctrl & (1 << head)) && i < disp->func->pior.nr; i++) in exec_script()
326 outp = exec_lookup(disp, head, i, ctrl, &data, &ver, &hdr, &cnt, &len, &info); in exec_script()
344 exec_clkcmp(struct nv50_disp *disp, int head, int id, u32 pclk, u32 *conf) in exec_clkcmp() argument
346 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in exec_clkcmp()
358 for (i = 0; !(ctrl & (1 << head)) && i < disp->func->dac.nr; i++) in exec_clkcmp()
370 for (i = 0; !(ctrl & (1 << head)) && i < disp->func->sor.nr; i++) in exec_clkcmp()
377 for (i = 0; !(ctrl & (1 << head)) && i < disp->func->pior.nr; i++) in exec_clkcmp()
386 outp = exec_lookup(disp, head, i, ctrl, &data, &ver, &hdr, &cnt, &len, &info1); in exec_clkcmp()
398 *conf = disp->sor.lvdsconf; in exec_clkcmp()
434 nv50_disp_intr_unk10_0(struct nv50_disp *disp, int head) in nv50_disp_intr_unk10_0() argument
436 exec_script(disp, head, 1); in nv50_disp_intr_unk10_0()
440 nv50_disp_intr_unk20_0(struct nv50_disp *disp, int head) in nv50_disp_intr_unk20_0() argument
442 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in nv50_disp_intr_unk20_0()
443 struct nvkm_output *outp = exec_script(disp, head, 2); in nv50_disp_intr_unk20_0()
475 nv50_disp_intr_unk20_1(struct nv50_disp *disp, int head) in nv50_disp_intr_unk20_1() argument
477 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_intr_unk20_1()
485 nv50_disp_intr_unk20_2_dp(struct nv50_disp *disp, int head, in nv50_disp_intr_unk20_2_dp() argument
488 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in nv50_disp_intr_unk20_2_dp()
606 nv50_disp_intr_unk20_2(struct nv50_disp *disp, int head) in nv50_disp_intr_unk20_2() argument
608 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_intr_unk20_2()
615 outp = exec_clkcmp(disp, head, 0xff, pclk, &conf); in nv50_disp_intr_unk20_2()
662 exec_clkcmp(disp, head, 0, pclk, &conf); in nv50_disp_intr_unk20_2()
672 nv50_disp_intr_unk20_2_dp(disp, head, &outp->info, pclk); in nv50_disp_intr_unk20_2()
697 nv50_disp_intr_unk40_0_tmds(struct nv50_disp *disp, in nv50_disp_intr_unk40_0_tmds() argument
700 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_intr_unk40_0_tmds()
714 nv50_disp_intr_unk40_0(struct nv50_disp *disp, int head) in nv50_disp_intr_unk40_0() argument
716 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_intr_unk40_0()
721 outp = exec_clkcmp(disp, head, 1, pclk, &conf); in nv50_disp_intr_unk40_0()
726 nv50_disp_intr_unk40_0_tmds(disp, &outp->info); in nv50_disp_intr_unk40_0()
732 struct nv50_disp *disp = in nv50_disp_intr_supervisor() local
734 struct nvkm_subdev *subdev = &disp->base.engine.subdev; in nv50_disp_intr_supervisor()
739 nvkm_debug(subdev, "supervisor %08x %08x\n", disp->super, super); in nv50_disp_intr_supervisor()
741 if (disp->super & 0x00000010) { in nv50_disp_intr_supervisor()
742 nv50_disp_chan_mthd(disp->chan[0], NV_DBG_DEBUG); in nv50_disp_intr_supervisor()
743 for (head = 0; head < disp->base.head.nr; head++) { in nv50_disp_intr_supervisor()
748 nv50_disp_intr_unk10_0(disp, head); in nv50_disp_intr_supervisor()
751 if (disp->super & 0x00000020) { in nv50_disp_intr_supervisor()
752 for (head = 0; head < disp->base.head.nr; head++) { in nv50_disp_intr_supervisor()
755 nv50_disp_intr_unk20_0(disp, head); in nv50_disp_intr_supervisor()
757 for (head = 0; head < disp->base.head.nr; head++) { in nv50_disp_intr_supervisor()
760 nv50_disp_intr_unk20_1(disp, head); in nv50_disp_intr_supervisor()
762 for (head = 0; head < disp->base.head.nr; head++) { in nv50_disp_intr_supervisor()
765 nv50_disp_intr_unk20_2(disp, head); in nv50_disp_intr_supervisor()
768 if (disp->super & 0x00000040) { in nv50_disp_intr_supervisor()
769 for (head = 0; head < disp->base.head.nr; head++) { in nv50_disp_intr_supervisor()
772 nv50_disp_intr_unk40_0(disp, head); in nv50_disp_intr_supervisor()
780 nv50_disp_intr(struct nv50_disp *disp) in nv50_disp_intr() argument
782 struct nvkm_device *device = disp->base.engine.subdev.device; in nv50_disp_intr()
788 nv50_disp_intr_error(disp, chid); in nv50_disp_intr()
794 nv50_disp_chan_uevent_send(disp, chid); in nv50_disp_intr()
799 nvkm_disp_vblank(&disp->base, 0); in nv50_disp_intr()
804 nvkm_disp_vblank(&disp->base, 1); in nv50_disp_intr()
809 disp->super = (intr1 & 0x00000070); in nv50_disp_intr()
810 schedule_work(&disp->supervisor); in nv50_disp_intr()
811 nvkm_wr32(device, 0x610024, disp->super); in nv50_disp_intr()