[PATCH v2 06/17] mmc: rockchip_sdhci: Use set_clock and config_dll sdhci_ops

Jonas Karlman jonas at kwiboo.se
Thu Apr 20 13:10:03 CEST 2023


Hi Kever,
On 2023-04-20 12:19, Kever Yang wrote:
> Hi Tom,
> 
> I got error report like below log when apply many of this patchset with 
> "git-pw patch apply 1770392",
> 
> did you met this kind of issue and do you know why?

There are some interdependence in different incoming rockchip series,
I have seen similar issue due to conflicts applying rk patches locally.

Regards,
Jonas

> 
> error: sha1 information is lacking or useless 
> (drivers/mmc/rockchip_sdhci.c).
> error: could not build fake ancestor
> hint: Use 'git am --show-current-patch' to see the failed patch
> Patch failed at 0006 mmc: rockchip_sdhci: Use set_clock and config_dll 
> sdhci_ops
> 
> Thanks,
> 
> - Kever
> 
> On 2023/4/19 00:46, Jonas Karlman wrote:
>> Change to configure clock and DLL in set_clock and config_dll ops
>> instead of in the set_ios_post ops.
>>
>> With this change the output clock is turned off while configuring DLL
>> parameters, according to the design recommendations.
>>
>> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
>> ---
>> v2:
>> - No change
>>
>>   drivers/mmc/rockchip_sdhci.c | 28 +++++++++++++++-------------
>>   1 file changed, 15 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c
>> index bc9838ac7c45..fdf48f4066c9 100644
>> --- a/drivers/mmc/rockchip_sdhci.c
>> +++ b/drivers/mmc/rockchip_sdhci.c
>> @@ -291,18 +291,24 @@ static int rk3399_sdhci_set_ios_post(struct sdhci_host *host)
>>   	return 0;
>>   }
>>   
>> -static int rk3568_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock)
>> +static void rk3568_sdhci_set_clock(struct sdhci_host *host, u32 div)
>>   {
>>   	struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host);
>> +	struct mmc *mmc = host->mmc;
>> +	ulong rate;
>> +
>> +	rate = clk_set_rate(&priv->emmc_clk, mmc->clock);
>> +	if (IS_ERR_VALUE(rate))
>> +		printf("%s: Set clock rate failed: %ld\n", __func__, (long)rate);
>> +}
>> +
>> +static int rk3568_sdhci_config_dll(struct sdhci_host *host, u32 clock, bool enable)
>> +{
>>   	int val, ret;
>>   	u32 extra;
>>   
>> -	if (clock > host->max_clk)
>> -		clock = host->max_clk;
>> -	if (clock)
>> -		clk_set_rate(&priv->emmc_clk, clock);
>> -
>> -	sdhci_set_clock(host->mmc, clock);
>> +	if (!enable)
>> +		return 0;
>>   
>>   	if (clock >= 100 * MHz) {
>>   		/* reset DLL */
>> @@ -386,14 +392,8 @@ static int rk3568_sdhci_set_enhanced_strobe(struct sdhci_host *host)
>>   static int rk3568_sdhci_set_ios_post(struct sdhci_host *host)
>>   {
>>   	struct mmc *mmc = host->mmc;
>> -	uint clock = mmc->tran_speed;
>>   	u32 reg, vendor_reg;
>>   
>> -	if (!clock)
>> -		clock = mmc->clock;
>> -
>> -	rk3568_sdhci_emmc_set_clock(host, clock);
>> -
>>   	if (mmc->selected_mode == MMC_HS_400 || mmc->selected_mode == MMC_HS_400_ES) {
>>   		reg = sdhci_readw(host, SDHCI_HOST_CONTROL2);
>>   		reg &= ~SDHCI_CTRL_UHS_MASK;
>> @@ -614,6 +614,8 @@ static const struct sdhci_data rk3399_data = {
>>   static const struct sdhci_data rk3568_data = {
>>   	.get_phy = rk3568_emmc_get_phy,
>>   	.set_ios_post = rk3568_sdhci_set_ios_post,
>> +	.set_clock = rk3568_sdhci_set_clock,
>> +	.config_dll = rk3568_sdhci_config_dll,
>>   	.set_enhanced_strobe = rk3568_sdhci_set_enhanced_strobe,
>>   };
>>   



More information about the U-Boot mailing list