Commit 917ebdd0 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/rockchip: cdn-dp: switch to struct drm_edid

parent 8431f29d
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -262,20 +262,21 @@ static const struct drm_connector_funcs cdn_dp_atomic_connector_funcs = {
static int cdn_dp_connector_get_modes(struct drm_connector *connector)
{
	struct cdn_dp_device *dp = connector_to_dp(connector);
	struct edid *edid;
	int ret = 0;

	mutex_lock(&dp->lock);
	edid = dp->edid;
	if (edid) {

	if (dp->drm_edid) {
		/* FIXME: get rid of drm_edid_raw() */
		const struct edid *edid = drm_edid_raw(dp->drm_edid);

		DRM_DEV_DEBUG_KMS(dp->dev, "got edid: width[%d] x height[%d]\n",
				  edid->width_cm, edid->height_cm);

		dp->sink_has_audio = drm_detect_monitor_audio(edid);

		drm_connector_update_edid_property(connector, edid);
		ret = drm_add_edid_modes(connector, edid);
	}

	ret = drm_edid_connector_add_modes(connector);

	mutex_unlock(&dp->lock);

	return ret;
@@ -380,9 +381,13 @@ static int cdn_dp_get_sink_capability(struct cdn_dp_device *dp)
		return ret;
	}

	kfree(dp->edid);
	dp->edid = drm_do_get_edid(&dp->connector,
	drm_edid_free(dp->drm_edid);
	dp->drm_edid = drm_edid_read_custom(&dp->connector,
					    cdn_dp_get_edid_block, dp);
	drm_edid_connector_update(&dp->connector, dp->drm_edid);

	dp->sink_has_audio = dp->connector.display_info.has_audio;

	return 0;
}

@@ -488,8 +493,8 @@ static int cdn_dp_disable(struct cdn_dp_device *dp)
	dp->max_lanes = 0;
	dp->max_rate = 0;
	if (!dp->connected) {
		kfree(dp->edid);
		dp->edid = NULL;
		drm_edid_free(dp->drm_edid);
		dp->drm_edid = NULL;
	}

	return 0;
@@ -1131,8 +1136,8 @@ static void cdn_dp_unbind(struct device *dev, struct device *master, void *data)
	pm_runtime_disable(dev);
	if (dp->fw_loaded)
		release_firmware(dp->fw);
	kfree(dp->edid);
	dp->edid = NULL;
	drm_edid_free(dp->drm_edid);
	dp->drm_edid = NULL;
}

static const struct component_ops cdn_dp_component_ops = {
+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ struct cdn_dp_device {
	struct drm_display_mode mode;
	struct platform_device *audio_pdev;
	struct work_struct event_work;
	struct edid *edid;
	const struct drm_edid *drm_edid;

	struct mutex lock;
	bool connected;