Message ID | 1484276362-44984-2-git-send-email-shawn.lin@rock-chips.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Heiko I guess you may lost this patch. We need it to prevent crash when boot up RK3288. 2017-01-13 10:59 GMT+08:00 Shawn Lin <shawn.lin@rock-chips.com>: > From: Ziyuan Xu <xzy.xu@rock-chips.com> > > 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") > Fixes: df9bcc2bc0a1 ("mmc: dw_mmc: add missing codes for runtime resume") > cc: <stable@vger.kernel.org> > Reported-by: Randy Li <randy.li@rock-chips.com> > Reported-by: S. Gilles <sgilles@math.umd.edu> > Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com> > Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> > > --- > > Changes in v5: > - rebase in order to skip spamming log > > 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 | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index dc58ec3..0914d53 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -3367,10 +3367,11 @@ 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, true); > - } > + > + /* Force setup bus to guarantee available clock output */ > + dw_mci_setup_bus(slot, true, true); > } > > /* Now that slots are all setup, we can enable card detect */ > -- > 1.9.1 > > > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, On 02/13/2017 03:32 PM, Eddie Cai wrote: > Hi Heiko > > I guess you may lost this patch. We need it to prevent crash when boot > up RK3288. > > 2017-01-13 10:59 GMT+08:00 Shawn Lin <shawn.lin@rock-chips.com>: >> From: Ziyuan Xu <xzy.xu@rock-chips.com> >> >> 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. As i know, this patch was applied. Which kernel do you use? Best Regards, Jaehoon Chung >> >> Fixes: e9ed8835e990 ("mmc: dw_mmc: add runtime PM callback") >> Fixes: df9bcc2bc0a1 ("mmc: dw_mmc: add missing codes for runtime resume") >> cc: <stable@vger.kernel.org> >> Reported-by: Randy Li <randy.li@rock-chips.com> >> Reported-by: S. Gilles <sgilles@math.umd.edu> >> Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com> >> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> >> >> --- >> >> Changes in v5: >> - rebase in order to skip spamming log >> >> 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 | 7 ++++--- >> 1 file changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c >> index dc58ec3..0914d53 100644 >> --- a/drivers/mmc/host/dw_mmc.c >> +++ b/drivers/mmc/host/dw_mmc.c >> @@ -3367,10 +3367,11 @@ 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, true); >> - } >> + >> + /* Force setup bus to guarantee available clock output */ >> + dw_mci_setup_bus(slot, true, true); >> } >> >> /* Now that slots are all setup, we can enable card detect */ >> -- >> 1.9.1 >> >> >> >> _______________________________________________ >> Linux-rockchip mailing list >> Linux-rockchip@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-rockchip > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi 2017-02-13 15:54 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>: > Hi, > > On 02/13/2017 03:32 PM, Eddie Cai wrote: >> Hi Heiko >> >> I guess you may lost this patch. We need it to prevent crash when boot >> up RK3288. >> >> 2017-01-13 10:59 GMT+08:00 Shawn Lin <shawn.lin@rock-chips.com>: >>> From: Ziyuan Xu <xzy.xu@rock-chips.com> >>> >>> 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. > > As i know, this patch was applied. Which kernel do you use? I just update the kernel and find it applied. Thanks for reminding. > > Best Regards, > Jaehoon Chung > >>> >>> Fixes: e9ed8835e990 ("mmc: dw_mmc: add runtime PM callback") >>> Fixes: df9bcc2bc0a1 ("mmc: dw_mmc: add missing codes for runtime resume") >>> cc: <stable@vger.kernel.org> >>> Reported-by: Randy Li <randy.li@rock-chips.com> >>> Reported-by: S. Gilles <sgilles@math.umd.edu> >>> Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com> >>> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> >>> >>> --- >>> >>> Changes in v5: >>> - rebase in order to skip spamming log >>> >>> 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 | 7 ++++--- >>> 1 file changed, 4 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c >>> index dc58ec3..0914d53 100644 >>> --- a/drivers/mmc/host/dw_mmc.c >>> +++ b/drivers/mmc/host/dw_mmc.c >>> @@ -3367,10 +3367,11 @@ 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, true); >>> - } >>> + >>> + /* Force setup bus to guarantee available clock output */ >>> + dw_mci_setup_bus(slot, true, true); >>> } >>> >>> /* Now that slots are all setup, we can enable card detect */ >>> -- >>> 1.9.1 >>> >>> >>> >>> _______________________________________________ >>> Linux-rockchip mailing list >>> Linux-rockchip@lists.infradead.org >>> http://lists.infradead.org/mailman/listinfo/linux-rockchip >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index dc58ec3..0914d53 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -3367,10 +3367,11 @@ 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, true); - } + + /* Force setup bus to guarantee available clock output */ + dw_mci_setup_bus(slot, true, true); } /* Now that slots are all setup, we can enable card detect */