From: Greg Kroah-Hartman Date: Mon, 1 Aug 2011 18:21:43 +0000 (-0700) Subject: 2.6.39 patches X-Git-Tag: v2.6.39.4~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=00e0a3941a3a807de3c7ef5235ae5a9d45bc2fb2;p=thirdparty%2Fkernel%2Fstable-queue.git 2.6.39 patches --- diff --git a/queue-2.6.39/mmc-added-quirks-for-ricoh-1180-e823-lower-base-clock.patch b/queue-2.6.39/mmc-added-quirks-for-ricoh-1180-e823-lower-base-clock.patch new file mode 100644 index 00000000000..d76030f0ed2 --- /dev/null +++ b/queue-2.6.39/mmc-added-quirks-for-ricoh-1180-e823-lower-base-clock.patch @@ -0,0 +1,62 @@ +From 15bed0f2fa8e1d7db201692532c210a7823d2d21 Mon Sep 17 00:00:00 2001 +From: Manoj Iyer +Date: Mon, 11 Jul 2011 16:28:35 -0500 +Subject: mmc: Added quirks for Ricoh 1180:e823 lower base clock + frequency + +From: Manoj Iyer + +commit 15bed0f2fa8e1d7db201692532c210a7823d2d21 upstream. + +Ricoh 1180:e823 does not recognize certain types of SD/MMC cards, +as reported at http://launchpad.net/bugs/773524. Lowering the SD +base clock frequency from 200Mhz to 50Mhz fixes this issue. This +solution was suggest by Koji Matsumuro, Ricoh Company, Ltd. + +This change has no negative performance effect on standard SD +cards, though it's quite possible that there will be one on +UHS-1 cards. + +Signed-off-by: Manoj Iyer +Tested-by: Daniel Manrique +Cc: Koji Matsumuro +Acked-by: Jesse Barnes +Signed-off-by: Chris Ball +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/quirks.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -2755,6 +2755,29 @@ static void ricoh_mmc_fixup_r5c832(struc + + 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 ++ * clock frequency from 200Mhz to 50Mhz fixes this issue. ++ * ++ * 0x150 - SD2.0 mode enable for changing base clock ++ * frequency to 50Mhz ++ * 0xe1 - Base clock frequency ++ * 0x32 - 50Mhz new clock frequency ++ * 0xf9 - Key register for 0x150 ++ * 0xfc - key register for 0xe1 ++ */ ++ if (dev->device == PCI_DEVICE_ID_RICOH_R5CE823) { ++ pci_write_config_byte(dev, 0xf9, 0xfc); ++ pci_write_config_byte(dev, 0x150, 0x10); ++ pci_write_config_byte(dev, 0xf9, 0x00); ++ pci_write_config_byte(dev, 0xfc, 0x01); ++ pci_write_config_byte(dev, 0xe1, 0x32); ++ pci_write_config_byte(dev, 0xfc, 0x00); ++ ++ dev_notice(&dev->dev, "MMC controller base frequency changed to 50Mhz.\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); diff --git a/queue-2.6.39/mmc-sdhci-esdhc-imx-sdhci_card_present-does-not-get.patch b/queue-2.6.39/mmc-sdhci-esdhc-imx-sdhci_card_present-does-not-get.patch new file mode 100644 index 00000000000..986721b7c0e --- /dev/null +++ b/queue-2.6.39/mmc-sdhci-esdhc-imx-sdhci_card_present-does-not-get.patch @@ -0,0 +1,34 @@ +From 803862a6f7de4939e0a557214e5e4b37e36f87ff Mon Sep 17 00:00:00 2001 +From: Shawn Guo +Date: Tue, 21 Jun 2011 22:41:49 +0800 +Subject: mmc: sdhci-esdhc-imx: SDHCI_CARD_PRESENT does not get + cleared + +From: Shawn Guo + +commit 803862a6f7de4939e0a557214e5e4b37e36f87ff upstream. + +The function esdhc_readl_le intends to clear bit SDHCI_CARD_PRESENT, +when the card detect gpio tells there is no card. But it does not +clear the bit actually. The patch gives a fix on that. + +Signed-off-by: Shawn Guo +Acked-by: Wolfram Sang +Signed-off-by: Chris Ball +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mmc/host/sdhci-esdhc-imx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mmc/host/sdhci-esdhc-imx.c ++++ b/drivers/mmc/host/sdhci-esdhc-imx.c +@@ -74,7 +74,7 @@ static u32 esdhc_readl_le(struct sdhci_h + if (boarddata && gpio_is_valid(boarddata->cd_gpio) + && gpio_get_value(boarddata->cd_gpio)) + /* no card, if a valid gpio says so... */ +- val &= SDHCI_CARD_PRESENT; ++ val &= ~SDHCI_CARD_PRESENT; + else + /* ... in all other cases assume card is present */ + val |= SDHCI_CARD_PRESENT; diff --git a/queue-2.6.39/series b/queue-2.6.39/series index d890ce02cbe..c715eef6d8f 100644 --- a/queue-2.6.39/series +++ b/queue-2.6.39/series @@ -48,3 +48,5 @@ asoc-fix-shift-in-wm8958-accessory-detection-default.patch hwmon-it87-fix-label-group-removal.patch hwmon-asus_atk0110-fix-memory-leak.patch hwmon-max1111-fix-race-condition-causing-null-pointer-exception.patch +mmc-added-quirks-for-ricoh-1180-e823-lower-base-clock.patch +mmc-sdhci-esdhc-imx-sdhci_card_present-does-not-get.patch