Lines Matching refs:set

252  * drm_crtc_helper_set_mode - internal helper to set a mode
259 * Try to set @mode on @crtc. Give @crtc and its associated connectors a chance
260 * to fixup or reject the mode prior to trying to set it. This is an internal
269 * True if the mode was set successfully, false otherwise.
381 DRM_DEBUG_KMS("[ENCODER:%d:%s] set [MODE:%s]\n",
387 /* Now enable the clocks, plane, pipe, and connectors that we set up. */
479 * drm_crtc_helper_set_config - set a new config from userspace
480 * @set: mode set configuration
503 * performs a full mode set sequence by calling the ->prepare(), ->mode_set()
516 int drm_crtc_helper_set_config(struct drm_mode_set *set,
522 bool mode_changed = false; /* if true do a full mode set */
534 BUG_ON(!set);
535 BUG_ON(!set->crtc);
536 BUG_ON(!set->crtc->helper_private);
539 BUG_ON(!set->mode && set->fb);
540 BUG_ON(set->fb && set->num_connectors == 0);
542 crtc_funcs = set->crtc->helper_private;
544 dev = set->crtc->dev;
547 if (!set->mode)
548 set->fb = NULL;
550 if (set->fb) {
552 set->crtc->base.id, set->crtc->name,
553 set->fb->base.id,
554 (int)set->num_connectors, set->x, set->y);
557 set->crtc->base.id, set->crtc->name);
558 drm_crtc_helper_disable(set->crtc);
596 save_set.crtc = set->crtc;
597 save_set.mode = &set->crtc->mode;
598 save_set.x = set->crtc->x;
599 save_set.y = set->crtc->y;
600 save_set.fb = set->crtc->primary->fb;
604 if (set->crtc->primary->fb != set->fb) {
605 /* If we have no fb then treat it as a full mode set */
606 if (set->crtc->primary->fb == NULL) {
607 DRM_DEBUG_KMS("crtc has no fb, full mode set\n");
609 } else if (set->fb->format != set->crtc->primary->fb->format) {
615 if (set->x != set->crtc->x || set->y != set->crtc->y)
618 if (!drm_mode_equal(set->mode, &set->crtc->mode)) {
619 DRM_DEBUG_KMS("modes are different, full mode set\n");
620 drm_mode_debug_printmodeline(&set->crtc->mode);
621 drm_mode_debug_printmodeline(set->mode);
625 /* take a reference on all unbound connectors in set, reuse the
628 for (ro = 0; ro < set->num_connectors; ro++) {
629 if (set->connectors[ro]->encoder)
631 drm_connector_get(set->connectors[ro]);
641 for (ro = 0; ro < set->num_connectors; ro++) {
642 if (set->connectors[ro] == connector) {
667 * the appropriate crtc will be set later.
687 if (connector->encoder->crtc == set->crtc)
692 for (ro = 0; ro < set->num_connectors; ro++) {
693 if (set->connectors[ro] == connector)
694 new_crtc = set->crtc;
725 if (drm_helper_crtc_in_use(set->crtc)) {
726 DRM_DEBUG_KMS("attempting to set mode from"
728 drm_mode_debug_printmodeline(set->mode);
729 set->crtc->primary->fb = set->fb;
730 if (!drm_crtc_helper_set_mode(set->crtc, set->mode,
731 set->x, set->y,
733 DRM_ERROR("failed to set mode on [CRTC:%d:%s]\n",
734 set->crtc->base.id, set->crtc->name);
735 set->crtc->primary->fb = save_set.fb;
740 for (i = 0; i < set->num_connectors; i++) {
741 DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id,
742 set->connectors[i]->name);
743 set->connectors[i]->funcs->dpms(set->connectors[i], DRM_MODE_DPMS_ON);
748 set->crtc->x = set->x;
749 set->crtc->y = set->y;
750 set->crtc->primary->fb = set->fb;
751 ret = crtc_funcs->mode_set_base(set->crtc,
752 set->x, set->y, save_set.fb);
754 set->crtc->x = save_set.x;
755 set->crtc->y = save_set.y;
756 set->crtc->primary->fb = save_set.fb;
778 /* after fail drop reference on all unbound connectors in set, let
781 for (ro = 0; ro < set->num_connectors; ro++) {
782 if (set->connectors[ro]->encoder)
784 drm_connector_put(set->connectors[ro]);
925 * has successfully set the restored configuration already. Hence this should
931 * configuration is restored in a different order than when userspace set it up)
961 DRM_ERROR("failed to set mode on crtc %p\n", crtc);
1010 struct drm_mode_set set = {
1014 ret = drm_mode_set_config_internal(&set);