Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64b246ee authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mmc: sdhci: Fix the timeout check window for clock and reset"

parents f68cc8fe ff54900c
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -248,8 +248,12 @@ void sdhci_reset(struct sdhci_host *host, u8 mask)
			SDHCI_INT_STATUS);

	/* hw clears the bit when it's done */
	while (sdhci_readb(host, SDHCI_SOFTWARE_RESET) & mask) {
		if (ktime_after(ktime_get(), timeout)) {
	while (1) {
		bool timedout = ktime_after(ktime_get(), timeout);

		if (!(sdhci_readb(host, SDHCI_SOFTWARE_RESET) & mask))
			break;
		if (timedout) {
			pr_err("%s: Reset 0x%x never completed.\n",
				mmc_hostname(host->mmc), (int)mask);
			MMC_TRACE(host->mmc, "%s: Reset 0x%x never completed\n",
@@ -1576,9 +1580,13 @@ void sdhci_enable_clk(struct sdhci_host *host, u16 clk)

	/* Wait max 20 ms */
	timeout = ktime_add_ms(ktime_get(), 20);
	while (!((clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL))
		& SDHCI_CLOCK_INT_STABLE)) {
		if (ktime_after(ktime_get(), timeout)) {
	while (1) {
		bool timedout = ktime_after(ktime_get(), timeout);

		clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
		if (clk & SDHCI_CLOCK_INT_STABLE)
			break;
		if (timedout) {
			pr_err("%s: Internal clock never stabilised.\n",
			       mmc_hostname(host->mmc));
			MMC_TRACE(host->mmc,