public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Anton Vorontsov <avorontsov@ru•mvista.com>
To: Kumar Gala <galak@kernel•crashing.org>,
	David Brownell <dbrownell@users•sourceforge.net>,
	Pierre Ossman <drzeus-mmc@drzeus•cx>
Cc: linuxppc-dev@ozlabs•org, spi-devel-general@lists•sourceforge.net,
	linux-kernel@vger•kernel.org, Timur Tabi <timur@freescale•com>
Subject: [PATCH 2/3] mmc_spi: add support for card-detection polling
Date: Fri, 23 May 2008 19:43:43 +0400	[thread overview]
Message-ID: <20080523154343.GB24862@polina.dev.rtsoft.ru> (raw)
In-Reply-To: <20080523154204.GA19803@polina.dev.rtsoft.ru>

This patch adds new platform data variable "caps", so platforms
could pass theirs capabilities into MMC core (for example, platforms
without interrupt on the CD line will most probably want to pass
MMC_CAP_NEEDS_POLL).

New platform get_cd() callback provided to optimize polling.

Signed-off-by: Anton Vorontsov <avorontsov@ru•mvista.com>
---
 drivers/mmc/host/mmc_spi.c  |   19 +++++++++++++++++--
 include/linux/spi/mmc_spi.h |    9 +++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 3550858..724870c 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -1131,11 +1131,20 @@ static int mmc_spi_get_ro(struct mmc_host *mmc)
 	return 0;
 }
 
+static int mmc_spi_get_cd(struct mmc_host *mmc)
+{
+	struct mmc_spi_host *host = mmc_priv(mmc);
+
+	if (host->pdata && host->pdata->get_cd)
+		return host->pdata->get_cd(mmc->parent);
+	return -ENOSYS;
+}
 
 static const struct mmc_host_ops mmc_spi_ops = {
 	.request	= mmc_spi_request,
 	.set_ios	= mmc_spi_set_ios,
 	.get_ro		= mmc_spi_get_ro,
+	.get_cd		= mmc_spi_get_cd,
 };
 
 
@@ -1319,17 +1328,23 @@ static int mmc_spi_probe(struct spi_device *spi)
 			goto fail_glue_init;
 	}
 
+	/* pass platform capabilities, if any */
+	if (host->pdata)
+		mmc->caps |= host->pdata->caps;
+
 	status = mmc_add_host(mmc);
 	if (status != 0)
 		goto fail_add_host;
 
-	dev_info(&spi->dev, "SD/MMC host %s%s%s%s\n",
+	dev_info(&spi->dev, "SD/MMC host %s%s%s%s%s\n",
 			mmc->class_dev.bus_id,
 			host->dma_dev ? "" : ", no DMA",
 			(host->pdata && host->pdata->get_ro)
 				? "" : ", no WP",
 			(host->pdata && host->pdata->setpower)
-				? "" : ", no poweroff");
+				? "" : ", no poweroff",
+			(mmc->caps & MMC_CAP_NEEDS_POLL)
+				? ", cd polling" : "");
 	return 0;
 
 fail_add_host:
diff --git a/include/linux/spi/mmc_spi.h b/include/linux/spi/mmc_spi.h
index d5ca78b..a3626ae 100644
--- a/include/linux/spi/mmc_spi.h
+++ b/include/linux/spi/mmc_spi.h
@@ -23,6 +23,15 @@ struct mmc_spi_platform_data {
 	/* sense switch on sd cards */
 	int (*get_ro)(struct device *);
 
+	/*
+	 * If board does not use CD interrupts, driver can optimize polling
+	 * using this function.
+	 */
+	int (*get_cd)(struct device *);
+
+	/* Capabilities to pass into mmc core (e.g. MMC_CAP_NEEDS_POLL). */
+	unsigned long caps;
+
 	/* how long to debounce card detect, in msecs */
 	u16 detect_delay;
 
-- 
1.5.5.1

  parent reply	other threads:[~2008-05-23 15:43 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-16 16:50 [PATCH 3/4] [MMC] mmc_spi: add polling support for the card detect line Anton Vorontsov
2008-05-17 11:36 ` Pierre Ossman
2008-05-21 18:47   ` Anton Vorontsov
2008-05-21 18:47     ` [PATCH 1/2] mmc: add support for card-detection polling Anton Vorontsov
2008-05-21 18:47     ` [PATCH 2/2] mmc_spi: " Anton Vorontsov
     [not found]     ` <20080521212831.523f344b@mjolnir.drzeus.cx>
2008-05-22 18:17       ` [PATCH 3/4] [MMC] mmc_spi: add polling support for the card detect line Anton Vorontsov
2008-05-22 18:18         ` [PATCH 1/3] mmc: add support for card-detection polling Anton Vorontsov
2008-05-22 18:18         ` [PATCH 2/3] mmc_spi: " Anton Vorontsov
2008-05-22 18:18         ` [PATCH 3/3] mmc: change .get_ro() callback semantics Anton Vorontsov
     [not found]         ` <20080522213432.4a50629b@mjolnir.drzeus.cx>
2008-05-23 15:42           ` [PATCH 3/4] [MMC] mmc_spi: add polling support for the card detect line Anton Vorontsov
2008-05-23 15:43             ` [PATCH 1/3] mmc: add support for card-detection polling Anton Vorontsov
2008-05-23 15:43             ` Anton Vorontsov [this message]
2008-05-23 15:43             ` [PATCH 3/3] mmc: change .get_ro() callback semantics Anton Vorontsov
2008-06-03 10:07               ` Marc Pignat
2008-06-05 14:43                 ` Anton Vorontsov
2008-06-05 15:58                   ` Marc Pignat
2008-06-05 17:10                     ` [PATCH] mmc: toughen get_ro() and get_cd() return values Anton Vorontsov
2008-05-19  3:02 ` [PATCH 3/4] [MMC] mmc_spi: add polling support for the card detectline Chen Gong
2008-05-22 12:38   ` Anton Vorontsov
2008-05-22 13:44     ` [PATCH 3/4] [MMC] mmc_spi: add polling support for the carddetectline Chen Gong
2008-05-26 15:37       ` Anton Vorontsov
2008-05-27  2:11         ` [PATCH 3/4] [MMC] mmc_spi: add polling support for thecarddetectline Chen Gong

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=20080523154343.GB24862@polina.dev.rtsoft.ru \
    --to=avorontsov@ru$(echo .)mvista.com \
    --cc=dbrownell@users$(echo .)sourceforge.net \
    --cc=drzeus-mmc@drzeus$(echo .)cx \
    --cc=galak@kernel$(echo .)crashing.org \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linuxppc-dev@ozlabs$(echo .)org \
    --cc=spi-devel-general@lists$(echo .)sourceforge.net \
    --cc=timur@freescale$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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