Lines Matching refs:crtc
87 static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc, in vc4_crtc_get_scanout_position() argument
93 struct drm_device *dev = crtc->dev; in vc4_crtc_get_scanout_position()
96 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_get_scanout_position()
97 struct vc4_crtc_state *vc4_crtc_state = to_vc4_crtc_state(crtc->state); in vc4_crtc_get_scanout_position()
283 struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc, in vc4_get_crtc_encoder() argument
290 drm_for_each_encoder_mask(encoder, crtc->dev, state->encoder_mask) in vc4_get_crtc_encoder()
296 static void vc4_crtc_pixelvalve_reset(struct drm_crtc *crtc) in vc4_crtc_pixelvalve_reset() argument
298 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_pixelvalve_reset()
299 struct drm_device *dev = crtc->dev; in vc4_crtc_pixelvalve_reset()
312 static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encoder, in vc4_crtc_config_pv() argument
315 struct drm_device *dev = crtc->dev; in vc4_crtc_config_pv()
318 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_config_pv()
320 struct drm_crtc_state *crtc_state = crtc->state; in vc4_crtc_config_pv()
340 drm_crtc_index(crtc)); in vc4_crtc_config_pv()
344 vc4_crtc_pixelvalve_reset(crtc); in vc4_crtc_config_pv()
422 drm_crtc_index(crtc)); in vc4_crtc_config_pv()
438 static int vc4_crtc_disable(struct drm_crtc *crtc, in vc4_crtc_disable() argument
444 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_disable()
445 struct drm_device *dev = crtc->dev; in vc4_crtc_disable()
478 vc4_crtc_pixelvalve_reset(crtc); in vc4_crtc_disable()
489 static struct drm_encoder *vc4_crtc_get_encoder_by_type(struct drm_crtc *crtc, in vc4_crtc_get_encoder_by_type() argument
494 drm_for_each_encoder(encoder, crtc->dev) { in vc4_crtc_get_encoder_by_type()
504 int vc4_crtc_disable_at_boot(struct drm_crtc *crtc) in vc4_crtc_disable_at_boot() argument
506 struct drm_device *drm = crtc->dev; in vc4_crtc_disable_at_boot()
508 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_disable_at_boot()
539 encoder = vc4_crtc_get_encoder_by_type(crtc, encoder_type); in vc4_crtc_disable_at_boot()
548 ret = vc4_crtc_disable(crtc, encoder, NULL, channel); in vc4_crtc_disable_at_boot()
561 void vc4_crtc_send_vblank(struct drm_crtc *crtc) in vc4_crtc_send_vblank() argument
563 struct drm_device *dev = crtc->dev; in vc4_crtc_send_vblank()
566 if (!crtc->state || !crtc->state->event) in vc4_crtc_send_vblank()
570 drm_crtc_send_vblank_event(crtc, crtc->state->event); in vc4_crtc_send_vblank()
571 crtc->state->event = NULL; in vc4_crtc_send_vblank()
575 static void vc4_crtc_atomic_disable(struct drm_crtc *crtc, in vc4_crtc_atomic_disable() argument
579 crtc); in vc4_crtc_atomic_disable()
581 struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc, old_state); in vc4_crtc_atomic_disable()
582 struct drm_device *dev = crtc->dev; in vc4_crtc_atomic_disable()
585 crtc->name, crtc->base.id, encoder->name, encoder->base.id); in vc4_crtc_atomic_disable()
590 drm_crtc_vblank_off(crtc); in vc4_crtc_atomic_disable()
592 vc4_crtc_disable(crtc, encoder, state, old_vc4_state->assigned_channel); in vc4_crtc_atomic_disable()
598 vc4_crtc_send_vblank(crtc); in vc4_crtc_atomic_disable()
601 static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, in vc4_crtc_atomic_enable() argument
605 crtc); in vc4_crtc_atomic_enable()
606 struct drm_device *dev = crtc->dev; in vc4_crtc_atomic_enable()
607 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_atomic_enable()
608 struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc, new_state); in vc4_crtc_atomic_enable()
613 crtc->name, crtc->base.id, encoder->name, encoder->base.id); in vc4_crtc_atomic_enable()
623 drm_crtc_vblank_on(crtc); in vc4_crtc_atomic_enable()
625 vc4_hvs_atomic_enable(crtc, state); in vc4_crtc_atomic_enable()
630 vc4_crtc_config_pv(crtc, encoder, state); in vc4_crtc_atomic_enable()
649 static enum drm_mode_status vc4_crtc_mode_valid(struct drm_crtc *crtc, in vc4_crtc_mode_valid() argument
655 crtc->base.id); in vc4_crtc_mode_valid()
682 if (conn_state->crtc != state->crtc) in vc4_crtc_get_margins()
693 static int vc4_crtc_atomic_check(struct drm_crtc *crtc, in vc4_crtc_atomic_check() argument
697 crtc); in vc4_crtc_atomic_check()
704 ret = vc4_hvs_atomic_check(crtc, state); in vc4_crtc_atomic_check()
708 encoder = vc4_get_crtc_encoder(crtc, crtc_state); in vc4_crtc_atomic_check()
723 if (conn_state->crtc != crtc) in vc4_crtc_atomic_check()
736 static int vc4_enable_vblank(struct drm_crtc *crtc) in vc4_enable_vblank() argument
738 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_enable_vblank()
739 struct drm_device *dev = crtc->dev; in vc4_enable_vblank()
752 static void vc4_disable_vblank(struct drm_crtc *crtc) in vc4_disable_vblank() argument
754 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_disable_vblank()
755 struct drm_device *dev = crtc->dev; in vc4_disable_vblank()
768 struct drm_crtc *crtc = &vc4_crtc->base; in vc4_crtc_handle_page_flip() local
769 struct drm_device *dev = crtc->dev; in vc4_crtc_handle_page_flip()
780 drm_crtc_send_vblank_event(crtc, vc4_crtc->event); in vc4_crtc_handle_page_flip()
782 drm_crtc_vblank_put(crtc); in vc4_crtc_handle_page_flip()
796 void vc4_crtc_handle_vblank(struct vc4_crtc *crtc) in vc4_crtc_handle_vblank() argument
798 crtc->t_vblank = ktime_get(); in vc4_crtc_handle_vblank()
799 drm_crtc_handle_vblank(&crtc->base); in vc4_crtc_handle_vblank()
800 vc4_crtc_handle_page_flip(crtc); in vc4_crtc_handle_vblank()
819 struct drm_crtc *crtc; member
836 struct drm_crtc *crtc = flip_state->crtc; in vc4_async_page_flip_complete() local
837 struct drm_device *dev = crtc->dev; in vc4_async_page_flip_complete()
838 struct drm_plane *plane = crtc->primary; in vc4_async_page_flip_complete()
845 drm_crtc_send_vblank_event(crtc, flip_state->event); in vc4_async_page_flip_complete()
849 drm_crtc_vblank_put(crtc); in vc4_async_page_flip_complete()
930 vc4_async_page_flip_common(struct drm_crtc *crtc, in vc4_async_page_flip_common() argument
935 struct drm_device *dev = crtc->dev; in vc4_async_page_flip_common()
936 struct drm_plane *plane = crtc->primary; in vc4_async_page_flip_common()
945 flip_state->crtc = crtc; in vc4_async_page_flip_common()
960 WARN_ON(drm_crtc_vblank_get(crtc) != 0); in vc4_async_page_flip_common()
980 static int vc4_async_page_flip(struct drm_crtc *crtc, in vc4_async_page_flip() argument
985 struct drm_device *dev = crtc->dev; in vc4_async_page_flip()
1007 ret = vc4_async_page_flip_common(crtc, fb, event, flags); in vc4_async_page_flip()
1016 static int vc5_async_page_flip(struct drm_crtc *crtc, in vc5_async_page_flip() argument
1021 return vc4_async_page_flip_common(crtc, fb, event, flags); in vc5_async_page_flip()
1024 int vc4_page_flip(struct drm_crtc *crtc, in vc4_page_flip() argument
1031 struct drm_device *dev = crtc->dev; in vc4_page_flip()
1035 return vc5_async_page_flip(crtc, fb, event, flags); in vc4_page_flip()
1037 return vc4_async_page_flip(crtc, fb, event, flags); in vc4_page_flip()
1039 return drm_atomic_helper_page_flip(crtc, fb, event, flags, ctx); in vc4_page_flip()
1043 struct drm_crtc_state *vc4_crtc_duplicate_state(struct drm_crtc *crtc) in vc4_crtc_duplicate_state() argument
1051 old_vc4_state = to_vc4_crtc_state(crtc->state); in vc4_crtc_duplicate_state()
1055 __drm_atomic_helper_crtc_duplicate_state(crtc, &vc4_state->base); in vc4_crtc_duplicate_state()
1059 void vc4_crtc_destroy_state(struct drm_crtc *crtc, in vc4_crtc_destroy_state() argument
1062 struct vc4_dev *vc4 = to_vc4_dev(crtc->dev); in vc4_crtc_destroy_state()
1074 drm_atomic_helper_crtc_destroy_state(crtc, state); in vc4_crtc_destroy_state()
1077 void vc4_crtc_reset(struct drm_crtc *crtc) in vc4_crtc_reset() argument
1081 if (crtc->state) in vc4_crtc_reset()
1082 vc4_crtc_destroy_state(crtc, crtc->state); in vc4_crtc_reset()
1086 crtc->state = NULL; in vc4_crtc_reset()
1091 __drm_atomic_helper_crtc_reset(crtc, &vc4_crtc_state->base); in vc4_crtc_reset()
1094 int vc4_crtc_late_register(struct drm_crtc *crtc) in vc4_crtc_late_register() argument
1096 struct drm_device *drm = crtc->dev; in vc4_crtc_late_register()
1097 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_crtc_late_register()
1256 struct drm_crtc *crtc) in vc4_set_crtc_possible_masks() argument
1258 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); in vc4_set_crtc_possible_masks()
1274 encoder->possible_crtcs |= drm_crtc_mask(crtc); in vc4_set_crtc_possible_masks()
1286 struct drm_crtc *crtc = &vc4_crtc->base; in vc4_crtc_init() local
1304 ret = drmm_crtc_init_with_planes(drm, crtc, primary_plane, NULL, in vc4_crtc_init()
1309 drm_crtc_helper_add(crtc, crtc_helper_funcs); in vc4_crtc_init()
1312 drm_mode_crtc_set_gamma_size(crtc, ARRAY_SIZE(vc4_crtc->lut_r)); in vc4_crtc_init()
1314 drm_crtc_enable_color_mgmt(crtc, 0, false, crtc->gamma_size); in vc4_crtc_init()
1319 drm_crtc_enable_color_mgmt(crtc, 0, true, crtc->gamma_size); in vc4_crtc_init()
1322 for (i = 0; i < crtc->gamma_size; i++) { in vc4_crtc_init()
1337 struct drm_crtc *crtc; in vc4_crtc_bind() local
1343 crtc = &vc4_crtc->base; in vc4_crtc_bind()
1363 vc4_set_crtc_possible_masks(drm, crtc); in vc4_crtc_bind()