[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