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?

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,
  };

Reply via email to