diff mbox series

[3/4] mmc: sdhci: Enable HS400 support if available in caps

Message ID 20230110113124.1434-4-ashok.reddy.soma@amd.com
State Accepted
Commit 386f5d367329a202abe71fd790e8ce4598b30e09
Delegated to: Jaehoon Chung
Headers show
Series Add eMMC 5.1 support for Versal NET | expand

Commit Message

Ashok Reddy Soma Jan. 10, 2023, 11:31 a.m. UTC
HS400 is indicated in bit63 of capability register in few IP's.
Add a quirk to check this and add HS400 to host capabilities.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
---
 drivers/mmc/sdhci.c | 4 ++++
 include/sdhci.h     | 3 +++
 2 files changed, 7 insertions(+)

Comments

Jaehoon Chung Jan. 31, 2023, 12:40 p.m. UTC | #1
On 1/10/23 20:31, Ashok Reddy Soma wrote:
> HS400 is indicated in bit63 of capability register in few IP's.
> Add a quirk to check this and add HS400 to host capabilities.
> 
> Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>

Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>

Best Regards,
Jaehoon Chung

> ---
>  drivers/mmc/sdhci.c | 4 ++++
>  include/sdhci.h     | 3 +++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
> index 181ab9b7cb..c6b250b9a1 100644
> --- a/drivers/mmc/sdhci.c
> +++ b/drivers/mmc/sdhci.c
> @@ -995,6 +995,10 @@ int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host,
>  		cfg->host_caps |= MMC_CAP(UHS_SDR50);
>  	}
>  
> +	if ((host->quirks & SDHCI_QUIRK_CAPS_BIT63_FOR_HS400) &&
> +	    (caps_1 & SDHCI_SUPPORT_HS400))
> +		cfg->host_caps |= MMC_CAP(MMC_HS_400);
> +
>  	if (caps_1 & SDHCI_SUPPORT_DDR50)
>  		cfg->host_caps |= MMC_CAP(UHS_DDR50);
>  
> diff --git a/include/sdhci.h b/include/sdhci.h
> index 64a3d309da..70fefca2a9 100644
> --- a/include/sdhci.h
> +++ b/include/sdhci.h
> @@ -189,6 +189,7 @@
>  #define  SDHCI_SUPPORT_SDR50	0x00000001
>  #define  SDHCI_SUPPORT_SDR104	0x00000002
>  #define  SDHCI_SUPPORT_DDR50	0x00000004
> +#define  SDHCI_SUPPORT_HS400	BIT(31)
>  #define  SDHCI_USE_SDR50_TUNING	0x00002000
>  
>  #define  SDHCI_CLOCK_MUL_MASK	0x00FF0000
> @@ -248,6 +249,8 @@
>  #define SDHCI_QUIRK_USE_WIDE8		(1 << 8)
>  #define SDHCI_QUIRK_NO_1_8_V		(1 << 9)
>  #define SDHCI_QUIRK_SUPPORT_SINGLE	(1 << 10)
> +/* Capability register bit-63 indicates HS400 support */
> +#define SDHCI_QUIRK_CAPS_BIT63_FOR_HS400	BIT(11)
>  
>  /* to make gcc happy */
>  struct sdhci_host;
diff mbox series

Patch

diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 181ab9b7cb..c6b250b9a1 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -995,6 +995,10 @@  int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host,
 		cfg->host_caps |= MMC_CAP(UHS_SDR50);
 	}
 
+	if ((host->quirks & SDHCI_QUIRK_CAPS_BIT63_FOR_HS400) &&
+	    (caps_1 & SDHCI_SUPPORT_HS400))
+		cfg->host_caps |= MMC_CAP(MMC_HS_400);
+
 	if (caps_1 & SDHCI_SUPPORT_DDR50)
 		cfg->host_caps |= MMC_CAP(UHS_DDR50);
 
diff --git a/include/sdhci.h b/include/sdhci.h
index 64a3d309da..70fefca2a9 100644
--- a/include/sdhci.h
+++ b/include/sdhci.h
@@ -189,6 +189,7 @@ 
 #define  SDHCI_SUPPORT_SDR50	0x00000001
 #define  SDHCI_SUPPORT_SDR104	0x00000002
 #define  SDHCI_SUPPORT_DDR50	0x00000004
+#define  SDHCI_SUPPORT_HS400	BIT(31)
 #define  SDHCI_USE_SDR50_TUNING	0x00002000
 
 #define  SDHCI_CLOCK_MUL_MASK	0x00FF0000
@@ -248,6 +249,8 @@ 
 #define SDHCI_QUIRK_USE_WIDE8		(1 << 8)
 #define SDHCI_QUIRK_NO_1_8_V		(1 << 9)
 #define SDHCI_QUIRK_SUPPORT_SINGLE	(1 << 10)
+/* Capability register bit-63 indicates HS400 support */
+#define SDHCI_QUIRK_CAPS_BIT63_FOR_HS400	BIT(11)
 
 /* to make gcc happy */
 struct sdhci_host;