mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
drm/rockchip: cdn-dp: switch to struct drm_edid
Prefer struct drm_edid based functions over struct edid. Acked-by: Heiko Stuebner <heiko@sntech.de> Link: https://patchwork.freedesktop.org/patch/msgid/59d2feb9f8b28d1a1cf49077a35941aa9b3d36af.1713273659.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
8431f29d2f
commit
917ebdd0a8
|
|
@ -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,
|
||||
cdn_dp_get_edid_block, dp);
|
||||
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 = {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user