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

Commit 6f5be8d2 authored by Jani Nikula's avatar Jani Nikula Committed by Gerrit - the friendly Code Review server
Browse files

drm: move edid property update and add modes out of edid firmware loader



Make the firmware loader more generic and generally useful.

Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1487344854-18777-2-git-send-email-jani.nikula@intel.com
Git-commit: 07c2b84b9956dd5d0871d47f5f0bbf9388d2d83f
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Change-Id: I918426a1ef7b11cfea95827b89eec821d1f4a95a
Signed-off-by: default avatarTanmay Shah <tanmay@codeaurora.org>
parent 5a248c6f
Loading
Loading
Loading
Loading
+4 −13
Original line number Diff line number Diff line
@@ -261,15 +261,14 @@ out:
	return edid;
}

int drm_load_edid_firmware(struct drm_connector *connector)
struct edid *drm_load_edid_firmware(struct drm_connector *connector)
{
	const char *connector_name = connector->name;
	char *edidname, *last, *colon, *fwstr, *edidstr, *fallback = NULL;
	int ret;
	struct edid *edid;

	if (edid_firmware[0] == '\0')
		return 0;
		return ERR_PTR(-ENOENT);

	/*
	 * If there are multiple edid files specified and separated
@@ -298,7 +297,7 @@ int drm_load_edid_firmware(struct drm_connector *connector)
	if (!edidname) {
		if (!fallback) {
			kfree(fwstr);
			return 0;
			return ERR_PTR(-ENOENT);
		}
		edidname = fallback;
	}
@@ -310,13 +309,5 @@ int drm_load_edid_firmware(struct drm_connector *connector)
	edid = edid_load(connector, edidname, connector_name);
	kfree(fwstr);

	if (IS_ERR_OR_NULL(edid))
		return 0;

	drm_mode_connector_update_edid_property(connector, edid);
	ret = drm_add_edid_modes(connector, edid);
	drm_edid_to_eld(connector, edid);
	kfree(edid);

	return ret;
	return edid;
}
+7 −1
Original line number Diff line number Diff line
@@ -205,7 +205,13 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
		count = drm_add_edid_modes(connector, edid);
		drm_edid_to_eld(connector, edid);
	} else {
		count = drm_load_edid_firmware(connector);
		struct edid *edid = drm_load_edid_firmware(connector);
		if (!IS_ERR_OR_NULL(edid)) {
			drm_mode_connector_update_edid_property(connector, edid);
			count = drm_add_edid_modes(connector, edid);
			drm_edid_to_eld(connector, edid);
			kfree(edid);
		}
		if (count == 0)
			count = (*connector_funcs->get_modes)(connector);
	}
+4 −3
Original line number Diff line number Diff line
@@ -348,11 +348,12 @@ int drm_av_sync_delay(struct drm_connector *connector,
struct drm_connector *drm_select_eld(struct drm_encoder *encoder);

#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
int drm_load_edid_firmware(struct drm_connector *connector);
struct edid *drm_load_edid_firmware(struct drm_connector *connector);
#else
static inline int drm_load_edid_firmware(struct drm_connector *connector)
static inline struct edid *
drm_load_edid_firmware(struct drm_connector *connector)
{
	return 0;
	return ERR_PTR(-ENOENT);
}
#endif