[PATCH] mmc_spi: fail gracefully if host or card do not support the switch command

From: Wolfgang Mües
Date: Thu Jun 11 2009 - 11:14:02 EST


From: Wolfgang Muees <wolfgang.mues@xxxxxxxxxxxx>

The switch command (typically speed switching from 25 to 50 MHz clock)
can be rejected by _both_ the host controller/driver and by the card.
Elder revisions of the SD card do not support speed switching.
Fail gracefully if the reject is comming from the card.

Signed-off-by: Wolfgang Muees <wolfgang.mues@xxxxxxxxxxxx>

---
diff -uprN 2_6_29_rc7_patch_retries/drivers/mmc/core/mmc.c 2_6_29_rc7_patch_switch/drivers/mmc/core/mmc.c
--- 2_6_29_rc7_patch_retries/drivers/mmc/core/mmc.c 2009-03-04 02:05:22.000000000 +0100
+++ 2_6_29_rc7_patch_switch/drivers/mmc/core/mmc.c 2009-06-11 17:09:48.000000000 +0200
@@ -180,11 +180,11 @@ static int mmc_read_ext_csd(struct mmc_c

err = mmc_send_ext_csd(card, ext_csd);
if (err) {
- /*
- * We all hosts that cannot perform the command
- * to fail more gracefully
- */
- if (err != -EINVAL)
+ /* If the host or the card can't do the switch,
+ * fail more gracefully. */
+ if ((err != -EINVAL)
+ && (err != -ENOSYS)
+ && (err != -EFAULT))
goto out;

/*
diff -uprN 2_6_29_rc7_patch_retries/drivers/mmc/core/sd.c 2_6_29_rc7_patch_switch/drivers/mmc/core/sd.c
--- 2_6_29_rc7_patch_retries/drivers/mmc/core/sd.c 2009-04-07 15:39:22.000000000 +0200
+++ 2_6_29_rc7_patch_switch/drivers/mmc/core/sd.c 2009-06-11 17:09:43.000000000 +0200
@@ -210,11 +210,11 @@ static int mmc_read_switch(struct mmc_ca

err = mmc_sd_switch(card, 0, 0, 1, status);
if (err) {
- /*
- * We all hosts that cannot perform the command
- * to fail more gracefully
- */
- if (err != -EINVAL)
+ /* If the host or the card can't do the switch,
+ * fail more gracefully. */
+ if ((err != -EINVAL)
+ && (err != -ENOSYS)
+ && (err != -EFAULT))
goto out;

printk(KERN_WARNING "%s: problem reading switch "
---
regards

i. A. Wolfgang Mües
--
Auerswald GmbH & Co. KG
Hardware Development
Telefon: +49 (0)5306 9219 0
Telefax: +49 (0)5306 9219 94
E-Mail: Wolfgang.Mues@xxxxxxxxxxxx
Web: http://www.auerswald.de
 
--------------------------------------------------------------
Auerswald GmbH & Co. KG, Vor den Grashöfen 1, 38162 Cremlingen
Registriert beim AG Braunschweig HRA 13289
p.h.G Auerswald Geschäftsführungsges. mbH
Registriert beim AG Braunschweig HRB 7463
Geschäftsführer: Dipl-Ing. Gerhard Auerswald
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/