diff mbox series

mmc: sdhci-msm: detect if tassadar_dll is used by using core version

Message ID 20201111220122.2392823-1-dmitry.baryshkov@linaro.org (mailing list archive)
State New, archived
Headers show
Series mmc: sdhci-msm: detect if tassadar_dll is used by using core version | expand

Commit Message

Dmitry Baryshkov Nov. 11, 2020, 10:01 p.m. UTC
Detect if tassadar_dll is required by using core version rather than
just specifying it in the sdhci_msm_variant_info.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
---
 drivers/mmc/host/sdhci-msm.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

Comments

Veerabhadrarao Badiganti Nov. 12, 2020, 5:59 a.m. UTC | #1
On 11/12/2020 3:31 AM, Dmitry Baryshkov wrote:
> Detect if tassadar_dll is required by using core version rather than
> just specifying it in the sdhci_msm_variant_info.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Cc: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
> ---
>   drivers/mmc/host/sdhci-msm.c | 15 +++++----------
>   1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 3451eb325513..dd67acab1660 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -248,7 +248,6 @@ struct sdhci_msm_variant_ops {
>   struct sdhci_msm_variant_info {
>   	bool mci_removed;
>   	bool restore_dll_config;
> -	bool uses_tassadar_dll;
>   	const struct sdhci_msm_variant_ops *var_ops;
>   	const struct sdhci_msm_offset *offset;
>   };
> @@ -2154,18 +2153,11 @@ static const struct sdhci_msm_variant_info sdm845_sdhci_var = {
>   	.offset = &sdhci_msm_v5_offset,
>   };
>   
> -static const struct sdhci_msm_variant_info sm8250_sdhci_var = {
> -	.mci_removed = true,
> -	.uses_tassadar_dll = true,
> -	.var_ops = &v5_var_ops,
> -	.offset = &sdhci_msm_v5_offset,
> -};
> -
>   static const struct of_device_id sdhci_msm_dt_match[] = {
>   	{.compatible = "qcom,sdhci-msm-v4", .data = &sdhci_msm_mci_var},
>   	{.compatible = "qcom,sdhci-msm-v5", .data = &sdhci_msm_v5_var},
>   	{.compatible = "qcom,sdm845-sdhci", .data = &sdm845_sdhci_var},
> -	{.compatible = "qcom,sm8250-sdhci", .data = &sm8250_sdhci_var},
> +	{.compatible = "qcom,sm8250-sdhci", .data = &sdm845_sdhci_var},
Since you have made it 'uses_tassadar_dll' check generic,
SM8250 should work with default compatible string (qcom,sdhci-msm-v5).
We can drop the entry to SM8250 from this table.

>   	{.compatible = "qcom,sc7180-sdhci", .data = &sdm845_sdhci_var},
>   	{},
>   };
> @@ -2249,7 +2241,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
>   	msm_host->restore_dll_config = var_info->restore_dll_config;
>   	msm_host->var_ops = var_info->var_ops;
>   	msm_host->offset = var_info->offset;
> -	msm_host->uses_tassadar_dll = var_info->uses_tassadar_dll;
>   
>   	msm_offset = msm_host->offset;
>   
> @@ -2396,6 +2387,10 @@ static int sdhci_msm_probe(struct platform_device *pdev)
>   	if (core_major == 1 && core_minor >= 0x49)
>   		msm_host->updated_ddr_cfg = true;
>   
> +	if (core_major == 1 &&
> +	    (core_minor == 0x6e || core_minor == 0x71 || core_minor == 0x72))
> +		msm_host->uses_tassadar_dll = true;
> +
This new registers that got introduced for supporting this new DLL are 
present on all versions > 0x71
So we can update check as core_minor >= 0x71.

And i dont find any target with SDCC controller minor version 0x6e.So we 
can remove check for version 0x6e.

>   	ret = sdhci_msm_register_vreg(msm_host);
>   	if (ret)
>   		goto clk_disable;
Dmitry Baryshkov Nov. 12, 2020, 12:44 p.m. UTC | #2
On Thu, 12 Nov 2020 at 08:59, Veerabhadrarao Badiganti
<vbadigan@codeaurora.org> wrote:
>
>
> On 11/12/2020 3:31 AM, Dmitry Baryshkov wrote:
> > Detect if tassadar_dll is required by using core version rather than
> > just specifying it in the sdhci_msm_variant_info.
> >
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> > Cc: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
> > ---
> >   drivers/mmc/host/sdhci-msm.c | 15 +++++----------
> >   1 file changed, 5 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> > index 3451eb325513..dd67acab1660 100644
> > --- a/drivers/mmc/host/sdhci-msm.c
> > +++ b/drivers/mmc/host/sdhci-msm.c
> > @@ -248,7 +248,6 @@ struct sdhci_msm_variant_ops {
> >   struct sdhci_msm_variant_info {
> >       bool mci_removed;
> >       bool restore_dll_config;
> > -     bool uses_tassadar_dll;
> >       const struct sdhci_msm_variant_ops *var_ops;
> >       const struct sdhci_msm_offset *offset;
> >   };
> > @@ -2154,18 +2153,11 @@ static const struct sdhci_msm_variant_info sdm845_sdhci_var = {
> >       .offset = &sdhci_msm_v5_offset,
> >   };
> >
> > -static const struct sdhci_msm_variant_info sm8250_sdhci_var = {
> > -     .mci_removed = true,
> > -     .uses_tassadar_dll = true,
> > -     .var_ops = &v5_var_ops,
> > -     .offset = &sdhci_msm_v5_offset,
> > -};
> > -
> >   static const struct of_device_id sdhci_msm_dt_match[] = {
> >       {.compatible = "qcom,sdhci-msm-v4", .data = &sdhci_msm_mci_var},
> >       {.compatible = "qcom,sdhci-msm-v5", .data = &sdhci_msm_v5_var},
> >       {.compatible = "qcom,sdm845-sdhci", .data = &sdm845_sdhci_var},
> > -     {.compatible = "qcom,sm8250-sdhci", .data = &sm8250_sdhci_var},
> > +     {.compatible = "qcom,sm8250-sdhci", .data = &sdm845_sdhci_var},
> Since you have made it 'uses_tassadar_dll' check generic,
> SM8250 should work with default compatible string (qcom,sdhci-msm-v5).
> We can drop the entry to SM8250 from this table.

Does SM8250 need restore_dll_config like sdm845/sc7180?

> >       {.compatible = "qcom,sc7180-sdhci", .data = &sdm845_sdhci_var},
> >       {},
> >   };
> > @@ -2249,7 +2241,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
> >       msm_host->restore_dll_config = var_info->restore_dll_config;
> >       msm_host->var_ops = var_info->var_ops;
> >       msm_host->offset = var_info->offset;
> > -     msm_host->uses_tassadar_dll = var_info->uses_tassadar_dll;
> >
> >       msm_offset = msm_host->offset;
> >
> > @@ -2396,6 +2387,10 @@ static int sdhci_msm_probe(struct platform_device *pdev)
> >       if (core_major == 1 && core_minor >= 0x49)
> >               msm_host->updated_ddr_cfg = true;
> >
> > +     if (core_major == 1 &&
> > +         (core_minor == 0x6e || core_minor == 0x71 || core_minor == 0x72))
> > +             msm_host->uses_tassadar_dll = true;
> > +
> This new registers that got introduced for supporting this new DLL are
> present on all versions > 0x71
> So we can update check as core_minor >= 0x71.
>
> And i dont find any target with SDCC controller minor version 0x6e.So we
> can remove check for version 0x6e.

I was basing this patch on the published 4.19 tree, which checks for
0x6e. I'll drop it from v2.

> >       ret = sdhci_msm_register_vreg(msm_host);
> >       if (ret)
> >               goto clk_disable;
Veerabhadrarao Badiganti Nov. 12, 2020, 12:59 p.m. UTC | #3
On 11/12/2020 6:14 PM, Dmitry Baryshkov wrote:
> On Thu, 12 Nov 2020 at 08:59, Veerabhadrarao Badiganti
> <vbadigan@codeaurora.org> wrote:
>>
>> On 11/12/2020 3:31 AM, Dmitry Baryshkov wrote:
>>> Detect if tassadar_dll is required by using core version rather than
>>> just specifying it in the sdhci_msm_variant_info.
>>>
>>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>> Cc: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
>>> ---
>>>    drivers/mmc/host/sdhci-msm.c | 15 +++++----------
>>>    1 file changed, 5 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>>> index 3451eb325513..dd67acab1660 100644
>>> --- a/drivers/mmc/host/sdhci-msm.c
>>> +++ b/drivers/mmc/host/sdhci-msm.c
>>> @@ -248,7 +248,6 @@ struct sdhci_msm_variant_ops {
>>>    struct sdhci_msm_variant_info {
>>>        bool mci_removed;
>>>        bool restore_dll_config;
>>> -     bool uses_tassadar_dll;
>>>        const struct sdhci_msm_variant_ops *var_ops;
>>>        const struct sdhci_msm_offset *offset;
>>>    };
>>> @@ -2154,18 +2153,11 @@ static const struct sdhci_msm_variant_info sdm845_sdhci_var = {
>>>        .offset = &sdhci_msm_v5_offset,
>>>    };
>>>
>>> -static const struct sdhci_msm_variant_info sm8250_sdhci_var = {
>>> -     .mci_removed = true,
>>> -     .uses_tassadar_dll = true,
>>> -     .var_ops = &v5_var_ops,
>>> -     .offset = &sdhci_msm_v5_offset,
>>> -};
>>> -
>>>    static const struct of_device_id sdhci_msm_dt_match[] = {
>>>        {.compatible = "qcom,sdhci-msm-v4", .data = &sdhci_msm_mci_var},
>>>        {.compatible = "qcom,sdhci-msm-v5", .data = &sdhci_msm_v5_var},
>>>        {.compatible = "qcom,sdm845-sdhci", .data = &sdm845_sdhci_var},
>>> -     {.compatible = "qcom,sm8250-sdhci", .data = &sm8250_sdhci_var},
>>> +     {.compatible = "qcom,sm8250-sdhci", .data = &sdm845_sdhci_var},
>> Since you have made it 'uses_tassadar_dll' check generic,
>> SM8250 should work with default compatible string (qcom,sdhci-msm-v5).
>> We can drop the entry to SM8250 from this table.
> Does SM8250 need restore_dll_config like sdm845/sc7180?
No. Its not needed.
>>>        {.compatible = "qcom,sc7180-sdhci", .data = &sdm845_sdhci_var},
>>>        {},
>>>    };
>>> @@ -2249,7 +2241,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
>>>        msm_host->restore_dll_config = var_info->restore_dll_config;
>>>        msm_host->var_ops = var_info->var_ops;
>>>        msm_host->offset = var_info->offset;
>>> -     msm_host->uses_tassadar_dll = var_info->uses_tassadar_dll;
>>>
>>>        msm_offset = msm_host->offset;
>>>
>>> @@ -2396,6 +2387,10 @@ static int sdhci_msm_probe(struct platform_device *pdev)
>>>        if (core_major == 1 && core_minor >= 0x49)
>>>                msm_host->updated_ddr_cfg = true;
>>>
>>> +     if (core_major == 1 &&
>>> +         (core_minor == 0x6e || core_minor == 0x71 || core_minor == 0x72))
>>> +             msm_host->uses_tassadar_dll = true;
>>> +
>> This new registers that got introduced for supporting this new DLL are
>> present on all versions > 0x71
>> So we can update check as core_minor >= 0x71.
>>
>> And i dont find any target with SDCC controller minor version 0x6e.So we
>> can remove check for version 0x6e.
> I was basing this patch on the published 4.19 tree, which checks for
> 0x6e. I'll drop it from v2.

Correct. In qcom downstream code, 0x6e version check was wrongly added.

>>>        ret = sdhci_msm_register_vreg(msm_host);
>>>        if (ret)
>>>                goto clk_disable;
>
>
diff mbox series

Patch

diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index 3451eb325513..dd67acab1660 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -248,7 +248,6 @@  struct sdhci_msm_variant_ops {
 struct sdhci_msm_variant_info {
 	bool mci_removed;
 	bool restore_dll_config;
-	bool uses_tassadar_dll;
 	const struct sdhci_msm_variant_ops *var_ops;
 	const struct sdhci_msm_offset *offset;
 };
@@ -2154,18 +2153,11 @@  static const struct sdhci_msm_variant_info sdm845_sdhci_var = {
 	.offset = &sdhci_msm_v5_offset,
 };
 
-static const struct sdhci_msm_variant_info sm8250_sdhci_var = {
-	.mci_removed = true,
-	.uses_tassadar_dll = true,
-	.var_ops = &v5_var_ops,
-	.offset = &sdhci_msm_v5_offset,
-};
-
 static const struct of_device_id sdhci_msm_dt_match[] = {
 	{.compatible = "qcom,sdhci-msm-v4", .data = &sdhci_msm_mci_var},
 	{.compatible = "qcom,sdhci-msm-v5", .data = &sdhci_msm_v5_var},
 	{.compatible = "qcom,sdm845-sdhci", .data = &sdm845_sdhci_var},
-	{.compatible = "qcom,sm8250-sdhci", .data = &sm8250_sdhci_var},
+	{.compatible = "qcom,sm8250-sdhci", .data = &sdm845_sdhci_var},
 	{.compatible = "qcom,sc7180-sdhci", .data = &sdm845_sdhci_var},
 	{},
 };
@@ -2249,7 +2241,6 @@  static int sdhci_msm_probe(struct platform_device *pdev)
 	msm_host->restore_dll_config = var_info->restore_dll_config;
 	msm_host->var_ops = var_info->var_ops;
 	msm_host->offset = var_info->offset;
-	msm_host->uses_tassadar_dll = var_info->uses_tassadar_dll;
 
 	msm_offset = msm_host->offset;
 
@@ -2396,6 +2387,10 @@  static int sdhci_msm_probe(struct platform_device *pdev)
 	if (core_major == 1 && core_minor >= 0x49)
 		msm_host->updated_ddr_cfg = true;
 
+	if (core_major == 1 &&
+	    (core_minor == 0x6e || core_minor == 0x71 || core_minor == 0x72))
+		msm_host->uses_tassadar_dll = true;
+
 	ret = sdhci_msm_register_vreg(msm_host);
 	if (ret)
 		goto clk_disable;