Message ID | 20210329195255.v2.10.Ida6151df6bfc71df77afee1d72bb7eb0a443f327@changeid (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | drm: Fix EDID reading on ti-sn65dsi86 | expand |
W dniu 30.03.2021 o 04:53, Douglas Anderson pisze: > Now that we have the patch ("drm/edid: Use the cached EDID in > drm_get_edid() if eDP") we no longer need to maintain our own > cache. Drop this code. > > Signed-off-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> Regards Andrzej > --- > > (no changes since v1) > > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 22 +++++++++------------- > 1 file changed, 9 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > index 9577ebd58c4c..c0398daaa4a6 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > @@ -121,7 +121,6 @@ > * @debugfs: Used for managing our debugfs. > * @host_node: Remote DSI node. > * @dsi: Our MIPI DSI source. > - * @edid: Detected EDID of eDP panel. > * @refclk: Our reference clock. > * @panel: Our panel. > * @enable_gpio: The GPIO we toggle to enable the bridge. > @@ -147,7 +146,6 @@ struct ti_sn_bridge { > struct drm_bridge bridge; > struct drm_connector connector; > struct dentry *debugfs; > - struct edid *edid; > struct device_node *host_node; > struct mipi_dsi_device *dsi; > struct clk *refclk; > @@ -269,17 +267,17 @@ connector_to_ti_sn_bridge(struct drm_connector *connector) > static int ti_sn_bridge_connector_get_modes(struct drm_connector *connector) > { > struct ti_sn_bridge *pdata = connector_to_ti_sn_bridge(connector); > - struct edid *edid = pdata->edid; > - int num; > + struct edid *edid; > + int num = 0; > > - if (!edid) { > - pm_runtime_get_sync(pdata->dev); > - edid = pdata->edid = drm_get_edid(connector, &pdata->aux.ddc); > - pm_runtime_put(pdata->dev); > - } > + pm_runtime_get_sync(pdata->dev); > + edid = drm_get_edid(connector, &pdata->aux.ddc); > + pm_runtime_put(pdata->dev); > > - if (edid && drm_edid_is_valid(edid)) { > - num = drm_add_edid_modes(connector, edid); > + if (edid) { > + if (drm_edid_is_valid(edid)) > + num = drm_add_edid_modes(connector, edid); > + kfree(edid); > if (num) > return num; > } > @@ -1308,8 +1306,6 @@ static int ti_sn_bridge_remove(struct i2c_client *client) > if (!pdata) > return -EINVAL; > > - kfree(pdata->edid); > - > ti_sn_debugfs_remove(pdata); > > drm_bridge_remove(&pdata->bridge);
Hi, On Wed, Mar 31, 2021 at 3:12 AM Andrzej Hajda <a.hajda@samsung.com> wrote: > > > W dniu 30.03.2021 o 04:53, Douglas Anderson pisze: > > Now that we have the patch ("drm/edid: Use the cached EDID in > > drm_get_edid() if eDP") we no longer need to maintain our own > > cache. Drop this code. > > > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> Note that unless the advice given to me changes, I'm dropping ${SUBJECT} patch on the next spin and putting the EDID cache back in the bridge driver. See: https://lore.kernel.org/r/YGMvO3PNDCiBmqov@intel.com/ -Doug
diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 9577ebd58c4c..c0398daaa4a6 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -121,7 +121,6 @@ * @debugfs: Used for managing our debugfs. * @host_node: Remote DSI node. * @dsi: Our MIPI DSI source. - * @edid: Detected EDID of eDP panel. * @refclk: Our reference clock. * @panel: Our panel. * @enable_gpio: The GPIO we toggle to enable the bridge. @@ -147,7 +146,6 @@ struct ti_sn_bridge { struct drm_bridge bridge; struct drm_connector connector; struct dentry *debugfs; - struct edid *edid; struct device_node *host_node; struct mipi_dsi_device *dsi; struct clk *refclk; @@ -269,17 +267,17 @@ connector_to_ti_sn_bridge(struct drm_connector *connector) static int ti_sn_bridge_connector_get_modes(struct drm_connector *connector) { struct ti_sn_bridge *pdata = connector_to_ti_sn_bridge(connector); - struct edid *edid = pdata->edid; - int num; + struct edid *edid; + int num = 0; - if (!edid) { - pm_runtime_get_sync(pdata->dev); - edid = pdata->edid = drm_get_edid(connector, &pdata->aux.ddc); - pm_runtime_put(pdata->dev); - } + pm_runtime_get_sync(pdata->dev); + edid = drm_get_edid(connector, &pdata->aux.ddc); + pm_runtime_put(pdata->dev); - if (edid && drm_edid_is_valid(edid)) { - num = drm_add_edid_modes(connector, edid); + if (edid) { + if (drm_edid_is_valid(edid)) + num = drm_add_edid_modes(connector, edid); + kfree(edid); if (num) return num; } @@ -1308,8 +1306,6 @@ static int ti_sn_bridge_remove(struct i2c_client *client) if (!pdata) return -EINVAL; - kfree(pdata->edid); - ti_sn_debugfs_remove(pdata); drm_bridge_remove(&pdata->bridge);
Now that we have the patch ("drm/edid: Use the cached EDID in drm_get_edid() if eDP") we no longer need to maintain our own cache. Drop this code. Signed-off-by: Douglas Anderson <dianders@chromium.org> --- (no changes since v1) drivers/gpu/drm/bridge/ti-sn65dsi86.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-)