Lines Matching defs: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;
338 if (!(ret = encoder_funcs->mode_fixup(encoder, mode,
341 encoder->base.id, encoder->name);
360 drm_for_each_encoder(encoder, dev) {
362 if (encoder->crtc != crtc)
365 encoder_funcs = encoder->helper_private;
371 encoder_funcs->prepare(encoder);
385 drm_for_each_encoder(encoder, dev) {
387 if (encoder->crtc != crtc)
390 encoder_funcs = encoder->helper_private;
395 encoder->base.id, encoder->name, mode->name);
397 encoder_funcs->mode_set(encoder, mode, adjusted_mode);
403 drm_for_each_encoder(encoder, dev) {
405 if (encoder->crtc != crtc)
408 encoder_funcs = encoder->helper_private;
413 encoder_funcs->commit(encoder);
465 struct drm_encoder *encoder;
468 drm_for_each_encoder(encoder, dev) {
471 if (encoder->crtc != crtc)
476 if (connector->encoder != encoder)
479 connector->encoder = NULL;
483 * doing this, but since we've decoupled the encoder
489 /* we keep a reference while the encoder is bound */
505 struct drm_encoder *encoder;
508 drm_connector_for_each_possible_encoder(connector, encoder)
509 return encoder;
523 * It first tries to locate the best encoder for each connector by calling the
527 * mode_fixup encoder and CRTC helper operations to adjust the requested mode,
540 * and ->commit() CRTC and encoder helper operations, in that order.
557 struct drm_encoder **save_connector_encoders, *new_encoder, *encoder;
602 * Allocate space for the backup of all (non-pointer) encoder and
623 drm_for_each_encoder(encoder, dev) {
624 save_encoder_crtcs[count++] = encoder->crtc;
630 save_connector_encoders[count++] = connector->encoder;
668 if (set->connectors[ro]->encoder)
679 new_encoder = connector->encoder;
687 /* if we can't get an encoder for a connector
703 if (new_encoder != connector->encoder) {
704 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] encoder changed, full mode switch\n",
707 /* If the encoder is reused for another connector, then
710 if (connector->encoder)
711 connector->encoder->crtc = NULL;
712 connector->encoder = new_encoder;
725 if (!connector->encoder)
728 if (connector->encoder->crtc == set->crtc)
731 new_crtc = connector->encoder->crtc;
738 /* Make sure the new CRTC will work with the encoder */
740 !drm_encoder_crtc_ok(connector->encoder, new_crtc)) {
745 if (new_crtc != connector->encoder->crtc) {
749 connector->encoder->crtc = new_crtc;
810 drm_for_each_encoder(encoder, dev) {
811 encoder->crtc = save_encoder_crtcs[count++];
817 connector->encoder = save_connector_encoders[count++];
824 if (set->connectors[ro]->encoder)
841 static int drm_helper_choose_encoder_dpms(struct drm_encoder *encoder)
846 struct drm_device *dev = encoder->dev;
850 if (connector->encoder == encoder)
858 /* Helper which handles bridge ordering around encoder dpms */
859 static void drm_helper_encoder_dpms(struct drm_encoder *encoder, int mode)
863 encoder_funcs = encoder->helper_private;
868 encoder_funcs->dpms(encoder, mode);
880 if (connector->encoder && connector->encoder->crtc == crtc)
911 struct drm_encoder *encoder = connector->encoder;
912 struct drm_crtc *crtc = encoder ? encoder->crtc : NULL;
923 if (encoder)
924 encoder_dpms = drm_helper_choose_encoder_dpms(encoder);
926 /* from off to on, do crtc then encoder */
935 if (encoder)
936 drm_helper_encoder_dpms(encoder, encoder_dpms);
939 /* from on to off, do encoder then crtc */
941 if (encoder)
942 drm_helper_encoder_dpms(encoder, encoder_dpms);
985 struct drm_encoder *encoder;
1007 drm_for_each_encoder(encoder, dev) {
1009 if(encoder->crtc != crtc)
1013 encoder);
1015 drm_helper_encoder_dpms(encoder, encoder_dpms);