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

This commit is contained in:
Josh Boyer 2011-10-06 14:31:40 -04:00
parent 64f1bc96d9
commit 220cb1c7cb
3 changed files with 85 additions and 1 deletions

1
TODO
View File

@ -16,6 +16,7 @@
* usb-add-quirk-for-logitech-webcams.patch * usb-add-quirk-for-logitech-webcams.patch
* add-macbookair41-keyboard.patch * add-macbookair41-keyboard.patch
* ucvideo-fix-crash-when-linking-entities.patch * ucvideo-fix-crash-when-linking-entities.patch
* mmc-Always-check-for-lower-base-frequency-quirk-for-.patch (also CC'd stable)
**** Other stuff that should go upstream (in decreasing likelyhood) ************************************ **** Other stuff that should go upstream (in decreasing likelyhood) ************************************

View File

@ -51,7 +51,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be prepended with "0.", so # For non-released -rc kernels, this will be prepended with "0.", so
# for example a 3 here will become 0.3 # for example a 3 here will become 0.3
# #
%global baserelease 0 %global baserelease 1
%global fedora_build %{baserelease} %global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching # base_sublevel is the kernel version we're starting with and patching
@ -733,6 +733,10 @@ Patch20000: utrace.patch
# Flattened devicetree support # Flattened devicetree support
Patch21000: arm-omap-dt-compat.patch Patch21000: arm-omap-dt-compat.patch
Patch21001: arm-smsc-support-reading-mac-address-from-device-tree.patch Patch21001: arm-smsc-support-reading-mac-address-from-device-tree.patch
#rhbz #722509
Patch21002: mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
%endif %endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@ -1341,6 +1345,9 @@ ApplyPatch hvcs_pi_buf_alloc.patch
ApplyPatch powerpc-Fix-deadlock-in-icswx-code.patch ApplyPatch powerpc-Fix-deadlock-in-icswx-code.patch
#rhbz #722509
ApplyPatch mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
# utrace. # utrace.
ApplyPatch utrace.patch ApplyPatch utrace.patch
@ -2052,6 +2059,9 @@ fi
# ||----w | # ||----w |
# || || # || ||
%changelog %changelog
* Thu Oct 06 2011 Josh Boyer <jwboyer@redhat.com>
- Add patch to fix base frequency check for Ricoh e823 devices (rhbz 722509)
* Thu Oct 06 2011 Dave Jones <davej@redhat.com> * Thu Oct 06 2011 Dave Jones <davej@redhat.com>
- Taint if virtualbox modules have been loaded. - Taint if virtualbox modules have been loaded.

View File

@ -0,0 +1,73 @@
From 65ff02dff67bf26a9c27d9aa11a30eaf3d28469e Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@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@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