[Freedreno] [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 Freedreno mailing list