Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1551687

[PATCH v4] mmc: dw_mmc: force setup bus if active slots exist

From Ziyuan Xu <xzy.xu@rock-chips.com>
Newsgroups linux.kernel
Subject [PATCH v4] mmc: dw_mmc: force setup bus if active slots exist
Date 2017-01-05 08:30 +0100
Message-ID <sWaEN-85U-9@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


It's necessary to setup bus if any slots are present.
- update clock after ctrl reset
- if the host has genpd node, we can guarantee the clock is available
before starting request. Otherwies, the clock register is reset once
power off the pd, and host can't output the active clock during
communication.

fixes: e9ed8835e990 ("mmc: dw_mmc: add runtime PM callback")
Reported-by: Randy Li <randy.li@rock-chips.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>

---
Hi guys,

I found a similar issue on rk3399 platform, which has a genpd node for
SD card host. Power off-on pd will reset the registers to a default
value (ie. CLKENA), so that the host can't output the active clock
during communication.

So we need to setup bus in rpm resume. It also wraps the update clock
behaviour which I did in V3.

Thanks,
Ziyuan Xu


Changes in v4:
- update commit message
- fix SD host rpm resume can't work

Changes in v3:
- only reset host with active slot.

Changes in v2:
- update the commit message
- use dw_mci_reset instead of dw_mci_ctrl_reset

 drivers/mmc/host/dw_mmc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index b44306b..b6053b3 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -3354,10 +3354,10 @@ int dw_mci_runtime_resume(struct device *dev)
 
 		if (!slot)
 			continue;
-		if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
+		if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER)
 			dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
-			dw_mci_setup_bus(slot, true);
-		}
+		/* Force setup bus to guarantee available clock output */
+		dw_mci_setup_bus(slot, true);
 	}
 
 	/* Now that slots are all setup, we can enable card detect */
-- 
2.7.4

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH v4] mmc: dw_mmc: force setup bus if active slots exist Ziyuan Xu <xzy.xu@rock-chips.com> - 2017-01-05 08:30 +0100
  Re: [PATCH v4] mmc: dw_mmc: force setup bus if active slots exist Shawn Lin <shawn.lin@rock-chips.com> - 2017-01-05 08:50 +0100
    Re: [PATCH v4] mmc: dw_mmc: force setup bus if active slots exist Ziyuan <xzy.xu@rock-chips.com> - 2017-01-09 04:40 +0100
      Re: [PATCH v4] mmc: dw_mmc: force setup bus if active slots exist Jaehoon Chung <jh80.chung@samsung.com> - 2017-01-09 06:50 +0100
        Re: [PATCH v4] mmc: dw_mmc: force setup bus if active slots exist Shawn Lin <shawn.lin@rock-chips.com> - 2017-01-09 07:50 +0100

csiph-web