Commit f6e4f57f authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/exynos: hdmi: convert to struct drm_edid



Prefer the struct drm_edid based functions for reading the EDID and
updating the connector.

The functional change is that the CEC physical address gets invalidated
when the EDID could not be read.

v2:
- display info usage was split to a separate patch
- check drm_edid_connector_update() return value

Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: default avatarInki Dae <inki.dae@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/be15dce66a5373a7aed797a4ef63b0ba90b231e9.1724348429.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 0bf46988
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -884,14 +884,21 @@ static int hdmi_get_modes(struct drm_connector *connector)
{
	struct hdmi_context *hdata = connector_to_hdmi(connector);
	const struct drm_display_info *info = &connector->display_info;
	struct edid *edid;
	const struct drm_edid *drm_edid;
	int ret;

	if (!hdata->ddc_adpt)
		goto no_edid;

	edid = drm_get_edid(connector, hdata->ddc_adpt);
	if (!edid)
	drm_edid = drm_edid_read_ddc(connector, hdata->ddc_adpt);

	ret = drm_edid_connector_update(connector, drm_edid);
	if (ret)
		return 0;

	cec_notifier_set_phys_addr(hdata->notifier, info->source_physical_address);

	if (!drm_edid)
		goto no_edid;

	hdata->dvi_mode = !info->is_hdmi;
@@ -899,12 +906,9 @@ static int hdmi_get_modes(struct drm_connector *connector)
			  (hdata->dvi_mode ? "dvi monitor" : "hdmi monitor"),
			  info->width_mm / 10, info->height_mm / 10);

	drm_connector_update_edid_property(connector, edid);
	cec_notifier_set_phys_addr_from_edid(hdata->notifier, edid);

	ret = drm_add_edid_modes(connector, edid);
	ret = drm_edid_connector_add_modes(connector);

	kfree(edid);
	drm_edid_free(drm_edid);

	return ret;