RE: [PATCH] mmc: renesas_sdhi: Fix internal cd irq miss with hard reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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);
> > >





[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux