diff mbox

[U-Boot,2/9] mmc: sdhci: Add support for optional controller specific set_ios_post()

Message ID 20170119073941.8057-2-sr@denx.de
State Accepted
Commit 210841c690546dd9b7faeee47c56851dc508f131
Delegated to: Stefan Roese
Headers show

Commit Message

Stefan Roese Jan. 19, 2017, 7:39 a.m. UTC
Some SDHCI drivers might need to do some special controller configuration
after the common clock set_ios() function has been called (speed / width
configuration). This patch adds a call to the newly created function
set_ios_port() when its configured in the host driver.

This will be used by the Xenon SDHCI controller driver used on the
Marvell Armada 3700 and 7k/8k ARM64 SoCs.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Cc: Simon Glass <sjg@chromium.org>
---
 drivers/mmc/sdhci.c | 4 ++++
 include/sdhci.h     | 1 +
 2 files changed, 5 insertions(+)

Comments

Jaehoon Chung Jan. 24, 2017, 6:55 a.m. UTC | #1
On 01/19/2017 04:39 PM, Stefan Roese wrote:
> Some SDHCI drivers might need to do some special controller configuration
> after the common clock set_ios() function has been called (speed / width
> configuration). This patch adds a call to the newly created function
> set_ios_port() when its configured in the host driver.
> 
> This will be used by the Xenon SDHCI controller driver used on the
> Marvell Armada 3700 and 7k/8k ARM64 SoCs.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Jaehoon Chung <jh80.chung@samsung.com>
> Cc: Simon Glass <sjg@chromium.org>

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

> ---
>  drivers/mmc/sdhci.c | 4 ++++
>  include/sdhci.h     | 1 +
>  2 files changed, 5 insertions(+)
> 
> diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
> index 081b014a17..f34f565aeb 100644
> --- a/drivers/mmc/sdhci.c
> +++ b/drivers/mmc/sdhci.c
> @@ -458,6 +458,10 @@ static int sdhci_set_ios(struct mmc *mmc)
>  
>  	sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
>  
> +	/* If available, call the driver specific "post" set_ios() function */
> +	if (host->ops && host->ops->set_ios_post)
> +		host->ops->set_ios_post(host);
> +
>  	return 0;
>  }
>  
> diff --git a/include/sdhci.h b/include/sdhci.h
> index 7544b494b1..0cd4e59d67 100644
> --- a/include/sdhci.h
> +++ b/include/sdhci.h
> @@ -235,6 +235,7 @@ struct sdhci_ops {
>  #endif
>  	int	(*get_cd)(struct sdhci_host *host);
>  	void	(*set_control_reg)(struct sdhci_host *host);
> +	void	(*set_ios_post)(struct sdhci_host *host);
>  	void	(*set_clock)(struct sdhci_host *host, u32 div);
>  };
>  
>
diff mbox

Patch

diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 081b014a17..f34f565aeb 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -458,6 +458,10 @@  static int sdhci_set_ios(struct mmc *mmc)
 
 	sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
 
+	/* If available, call the driver specific "post" set_ios() function */
+	if (host->ops && host->ops->set_ios_post)
+		host->ops->set_ios_post(host);
+
 	return 0;
 }
 
diff --git a/include/sdhci.h b/include/sdhci.h
index 7544b494b1..0cd4e59d67 100644
--- a/include/sdhci.h
+++ b/include/sdhci.h
@@ -235,6 +235,7 @@  struct sdhci_ops {
 #endif
 	int	(*get_cd)(struct sdhci_host *host);
 	void	(*set_control_reg)(struct sdhci_host *host);
+	void	(*set_ios_post)(struct sdhci_host *host);
 	void	(*set_clock)(struct sdhci_host *host, u32 div);
 };