Hello,
I don't understand why, on resume, the function socket_resume() (in
drivers/pcmcia/cs.c) do:
if (!(skt->state & SOCKET_PRESENT)) {
skt->state &= ~SOCKET_SUSPEND;
return socket_insert(skt);
}
This cause a powered off socket before suspend to be powered on during
resume.
To avoid such (erroneous?) behaviour I propose this patch:
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
index 729e37d..d69de74 100644
--- a/drivers/pcmcia/cs.c
+++ b/drivers/pcmcia/cs.c
@@ -562,10 +562,8 @@ static int socket_resume(struct pcmcia_socket *skt)
skt->ops->init(skt);
skt->ops->set_socket(skt, &skt->socket);
- if (!(skt->state & SOCKET_PRESENT)) {
- skt->state &= ~SOCKET_SUSPEND;
- return socket_insert(skt);
- }
+ if (!(skt->state & SOCKET_PRESENT))
+ goto resume_exit;
ret = socket_setup(skt, SS_COMA, resume_delay);
if (ret == CS_SUCCESS) {
@@ -599,6 +597,7 @@ static int socket_resume(struct pcmcia_socket *skt)
socket_shutdown(skt);
}
+resume_exit:
skt->state &= ~SOCKET_SUSPEND;
return CS_SUCCESS;
With this patch if the socket was powered down before the suspend, at
resume time it's not powered on and you need a "pccardctl insert" to
activate the socket.
Ciao,
Rodolfo
--
GNU/Linux Solutions e-mail: giometti@enneenne.com
Linux Device Driver giometti@gnudd.com
Embedded Systems giometti@linux.it
UNIX programming phone: +39 349 2432127
-
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Kamalesh Babulal | [BUG] Linux 2.6.25-rc2 - Kernel Ooops while running dbench |
| Greg Kroah-Hartman | [PATCH 005/196] Chinese: add translation of SubmittingDrivers |
| Paul Jackson | Re: cpuset-remove-sched-domain-hooks-from-cpusets |
git: | |
| Gerrit Renker | [PATCH 0/37] dccp: Feature negotiation - last call for comments |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Steven Rostedt | Re: -rt scheduling: wakeup bug? |
| David Miller | Re: [GIT]: Networking |
