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

Previous thread: [PATCH] [RESEND] fbcon: simple text blinking implementation by Stefano Stabellini on Thursday, July 17, 2008 - 6:50 am. (3 messages)

Next thread: why doesn't /proc/self/maps mtime change when memory's allocated? by Andy Chittenden on Thursday, July 17, 2008 - 7:36 am. (1 message)
From: Ben Dooks
Date: Thursday, July 17, 2008 - 7:32 am

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);
+}
+
 static int __devexit s3cmci_remove(struct platform_device *pdev)
 {
 	struct mmc_host		*mmc  = platform_get_drvdata(pdev);
 	struct s3cmci_host	*host = mmc_priv(mmc);
 
-	mmc_remove_host(mmc);
+	s3cmci_shutdown(pdev);
 
-	clk_disable(host->clk);
 	clk_put(host->clk);
 
 	tasklet_disable(&host->pio_tasklet);
 	s3c2410_dma_free(S3CMCI_DMA, &s3cmci_dma_client);
 
-	if (host->irq_cd >= 0)
-		free_irq(host->irq_cd, host);
 	free_irq(host->irq, host);
 
 	iounmap(host->base);
@@ -1397,6 +1406,7 @@ static struct platform_driver s3cmci_241
 	.driver.owner	= THIS_MODULE,
 	.probe		= s3cmci_2410_probe,
 	.remove		= __devexit_p(s3cmci_remove),
+	.shutdown	= s3cmci_shutdown,
 	.suspend	= s3cmci_suspend,
 	.resume		= s3cmci_resume,
 };
@@ -1406,6 +1416,7 @@ static struct platform_driver s3cmci_241
 	.driver.owner	= THIS_MODULE,
 	.probe		= s3cmci_2412_probe,
 	.remove		= __devexit_p(s3cmci_remove),
+	.shutdown	= s3cmci_shutdown,
 	.suspend	= s3cmci_suspend,
 	.resume		= s3cmci_resume,
 };
@@ -1415,6 +1426,7 @@ static struct platform_driver s3cmci_244
 ...
From: Pierre Ossman
Date: Thursday, July 17, 2008 - 8:29 am

On Thu, 17 Jul 2008 15:32:54 +0100

The core can send requests your way until mmc_remove_host() returns so
you can't remove the interrupt before then.

Rgds
-- 
     -- Pierre Ossman

  Linux kernel, MMC maintainer        http://www.kernel.org
  rdesktop, core developer          http://www.rdesktop.org

  WARNING: This correspondence is being monitored by the
  Swedish government. Make sure your server uses encryption
  for SMTP traffic and consider using PGP for end-to-end
  encryption.
--

From: Ben Dooks
Date: Thursday, July 17, 2008 - 8:50 am

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

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'
--

From: Pierre Ossman
Date: Thursday, July 17, 2008 - 9:22 am

On Thu, 17 Jul 2008 16:50:37 +0100

Ah, I see. Then it should be just fine. I'll have it queued up.

Rgds
-- 
     -- Pierre Ossman

  Linux kernel, MMC maintainer        http://www.kernel.org
  rdesktop, core developer          http://www.rdesktop.org

  WARNING: This correspondence is being monitored by the
  Swedish government. Make sure your server uses encryption
  for SMTP traffic and consider using PGP for end-to-end
  encryption.
--

From: Ben Dooks
Date: Thursday, July 17, 2008 - 11:27 am

It does depend on the previous patch to fix the section
mismatch reports.

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'
--

Previous thread: [PATCH] [RESEND] fbcon: simple text blinking implementation by Stefano Stabellini on Thursday, July 17, 2008 - 6:50 am. (3 messages)

Next thread: why doesn't /proc/self/maps mtime change when memory's allocated? by Andy Chittenden on Thursday, July 17, 2008 - 7:36 am. (1 message)