Lines Matching refs:encoder

439 	struct intel_encoder *encoder;
441 for_each_encoder_on_crtc(dev, crtc, encoder)
442 if (encoder->type == type)
2281 * an enabled pch encoder.
3189 struct intel_encoder *encoder;
3223 for_each_encoder_on_crtc(dev, crtc, encoder)
3224 if (encoder->pre_enable)
3225 encoder->pre_enable(encoder);
3248 for_each_encoder_on_crtc(dev, crtc, encoder)
3249 encoder->enable(encoder);
3306 struct intel_encoder *encoder;
3326 for_each_encoder_on_crtc(dev, crtc, encoder)
3327 if (encoder->pre_enable)
3328 encoder->pre_enable(encoder);
3358 for_each_encoder_on_crtc(dev, crtc, encoder)
3359 encoder->enable(encoder);
3392 struct intel_encoder *encoder;
3401 for_each_encoder_on_crtc(dev, crtc, encoder)
3402 encoder->disable(encoder);
3421 for_each_encoder_on_crtc(dev, crtc, encoder)
3422 if (encoder->post_disable)
3423 encoder->post_disable(encoder);
3465 struct intel_encoder *encoder;
3473 for_each_encoder_on_crtc(dev, crtc, encoder)
3474 encoder->disable(encoder);
3499 for_each_encoder_on_crtc(dev, crtc, encoder)
3500 if (encoder->post_disable)
3501 encoder->post_disable(encoder);
3599 struct intel_encoder *encoder;
3613 for_each_encoder_on_crtc(dev, crtc, encoder)
3614 if (encoder->pre_pll_enable)
3615 encoder->pre_pll_enable(encoder);
3619 for_each_encoder_on_crtc(dev, crtc, encoder)
3620 if (encoder->pre_enable)
3621 encoder->pre_enable(encoder);
3623 /* VLV wants encoder enabling _before_ the pipe is up. */
3624 for_each_encoder_on_crtc(dev, crtc, encoder)
3625 encoder->enable(encoder);
3646 struct intel_encoder *encoder;
3660 for_each_encoder_on_crtc(dev, crtc, encoder)
3661 if (encoder->pre_enable)
3662 encoder->pre_enable(encoder);
3681 for_each_encoder_on_crtc(dev, crtc, encoder)
3682 encoder->enable(encoder);
3705 struct intel_encoder *encoder;
3712 for_each_encoder_on_crtc(dev, crtc, encoder)
3713 encoder->disable(encoder);
3731 for_each_encoder_on_crtc(dev, crtc, encoder)
3732 if (encoder->post_disable)
3733 encoder->post_disable(encoder);
3824 if (!connector->encoder || !connector->encoder->crtc)
3827 if (connector->encoder->crtc != crtc)
3831 to_intel_encoder(connector->encoder)->connectors_active = false;
3845 void intel_encoder_destroy(struct drm_encoder *encoder)
3847 struct intel_encoder *intel_encoder = to_intel_encoder(encoder);
3849 drm_encoder_cleanup(encoder);
3856 void intel_encoder_dpms(struct intel_encoder *encoder, int mode)
3859 encoder->connectors_active = true;
3861 intel_crtc_update_dpms(encoder->base.crtc);
3863 encoder->connectors_active = false;
3865 intel_crtc_update_dpms(encoder->base.crtc);
3874 struct intel_encoder *encoder = connector->encoder;
3885 if (connector->base.encoder != &encoder->base)
3886 DRM_ERROR("active connector not linked to encoder\n");
3887 if (!encoder->connectors_active)
3888 DRM_ERROR("encoder->connectors_active not set\n");
3890 encoder_enabled = encoder->get_hw_state(encoder, &pipe);
3892 DRM_ERROR("encoder not enabled\n");
3893 if (!encoder->base.crtc) {
3898 crtc = encoder->base.crtc;
3905 DRM_ERROR("encoder active on the wrong pipe\n");
3913 struct intel_encoder *encoder = intel_attached_encoder(connector);
3925 if (encoder->base.crtc)
3926 intel_encoder_dpms(encoder, mode);
3929 WARN_ON(encoder->connectors_active != false);
3935 * one connector and no cloning and hence the encoder state determines the state
3940 struct intel_encoder *encoder = connector->encoder;
3942 return encoder->get_hw_state(encoder, &pipe);
4409 struct intel_encoder *encoder;
4495 for_each_encoder_on_crtc(dev, &crtc->base, encoder)
4496 if (encoder->pre_pll_enable)
4497 encoder->pre_pll_enable(encoder);
4530 struct intel_encoder *encoder;
4597 for_each_encoder_on_crtc(dev, &crtc->base, encoder)
4598 if (encoder->pre_pll_enable)
4599 encoder->pre_pll_enable(encoder);
4630 struct intel_encoder *encoder;
4661 for_each_encoder_on_crtc(dev, &crtc->base, encoder)
4662 if (encoder->pre_pll_enable)
4663 encoder->pre_pll_enable(encoder);
4862 struct intel_encoder *encoder;
4866 for_each_encoder_on_crtc(dev, crtc, encoder) {
4867 switch (encoder->type) {
5017 * port and will be fixed up in the encoder->get_config
5029 struct intel_encoder *encoder;
5038 list_for_each_entry(encoder, struct intel_encoder, &mode_config->encoder_list,
5040 switch (encoder->type) {
5047 if (enc_to_dig_port(&encoder->base)->port == PORT_A)
5179 struct intel_encoder *encoder;
5184 list_for_each_entry(encoder, struct intel_encoder, &mode_config->encoder_list, base.head) {
5185 switch (encoder->type) {
5351 struct intel_encoder *encoder;
5355 for_each_encoder_on_crtc(dev, crtc, encoder) {
5356 switch (encoder->type) {
5712 struct intel_encoder *encoder;
5716 for_each_encoder_on_crtc(dev, crtc, encoder) {
5717 switch (encoder->type) {
5776 for_each_encoder_on_crtc(dev, crtc, encoder)
5777 if (encoder->pre_pll_enable)
5778 encoder->pre_pll_enable(encoder);
6069 struct intel_encoder *encoder;
6086 for_each_encoder_on_crtc(dev, crtc, encoder) {
6088 encoder->base.base.id,
6089 drm_get_encoder_name(&encoder->base),
6091 if (encoder->mode_set) {
6092 encoder->mode_set(encoder);
6094 encoder_funcs = encoder->base.helper_private;
6095 encoder_funcs->mode_set(&encoder->base, mode, adjusted_mode);
6333 void intel_write_eld(struct drm_encoder *encoder,
6336 struct drm_crtc *crtc = encoder->crtc;
6338 struct drm_device *dev = encoder->dev;
6341 connector = drm_select_eld(encoder, mode);
6348 connector->encoder->base.id,
6349 drm_get_encoder_name(connector->encoder));
6807 struct drm_encoder *encoder = &intel_encoder->base;
6809 struct drm_device *dev = encoder->dev;
6815 encoder->base.id, drm_get_encoder_name(encoder));
6828 if (encoder->crtc) {
6829 crtc = encoder->crtc;
6847 if (!(encoder->possible_crtcs & (1 << i)))
6913 struct drm_encoder *encoder = &intel_encoder->base;
6914 struct drm_crtc *crtc = encoder->crtc;
6918 encoder->base.id, drm_get_encoder_name(encoder));
6934 /* Switch crtc and encoder back off if necessary */
7636 static bool intel_encoder_crtc_ok(struct drm_encoder *encoder,
7653 if (encoder->possible_crtcs & crtc_mask)
7666 struct intel_encoder *encoder;
7672 to_intel_encoder(connector->base.encoder);
7675 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
7677 encoder->new_crtc =
7678 to_intel_crtc(encoder->base.crtc);
7689 struct intel_encoder *encoder;
7694 connector->base.encoder = &connector->new_encoder->base;
7697 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
7699 encoder->base.crtc = &encoder->new_crtc->base;
7823 struct intel_encoder *encoder;
7825 list_for_each_entry(encoder, struct intel_encoder, &crtc->dev->mode_config.encoder_list,
7827 if (&encoder->new_crtc->base != crtc)
7831 if (!encoder->cloneable)
7845 struct intel_encoder *encoder;
7882 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
7885 if (&encoder->new_crtc->base != crtc)
7888 if (encoder->compute_config) {
7889 if (!(encoder->compute_config(encoder, pipe_config))) {
7897 encoder_funcs = encoder->base.helper_private;
7898 if (!(encoder_funcs->mode_fixup(&encoder->base,
7906 /* Set default port clock if not overwritten by the encoder. Needs to be
7907 * done afterwards in case the encoder adjusts the mode. */
7947 struct intel_encoder *encoder;
7959 if (connector->base.encoder == &connector->new_encoder->base)
7962 if (connector->base.encoder) {
7963 tmp_crtc = connector->base.encoder->crtc;
7973 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
7975 if (encoder->base.crtc == &encoder->new_crtc->base)
7978 if (encoder->base.crtc) {
7979 tmp_crtc = encoder->base.crtc;
7984 if (encoder->new_crtc)
7985 *prepare_pipes |= 1 << encoder->new_crtc->pipe;
7997 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
7999 if (encoder->new_crtc == intel_crtc)
8016 * more careful with calling the relevant encoder->mode_set functions.
8039 struct drm_encoder *encoder;
8042 list_for_each_entry(encoder, struct drm_encoder, &dev->mode_config.encoder_list, head)
8043 if (encoder->crtc == crtc)
8076 if (!connector->encoder || !connector->encoder->crtc)
8079 intel_crtc = to_intel_crtc(connector->encoder->crtc);
8090 intel_encoder = to_intel_encoder(connector->encoder);
8212 /* This also checks the encoder/connector hw state with the
8216 if (&connector->new_encoder->base != connector->base.encoder)
8217 DRM_ERROR("connector's staged encoder doesn't match current encoder\n");
8224 struct intel_encoder *encoder;
8227 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
8234 encoder->base.base.id,
8235 drm_get_encoder_name(&encoder->base));
8237 if (&encoder->new_crtc->base != encoder->base.crtc)
8238 DRM_ERROR("encoder's stage crtc doesn't match current crtc\n");
8239 if (encoder->connectors_active && !encoder->base.crtc)
8240 DRM_ERROR("encoder's active_connectors set, but no crtc\n");
8244 if (connector->base.encoder != &encoder->base)
8250 if (!!encoder->base.crtc != enabled)
8251 DRM_ERROR("encoder's enabled state mismatch "
8253 !!encoder->base.crtc, enabled);
8254 if (active && !encoder->base.crtc)
8255 DRM_ERROR("active encoder with no crtc\n");
8257 if (encoder->connectors_active != active)
8258 DRM_ERROR("encoder's computed active state doesn't match tracked active state "
8259 "(expected %i, found %i)\n", active, encoder->connectors_active);
8261 active = encoder->get_hw_state(encoder, &pipe);
8262 if (active != encoder->connectors_active)
8263 DRM_ERROR("encoder's hw state doesn't match sw tracking "
8265 encoder->connectors_active, active);
8267 if (!encoder->base.crtc)
8270 tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe;
8272 DRM_ERROR("active encoder's pipe doesn't match"
8284 struct intel_encoder *encoder;
8300 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
8302 if (encoder->base.crtc != &crtc->base)
8305 if (encoder->connectors_active)
8323 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
8326 if (encoder->base.crtc != &crtc->base)
8328 if (encoder->get_config &&
8329 encoder->get_hw_state(encoder, &pipe))
8330 encoder->get_config(encoder, &pipe_config);
8545 struct drm_encoder *encoder;
8566 list_for_each_entry(encoder, struct drm_encoder, &dev->mode_config.encoder_list, head) {
8567 config->save_encoder_crtcs[count++] = encoder->crtc;
8572 config->save_connector_encoders[count++] = connector->encoder;
8581 struct intel_encoder *encoder;
8586 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list, base.head) {
8587 encoder->new_crtc =
8610 if (set->connectors[i]->encoder &&
8611 set->connectors[i]->encoder->crtc == set->crtc &&
8660 struct intel_encoder *encoder;
8676 connector->new_encoder = connector->encoder;
8685 connector->base.encoder &&
8686 connector->base.encoder->crtc == set->crtc) {
8695 if (&connector->new_encoder->base != connector->base.encoder) {
8696 DRM_DEBUG_KMS("encoder changed, full mode switch\n");
8716 /* Make sure the new CRTC will work with the encoder */
8721 connector->encoder->new_crtc = to_intel_crtc(new_crtc);
8730 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
8735 if (connector->new_encoder == encoder) {
8741 encoder->new_crtc = NULL;
8745 if (&encoder->new_crtc->base != encoder->base.crtc) {
8750 /* Now we've also updated encoder->new_crtc for all encoders. */
9000 static int intel_encoder_clones(struct intel_encoder *encoder)
9002 struct drm_device *dev = encoder->base.dev;
9010 if (encoder == source_encoder)
9014 if (encoder->cloneable && source_encoder->cloneable)
9043 struct intel_encoder *encoder;
9149 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list, base.head) {
9150 encoder->base.possible_crtcs = encoder->crtc_mask;
9151 encoder->base.possible_clones =
9152 intel_encoder_clones(encoder);
9674 connector->base.encoder = NULL;
9675 connector->encoder->connectors_active = false;
9676 connector->encoder->base.crtc = NULL;
9691 if (connector->encoder->type == INTEL_OUTPUT_ANALOG) {
9757 if (connector->encoder->base.crtc != &crtc->base)
9781 struct intel_encoder *encoder;
9793 /* Because we only establish the connector -> encoder ->
9796 * -> encoder links are only establish when things are
9800 for_each_encoder_on_crtc(dev, &crtc->base, encoder) {
9801 WARN_ON(encoder->connectors_active);
9802 encoder->base.crtc = NULL;
9807 static void intel_sanitize_encoder(struct intel_encoder *encoder)
9810 struct drm_device *dev = encoder->base.dev;
9813 * encoder is active and trying to read from a pipe) and the
9815 bool has_active_crtc = encoder->base.crtc &&
9816 to_intel_crtc(encoder->base.crtc)->active;
9818 if (encoder->connectors_active && !has_active_crtc) {
9820 encoder->base.base.id,
9821 drm_get_encoder_name(&encoder->base));
9825 * the encoder manually again. */
9826 if (encoder->base.crtc) {
9828 encoder->base.base.id,
9829 drm_get_encoder_name(&encoder->base));
9830 encoder->disable(encoder);
9840 if (connector->encoder != encoder)
9866 struct intel_encoder *encoder;
9904 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
9908 if (encoder->get_hw_state(encoder, &pipe)) {
9910 encoder->base.crtc = &crtc->base;
9911 if (encoder->get_config)
9912 encoder->get_config(encoder, &crtc->config);
9914 encoder->base.crtc = NULL;
9917 encoder->connectors_active = false;
9919 encoder->base.base.id,
9920 drm_get_encoder_name(&encoder->base),
9921 encoder->base.crtc ? "enabled" : "disabled",
9929 connector->encoder->connectors_active = true;
9930 connector->base.encoder = &connector->encoder->base;
9933 connector->base.encoder = NULL;
9938 connector->base.encoder ? "enabled" : "disabled");
9951 struct intel_encoder *encoder;
9957 list_for_each_entry(encoder, struct intel_encoder, &dev->mode_config.encoder_list,
9959 intel_sanitize_encoder(encoder);
10066 always give back the encoder for the connector
10074 struct intel_encoder *encoder)
10076 connector->encoder = encoder;
10078 &encoder->base);