Hi Wolfram, > Subject: RE: [PATCH] mmc: renesas_sdhi: Fix internal cd irq miss with hard > reset > > Hi Wolfram, > > > Subject: RE: [PATCH] mmc: renesas_sdhi: Fix internal cd irq miss with > > hard reset > > > > Hi Wolfram, > > > > > Subject: Re: [PATCH] mmc: renesas_sdhi: Fix internal cd irq miss > > > with hard reset > > > > > > On Wed, Oct 06, 2021 at 06:16:05PM +0100, Biju Das wrote: > > > > > > > > This patch fixes internal cd irq miss after hard reset by enabling > > > > internal card insertion/removal interrupts. > > > > > > > > Fixes: b4d86f37eacb ("mmc: renesas_sdhi: do hard reset if > > > > possible") > > > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > > > > > > IIUC, the following should be the apropriate fix. Can you please > > > test > > it? > > > If it works, then I'll make a proper patch out of it. > > > > I have tested and it doesn't work. This addresses issue from > > tmio_mmc_reset call from tmio_mmc_core. > > > > Just to add, It could be related to timing issue, with your patch, if I > put some print message, It works. Finally found the issue. There is one more patch for host->reset in tmio_mmc_core.c. please see below. If you add this code, then it works. Can you please add this as well in your proper patch? @ -958,6 +963,11 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) /* For R-Car Gen2+, we need to reset SDHI specific SCC */ if (host->pdata->flags & TMIO_MMC_MIN_RCAR2) host->reset(host); + + if (host->native_hotplug) + tmio_mmc_enable_mmc_irqs(host, + TMIO_STAT_CARD_REMOVE | TMIO_STAT_CARD_INSERT); + Regards, Biju > > > > > > > > diff --git a/drivers/mmc/host/tmio_mmc_core.c > > > b/drivers/mmc/host/tmio_mmc_core.c > > > index 7dfc26f48c18..9416245a7b56 100644 > > > --- a/drivers/mmc/host/tmio_mmc_core.c > > > +++ b/drivers/mmc/host/tmio_mmc_core.c > > > @@ -195,6 +195,10 @@ static void tmio_mmc_reset(struct tmio_mmc_host > > > *host) > > > sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, host- > > > >sdcard_irq_mask_all); > > > host->sdcard_irq_mask = host->sdcard_irq_mask_all; > > > > > > + if (host->native_hotplug) > > > + tmio_mmc_enable_mmc_irqs(host, > > > + TMIO_STAT_CARD_REMOVE | TMIO_STAT_CARD_INSERT); > > > + > > > tmio_mmc_set_bus_width(host, host->mmc->ios.bus_width); > > > > > > if (host->pdata->flags & TMIO_MMC_SDIO_IRQ) { @@ -1185,10 +1189,6 > > > @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) > > > _host->set_clock(_host, 0); > > > tmio_mmc_reset(_host); > > > > > > - if (_host->native_hotplug) > > > - tmio_mmc_enable_mmc_irqs(_host, > > > - TMIO_STAT_CARD_REMOVE | TMIO_STAT_CARD_INSERT); > > > - > > > spin_lock_init(&_host->lock); > > > mutex_init(&_host->ios_lock); > > >