Lines Matching refs:encoder
219 bool drm_helper_encoder_in_use(struct drm_encoder *encoder) in drm_helper_encoder_in_use() argument
222 struct drm_device *dev = encoder->dev; in drm_helper_encoder_in_use()
224 if (connector->encoder == encoder) in drm_helper_encoder_in_use()
244 struct drm_encoder *encoder; in drm_helper_crtc_in_use() local
247 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) in drm_helper_crtc_in_use()
248 if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder)) in drm_helper_crtc_in_use()
255 drm_encoder_disable(struct drm_encoder *encoder) in drm_encoder_disable() argument
257 struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; in drm_encoder_disable()
260 (*encoder_funcs->disable)(encoder); in drm_encoder_disable()
262 (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF); in drm_encoder_disable()
277 struct drm_encoder *encoder; in drm_helper_disable_unused_functions() local
282 if (!connector->encoder) in drm_helper_disable_unused_functions()
285 connector->encoder = NULL; in drm_helper_disable_unused_functions()
288 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_helper_disable_unused_functions()
289 if (!drm_helper_encoder_in_use(encoder)) { in drm_helper_disable_unused_functions()
290 drm_encoder_disable(encoder); in drm_helper_disable_unused_functions()
292 encoder->crtc = NULL; in drm_helper_disable_unused_functions()
317 static bool drm_encoder_crtc_ok(struct drm_encoder *encoder, in drm_encoder_crtc_ok() argument
334 if (encoder->possible_crtcs & crtc_mask) in drm_encoder_crtc_ok()
348 struct drm_encoder *encoder; in drm_crtc_prepare_encoders() local
350 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_prepare_encoders()
351 encoder_funcs = encoder->helper_private; in drm_crtc_prepare_encoders()
353 if (encoder->crtc == NULL) in drm_crtc_prepare_encoders()
354 drm_encoder_disable(encoder); in drm_crtc_prepare_encoders()
357 encoder->crtc != (*encoder_funcs->get_crtc)(encoder)) in drm_crtc_prepare_encoders()
358 drm_encoder_disable(encoder); in drm_crtc_prepare_encoders()
395 struct drm_encoder *encoder; in drm_crtc_helper_set_mode() local
422 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_set_mode()
424 if (encoder->crtc != crtc) in drm_crtc_helper_set_mode()
426 encoder_funcs = encoder->helper_private; in drm_crtc_helper_set_mode()
427 if (!(ret = encoder_funcs->mode_fixup(encoder, mode, in drm_crtc_helper_set_mode()
441 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_set_mode()
443 if (encoder->crtc != crtc) in drm_crtc_helper_set_mode()
445 encoder_funcs = encoder->helper_private; in drm_crtc_helper_set_mode()
447 encoder_funcs->prepare(encoder); in drm_crtc_helper_set_mode()
461 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_set_mode()
463 if (encoder->crtc != crtc) in drm_crtc_helper_set_mode()
467 encoder->base.id, drm_get_encoder_name(encoder), in drm_crtc_helper_set_mode()
469 encoder_funcs = encoder->helper_private; in drm_crtc_helper_set_mode()
470 encoder_funcs->mode_set(encoder, mode, adjusted_mode); in drm_crtc_helper_set_mode()
476 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_set_mode()
478 if (encoder->crtc != crtc) in drm_crtc_helper_set_mode()
481 encoder_funcs = encoder->helper_private; in drm_crtc_helper_set_mode()
482 encoder_funcs->commit(encoder); in drm_crtc_helper_set_mode()
515 struct drm_encoder *encoder; in drm_crtc_helper_disable() local
518 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_disable()
519 if (encoder->crtc != crtc) in drm_crtc_helper_disable()
523 if (connector->encoder != encoder) in drm_crtc_helper_disable()
526 connector->encoder = NULL; in drm_crtc_helper_disable()
554 struct drm_encoder *save_encoders, *new_encoder, *encoder; in drm_crtc_helper_set_config() local
624 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_set_config()
625 save_encoders[count++] = *encoder; in drm_crtc_helper_set_config()
675 new_encoder = connector->encoder; in drm_crtc_helper_set_config()
688 if (new_encoder != connector->encoder) { in drm_crtc_helper_set_config()
694 if (connector->encoder) in drm_crtc_helper_set_config()
695 connector->encoder->crtc = NULL; in drm_crtc_helper_set_config()
696 connector->encoder = new_encoder; in drm_crtc_helper_set_config()
707 if (!connector->encoder) in drm_crtc_helper_set_config()
710 if (connector->encoder->crtc == set->crtc) in drm_crtc_helper_set_config()
713 new_crtc = connector->encoder->crtc; in drm_crtc_helper_set_config()
722 !drm_encoder_crtc_ok(connector->encoder, new_crtc)) { in drm_crtc_helper_set_config()
726 if (new_crtc != connector->encoder->crtc) { in drm_crtc_helper_set_config()
729 connector->encoder->crtc = new_crtc; in drm_crtc_helper_set_config()
798 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_crtc_helper_set_config()
799 *encoder = save_encoders[count++]; in drm_crtc_helper_set_config()
820 static int drm_helper_choose_encoder_dpms(struct drm_encoder *encoder) in drm_helper_choose_encoder_dpms() argument
824 struct drm_device *dev = encoder->dev; in drm_helper_choose_encoder_dpms()
827 if (connector->encoder == encoder) in drm_helper_choose_encoder_dpms()
840 if (connector->encoder && connector->encoder->crtc == crtc) in drm_helper_choose_crtc_dpms()
858 struct drm_encoder *encoder = connector->encoder; in drm_helper_connector_dpms() local
859 struct drm_crtc *crtc = encoder ? encoder->crtc : NULL; in drm_helper_connector_dpms()
876 if (encoder) { in drm_helper_connector_dpms()
877 struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; in drm_helper_connector_dpms()
879 (*encoder_funcs->dpms) (encoder, in drm_helper_connector_dpms()
880 drm_helper_choose_encoder_dpms(encoder)); in drm_helper_connector_dpms()
886 if (encoder) { in drm_helper_connector_dpms()
887 struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; in drm_helper_connector_dpms()
889 (*encoder_funcs->dpms) (encoder, in drm_helper_connector_dpms()
890 drm_helper_choose_encoder_dpms(encoder)); in drm_helper_connector_dpms()
926 struct drm_encoder *encoder; in drm_helper_resume_force_mode() local
944 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { in drm_helper_resume_force_mode()
946 if(encoder->crtc != crtc) in drm_helper_resume_force_mode()
949 encoder_funcs = encoder->helper_private; in drm_helper_resume_force_mode()
951 (*encoder_funcs->dpms) (encoder, in drm_helper_resume_force_mode()
952 drm_helper_choose_encoder_dpms(encoder)); in drm_helper_resume_force_mode()