Hi Kever, On 2023-04-20 13:10, Jonas Karlman wrote: > 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.
Look like this patch was conflicting with [1]. This patch also include a change how the mmc->clock is used. I have not been able to reproduce the issue described in [1] with this series. Will send a rebased v3 of just this patch, remaining patches in this series apply cleanly on top of your master branch after the conflict in this patch is resolved. [1] https://patchwork.ozlabs.org/project/uboot/patch/20230307212646.56576-1-anars...@gmail.com/ Regards, Jonas > > 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 <jo...@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, >>> }; >>> >