Re: [PATCH] mmc: sdhci: Always apply sdhci-caps-mask and sdhci-caps to caps

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/01/23 16:46, Marek Vasut wrote:
> The original implementation in the commit referenced below only modifies
> caps in case no caps are passed to sdhci_read_caps() via parameter, this
> does not seem correct. Always modify the caps according to the properties
> from DT.
> 
> While at it, drop the always NULL caps and caps1 function parameters.

Please re-base on top of:

https://lore.kernel.org/linux-mmc/20230113110011.129835-1-adrian.hunter@xxxxxxxxx/T/#t

> 
> Signed-off-by: Marek Vasut <marex@xxxxxxx>
> ---
> Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Cc: Bough Chen <haibo.chen@xxxxxxx>
> Cc: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
> Cc: Zach Brown <zach.brown@xxxxxx>
> To: linux-mmc@xxxxxxxxxxxxxxx
> ---
>  drivers/mmc/host/sdhci-cadence.c |  2 +-
>  drivers/mmc/host/sdhci.c         | 23 +++++++----------------
>  drivers/mmc/host/sdhci.h         |  5 ++---
>  3 files changed, 10 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/mmc/host/sdhci-cadence.c b/drivers/mmc/host/sdhci-cadence.c
> index 6f2de54a59877..af1bd66402cb7 100644
> --- a/drivers/mmc/host/sdhci-cadence.c
> +++ b/drivers/mmc/host/sdhci-cadence.c
> @@ -390,7 +390,7 @@ static int sdhci_cdns_probe(struct platform_device *pdev)
>  	host->mmc_host_ops.hs400_enhanced_strobe =
>  				sdhci_cdns_hs400_enhanced_strobe;
>  	sdhci_enable_v4_mode(host);
> -	__sdhci_read_caps(host, &version, NULL, NULL);
> +	__sdhci_read_caps(host, &version);
>  
>  	sdhci_get_of_property(pdev);
>  
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index f3af1bd0f7b95..0ed8c5b36ecb9 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -4090,8 +4090,7 @@ static int sdhci_set_dma_mask(struct sdhci_host *host)
>  	return ret;
>  }
>  
> -void __sdhci_read_caps(struct sdhci_host *host, const u16 *ver,
> -		       const u32 *caps, const u32 *caps1)
> +void __sdhci_read_caps(struct sdhci_host *host, const u16 *ver)
>  {
>  	u16 v;
>  	u64 dt_caps_mask = 0;
> @@ -4124,24 +4123,16 @@ void __sdhci_read_caps(struct sdhci_host *host, const u16 *ver,
>  	if (host->quirks & SDHCI_QUIRK_MISSING_CAPS)
>  		return;
>  
> -	if (caps) {
> -		host->caps = *caps;
> -	} else {
> -		host->caps = sdhci_readl(host, SDHCI_CAPABILITIES);
> -		host->caps &= ~lower_32_bits(dt_caps_mask);
> -		host->caps |= lower_32_bits(dt_caps);
> -	}
> +	host->caps = sdhci_readl(host, SDHCI_CAPABILITIES);
> +	host->caps &= ~lower_32_bits(dt_caps_mask);
> +	host->caps |= lower_32_bits(dt_caps);
>  
>  	if (host->version < SDHCI_SPEC_300)
>  		return;
>  
> -	if (caps1) {
> -		host->caps1 = *caps1;
> -	} else {
> -		host->caps1 = sdhci_readl(host, SDHCI_CAPABILITIES_1);
> -		host->caps1 &= ~upper_32_bits(dt_caps_mask);
> -		host->caps1 |= upper_32_bits(dt_caps);
> -	}
> +	host->caps1 = sdhci_readl(host, SDHCI_CAPABILITIES_1);
> +	host->caps1 &= ~upper_32_bits(dt_caps_mask);
> +	host->caps1 |= upper_32_bits(dt_caps);
>  }
>  EXPORT_SYMBOL_GPL(__sdhci_read_caps);
>  
> diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
> index 605eaee805f74..19695e542161e 100644
> --- a/drivers/mmc/host/sdhci.h
> +++ b/drivers/mmc/host/sdhci.h
> @@ -757,8 +757,7 @@ static inline void *sdhci_priv(struct sdhci_host *host)
>  	return host->private;
>  }
>  
> -void __sdhci_read_caps(struct sdhci_host *host, const u16 *ver,
> -		       const u32 *caps, const u32 *caps1);
> +void __sdhci_read_caps(struct sdhci_host *host, const u16 *ver);
>  int sdhci_setup_host(struct sdhci_host *host);
>  void sdhci_cleanup_host(struct sdhci_host *host);
>  int __sdhci_add_host(struct sdhci_host *host);
> @@ -767,7 +766,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead);
>  
>  static inline void sdhci_read_caps(struct sdhci_host *host)
>  {
> -	__sdhci_read_caps(host, NULL, NULL, NULL);
> +	__sdhci_read_caps(host, NULL);
>  }
>  
>  u16 sdhci_calc_clk(struct sdhci_host *host, unsigned int clock,




[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux