Re: MMC: s3cmci: ensure host stopped on machine shutdown

Ben Dooks
2008-07-17T15:50:51Z

On Thu, Jul 17, 2008 at 05:29:45PM +0200, Pierre Ossman wrote:
> On Thu, 17 Jul 2008 15:32:54 +0100
> Ben Dooks <ben-linux@fluff.org> wrote:
>
> > Ensure that the s3cmci host controller is turned off
> > when the machine is shutdown, otherwise we end up
> > leaving the card powered and processing insertion and
> > removal events after the system prints "System halted."
> >
> > Signed-off-by: Ben Dooks <ben-linux@fluff.org>
> >
> > Index: linux-2.6.26-quilt3/drivers/mmc/host/s3cmci.c
> > ===================================================================
> > --- linux-2.6.26-quilt3.orig/drivers/mmc/host/s3cmci.c 2008-07-17 15:15:35.000000000 +0100
> > +++ linux-2.6.26-quilt3/drivers/mmc/host/s3cmci.c 2008-07-17 15:29:23.000000000 +0100
> > @@ -1331,21 +1331,30 @@ static int __devinit s3cmci_probe(struct
> > return ret;
> > }
> >
> > +static void s3cmci_shutdown(struct platform_device *pdev)
> > +{
> > + struct mmc_host *mmc = platform_get_drvdata(pdev);
> > + struct s3cmci_host *host = mmc_priv(mmc);
> > +
> > + if (host->irq_cd >= 0)
> > + free_irq(host->irq_cd, host);
> > +
> > + mmc_remove_host(mmc);
> > + clk_disable(host->clk);
> > +}
> > +
>
> The core can send requests your way until mmc_remove_host() returns so
> you can't remove the interrupt before then.

I'm only removing the card-detect interrupt, the main host one
is not being disabled here.