[kernel/f15] Add patch to fix Ricoh e823 SD card readers (rhbz 722509)

Josh Boyer jwboyer at fedoraproject.org
Thu Oct 6 18:32:55 UTC 2011


commit 71ac22df477b9266777c561e5fa0956d4fb44601
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Thu Oct 6 14:31:40 2011 -0400

    Add patch to fix Ricoh e823 SD card readers (rhbz 722509)

 kernel.spec                                        |   11 +++-
 ...check-for-lower-base-frequency-quirk-for-.patch |   73 ++++++++++++++++++++
 2 files changed, 83 insertions(+), 1 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 7848784..bbd1b35 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -42,7 +42,7 @@ Summary: The Linux kernel
 # When changing real_sublevel below, reset this by hand to 1
 # (or to 0 and then use rpmdev-bumpspec).
 #
-%global baserelease 0
+%global baserelease 1
 %global fedora_build %{baserelease}
 
 # real_sublevel is the 3.x kernel version we're starting with
@@ -698,6 +698,9 @@ Patch21016: x86-Fetch-stack-from-regs-when-possible-in-dump_trac.patch
 #rhbz #708563
 Patch21017: binfmt_elf-fix-PIE-execution-with-random-disabled.patch
 
+#rhbz #722509
+Patch21018: mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
+
 %endif
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1265,6 +1268,9 @@ ApplyPatch x86-Fetch-stack-from-regs-when-possible-in-dump_trac.patch
 #rhbz #708563
 ApplyPatch binfmt_elf-fix-PIE-execution-with-random-disabled.patch
 
+#rhbz #722509
+ApplyPatch mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -1885,6 +1891,9 @@ fi
 # and build.
 
 %changelog
+* Thu Oct 06 2011 Josh Boyer <jwboyer at redhat.com>
+- Add patch to fix base frequency check for Ricoh e823 devices (rhbz 722509)
+
 * Mon Oct 03 2011 Josh Boyer <jwboyer at redhat.com> 2.6.40.6-0
 - Linux 3.0.6 stable release
 
diff --git a/mmc-Always-check-for-lower-base-frequency-quirk-for-.patch b/mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
new file mode 100644
index 0000000..2d7caad
--- /dev/null
+++ b/mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
@@ -0,0 +1,73 @@
+From 65ff02dff67bf26a9c27d9aa11a30eaf3d28469e Mon Sep 17 00:00:00 2001
+From: Josh Boyer <jwboyer at redhat.com>
+Date: Wed, 5 Oct 2011 11:29:57 -0400
+Subject: [PATCH] mmc: Always check for lower base frequency quirk for Ricoh
+ 1180:e823
+
+Commit 15bed0f2f added a quirk for the e823 Ricoh card reader to lower the
+base frequency.  However, the quirk first checks to see if the proprietary
+MMC controller is disabled, and returns if so.  On some devices, such as the
+Lenovo X220, the MMC controller is already disabled by firmware it seems,
+but the frequency change is still needed so sdhci-pci can talk to the cards.
+Since the MMC controller is disabled, the frequency fixup was never being run
+on these machines.
+
+This moves the e823 check above the MMC controller check so that it always
+gets run.
+
+This fixes https://bugzilla.redhat.com/show_bug.cgi?id=722509
+
+Signed-off-by: Josh Boyer <jwboyer at redhat.com>
+---
+ drivers/pci/quirks.c |   28 ++++++++++++++--------------
+ 1 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
+index 1196f61..cec4629 100644
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -2745,20 +2745,6 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
+ 	/* disable must be done via function #0 */
+ 	if (PCI_FUNC(dev->devfn))
+ 		return;
+-
+-	pci_read_config_byte(dev, 0xCB, &disable);
+-
+-	if (disable & 0x02)
+-		return;
+-
+-	pci_read_config_byte(dev, 0xCA, &write_enable);
+-	pci_write_config_byte(dev, 0xCA, 0x57);
+-	pci_write_config_byte(dev, 0xCB, disable | 0x02);
+-	pci_write_config_byte(dev, 0xCA, write_enable);
+-
+-	dev_notice(&dev->dev, "proprietary Ricoh MMC controller disabled (via firewire function)\n");
+-	dev_notice(&dev->dev, "MMC cards are now supported by standard SDHCI controller\n");
+-
+ 	/*
+ 	 * RICOH 0xe823 SD/MMC card reader fails to recognize
+ 	 * certain types of SD/MMC cards. Lowering the SD base
+@@ -2781,6 +2767,20 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
+ 
+ 		dev_notice(&dev->dev, "MMC controller base frequency changed to 50Mhz.\n");
+ 	}
++
++	pci_read_config_byte(dev, 0xCB, &disable);
++
++	if (disable & 0x02)
++		return;
++
++	pci_read_config_byte(dev, 0xCA, &write_enable);
++	pci_write_config_byte(dev, 0xCA, 0x57);
++	pci_write_config_byte(dev, 0xCB, disable | 0x02);
++	pci_write_config_byte(dev, 0xCA, write_enable);
++
++	dev_notice(&dev->dev, "proprietary Ricoh MMC controller disabled (via firewire function)\n");
++	dev_notice(&dev->dev, "MMC cards are now supported by standard SDHCI controller\n");
++
+ }
+ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
+ DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
+-- 
+1.7.6.4
+


More information about the scm-commits mailing list