Lines Matching refs:crtc

82 static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,  in vc4_crtc_get_scanout_position()  argument
88 struct drm_device *dev = crtc->dev; in vc4_crtc_get_scanout_position()
90 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_get_scanout_position()
91 struct vc4_crtc_state *vc4_crtc_state = to_vc4_crtc_state(crtc->state); in vc4_crtc_get_scanout_position()
204 void vc4_crtc_destroy(struct drm_crtc *crtc) in vc4_crtc_destroy() argument
206 drm_crtc_cleanup(crtc); in vc4_crtc_destroy()
282 static struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc) in vc4_get_crtc_encoder() argument
287 drm_connector_list_iter_begin(crtc->dev, &conn_iter); in vc4_get_crtc_encoder()
289 if (connector->state->crtc == crtc) { in vc4_get_crtc_encoder()
299 static void vc4_crtc_pixelvalve_reset(struct drm_crtc *crtc) in vc4_crtc_pixelvalve_reset() argument
301 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_pixelvalve_reset()
308 static void vc4_crtc_config_pv(struct drm_crtc *crtc) in vc4_crtc_config_pv() argument
310 struct drm_device *dev = crtc->dev; in vc4_crtc_config_pv()
312 struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc); in vc4_crtc_config_pv()
314 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_config_pv()
316 struct drm_crtc_state *state = crtc->state; in vc4_crtc_config_pv()
330 drm_crtc_index(crtc)); in vc4_crtc_config_pv()
334 vc4_crtc_pixelvalve_reset(crtc); in vc4_crtc_config_pv()
412 drm_crtc_index(crtc)); in vc4_crtc_config_pv()
425 static int vc4_crtc_disable(struct drm_crtc *crtc, unsigned int channel) in vc4_crtc_disable() argument
427 struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc); in vc4_crtc_disable()
429 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_disable()
430 struct drm_device *dev = crtc->dev; in vc4_crtc_disable()
459 vc4_crtc_pixelvalve_reset(crtc); in vc4_crtc_disable()
468 int vc4_crtc_disable_at_boot(struct drm_crtc *crtc) in vc4_crtc_disable_at_boot() argument
470 struct drm_device *drm = crtc->dev; in vc4_crtc_disable_at_boot()
471 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_disable_at_boot()
490 return vc4_crtc_disable(crtc, channel); in vc4_crtc_disable_at_boot()
493 static void vc4_crtc_atomic_disable(struct drm_crtc *crtc, in vc4_crtc_atomic_disable() argument
497 struct drm_device *dev = crtc->dev; in vc4_crtc_atomic_disable()
502 drm_crtc_vblank_off(crtc); in vc4_crtc_atomic_disable()
504 vc4_crtc_disable(crtc, old_vc4_state->assigned_channel); in vc4_crtc_atomic_disable()
510 if (crtc->state->event) { in vc4_crtc_atomic_disable()
514 drm_crtc_send_vblank_event(crtc, crtc->state->event); in vc4_crtc_atomic_disable()
515 crtc->state->event = NULL; in vc4_crtc_atomic_disable()
520 static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, in vc4_crtc_atomic_enable() argument
523 struct drm_device *dev = crtc->dev; in vc4_crtc_atomic_enable()
524 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_atomic_enable()
525 struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc); in vc4_crtc_atomic_enable()
533 drm_crtc_vblank_on(crtc); in vc4_crtc_atomic_enable()
535 vc4_hvs_atomic_enable(crtc, old_state); in vc4_crtc_atomic_enable()
540 vc4_crtc_config_pv(crtc); in vc4_crtc_atomic_enable()
557 static enum drm_mode_status vc4_crtc_mode_valid(struct drm_crtc *crtc, in vc4_crtc_mode_valid() argument
563 crtc->base.id); in vc4_crtc_mode_valid()
590 if (conn_state->crtc != state->crtc) in vc4_crtc_get_margins()
601 static int vc4_crtc_atomic_check(struct drm_crtc *crtc, in vc4_crtc_atomic_check() argument
609 ret = vc4_hvs_atomic_check(crtc, state); in vc4_crtc_atomic_check()
614 if (conn_state->crtc != crtc) in vc4_crtc_atomic_check()
627 static int vc4_enable_vblank(struct drm_crtc *crtc) in vc4_enable_vblank() argument
629 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_enable_vblank()
636 static void vc4_disable_vblank(struct drm_crtc *crtc) in vc4_disable_vblank() argument
638 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_disable_vblank()
645 struct drm_crtc *crtc = &vc4_crtc->base; in vc4_crtc_handle_page_flip() local
646 struct drm_device *dev = crtc->dev; in vc4_crtc_handle_page_flip()
648 struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); in vc4_crtc_handle_page_flip()
656 drm_crtc_send_vblank_event(crtc, vc4_crtc->event); in vc4_crtc_handle_page_flip()
658 drm_crtc_vblank_put(crtc); in vc4_crtc_handle_page_flip()
671 void vc4_crtc_handle_vblank(struct vc4_crtc *crtc) in vc4_crtc_handle_vblank() argument
673 crtc->t_vblank = ktime_get(); in vc4_crtc_handle_vblank()
674 drm_crtc_handle_vblank(&crtc->base); in vc4_crtc_handle_vblank()
675 vc4_crtc_handle_page_flip(crtc); in vc4_crtc_handle_vblank()
694 struct drm_crtc *crtc; member
710 struct drm_crtc *crtc = flip_state->crtc; in vc4_async_page_flip_complete() local
711 struct drm_device *dev = crtc->dev; in vc4_async_page_flip_complete()
713 struct drm_plane *plane = crtc->primary; in vc4_async_page_flip_complete()
720 drm_crtc_send_vblank_event(crtc, flip_state->event); in vc4_async_page_flip_complete()
724 drm_crtc_vblank_put(crtc); in vc4_async_page_flip_complete()
754 static int vc4_async_page_flip(struct drm_crtc *crtc, in vc4_async_page_flip() argument
759 struct drm_device *dev = crtc->dev; in vc4_async_page_flip()
761 struct drm_plane *plane = crtc->primary; in vc4_async_page_flip()
786 flip_state->crtc = crtc; in vc4_async_page_flip()
810 WARN_ON(drm_crtc_vblank_get(crtc) != 0); in vc4_async_page_flip()
825 int vc4_page_flip(struct drm_crtc *crtc, in vc4_page_flip() argument
832 return vc4_async_page_flip(crtc, fb, event, flags); in vc4_page_flip()
834 return drm_atomic_helper_page_flip(crtc, fb, event, flags, ctx); in vc4_page_flip()
837 struct drm_crtc_state *vc4_crtc_duplicate_state(struct drm_crtc *crtc) in vc4_crtc_duplicate_state() argument
845 old_vc4_state = to_vc4_crtc_state(crtc->state); in vc4_crtc_duplicate_state()
850 __drm_atomic_helper_crtc_duplicate_state(crtc, &vc4_state->base); in vc4_crtc_duplicate_state()
854 void vc4_crtc_destroy_state(struct drm_crtc *crtc, in vc4_crtc_destroy_state() argument
857 struct vc4_dev *vc4 = to_vc4_dev(crtc->dev); in vc4_crtc_destroy_state()
869 drm_atomic_helper_crtc_destroy_state(crtc, state); in vc4_crtc_destroy_state()
872 void vc4_crtc_reset(struct drm_crtc *crtc) in vc4_crtc_reset() argument
876 if (crtc->state) in vc4_crtc_reset()
877 vc4_crtc_destroy_state(crtc, crtc->state); in vc4_crtc_reset()
881 crtc->state = NULL; in vc4_crtc_reset()
886 __drm_atomic_helper_crtc_reset(crtc, &vc4_crtc_state->base); in vc4_crtc_reset()
1036 struct drm_crtc *crtc) in vc4_set_crtc_possible_masks() argument
1038 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_set_crtc_possible_masks()
1054 encoder->possible_crtcs |= drm_crtc_mask(crtc); in vc4_set_crtc_possible_masks()
1066 struct drm_crtc *crtc = &vc4_crtc->base; in vc4_crtc_init() local
1082 drm_crtc_init_with_planes(drm, crtc, primary_plane, NULL, in vc4_crtc_init()
1084 drm_crtc_helper_add(crtc, crtc_helper_funcs); in vc4_crtc_init()
1087 drm_mode_crtc_set_gamma_size(crtc, ARRAY_SIZE(vc4_crtc->lut_r)); in vc4_crtc_init()
1089 drm_crtc_enable_color_mgmt(crtc, 0, false, crtc->gamma_size); in vc4_crtc_init()
1094 drm_crtc_enable_color_mgmt(crtc, 0, true, crtc->gamma_size); in vc4_crtc_init()
1097 for (i = 0; i < crtc->gamma_size; i++) { in vc4_crtc_init()
1112 struct drm_crtc *crtc; in vc4_crtc_bind() local
1119 crtc = &vc4_crtc->base; in vc4_crtc_bind()
1139 vc4_set_crtc_possible_masks(drm, crtc); in vc4_crtc_bind()
1160 if (destroy_plane->possible_crtcs == drm_crtc_mask(crtc)) in vc4_crtc_bind()