[Freedreno] [DPU PATCH] drm/msm/dsi: add only dsi nodes with a valid device to list
abhinavk at codeaurora.org
abhinavk at codeaurora.org
Mon Jun 18 22:11:44 UTC 2018
Hi Jordan
Thanks for the review.
Comments inline.
Abhinav
On 2018-06-18 07:23, Jordan Crouse wrote:
> On Fri, Jun 15, 2018 at 11:05:57PM -0700, 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.
>>
>> 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);
>
> This seems like a debug message that slipped through.
[Abhinav] No, this was intentionally added. This will be printed only at
probe and at most 2 times.
This gives the information about how many devices have been initialized.
>
>> + 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;
>
> Nit, return (msm_host->device_node) ? true : false; works just as well.
[Abhinav] Alright, will make this change in V2
>
>> +}
>> +
>> int msm_dsi_runtime_suspend(struct device *dev)
>> {
>> struct platform_device *pdev = to_platform_device(dev);
More information about the dri-devel
mailing list