On 2025-02-12 15:03:46, James A. MacInnes wrote:
> SDM845 DPU hardware is rev 4.0.0 per hardware documents.
> Original patch to enable wide_bus operation did not take into account
> the SDM845 and it got carried over by accident.
> 
> - Incorrect setting caused inoperable DisplayPort.
> - Corrected by separating SDM845 into its own descriptor.

If anything I'd have appreciated to see our conversation in v1 pasted here
verbatim which is of the right verbosity to explain this.  I can't do much with
a list of two items.

I don't have a clearer way of explaining what all I find confusing about this
description, so let me propose what I would have written if this was my patch
instead:

        When widebus was enabled for DisplayPort in commit c7c412202623 
("drm/msm/dp:
        enable widebus on all relevant chipsets") it was clarified that it is 
only
        supported on DPU 5.0.0 onwards which includes SC7180 on DPU revision 
6.2.
        However, this patch missed that the description structure for SC7180 is 
also
        reused for SDM845 (because of identical io_start address) which is only 
DPU
        4.0.0, leading to a wrongly enbled widebus feature and corruption on 
that
        platform.

        Create a separate msm_dp_desc_sdm845 structure for this SoC compatible,
        with the wide_bus_supported flag turned off.

        Note that no other DisplayPort compatibles currently exist for SoCs 
older
        than DPU 4.0.0 besides SDM845.

Hope I'm not considered being too picky.  I first sketch **how** the original
patch created a problem, then explain how this patch is intending to fix it,
and finally describe that we went a step further and ensured no other SoCs
are suffering from a similar problem.

- Marijn

> 
> Fixes: c7c412202623 ("drm/msm/dp: enable widebus on all relevant chipsets")
> Signed-off-by: James A. MacInnes <james.a.macin...@gmail.com>
> ---
>  drivers/gpu/drm/msm/dp/dp_display.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
> b/drivers/gpu/drm/msm/dp/dp_display.c
> index aff51bb973eb..e30cccd63910 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -126,6 +126,11 @@ static const struct msm_dp_desc msm_dp_desc_sa8775p[] = {
>       {}
>  };
>  
> +static const struct msm_dp_desc msm_dp_desc_sdm845[] = {
> +     { .io_start = 0x0ae90000, .id = MSM_DP_CONTROLLER_0 },
> +     {}
> +};
> +
>  static const struct msm_dp_desc msm_dp_desc_sc7180[] = {
>       { .io_start = 0x0ae90000, .id = MSM_DP_CONTROLLER_0, 
> .wide_bus_supported = true },
>       {}
> @@ -178,7 +183,7 @@ static const struct of_device_id msm_dp_dt_match[] = {
>       { .compatible = "qcom,sc8180x-edp", .data = &msm_dp_desc_sc8180x },
>       { .compatible = "qcom,sc8280xp-dp", .data = &msm_dp_desc_sc8280xp },
>       { .compatible = "qcom,sc8280xp-edp", .data = &msm_dp_desc_sc8280xp },
> -     { .compatible = "qcom,sdm845-dp", .data = &msm_dp_desc_sc7180 },
> +     { .compatible = "qcom,sdm845-dp", .data = &msm_dp_desc_sdm845 },
>       { .compatible = "qcom,sm8350-dp", .data = &msm_dp_desc_sc7180 },
>       { .compatible = "qcom,sm8650-dp", .data = &msm_dp_desc_sm8650 },
>       { .compatible = "qcom,x1e80100-dp", .data = &msm_dp_desc_x1e80100 },
> 
> -- 
> 2.43.0
> 

Reply via email to