Lines Matching full:vc4

7  * DOC: VC4 KMS
50 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_ctm_state() local
54 ret = drm_modeset_lock(&vc4->ctm_state_lock, state->acquire_ctx); in vc4_get_ctm_state()
94 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_ctm_obj_fini() local
96 drm_atomic_private_obj_fini(&vc4->ctm_manager); in vc4_ctm_obj_fini()
99 static int vc4_ctm_obj_init(struct vc4_dev *vc4) in vc4_ctm_obj_init() argument
103 drm_modeset_lock_init(&vc4->ctm_state_lock); in vc4_ctm_obj_init()
109 drm_atomic_private_obj_init(&vc4->base, &vc4->ctm_manager, &ctm_state->base, in vc4_ctm_obj_init()
112 return drmm_add_action_or_reset(&vc4->base, vc4_ctm_obj_fini, NULL); in vc4_ctm_obj_init()
135 vc4_ctm_commit(struct vc4_dev *vc4, struct drm_atomic_state *state) in vc4_ctm_commit() argument
137 struct vc4_hvs *hvs = vc4->hvs; in vc4_ctm_commit()
138 struct vc4_ctm_state *ctm_state = to_vc4_ctm_state(vc4->ctm_manager.state); in vc4_ctm_commit()
141 WARN_ON_ONCE(vc4->gen > VC4_GEN_5); in vc4_ctm_commit()
174 struct vc4_dev *vc4 = to_vc4_dev(state->dev); in vc4_hvs_get_new_global_state() local
177 priv_state = drm_atomic_get_new_private_obj_state(state, &vc4->hvs_channels); in vc4_hvs_get_new_global_state()
187 struct vc4_dev *vc4 = to_vc4_dev(state->dev); in vc4_hvs_get_old_global_state() local
190 priv_state = drm_atomic_get_old_private_obj_state(state, &vc4->hvs_channels); in vc4_hvs_get_old_global_state()
200 struct vc4_dev *vc4 = to_vc4_dev(state->dev); in vc4_hvs_get_global_state() local
203 priv_state = drm_atomic_get_private_obj_state(state, &vc4->hvs_channels); in vc4_hvs_get_global_state()
210 static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4, in vc4_hvs_pv_muxing_commit() argument
213 struct vc4_hvs *hvs = vc4->hvs; in vc4_hvs_pv_muxing_commit()
218 WARN_ON_ONCE(vc4->gen != VC4_GEN_4); in vc4_hvs_pv_muxing_commit()
253 static void vc5_hvs_pv_muxing_commit(struct vc4_dev *vc4, in vc5_hvs_pv_muxing_commit() argument
256 struct vc4_hvs *hvs = vc4->hvs; in vc5_hvs_pv_muxing_commit()
263 WARN_ON_ONCE(vc4->gen != VC4_GEN_5); in vc5_hvs_pv_muxing_commit()
275 drm_WARN_ON(&vc4->base, in vc5_hvs_pv_muxing_commit()
329 static void vc6_hvs_pv_muxing_commit(struct vc4_dev *vc4, in vc6_hvs_pv_muxing_commit() argument
332 struct vc4_hvs *hvs = vc4->hvs; in vc6_hvs_pv_muxing_commit()
337 WARN_ON_ONCE(vc4->gen != VC4_GEN_6_C && vc4->gen != VC4_GEN_6_D); in vc6_hvs_pv_muxing_commit()
364 drm_err(&vc4->base, "Unhandled encoder type for PV muxing %d", in vc6_hvs_pv_muxing_commit()
380 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_atomic_commit_tail() local
381 struct vc4_hvs *hvs = vc4->hvs; in vc4_atomic_commit_tail()
394 if (vc4->gen < VC4_GEN_6_C) { in vc4_atomic_commit_tail()
429 if (vc4->gen == VC4_GEN_5) { in vc4_atomic_commit_tail()
447 if (vc4->gen <= VC4_GEN_5) in vc4_atomic_commit_tail()
448 vc4_ctm_commit(vc4, state); in vc4_atomic_commit_tail()
450 switch (vc4->gen) { in vc4_atomic_commit_tail()
452 vc4_hvs_pv_muxing_commit(vc4, state); in vc4_atomic_commit_tail()
456 vc5_hvs_pv_muxing_commit(vc4, state); in vc4_atomic_commit_tail()
461 vc6_hvs_pv_muxing_commit(vc4, state); in vc4_atomic_commit_tail()
465 drm_err(dev, "Unknown VC4 generation: %d", vc4->gen); in vc4_atomic_commit_tail()
482 if (vc4->gen == VC4_GEN_5) { in vc4_atomic_commit_tail()
535 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_fb_create() local
538 if (WARN_ON_ONCE(vc4->gen > VC4_GEN_4)) in vc4_fb_create()
581 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_ctm_atomic_check() local
591 ctm_state = vc4_get_ctm_state(state, &vc4->ctm_manager); in vc4_ctm_atomic_check()
603 ctm_state = vc4_get_ctm_state(state, &vc4->ctm_manager); in vc4_ctm_atomic_check()
648 struct vc4_dev *vc4 = to_vc4_dev(state->dev); in vc4_load_tracker_atomic_check() local
655 &vc4->load_tracker); in vc4_load_tracker_atomic_check()
678 if (!vc4->load_tracker_enabled) in vc4_load_tracker_atomic_check()
726 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_load_tracker_obj_fini() local
728 drm_atomic_private_obj_fini(&vc4->load_tracker); in vc4_load_tracker_obj_fini()
731 static int vc4_load_tracker_obj_init(struct vc4_dev *vc4) in vc4_load_tracker_obj_init() argument
739 drm_atomic_private_obj_init(&vc4->base, &vc4->load_tracker, in vc4_load_tracker_obj_init()
743 return drmm_add_action_or_reset(&vc4->base, vc4_load_tracker_obj_fini, NULL); in vc4_load_tracker_obj_init()
809 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_hvs_channels_obj_fini() local
811 drm_atomic_private_obj_fini(&vc4->hvs_channels); in vc4_hvs_channels_obj_fini()
814 static int vc4_hvs_channels_obj_init(struct vc4_dev *vc4) in vc4_hvs_channels_obj_init() argument
822 drm_atomic_private_obj_init(&vc4->base, &vc4->hvs_channels, in vc4_hvs_channels_obj_init()
826 return drmm_add_action_or_reset(&vc4->base, vc4_hvs_channels_obj_fini, NULL); in vc4_hvs_channels_obj_init()
997 struct vc4_dev *vc4 = to_vc4_dev(state->dev); in vc4_core_clock_atomic_check() local
1009 &vc4->load_tracker); in vc4_core_clock_atomic_check()
1109 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_kms_load() local
1117 if (vc4->gen == VC4_GEN_4) { in vc4_kms_load()
1121 vc4->load_tracker_enabled = true; in vc4_kms_load()
1133 if (vc4->gen >= VC4_GEN_6_C) { in vc4_kms_load()
1136 } else if (vc4->gen >= VC4_GEN_5) { in vc4_kms_load()
1144 dev->mode_config.funcs = (vc4->gen > VC4_GEN_4) ? &vc5_mode_funcs : &vc4_mode_funcs; in vc4_kms_load()
1150 ret = vc4_ctm_obj_init(vc4); in vc4_kms_load()
1154 ret = vc4_load_tracker_obj_init(vc4); in vc4_kms_load()
1158 ret = vc4_hvs_channels_obj_init(vc4); in vc4_kms_load()