Lines Matching refs:encoder

97  * drm_helper_encoder_in_use - check if a given encoder is in use
98 * @encoder: encoder to check
100 * Checks whether @encoder is with the current mode setting output configuration
105 * True if @encoder is used, false otherwise.
107 bool drm_helper_encoder_in_use(struct drm_encoder *encoder)
111 struct drm_device *dev = encoder->dev;
127 if (connector->encoder == encoder) {
150 struct drm_encoder *encoder;
162 drm_for_each_encoder(encoder, dev)
163 if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder))
170 drm_encoder_disable(struct drm_encoder *encoder)
172 const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
178 (*encoder_funcs->disable)(encoder);
180 (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
185 struct drm_encoder *encoder;
190 drm_for_each_encoder(encoder, dev) {
191 if (!drm_helper_encoder_in_use(encoder)) {
192 drm_encoder_disable(encoder);
193 /* disconnect encoder from any connector */
194 encoder->crtc = NULL;
217 * will remove any CRTC links of unused encoders and encoder links of
250 struct drm_encoder *encoder;
252 drm_for_each_encoder(encoder, dev) {
253 encoder_funcs = encoder->helper_private;
258 if (encoder->crtc == NULL)
259 drm_encoder_disable(encoder);
294 struct drm_encoder *encoder;
328 drm_for_each_encoder(encoder, dev) {
330 if (encoder->crtc != crtc)
333 encoder_funcs = encoder->helper_private;
337 encoder_funcs = encoder->helper_private;
339 if (!(ret = encoder_funcs->mode_fixup(encoder, mode,
359 drm_for_each_encoder(encoder, dev) {
361 if (encoder->crtc != crtc)
364 encoder_funcs = encoder->helper_private;
370 encoder_funcs->prepare(encoder);
384 drm_for_each_encoder(encoder, dev) {
386 if (encoder->crtc != crtc)
389 encoder_funcs = encoder->helper_private;
394 encoder->base.id, encoder->name, mode->name);
396 encoder_funcs->mode_set(encoder, mode, adjusted_mode);
402 drm_for_each_encoder(encoder, dev) {
404 if (encoder->crtc != crtc)
407 encoder_funcs = encoder->helper_private;
412 encoder_funcs->commit(encoder);
467 struct drm_encoder *encoder;
470 drm_for_each_encoder(encoder, dev) {
473 if (encoder->crtc != crtc)
478 if (connector->encoder != encoder)
481 connector->encoder = NULL;
485 * doing this, but since we've decoupled the encoder
491 /* we keep a reference while the encoder is bound */
507 struct drm_encoder *encoder;
510 drm_connector_for_each_possible_encoder(connector, encoder)
511 return encoder;
525 * It first tries to locate the best encoder for each connector by calling the
529 * mode_fixup encoder and CRTC helper operations to adjust the requested mode,
542 * and ->commit() CRTC and encoder helper operations, in that order.
559 struct drm_encoder **save_connector_encoders, *new_encoder, *encoder;
603 * Allocate space for the backup of all (non-pointer) encoder and
624 drm_for_each_encoder(encoder, dev) {
625 save_encoder_crtcs[count++] = encoder->crtc;
631 save_connector_encoders[count++] = connector->encoder;
667 if (set->connectors[ro]->encoder)
678 new_encoder = connector->encoder;
686 /* if we can't get an encoder for a connector
701 if (new_encoder != connector->encoder) {
702 DRM_DEBUG_KMS("encoder changed, full mode switch\n");
704 /* If the encoder is reused for another connector, then
707 if (connector->encoder)
708 connector->encoder->crtc = NULL;
709 connector->encoder = new_encoder;
722 if (!connector->encoder)
725 if (connector->encoder->crtc == set->crtc)
728 new_crtc = connector->encoder->crtc;
735 /* Make sure the new CRTC will work with the encoder */
737 !drm_encoder_crtc_ok(connector->encoder, new_crtc)) {
742 if (new_crtc != connector->encoder->crtc) {
745 connector->encoder->crtc = new_crtc;
806 drm_for_each_encoder(encoder, dev) {
807 encoder->crtc = save_encoder_crtcs[count++];
813 connector->encoder = save_connector_encoders[count++];
820 if (set->connectors[ro]->encoder)
837 static int drm_helper_choose_encoder_dpms(struct drm_encoder *encoder)
842 struct drm_device *dev = encoder->dev;
846 if (connector->encoder == encoder)
854 /* Helper which handles bridge ordering around encoder dpms */
855 static void drm_helper_encoder_dpms(struct drm_encoder *encoder, int mode)
859 encoder_funcs = encoder->helper_private;
864 encoder_funcs->dpms(encoder, mode);
876 if (connector->encoder && connector->encoder->crtc == crtc)
907 struct drm_encoder *encoder = connector->encoder;
908 struct drm_crtc *crtc = encoder ? encoder->crtc : NULL;
919 if (encoder)
920 encoder_dpms = drm_helper_choose_encoder_dpms(encoder);
922 /* from off to on, do crtc then encoder */
931 if (encoder)
932 drm_helper_encoder_dpms(encoder, encoder_dpms);
935 /* from on to off, do encoder then crtc */
937 if (encoder)
938 drm_helper_encoder_dpms(encoder, encoder_dpms);
981 struct drm_encoder *encoder;
1003 drm_for_each_encoder(encoder, dev) {
1005 if(encoder->crtc != crtc)
1009 encoder);
1011 drm_helper_encoder_dpms(encoder, encoder_dpms);