Lines Matching full:head
22 #include "head.h"
39 nv50_head_flush_clr(struct nv50_head *head, in nv50_head_flush_clr() argument
45 if (clr.crc) nv50_crc_atomic_clr(head); in nv50_head_flush_clr()
46 if (clr.olut) head->func->olut_clr(head); in nv50_head_flush_clr()
47 if (clr.core) head->func->core_clr(head); in nv50_head_flush_clr()
48 if (clr.curs) head->func->curs_clr(head); in nv50_head_flush_clr()
52 nv50_head_flush_set_wndw(struct nv50_head *head, struct nv50_head_atom *asyh) in nv50_head_flush_set_wndw() argument
54 if (asyh->set.curs ) head->func->curs_set(head, asyh); in nv50_head_flush_set_wndw()
56 asyh->olut.offset = nv50_lut_load(&head->olut, in nv50_head_flush_set_wndw()
60 head->func->olut_set(head, asyh); in nv50_head_flush_set_wndw()
65 nv50_head_flush_set(struct nv50_head *head, struct nv50_head_atom *asyh) in nv50_head_flush_set() argument
67 if (asyh->set.view ) head->func->view (head, asyh); in nv50_head_flush_set()
68 if (asyh->set.mode ) head->func->mode (head, asyh); in nv50_head_flush_set()
69 if (asyh->set.core ) head->func->core_set(head, asyh); in nv50_head_flush_set()
70 if (asyh->set.base ) head->func->base (head, asyh); in nv50_head_flush_set()
71 if (asyh->set.ovly ) head->func->ovly (head, asyh); in nv50_head_flush_set()
72 if (asyh->set.dither ) head->func->dither (head, asyh); in nv50_head_flush_set()
73 if (asyh->set.procamp) head->func->procamp (head, asyh); in nv50_head_flush_set()
74 if (asyh->set.crc ) nv50_crc_atomic_set (head, asyh); in nv50_head_flush_set()
75 if (asyh->set.or ) head->func->or (head, asyh); in nv50_head_flush_set()
225 nv50_head_atomic_check_lut(struct nv50_head *head, in nv50_head_atomic_check_lut() argument
228 struct drm_device *dev = head->base.base.dev; in nv50_head_atomic_check_lut()
229 struct drm_crtc *crtc = &head->base.base; in nv50_head_atomic_check_lut()
239 if (!head->func->ilut_check(size)) { in nv50_head_atomic_check_lut()
262 if (!head->func->olut_identity) { in nv50_head_atomic_check_lut()
271 if (!head->func->olut(head, asyh, size)) { in nv50_head_atomic_check_lut()
283 nv50_head_atomic_check_mode(struct nv50_head *head, struct nv50_head_atom *asyh) in nv50_head_atomic_check_mode() argument
328 asyh->set.or = head->func->or != NULL; in nv50_head_atomic_check_mode()
340 struct nv50_head *head = nv50_head(crtc); in nv50_head_atomic_check() local
353 ret = nv50_head_atomic_check_lut(head, asyh); in nv50_head_atomic_check()
377 asyh->set.or = head->func->or != NULL; in nv50_head_atomic_check()
381 nv50_head_atomic_check_mode(head, asyh); in nv50_head_atomic_check()
395 if (head->func->core_calc) { in nv50_head_atomic_check()
396 head->func->core_calc(head, asyh); in nv50_head_atomic_check()
444 ret = nv50_crc_atomic_check_head(head, asyh, armh); in nv50_head_atomic_check()
517 struct nv50_head *head = nv50_head(crtc); in nv50_head_destroy() local
519 nvif_event_dtor(&head->base.vblank); in nv50_head_destroy()
520 nvif_head_dtor(&head->base.head); in nv50_head_destroy()
521 nv50_lut_fini(&head->olut); in nv50_head_destroy()
523 kfree(head); in nv50_head_destroy()
573 struct nv50_head *head; in nv50_head_create() local
580 head = kzalloc(sizeof(*head), GFP_KERNEL); in nv50_head_create()
581 if (!head) in nv50_head_create()
584 head->func = disp->core->func->head; in nv50_head_create()
585 head->base.index = index; in nv50_head_create()
593 ret = nv50_base_new(drm, head->base.index, &base); in nv50_head_create()
594 ret = nv50_ovly_new(drm, head->base.index, &ovly); in nv50_head_create()
597 head->base.index * 2 + 0, &base); in nv50_head_create()
599 head->base.index * 2 + 1, &ovly); in nv50_head_create()
602 ret = nv50_curs_new(drm, head->base.index, &curs); in nv50_head_create()
604 kfree(head); in nv50_head_create()
608 nv_crtc = &head->base; in nv50_head_create()
611 funcs, "head-%d", head->base.index); in nv50_head_create()
617 head->func->olut_size); in nv50_head_create()
619 if (head->func->olut_set) { in nv50_head_create()
620 ret = nv50_lut_init(disp, &drm->client.mmu, &head->olut); in nv50_head_create()
627 ret = nvif_head_ctor(disp->disp, head->base.base.name, head->base.index, &head->base.head); in nv50_head_create()
631 ret = nvif_head_vblank_event_ctor(&head->base.head, "kmsVbl", nv50_head_vblank_handler, in nv50_head_create()
636 return head; in nv50_head_create()