Home | History | Annotate | Download | only in drm

Lines Matching defs:encoder

92  * drm_helper_encoder_in_use - check if a given encoder is in use
93 * @encoder: encoder to check
95 * Checks whether @encoder is with the current mode setting output configuration
100 * True if @encoder is used, false otherwise.
102 bool drm_helper_encoder_in_use(struct drm_encoder *encoder)
106 struct drm_device *dev = encoder->dev;
122 if (connector->encoder == encoder) {
145 struct drm_encoder *encoder;
157 drm_for_each_encoder(encoder, dev)
158 if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder))
165 drm_encoder_disable(struct drm_encoder *encoder)
167 const struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
173 (*encoder_funcs->disable)(encoder);
175 (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
180 struct drm_encoder *encoder;
185 drm_for_each_encoder(encoder, dev) {
186 if (!drm_helper_encoder_in_use(encoder)) {
187 drm_encoder_disable(encoder);
188 /* disconnect encoder from any connector */
189 encoder->crtc = NULL;
211 * will remove any CRTC links of unused encoders and encoder links of
244 struct drm_encoder *encoder;
246 drm_for_each_encoder(encoder, dev) {
247 encoder_funcs = encoder->helper_private;
252 if (encoder->crtc == NULL)
253 drm_encoder_disable(encoder);
256 encoder->crtc != (*encoder_funcs->get_crtc)(encoder))
257 drm_encoder_disable(encoder);
292 struct drm_encoder *encoder;
326 drm_for_each_encoder(encoder, dev) {
328 if (encoder->crtc != crtc)
331 encoder_funcs = encoder->helper_private;
335 encoder_funcs = encoder->helper_private;
337 if (!(ret = encoder_funcs->mode_fixup(encoder, mode,
339 DRM_DEBUG_KMS("Encoder fixup failed\n");
357 drm_for_each_encoder(encoder, dev) {
359 if (encoder->crtc != crtc)
362 encoder_funcs = encoder->helper_private;
368 encoder_funcs->prepare(encoder);
382 drm_for_each_encoder(encoder, dev) {
384 if (encoder->crtc != crtc)
387 encoder_funcs = encoder->helper_private;
391 DRM_DEBUG_KMS("[ENCODER:%d:%s] set [MODE:%s]\n",
392 encoder->base.id, encoder->name, mode->name);
394 encoder_funcs->mode_set(encoder, mode, adjusted_mode);
400 drm_for_each_encoder(encoder, dev) {
402 if (encoder->crtc != crtc)
405 encoder_funcs = encoder->helper_private;
410 encoder_funcs->commit(encoder);
439 struct drm_encoder *encoder;
442 drm_for_each_encoder(encoder, dev) {
445 if (encoder->crtc != crtc)
450 if (connector->encoder != encoder)
453 connector->encoder = NULL;
457 * doing this, but since we've decoupled the encoder
463 /* we keep a reference while the encoder is bound */
479 struct drm_encoder *encoder;
482 drm_connector_for_each_possible_encoder(connector, encoder)
483 return encoder;
497 * It first tries to locate the best encoder for each connector by calling the
501 * mode_fixup encoder and CRTC helper operations to adjust the requested mode,
514 * and ->commit() CRTC and encoder helper operations, in that order.
531 struct drm_encoder **save_connector_encoders, *new_encoder, *encoder;
575 * Allocate space for the backup of all (non-pointer) encoder and
596 drm_for_each_encoder(encoder, dev) {
597 save_encoder_crtcs[count++] = encoder->crtc;
603 save_connector_encoders[count++] = connector->encoder;
639 if (set->connectors[ro]->encoder)
650 new_encoder = connector->encoder;
658 /* if we can't get an encoder for a connector
673 if (new_encoder != connector->encoder) {
674 DRM_DEBUG_KMS("encoder changed, full mode switch\n");
676 /* If the encoder is reused for another connector, then
679 if (connector->encoder)
680 connector->encoder->crtc = NULL;
681 connector->encoder = new_encoder;
694 if (!connector->encoder)
697 if (connector->encoder->crtc == set->crtc)
700 new_crtc = connector->encoder->crtc;
707 /* Make sure the new CRTC will work with the encoder */
709 !drm_encoder_crtc_ok(connector->encoder, new_crtc)) {
714 if (new_crtc != connector->encoder->crtc) {
717 connector->encoder->crtc = new_crtc;
778 drm_for_each_encoder(encoder, dev) {
779 encoder->crtc = save_encoder_crtcs[count++];
785 connector->encoder = save_connector_encoders[count++];
792 if (set->connectors[ro]->encoder)
809 static int drm_helper_choose_encoder_dpms(struct drm_encoder *encoder)
814 struct drm_device *dev = encoder->dev;
818 if (connector->encoder == encoder)
826 /* Helper which handles bridge ordering around encoder dpms */
827 static void drm_helper_encoder_dpms(struct drm_encoder *encoder, int mode)
831 encoder_funcs = encoder->helper_private;
836 encoder_funcs->dpms(encoder, mode);
848 if (connector->encoder && connector->encoder->crtc == crtc)
879 struct drm_encoder *encoder = connector->encoder;
880 struct drm_crtc *crtc = encoder ? encoder->crtc : NULL;
891 if (encoder)
892 encoder_dpms = drm_helper_choose_encoder_dpms(encoder);
894 /* from off to on, do crtc then encoder */
902 if (encoder)
903 drm_helper_encoder_dpms(encoder, encoder_dpms);
906 /* from on to off, do encoder then crtc */
908 if (encoder)
909 drm_helper_encoder_dpms(encoder, encoder_dpms);
951 struct drm_encoder *encoder;
973 drm_for_each_encoder(encoder, dev) {
975 if(encoder->crtc != crtc)
979 encoder);
981 drm_helper_encoder_dpms(encoder, encoder_dpms);