Hey, On Sat, May 01, 2010 at 05:23:18AM +0900, Komuro wrote: > Hi, > > >> But, after "pccardctl reset", the card still does not work. > > > >Why is "pccardctl reset" needed in any case? > > When the device becomes unstable, "pccardctl reset" reset the driver. > > > >It seems that the CIS is > >different when you call "pccardctl reset" compared to what it used to be. > > The CIS is same. I don't change the card.
What about this patch on top of the previous one? If it still fails, dynamic debug output would be very helpful. Thanks & best, Dominik From: Dominik Brodowski <li...@dominikbrodowski.net> Date: Mon, 3 May 2010 15:10:09 +0200 Subject: [PATCH] pcmcia: order userspace suspend and resume requests Assert that userspace suspend and resume requests appearing (almost) immediately are executed in the following order: suspend, resume. This should fix "pccardctl reset". Signed-off-by: Dominik Brodowski <li...@dominikbrodowski.net> diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index 75ed866..c338375 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c @@ -671,20 +671,22 @@ static int pccardd(void *__skt) socket_remove(skt); if (sysfs_events & PCMCIA_UEVENT_INSERT) socket_insert(skt); - if ((sysfs_events & PCMCIA_UEVENT_RESUME) && - !(skt->state & SOCKET_CARDBUS)) { - ret = socket_resume(skt); - if (!ret && skt->callback) - skt->callback->resume(skt); - } if ((sysfs_events & PCMCIA_UEVENT_SUSPEND) && !(skt->state & SOCKET_CARDBUS)) { if (skt->callback) ret = skt->callback->suspend(skt); else ret = 0; - if (!ret) + if (!ret) { socket_suspend(skt); + msleep(100); + } + } + if ((sysfs_events & PCMCIA_UEVENT_RESUME) && + !(skt->state & SOCKET_CARDBUS)) { + ret = socket_resume(skt); + if (!ret && skt->callback) + skt->callback->resume(skt); } if ((sysfs_events & PCMCIA_UEVENT_REQUERY) && !(skt->state & SOCKET_CARDBUS)) { _______________________________________________ Linux PCMCIA reimplementation list http://lists.infradead.org/mailman/listinfo/linux-pcmcia