[DPU PATCH] drm/msm/dsi: add only dsi nodes with a valid device to list
Archit Taneja
architt at codeaurora.org
Tue Jun 19 11:42:19 UTC 2018
On Saturday 16 June 2018 11:35 AM, Abhinav Kumar wrote:
> Before adding a DSI node to the private list check if the
> node has a valid device connected to it through an endpoint.
>
> This is required in cases where the chipset supports multiple
> DSI hosts but only one of them is being used.
>
> In the current implementation even inactive nodes get added
> resulting in creation of redundant connectors.
Reviewed-by: Archit Taneja <architt at codeauora.org>
>
> Signed-off-by: Abhinav Kumar <abhinavk at codeaurora.org>
> ---
> drivers/gpu/drm/msm/dsi/dsi.c | 6 +++++-
> drivers/gpu/drm/msm/dsi/dsi.h | 1 +
> drivers/gpu/drm/msm/dsi/dsi_host.c | 10 ++++++++++
> 3 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
> index b744bcc..46a4906 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi.c
> @@ -120,7 +120,11 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
> if (IS_ERR(msm_dsi))
> return PTR_ERR(msm_dsi);
>
> - priv->dsi[msm_dsi->id] = msm_dsi;
> + /* Add only the host which has a device attached to it */
> + if (msm_dsi_has_valid_device(msm_dsi->host)) {
> + pr_info("id = %d has valid device\n", msm_dsi->id);
> + priv->dsi[msm_dsi->id] = msm_dsi;
> + }
>
> return 0;
> }
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h
> index 70d9a9a..aa198ef 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.h
> +++ b/drivers/gpu/drm/msm/dsi/dsi.h
> @@ -180,6 +180,7 @@ void msm_dsi_host_get_phy_clk_req(struct mipi_dsi_host *host,
> int msm_dsi_host_modeset_init(struct mipi_dsi_host *host,
> struct drm_device *dev);
> int msm_dsi_host_init(struct msm_dsi *msm_dsi);
> +bool msm_dsi_has_valid_device(struct mipi_dsi_host *host);
> int msm_dsi_runtime_suspend(struct device *dev);
> int msm_dsi_runtime_resume(struct device *dev);
>
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
> index 2f1a278..25d65e5 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
> @@ -470,6 +470,16 @@ static void dsi_bus_clk_disable(struct msm_dsi_host *msm_host)
> clk_disable_unprepare(msm_host->bus_clks[i]);
> }
>
> +bool msm_dsi_has_valid_device(struct mipi_dsi_host *host)
> +{
> + struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
> +
> + if (msm_host->device_node)
> + return true;
> +
> + return false;
> +}
> +
> int msm_dsi_runtime_suspend(struct device *dev)
> {
> struct platform_device *pdev = to_platform_device(dev);
>
More information about the dri-devel
mailing list