Re: [PATCH] sdio: add CD disable support

2009-07-31 Thread Ohad Ben-Cohen
Hi David,

Thank you for your comments.

On Thu, Jul 30, 2009 at 3:54 PM, David Vrabeldavid.vra...@csr.com wrote:
 Platforms may rely on the card's pull-up and not fit/configure an
 external one.  There may need to be a way for host controller drivers to
  say this and prevent the disabling of the card's DAT3 pull-up.

Currently the only way to really disable the CD using this patch is by
setting the disable_cd bit on for a specific controller. We are doing so
for a specific controller to which an embedded sdio device is wired,
on certain boards. This is done using the embedded_sdio's .cccr field,
which is used instead of reading the card's cccr.
So as you correctly noted, card has no say here.

 The first sentence of this comment doesn't make sense.

Fixed;

I'll follow-up with a correction of the patch and will appreciate your review.

Thanks,
Ohad.
--
To unsubscribe from this list: send the line unsubscribe linux-embedded in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] sdio: add CD disable support

2009-07-31 Thread Ohad Ben-Cohen
Hi Matt,

On Thu, Jul 30, 2009 at 9:50 PM, Matt Flemingm...@console-pimps.org wrote:
 As David has already said, both comments need fixing up. It is the host
 controller driver that decides whether to disable the DAT[3] pull-up,
 not the card. If you make those changes then you can add my Acked-by.

I'm posting a follow-up patch with the fixes and your Ack,

will appreciate your second review.

Thanks,
Ohad.
--
To unsubscribe from this list: send the line unsubscribe linux-embedded in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] sdio: add CD disable support

2009-07-30 Thread Ohad Ben-Cohen
From: Ohad Ben-Cohen o...@wizery.com

To save power, the pull-up resistor on CD/DAT[3] (pin 1)
of the card can be disconnected. This is desired, e.g.,
with embedded SDIO devices which do not rely on this pin
for card detection.

Signed-off-by: Ohad Ben-Cohen  o...@wizery.com
---
 drivers/mmc/core/sdio.c  |   32 
 include/linux/mmc/card.h |3 ++-
 2 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index fb99ccf..4c4c9a9 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -165,6 +165,31 @@ static int sdio_enable_wide(struct mmc_card *card)
 }
 
 /*
+ * Disconnect the pull-up resistor on CD/DAT[3] if requested by the card.
+ * If card detection is not needed, this can save some power.
+ */
+static int sdio_disable_cd(struct mmc_card *card)
+{
+   int ret;
+   u8 ctrl;
+
+   if (!card-cccr.disable_cd)
+   return 0;
+
+   ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_IF, 0, ctrl);
+   if (ret)
+   return ret;
+
+   ctrl |= SDIO_BUS_CD_DISABLE;
+
+   ret = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_IF, ctrl, NULL);
+   if (ret)
+   return ret;
+
+   return 0;
+}
+
+/*
  * Test if the card supports high-speed mode and, if so, switch to it.
  */
 static int sdio_enable_hs(struct mmc_card *card)
@@ -392,6 +417,13 @@ int mmc_attach_sdio(struct mmc_host *host, u32 ocr)
goto remove;
 
/*
+* Disconnect card detection pull-up resistor (if requested by card).
+*/
+   err = sdio_disable_cd(card);
+   if (err)
+   goto remove;
+
+   /*
 * Initialize (but don't add) all present functions.
 */
for (i = 0;i  funcs;i++) {
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 403aa50..82a8488 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -62,7 +62,8 @@ struct sdio_cccr {
low_speed:1,
wide_bus:1,
high_power:1,
-   high_speed:1;
+   high_speed:1,
+   disable_cd:1;
 };
 
 struct sdio_cis {
-- 
1.5.4.3



--
To unsubscribe from this list: send the line unsubscribe linux-embedded in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] sdio: add CD disable support

2009-07-30 Thread Matt Fleming
On Thu, Jul 30, 2009 at 02:54:08PM +0300, Ohad Ben-Cohen wrote:
 From: Ohad Ben-Cohen o...@wizery.com
 
 To save power, the pull-up resistor on CD/DAT[3] (pin 1)
 of the card can be disconnected. This is desired, e.g.,
 with embedded SDIO devices which do not rely on this pin
 for card detection.
 
 Signed-off-by: Ohad Ben-Cohen  o...@wizery.com
 ---
  drivers/mmc/core/sdio.c  |   32 
  include/linux/mmc/card.h |3 ++-
  2 files changed, 34 insertions(+), 1 deletions(-)
 

Do you have a follow-up patch to make use of this new functionality? I
can't see anywhere where disable_cd is set.


--
To unsubscribe from this list: send the line unsubscribe linux-embedded in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html