[PATCH v2 2/2] mmc: Add quirk to disable PWREN for dw_mmc

Jaehoon Chung jh80.chung at samsung.com
Tue Oct 31 06:01:50 CET 2023


On 7/10/23 22:00, David Hewitt wrote:
> This is required for correct booting of the PINE64 PineTab2. If
> PWREN is pulled high on this device, the SD card cannot be detected.
> 
> This is required in other PINE64 devices (e.g. Quartz64 Model A) too.
> 
> See commit ba33172a36f298641f51a5e6b855c3e89e3f5d3e in
> https://github.com/CounterPillow/u-boot-quartz64
> 
> Signed-off-by: David Hewitt <davidmhewitt at gmail.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Philipp Tomsich <philipp.tomsich at vrull.eu>
> Cc: Kever Yang <kever.yang at rock-chips.com>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Jaehoon Chung <jh80.chung at samsung.com>

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

Best Regards,
Jaehoon Chung

> ---
> Changes for v2:
> - Removed an unrelated change
> 
>  drivers/mmc/dw_mmc.c          | 3 ++-
>  drivers/mmc/rockchip_dw_mmc.c | 3 +++
>  include/dwmmc.h               | 1 +
>  3 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
> index 5085a3b491..cb1d99132f 100644
> --- a/drivers/mmc/dw_mmc.c
> +++ b/drivers/mmc/dw_mmc.c
> @@ -530,7 +530,8 @@ static int dwmci_init(struct mmc *mmc)
>  	if (host->board_init)
>  		host->board_init(host);
>  
> -	dwmci_writel(host, DWMCI_PWREN, 1);
> +	if (!(host->quirks & DWMCI_QUIRK_DISABLE_PWREN))
> +		dwmci_writel(host, DWMCI_PWREN, 1);
>  
>  	if (!dwmci_wait_reset(host, DWMCI_RESET_ALL)) {
>  		debug("%s[%d] Fail-reset!!\n", __func__, __LINE__);
> diff --git a/drivers/mmc/rockchip_dw_mmc.c b/drivers/mmc/rockchip_dw_mmc.c
> index 72c820ee63..af6ac59a46 100644
> --- a/drivers/mmc/rockchip_dw_mmc.c
> +++ b/drivers/mmc/rockchip_dw_mmc.c
> @@ -78,6 +78,9 @@ static int rockchip_dwmmc_of_to_plat(struct udevice *dev)
>  	else
>  		host->dev_index = 1;
>  
> +	if (dev_read_bool(dev, "rockchip,disable-pwren-quirk"))
> +		host->quirks |= DWMCI_QUIRK_DISABLE_PWREN;
> +
>  	priv->fifo_depth = dev_read_u32_default(dev, "fifo-depth", 0);
>  
>  	if (priv->fifo_depth < 0)
> diff --git a/include/dwmmc.h b/include/dwmmc.h
> index 136a95b8cd..98aebb46f1 100644
> --- a/include/dwmmc.h
> +++ b/include/dwmmc.h
> @@ -141,6 +141,7 @@
>  
>  /* quirks */
>  #define DWMCI_QUIRK_DISABLE_SMU		(1 << 0)
> +#define DWMCI_QUIRK_DISABLE_PWREN	(1 << 1)
>  
>  /**
>   * struct dwmci_host - Information about a designware MMC host



More information about the U-Boot mailing list