[PATCH v2 20/30] mmc: rockchip_sdhci: Extend variant configuration

Kever Yang kever.yang at rock-chips.com
Tue Apr 8 05:23:38 CEST 2025


On 2025/4/8 06:46, Jonas Karlman wrote:
> RK3528 and RK3576 use different tap and delay num for cmdout and strbin.
>
> Move tap and delay num for cmdout and strbin to driver data to prepare
> for adding new SoCs.
>
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
> v2: No change
> ---
>   drivers/mmc/rockchip_sdhci.c | 15 ++++++++++++---
>   1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c
> index da630b9d97a2..4968404bfaed 100644
> --- a/drivers/mmc/rockchip_sdhci.c
> +++ b/drivers/mmc/rockchip_sdhci.c
> @@ -156,6 +156,9 @@ struct sdhci_data {
>   	u32 flags;
>   	u8 hs200_txclk_tapnum;
>   	u8 hs400_txclk_tapnum;
> +	u8 hs400_cmdout_tapnum;
> +	u8 hs400_strbin_tapnum;
> +	u8 ddr50_strbin_delay_num;
>   };
>   
>   static void rk3399_emmc_phy_power_on(struct rockchip_emmc_phy *phy, u32 clock)
> @@ -348,7 +351,7 @@ static int rk3568_sdhci_config_dll(struct sdhci_host *host, u32 clock, bool enab
>   			extra = DLL_CMDOUT_SRC_CLK_NEG |
>   				DLL_CMDOUT_BOTH_CLK_EDGE |
>   				DWCMSHC_EMMC_DLL_DLYENA |
> -				DLL_CMDOUT_TAPNUM_90_DEGREES |
> +				data->hs400_cmdout_tapnum |
>   				DLL_CMDOUT_TAPNUM_FROM_SW;
>   			sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_CMDOUT);
>   		}
> @@ -360,7 +363,7 @@ static int rk3568_sdhci_config_dll(struct sdhci_host *host, u32 clock, bool enab
>   		sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_TXCLK);
>   
>   		extra = DWCMSHC_EMMC_DLL_DLYENA |
> -			DLL_STRBIN_TAPNUM_DEFAULT |
> +			data->hs400_strbin_tapnum |
>   			DLL_STRBIN_TAPNUM_FROM_SW;
>   		sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN);
>   	} else {
> @@ -380,7 +383,7 @@ static int rk3568_sdhci_config_dll(struct sdhci_host *host, u32 clock, bool enab
>   		 */
>   		extra = DWCMSHC_EMMC_DLL_DLYENA |
>   			DLL_STRBIN_DELAY_NUM_SEL |
> -			DLL_STRBIN_DELAY_NUM_DEFAULT << DLL_STRBIN_DELAY_NUM_OFFSET;
> +			data->ddr50_strbin_delay_num << DLL_STRBIN_DELAY_NUM_OFFSET;
>   		sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN);
>   	}
>   
> @@ -654,6 +657,9 @@ static const struct sdhci_data rk3568_data = {
>   	.flags = FLAG_INVERTER_FLAG_IN_RXCLK,
>   	.hs200_txclk_tapnum = DLL_TXCLK_TAPNUM_DEFAULT,
>   	.hs400_txclk_tapnum = 0x8,
> +	.hs400_cmdout_tapnum = DLL_CMDOUT_TAPNUM_90_DEGREES,
> +	.hs400_strbin_tapnum = DLL_STRBIN_TAPNUM_DEFAULT,
> +	.ddr50_strbin_delay_num = DLL_STRBIN_DELAY_NUM_DEFAULT,
>   };
>   
>   static const struct sdhci_data rk3588_data = {
> @@ -662,6 +668,9 @@ static const struct sdhci_data rk3588_data = {
>   	.config_dll = rk3568_sdhci_config_dll,
>   	.hs200_txclk_tapnum = DLL_TXCLK_TAPNUM_DEFAULT,
>   	.hs400_txclk_tapnum = 0x9,
> +	.hs400_cmdout_tapnum = DLL_CMDOUT_TAPNUM_90_DEGREES,
> +	.hs400_strbin_tapnum = DLL_STRBIN_TAPNUM_DEFAULT,
> +	.ddr50_strbin_delay_num = DLL_STRBIN_DELAY_NUM_DEFAULT,
>   };
>   
>   static const struct udevice_id sdhci_ids[] = {


More information about the U-Boot mailing list