diff mbox

[V3,1/2] mmc: sdhci: Allow CAPS check for SDHCI_CAN_64BIT to use overridden caps

Message ID 1455135940-29758-2-git-send-email-alcooperx@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alan Cooper Feb. 10, 2016, 8:25 p.m. UTC
sdhci_add_host() allows the Host Controller Capability registers
to be supplied by the calling driver by using
SDHCI_QUIRK_MISSING_CAPS, but the check for the Capabilities bit
SDHCI_CAN_64BIT doesn't use the applied value and instead reads
the Host register directly. This change uses the supplied "caps"
register instead of reading the host register.

This change will allow a calling driver to simply clear the
SDHCI_CAN_64BIT bit in "caps" to handle some cases of
SDHCI_QUIRK2_BROKEN_64_BIT_DMA.

Signed-off-by: Al Cooper <alcooperx@gmail.com>
---
 drivers/mmc/host/sdhci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Adrian Hunter Feb. 11, 2016, 12:22 p.m. UTC | #1
On 10/02/16 22:25, Al Cooper wrote:
> sdhci_add_host() allows the Host Controller Capability registers
> to be supplied by the calling driver by using
> SDHCI_QUIRK_MISSING_CAPS, but the check for the Capabilities bit
> SDHCI_CAN_64BIT doesn't use the applied value and instead reads
> the Host register directly. This change uses the supplied "caps"
> register instead of reading the host register.
> 
> This change will allow a calling driver to simply clear the
> SDHCI_CAN_64BIT bit in "caps" to handle some cases of
> SDHCI_QUIRK2_BROKEN_64_BIT_DMA.
> 
> Signed-off-by: Al Cooper <alcooperx@gmail.com>
> ---
>  drivers/mmc/host/sdhci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index d622435..ba3b072 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -2926,7 +2926,7 @@ int sdhci_add_host(struct sdhci_host *host)
>  	 * SDHCI_QUIRK2_BROKEN_64_BIT_DMA must be left to the drivers to
>  	 * implement.
>  	 */
> -	if (sdhci_readl(host, SDHCI_CAPABILITIES) & SDHCI_CAN_64BIT)
> +	if (caps[0] & SDHCI_CAN_64BIT)
>  		host->flags |= SDHCI_USE_64_BIT_DMA;
>  
>  	if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA)) {
> 

Acked-by: Adrian Hunter <adrian.hunter@intel.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ulf Hansson Feb. 11, 2016, 1:07 p.m. UTC | #2
On 10 February 2016 at 21:25, Al Cooper <alcooperx@gmail.com> wrote:
> sdhci_add_host() allows the Host Controller Capability registers
> to be supplied by the calling driver by using
> SDHCI_QUIRK_MISSING_CAPS, but the check for the Capabilities bit
> SDHCI_CAN_64BIT doesn't use the applied value and instead reads
> the Host register directly. This change uses the supplied "caps"
> register instead of reading the host register.
>
> This change will allow a calling driver to simply clear the
> SDHCI_CAN_64BIT bit in "caps" to handle some cases of
> SDHCI_QUIRK2_BROKEN_64_BIT_DMA.
>
> Signed-off-by: Al Cooper <alcooperx@gmail.com>

Thanks, applied for next!

Kind regards
Uffe

> ---
>  drivers/mmc/host/sdhci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index d622435..ba3b072 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -2926,7 +2926,7 @@ int sdhci_add_host(struct sdhci_host *host)
>          * SDHCI_QUIRK2_BROKEN_64_BIT_DMA must be left to the drivers to
>          * implement.
>          */
> -       if (sdhci_readl(host, SDHCI_CAPABILITIES) & SDHCI_CAN_64BIT)
> +       if (caps[0] & SDHCI_CAN_64BIT)
>                 host->flags |= SDHCI_USE_64_BIT_DMA;
>
>         if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA)) {
> --
> 1.9.0.138.g2de3478
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index d622435..ba3b072 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2926,7 +2926,7 @@  int sdhci_add_host(struct sdhci_host *host)
 	 * SDHCI_QUIRK2_BROKEN_64_BIT_DMA must be left to the drivers to
 	 * implement.
 	 */
-	if (sdhci_readl(host, SDHCI_CAPABILITIES) & SDHCI_CAN_64BIT)
+	if (caps[0] & SDHCI_CAN_64BIT)
 		host->flags |= SDHCI_USE_64_BIT_DMA;
 
 	if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA)) {