Regression fix

- Fix an regression issue by adding 640x480 fallback mode
   for Exynos HDMI driver.
 
 Bug fix
 - Fix a memory leak by ensuring the duplicated EDID is properly freed in the get_modes function.
 
 Code cleanup
 - Remove redundant driver owner initialization since platform_driver_register() sets it automatically.
 -----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEEoxi+6c5pRPV/gdXcxWAb7Og/+bYFAmZmp5AACgkQxWAb7Og/
 +baPmgv+NPpwekmg/MVid5E2UBPohPZ0qfB6AoDVUdN4vPYEzw5p9PRwcQ8vW/1u
 K0rAGrmgGZZluYWz4OI0bQkA99Cxk6M9+knERxOtvODrf/G3oU2FVVq1s1u831Vo
 wjjUMePrih2tpINrTu7EBTJSLVfOdsvkw3lOwfQlawrSm2YUZQKoWRpg4lL1bv9C
 moXLnxDcz+DW3/Mv8GqfQwTxMwz5F1CSIqx/lJXzMo9FaR5B9mlgamCIRakEYkZo
 CAqMASfDOyBWrbkSX3Yw7msmWWtZXEB5ICHsK4p8DGkaAEdzDGwDL1m8c0w/+0BU
 sclpWXy01Y2fe22IJ/VwvAnFOGBY5+nNN47jkrDzgOwaPzC6Yaw9FUCPbnSIQBPs
 eVfypoQxB5j9QsalxpTMmxzBZPGaa33mOuklsV2SGM7p4HJrf2NCDZCZiyp5Midp
 bYpNEtZKjFzmb5+tov/sWegcZfo+qSBsN6JmHgFkt7ibJvaZGhj0/qnvMyyYEoTH
 kArxG9kt
 =ydsM
 -----END PGP SIGNATURE-----

Merge tag 'exynos-drm-fixes-for-v6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-fixes

Regression fix
- Fix an regression issue by adding 640x480 fallback mode
  for Exynos HDMI driver.

Bug fix
- Fix a memory leak by ensuring the duplicated EDID is properly freed in the get_modes function.

Code cleanup
- Remove redundant driver owner initialization since platform_driver_register() sets it automatically.

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Inki Dae <inki.dae@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240610073839.37430-1-inki.dae@samsung.com
This commit is contained in:
Dave Airlie 2024-06-14 10:09:53 +10:00
commit ae1e782362
3 changed files with 11 additions and 4 deletions

View File

@ -285,7 +285,6 @@ struct platform_driver dp_driver = {
.remove_new = exynos_dp_remove,
.driver = {
.name = "exynos-dp",
.owner = THIS_MODULE,
.pm = pm_ptr(&exynos_dp_pm_ops),
.of_match_table = exynos_dp_match,
},

View File

@ -309,6 +309,7 @@ static int vidi_get_modes(struct drm_connector *connector)
struct vidi_context *ctx = ctx_from_connector(connector);
struct edid *edid;
int edid_len;
int count;
/*
* the edid data comes from user side and it would be set
@ -328,7 +329,11 @@ static int vidi_get_modes(struct drm_connector *connector)
drm_connector_update_edid_property(connector, edid);
return drm_add_edid_modes(connector, edid);
count = drm_add_edid_modes(connector, edid);
kfree(edid);
return count;
}
static const struct drm_connector_helper_funcs vidi_connector_helper_funcs = {

View File

@ -887,11 +887,11 @@ static int hdmi_get_modes(struct drm_connector *connector)
int ret;
if (!hdata->ddc_adpt)
return 0;
goto no_edid;
edid = drm_get_edid(connector, hdata->ddc_adpt);
if (!edid)
return 0;
goto no_edid;
hdata->dvi_mode = !connector->display_info.is_hdmi;
DRM_DEV_DEBUG_KMS(hdata->dev, "%s : width[%d] x height[%d]\n",
@ -906,6 +906,9 @@ static int hdmi_get_modes(struct drm_connector *connector)
kfree(edid);
return ret;
no_edid:
return drm_add_modes_noedid(connector, 640, 480);
}
static int hdmi_find_phy_conf(struct hdmi_context *hdata, u32 pixel_clock)