[PATCH v2 3/3] mmc: rockchip_sdhci: Fix HS400 mode write on RK3568
Kever Yang
kever.yang at rock-chips.com
Mon Feb 5 07:42:18 CET 2024
On 2024/2/5 04:53, Jonas Karlman wrote:
> Testing has shown that writing to eMMC using HS400 modes on RK3568
> result in an ERROR.
>
> Change the tap number for transmit clock to fix this.
>
> Also stop DLL when config_dll() is called to disable DLL.
>
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
> Changes in v2:
> - New patch to fix HS400 mode write on RK3568
> ---
> drivers/mmc/rockchip_sdhci.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c
> index 285332d9f4fd..706fb1235796 100644
> --- a/drivers/mmc/rockchip_sdhci.c
> +++ b/drivers/mmc/rockchip_sdhci.c
> @@ -71,7 +71,6 @@
> #define DLL_RXCLK_NO_INVERTER BIT(29)
> #define DLL_RXCLK_ORI_GATE BIT(31)
> #define DLL_TXCLK_TAPNUM_DEFAULT 0x10
> -#define DLL_TXCLK_TAPNUM_90_DEGREES 0x9
> #define DLL_TXCLK_TAPNUM_FROM_SW BIT(24)
> #define DLL_TXCLK_NO_INVERTER BIT(29)
> #define DLL_STRBIN_TAPNUM_DEFAULT 0x4
> @@ -314,8 +313,10 @@ static int rk3568_sdhci_config_dll(struct sdhci_host *host, u32 clock, bool enab
> int val, ret;
> u32 extra, txclk_tapnum;
>
> - if (!enable)
> + if (!enable) {
> + sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL);
> return 0;
> + }
>
> if (clock >= 100 * MHz) {
> /* reset DLL */
> @@ -648,7 +649,7 @@ static const struct sdhci_data rk3568_data = {
> .config_dll = rk3568_sdhci_config_dll,
> .flags = FLAG_INVERTER_FLAG_IN_RXCLK,
> .hs200_txclk_tapnum = DLL_TXCLK_TAPNUM_DEFAULT,
> - .hs400_txclk_tapnum = DLL_TXCLK_TAPNUM_DEFAULT,
> + .hs400_txclk_tapnum = 0x8,
> };
>
> static const struct sdhci_data rk3588_data = {
> @@ -656,7 +657,7 @@ static const struct sdhci_data rk3588_data = {
> .set_clock = rk3568_sdhci_set_clock,
> .config_dll = rk3568_sdhci_config_dll,
> .hs200_txclk_tapnum = DLL_TXCLK_TAPNUM_DEFAULT,
> - .hs400_txclk_tapnum = DLL_TXCLK_TAPNUM_90_DEGREES,
> + .hs400_txclk_tapnum = 0x9,
> };
>
> static const struct udevice_id sdhci_ids[] = {
More information about the U-Boot
mailing list