public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: ben@fluff.org.uk
To: linux-kernel@vger.kernel.org, drzeus-mmc@drzeus.cx
Cc: laforge@openmoko.org, tk@maintech.de, Ben Dooks <ben-linux@fluff.org>
Subject: [patch v5 09/16] MMC: S3C24XX: Allow card-detect on non-IRQ capable pin
Date: Mon, 30 Jun 2008 22:40:32 +0100	[thread overview]
Message-ID: <20080630214110.435818323@fluff.org.uk> (raw)
In-Reply-To: 20080630214023.140288591@fluff.org.uk

[-- Attachment #1: simtec/s3c24xx-sdmmc-nocdirq.patch --]
[-- Type: text/plain, Size: 2355 bytes --]

Add support to the S3C24XX MMC driver to have the card detect be on
a pin that is not IRQ capable.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Index: linux-2.6.26-rc8-next20080627/drivers/mmc/host/s3cmci.c
===================================================================
--- linux-2.6.26-rc8-next20080627.orig/drivers/mmc/host/s3cmci.c	2008-06-30 12:36:49.000000000 +0100
+++ linux-2.6.26-rc8-next20080627/drivers/mmc/host/s3cmci.c	2008-06-30 12:36:51.000000000 +0100
@@ -1150,8 +1150,6 @@ static int __devinit s3cmci_probe(struct
 	host->pio_active 	= XFER_NONE;
 
 	host->dma		= S3CMCI_DMA;
-	host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect);
-	s3c2410_gpio_cfgpin(host->pdata->gpio_detect, S3C2410_GPIO_IRQ);
 
 	host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!host->mem) {
@@ -1197,14 +1195,20 @@ static int __devinit s3cmci_probe(struct
 
 	disable_irq(host->irq);
 
-	s3c2410_gpio_cfgpin(host->pdata->gpio_detect, S3C2410_GPIO_IRQ);
-	set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
+	host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect);
 
-	if (request_irq(host->irq_cd, s3cmci_irq_cd, 0, DRIVER_NAME, host)) {
-		dev_err(&pdev->dev,
-			"failed to request card detect interrupt.\n");
-		ret = -ENOENT;
-		goto probe_free_irq;
+	if (host->irq_cd >= 0) {
+		if (request_irq(host->irq_cd, s3cmci_irq_cd,
+				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+				DRIVER_NAME, host)) {
+			dev_err(&pdev->dev, "can't get card detect irq.\n");
+			ret = -ENOENT;
+			goto probe_free_irq;
+		}
+	} else {
+		dev_warn(&pdev->dev, "host detect has no irq available\n");
+		s3c2410_gpio_cfgpin(host->pdata->gpio_detect,
+				    S3C2410_GPIO_INPUT);
 	}
 
 	if (host->pdata->gpio_wprotect)
@@ -1273,7 +1277,8 @@ static int __devinit s3cmci_probe(struct
 	clk_put(host->clk);
 
  probe_free_irq_cd:
-	free_irq(host->irq_cd, host);
+	if (host->irq_cd >= 0)
+		free_irq(host->irq_cd, host);
 
  probe_free_irq:
 	free_irq(host->irq, host);
@@ -1303,7 +1308,8 @@ static int s3cmci_remove(struct platform
 	tasklet_disable(&host->pio_tasklet);
 	s3c2410_dma_free(S3CMCI_DMA, &s3cmci_dma_client);
 
-	free_irq(host->irq_cd, host);
+	if (host->irq_cd >= 0)
+		free_irq(host->irq_cd, host);
 	free_irq(host->irq, host);
 
 	iounmap(host->base);

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

  'a smiley only costs 4 bytes'

  parent reply	other threads:[~2008-06-30 21:51 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-30 21:40 [patch v5 00/16] S3C24XX SD/MMC driver ben
2008-06-30 21:40 ` [patch v5 01/16] MMC: S3C24XX MMC/SD driver ben
2008-06-30 21:40 ` [patch v5 02/16] MMC: S3C24XX MMC/SD driver write fixes ben
2008-06-30 21:40 ` [patch v5 03/16] MMC: DMA free fix for S3C24XX SD/MMC driver ben
2008-06-30 21:40 ` [patch v5 04/16] MMC: S3C24XX MMC/SD stop fix ben
2008-06-30 21:40 ` [patch v5 05/16] MMC: Fix S3C24XX IRQ enable during PIO transfers ben
2008-06-30 21:40 ` [patch v5 06/16] MMC: S3C24XX: Add platform data for MMC/SD driver ben
2008-06-30 21:40 ` [patch v5 07/16] MMC: S3C24XX: Add support to invert write protect line ben
2008-06-30 21:40 ` [patch v5 08/16] MMC: S3C24XX: Ensure host->mrq->data is valid ben
2008-06-30 21:40 ` ben [this message]
2008-06-30 21:40 ` [patch v5 10/16] MMC: S3C24XX: Fix s3c2410_dma_request() return code check ben
2008-06-30 21:40 ` [patch v5 11/16] MMC: S3C24XX: Add MODULE_ALIAS() entries for the platform devices ben
2008-06-30 21:40 ` [patch v5 12/16] MMC: S3C24XX: Fix use of msecs where jiffies are needed ben
2008-06-30 21:40 ` [patch v5 13/16] MMC: S3C24XX: Add media presence test to request handling ben
2008-06-30 21:40 ` [patch v5 14/16] MMC: S3C24XX: Update error debugging ben
2008-06-30 21:40 ` [patch v5 15/16] MMC: S3C24XX: Add maintainer entry ben
2008-06-30 21:40 ` [patch v5 16/16] MMC: S3C24XX: Refuse incorrectly aligned transfers ben
2008-06-30 21:47 ` [patch v5 00/16] S3C24XX SD/MMC driver Ben Dooks
2008-07-04 17:05 ` Pierre Ossman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080630214110.435818323@fluff.org.uk \
    --to=ben@fluff.org.uk \
    --cc=ben-linux@fluff.org \
    --cc=drzeus-mmc@drzeus.cx \
    --cc=laforge@openmoko.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tk@maintech.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox