Hi, Adding the linux-mmc folks to Cc too. * Romain Naour <romain.naour@xxxxxxxx> [240130 11:20]: > Le 29/01/2024 à 18:42, Romain Naour a écrit : > > Le 29/01/2024 à 12:17, Tony Lindgren a écrit : > >> So I'm still guessing your issue is with emmc not getting reinitialized > >> properly as there's no mmc-pwrseq-emmc configured. Can you give it a > >> try? See am5729-beagleboneai.dts for an example. > > I can't add such mmc-pwrseq-emmc on the custom board, there is no gpio available > to reset the emmc device. > > To resume: > - the emmc doesn't work with mmc-hs200-1_8v mode with PM runtime enabled > - the emmc works with mmc-hs200-1_8v mode without PM runtime (patch series reverted) > - the emmc works with mmc-ddr-1_8v mode with PM runtime enabled > > AFAIU the hs200 mode requires some pin iodelay tuning (SDHCI_OMAP_REQUIRE_IODELAY) > is sdhci_omap_runtime_{suspend,resume} needs to take care of that? > > The mmc2 clock seems idle when mmc-hs200-1_8v and PM runtime are used. > > omapconf dump prcm l3init > > (mmc2 clock idle) > | CM_L3INIT_MMC2_CLKCTRL | 0x4A009330 | 0x01070000 | > > (mmc2 clock running) > | CM_L3INIT_MMC2_CLKCTRL | 0x4A009330 | 0x01040002 | > > Thoughts? OK so if the emmc reset gpio is not available, seems we should do something like the following patch to not set MMC_CAP_POWER_OFF_CARD unless the cap-power-off-card devicetree property is set. Care to give it a try and see if it helps? Regards, Tony 8< ---------------- diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c --- a/drivers/mmc/host/sdhci-omap.c +++ b/drivers/mmc/host/sdhci-omap.c @@ -1339,8 +1339,11 @@ static int sdhci_omap_probe(struct platform_device *pdev) /* R1B responses is required to properly manage HW busy detection. */ mmc->caps |= MMC_CAP_NEED_RSP_BUSY; - /* Allow card power off and runtime PM for eMMC/SD card devices */ - mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_AGGRESSIVE_PM; + /* + * Allow runtime PM for eMMC/SD card devices. Note that to power off + * the card, the devicetree property cap-power-off-card must be set. + */ + mmc->caps |= MMC_CAP_AGGRESSIVE_PM; ret = sdhci_setup_host(host); if (ret) -- 2.43.0