diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index c33f415917e..ccf1bdc48ed 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -359,6 +359,11 @@ static int clk_set_default_rates(struct udevice *dev,
 
 		ret = clk_set_rate(c, rates[index]);
 
+		printf("clk-defaults: %s: assigned-clock-rates[%d] = %lu -> %lu (%s)\n",
+		       dev->name, index, (ulong)rates[index],
+		       (ulong)clk_get_rate(c),
+		       IS_ERR_VALUE(ret) ? "ERROR" : "ok");
+
 		if (IS_ERR_VALUE(ret)) {
 			dev_warn(dev,
 				 "failed to set rate on clock index %d (%ld) (error = %d)\n",
diff --git a/drivers/clk/spacemit/clk_mix.c b/drivers/clk/spacemit/clk_mix.c
index b626295c926..1b6ea3a9914 100644
--- a/drivers/clk/spacemit/clk_mix.c
+++ b/drivers/clk/spacemit/clk_mix.c
@@ -181,6 +181,10 @@ static unsigned long ccu_mix_set_rate(struct clk *clk, unsigned long rate)
 
 	ccu_mix_calc_best_rate(clk, rate, &parent, &parent_rate, &target_div);
 
+	printf("clk: %s: set_rate(%lu) best parent=%s/%lu div=%u (mux now=%u)\n",
+	       common->name, rate, parent ? parent->dev->name : "-", parent_rate,
+	       target_div, mux->width ? ccu_mux_current_parent_index(clk) : 0);
+
 	if (mux->width && parent) {
 		index = ccu_mux_wanted_parent_index(common, parent);
 		if (index < 0)
@@ -197,14 +201,20 @@ static unsigned long ccu_mix_set_rate(struct clk *clk, unsigned long rate)
 	current_div = ccu_read(common, ctrl) >> div->shift;
 	current_div &= (1 << div->width) - 1;
 
-	if (current_div == target_div)
+	if (current_div == target_div) {
+		printf("clk: %s: divider already %u, nothing written\n",
+		       common->name, target_div);
 		return 0;
+	}
 
 	mask = GENMASK(div->width + div->shift - 1, div->shift);
 
 	ccu_update(common, ctrl, mask, target_div << div->shift);
 
-	return ccu_mix_trigger_fc(clk);
+	ret = ccu_mix_trigger_fc(clk);
+	printf("clk: %s: wrote div=%u (was %u), fc=%d\n",
+	       common->name, target_div, current_div, ret);
+	return ret;
 }
 
 static int ccu_mux_set_parent(struct clk *clk, struct clk *parent)
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 962a99cd05a..17e2edb5285 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -480,6 +480,17 @@ int sdhci_set_clock(struct mmc *mmc, unsigned int clock)
 
 	clk |= SDHCI_CLOCK_CARD_EN;
 	sdhci_writew(host, clk, SDHCI_CLOCK_CONTROL);
+
+	u16 cc = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
+	u32 field = ((cc >> SDHCI_DIVIDER_SHIFT) & SDHCI_DIV_MASK) |
+			(((cc >> SDHCI_DIVIDER_HI_SHIFT) & 0x3)
+				<< SDHCI_DIV_MASK_LEN);
+	u32 divisor = field ? 2 * field : 1;
+
+	printf("sdhci: %s: clk req=%u max_clk=%u ctrl=%04x div=%u actual=%u\n",
+			mmc->dev->name, clock, host->max_clk, cc, divisor,
+			host->max_clk / divisor);
+
 	return 0;
 }
 
diff --git a/drivers/mmc/spacemit_sdhci.c b/drivers/mmc/spacemit_sdhci.c
index ed892a5e523..94e192f0e0a 100644
--- a/drivers/mmc/spacemit_sdhci.c
+++ b/drivers/mmc/spacemit_sdhci.c
@@ -252,6 +252,10 @@ static void spacemit_sdhci_set_voltage(struct sdhci_host *host)
 			bool ok;
 			int voltage_mv = to_180 ? 1800000 : 3300000;
 
+			printf("sdhci: voltage signal_voltage=%u vqmmc=%s -> %dmV\n",
+			       mmc->signal_voltage,
+			       mmc->vqmmc_supply ? mmc->vqmmc_supply->name : "none",
+			       voltage_mv);
 			if (spacemit_sdhci_set_vqmmc_voltage(mmc, voltage_mv))
 				return;
 			if (!IS_SD(mmc))
@@ -275,7 +279,8 @@ static void spacemit_sdhci_set_voltage(struct sdhci_host *host)
 			break;
 		}
 		default:
-			/* No signal voltage switch required */
+			printf("sdhci: voltage signal_voltage=%u -> no switch\n",
+			       mmc->signal_voltage);
 			return;
 		}
 	}
@@ -610,6 +615,9 @@ static int spacemit_sdhci_probe(struct udevice *dev)
 		goto err_reset;
 	}
 
+	printf("sdhci: %s: io rate=%lu max_clk=%u f_max=%u\n",
+	       dev->name, rate, (u32)rate, plat->cfg.f_max);
+
 	/* Set quirks */
 	host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD |
 		       SDHCI_QUIRK_32BIT_DMA_ADDR;
