public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2.6.20-rc2] Add a quirk to allow at least some ENE PCI SD card readers to work again
@ 2006-12-31  3:10 Darren Salt
  2006-12-31 12:05 ` Pierre Ossman
  0 siblings, 1 reply; 10+ messages in thread
From: Darren Salt @ 2006-12-31  3:10 UTC (permalink / raw)
  To: drzeus-mmc; +Cc: linux-kernel

Add a quirk to allow at least some ENE PCI SD card readers to work again

Support for these devices was broken for 2.6.18-rc1 and later by commit
146ad66eac836c0b976c98f428d73e1f6a75270d, which added voltage level support.

This restores the previous behaviour for these devices (PCI ID 1524:0550).

Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>

diff -ur linux-2.6.20-rc.orig/drivers/mmc/sdhci.c linux-2.6.20-rc/drivers/mmc/sdhci.c
--- linux-2.6.20-rc.orig/drivers/mmc/sdhci.c	2006-12-30 15:34:11.000000000 +0000
+++ linux-2.6.20-rc/drivers/mmc/sdhci.c	2006-12-31 02:46:48.000000000 +0000
@@ -37,6 +37,7 @@
 #define SDHCI_QUIRK_FORCE_DMA				(1<<1)
 /* Controller doesn't like some resets when there is no card inserted. */
 #define SDHCI_QUIRK_NO_CARD_NO_RESET			(1<<2)
+#define SDHCI_QUIRK_FORCE_POWER				(1<<3)
 
 static const struct pci_device_id pci_ids[] __devinitdata = {
 	{
@@ -65,6 +66,14 @@
 		.driver_data	= SDHCI_QUIRK_FORCE_DMA,
 	},
 
+	{
+		.vendor		= PCI_VENDOR_ID_ENE,
+		.device		= PCI_DEVICE_ID_ENE_CB712_SD,
+		.subvendor	= PCI_ANY_ID,
+		.subdevice	= PCI_ANY_ID,
+		.driver_data	= SDHCI_QUIRK_FORCE_POWER,
+	},
+
 	{	/* Generic SD host controller */
 		PCI_DEVICE_CLASS((PCI_CLASS_SYSTEM_SDHCI << 8), 0xFFFF00)
 	},
@@ -671,6 +680,12 @@
 {
 	u8 pwr;
 
+	if (host->chip->quirks & SDHCI_QUIRK_FORCE_POWER) {
+		writeb((power != (unsigned short) -1) ? 0xFF : 0,
+			host->ioaddr + SDHCI_POWER_CONTROL);
+		goto out;
+	}
+
 	if (host->power == power)
 		return;
 
diff -ur linux-2.6.20-rc.orig/include/linux/pci_ids.h linux-2.6.20-rc/include/linux/pci_ids.h
--- linux-2.6.20-rc.orig/include/linux/pci_ids.h	2006-12-30 15:34:21.000000000 +0000
+++ linux-2.6.20-rc/include/linux/pci_ids.h	2006-12-31 02:46:48.000000000 +0000
@@ -1968,6 +1968,7 @@
 #define PCI_DEVICE_ID_TOPIC_TP560	0x0000
 
 #define PCI_VENDOR_ID_ENE		0x1524
+#define PCI_DEVICE_ID_ENE_CB712_SD	0x0550
 #define PCI_DEVICE_ID_ENE_1211		0x1211
 #define PCI_DEVICE_ID_ENE_1225		0x1225
 #define PCI_DEVICE_ID_ENE_1410		0x1410

-- 
| Darren Salt    | linux or ds at              | nr. Ashington, | Toon
| RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army
| + Buy local produce. Try to walk or cycle. TRANSPORT CAUSES GLOBAL WARMING.

I think therefore I create bugs.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2007-02-02 21:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-31  3:10 [PATCH 2.6.20-rc2] Add a quirk to allow at least some ENE PCI SD card readers to work again Darren Salt
2006-12-31 12:05 ` Pierre Ossman
2006-12-31 15:10   ` Darren Salt
2006-12-31 17:08     ` [PATCH 2.6.20-rc2] Add a quirk to allow " Darren Salt
2006-12-31 18:23       ` Darren Salt
2007-01-27 13:08       ` Pierre Ossman
2007-02-02  7:54       ` [Sdhci-devel] " Pierre Ossman
2007-02-02 20:21         ` [Sdhci-devel] [PATCH 2.6.20-rc2] Add a quirk to allow ENE PCI SD Darren Salt
2007-02-02 21:57           ` Pierre Ossman
2007-01-01  1:33     ` [PATCH 2.6.20-rc2] Add a quirk to allow at least some ENE PCI SD card readers to work again Pierre Ossman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox