Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7902ac5 authored by Paulo Zanoni's avatar Paulo Zanoni Committed by Daniel Vetter
Browse files

drm/i915: set the correct function pointers for Haswell DP



This is the final remaining piece of Haswell DP enablement. After this
patch, just calling intel_dp_init on any port will make DP work. We
still do not do this because we're currently initializing HDMI on all
the ports, so if we replace intel_hdmi_init with intel_dp_init, we
will break HDMI, and we can't call both because they share the same
registers.

Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent c19b0669
Loading
Loading
Loading
Loading
+26 −6
Original line number Diff line number Diff line
@@ -2553,6 +2553,12 @@ static const struct drm_encoder_helper_funcs intel_dp_helper_funcs = {
	.disable = intel_encoder_noop,
};

static const struct drm_encoder_helper_funcs intel_dp_helper_funcs_hsw = {
	.mode_fixup = intel_dp_mode_fixup,
	.mode_set = intel_ddi_mode_set,
	.disable = intel_encoder_noop,
};

static const struct drm_connector_funcs intel_dp_connector_funcs = {
	.dpms = intel_connector_dpms,
	.detect = intel_dp_detect,
@@ -2688,16 +2694,30 @@ intel_dp_init(struct drm_device *dev, int output_reg, enum port port)

	drm_encoder_init(dev, &intel_encoder->base, &intel_dp_enc_funcs,
			 DRM_MODE_ENCODER_TMDS);
	drm_encoder_helper_add(&intel_encoder->base, &intel_dp_helper_funcs);

	if (IS_HASWELL(dev))
		drm_encoder_helper_add(&intel_encoder->base,
				       &intel_dp_helper_funcs_hsw);
	else
		drm_encoder_helper_add(&intel_encoder->base,
				       &intel_dp_helper_funcs);

	intel_connector_attach_encoder(intel_connector, intel_encoder);
	drm_sysfs_connector_add(connector);

	if (IS_HASWELL(dev)) {
		intel_encoder->enable = intel_enable_ddi;
		intel_encoder->pre_enable = intel_ddi_pre_enable;
		intel_encoder->disable = intel_disable_ddi;
		intel_encoder->post_disable = intel_ddi_post_disable;
		intel_encoder->get_hw_state = intel_ddi_get_hw_state;
	} else {
		intel_encoder->enable = intel_enable_dp;
		intel_encoder->pre_enable = intel_pre_enable_dp;
		intel_encoder->disable = intel_disable_dp;
		intel_encoder->post_disable = intel_post_disable_dp;
		intel_encoder->get_hw_state = intel_dp_get_hw_state;
	}
	intel_connector->get_hw_state = intel_connector_get_hw_state;

	/* Set up the DDC bus. */