Re: sdhci: Loads of scary messages during suspend/resume with SD card inserted

From: Alex Riesen
Date: Tue Oct 07 2008 - 14:01:45 EST


2008/9/29 Frans Pop <elendil@xxxxxxxxx>:
> On Monday 29 September 2008, Matthew Garrett wrote:
>> More to the point, how about this one? It should also handle the resume
>> case, but I haven't tested it yet.
>
> Thanks Matthew.
>
> For the second part of the quirk the device name is incorrect. It should
> be r5c832 instead of rl5c832 and the DECLAREs also have the wrong device.

I'm attaching my patch with these corrections.

> After fixing that it compiles correctly and does improve things a lot, but
> there are still remaining issues. I suspect these are probably unrelated
> to the proprietary controller though.

Confirm that for Dell XPS M1330.

> All that was still without having a partition mounted. After resume a vfat
> partition on the card can be mounted successfully.

This works here (Ubuntu 8.04.1, v2.6.27-rc9). It is likely the hald
configuration
on Ubuntu as to why it works:

Oct 7 19:52:34 blimp hald: unmounted /dev/mmcblk0p1 from
'/media/disk' on behalf of uid 0
From 635d8102535fb18e07197677a426af9309948b49 Mon Sep 17 00:00:00 2001
From: Alex Riesen <raa@xxxxxxxxxxxxxxx>
Date: Tue, 7 Oct 2008 19:46:01 +0200
Subject: [PATCH] Fix the pci quirk for Ricoh R5C832 which disables the mmc controller


diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 4557fa3..0737fe9 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1835,7 +1835,7 @@ DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH,
PCI_DEVICE_ID_RICOH_RL5C476,
quirk_ricoh_rl5c476_mmc_disable);

-static void quirk_ricoh_rl5c832_mmc_disable(struct pci_dev *dev)
+static void quirk_ricoh_r5c832_mmc_disable(struct pci_dev *dev)
{
u8 disable;
u8 write_enable;
@@ -1852,11 +1852,11 @@ static void quirk_ricoh_rl5c832_mmc_disable(struct pci_dev *dev)
}

DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH,
- PCI_DEVICE_ID_RICOH_RL5C476,
- quirk_ricoh_rl5c832_mmc_disable);
+ PCI_DEVICE_ID_RICOH_R5C832,
+ quirk_ricoh_r5c832_mmc_disable);
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH,
- PCI_DEVICE_ID_RICOH_RL5C476,
- quirk_ricoh_rl5c832_mmc_disable);
+ PCI_DEVICE_ID_RICOH_R5C832,
+ quirk_ricoh_r5c832_mmc_disable);

#ifdef CONFIG_PCI_MSI
/* Some chipsets do not support MSI. We cannot easily rely on setting