Messages in this thread | | | Date | Tue, 6 Nov 2007 09:58:28 +0100 | From | Rodolfo Giometti <> | Subject | Re: [PATCH] PCMCIA: prevent auto insert during resume. |
| |
On Thu, Nov 01, 2007 at 06:37:41PM +0000, Russell King wrote: > On Thu, Nov 01, 2007 at 03:53:59PM +0100, Rodolfo Giometti wrote: > > On Mon, Oct 29, 2007 at 07:24:15PM +0000, Pavel Machek wrote: > > > On Fri 2007-10-26 19:18:57, Rodolfo Giometti wrote: > > > > On Fri, Oct 26, 2007 at 06:00:31PM +0100, Russell King wrote: > > > > > > > > > > > > Also if you didn't eject the socket, at resume the device will be > > > > > > > > powered up again, my patch just prevents that a pre-powered off device > > > > > > > > to be turned on at resume time. > > > > > > > > > > > > > > > > However you should consider that some embedded systems have fixed > > > > > > > > PCMCIA devices that can't be removed so there are no reasons to detect > > > > > > > > them after resume, nobody can change them. :) > > > > > > > > > > > > > > > > Also battery powered devices can go very frequently to sleep and the > > > > > > > > current behavior force the user to switch off the unused device each > > > > > > > > time the system resumes from sleep. > > > > > > > > > > > > > > I realise that. I do work on embedded devices, and this behaviour is > > > > > > > explicitly there to support embedded devices. > > > > > > > > > > > > > > I've suggested a workable solution to you which allows both of us to > > > > > > > have the behaviour we both desire from the system. That sounds like > > > > > > > a negotiated solution to me... > > > > > > > > > > > > Do you mean to switch off the socket from userland? It could be a > > > > > > solution but in this case the device is powered on each time even if > > > > > > for a short delay... > > > > > > > > > > If it's a permanent device, and you've powered it down via pccardctl, > > > > > then you've powered it down from userland. So record that it's been > > > > > powered down from userland. Then, on resume, if it's been powered down > > > > > from userland, don't try to re-power it on resume. > > > > > > > > But the userland doesn't re-power it on resume... it's the kernel > > > > itself whos re-powers the device on resume. So the userland can only > > > > power down the device again. > > > > > > I think Russell means: at a flag into kernel. If user powers down the > > > device, set the flag. If flag is set during resume, avoid powering up > > > the device. > > > > That's exactly what my patch does! :) > > > > If the user does 'eject' the device is not powered on at resume. > > > > Currently, with out the patch, if you do an 'eject' to power down the > > device, then you go to sleep and resume, the device is powered up > > again and you have to do a new 'eject' to power it down. > > > > My patch fixes this behaviour. > > Let's be absolutely clear about this. The patch in your original post > does *NOT* do that. It *completely* removes the possibility of powering > up a device inserted into the PCMCIA slot before resuming without > unplugging and replugging it by removing the code which detects an > inserted card on resume.
Current status without the patch:
hostname:~# pccardctl status Socket 0: 3.3V 16-bit PC Card Subdevice 0 (function 0) [unbound] hostname:~# pccardctl eject pccard: card ejected from slot 0 hostname:~# pccardctl status Socket 0: no card hostname:~# apm -s Stopping tasks ... done. Suspending console(s) <<RESUME>> hostname:~# usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet Subset pccard: PCMCIA card inserted into slot 0 pcmcia: registering new device pcmcia0.0 Restarting tasks ... done. hostname:~# pccardctl status Socket 0: 3.3V 16-bit PC Card Subdevice 0 (function 0) [unbound]
The device into PCMCIA slot 0 is _auto_ powered up again.
(Possible) future status with the patch:
hostname:~# pccardctl status Socket 0: 3.3V 16-bit PC Card Subdevice 0 (function 0) [unbound] hostname:~# pccardctl eject pccard: card ejected from slot 0 hostname:~# pccardctl status Socket 0: no card hostname:~# apm -s Stopping tasks ... done. Suspending console(s) <<RESUME>> hostname:~# usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet Subset Restarting tasks ... done. pccardctl status Socket 0: no card hostname:~# pccardctl insert pccard: PCMCIA card inserted into slot 0 pcmcia: registering new device pcmcia0.0 hostname:~# pccardctl status Socket 0: 3.3V 16-bit PC Card Subdevice 0 (function 0) [unbound]
The device into PCMCIA slot 0 is _not_ powered up and the user should use "pccardctl insert" to do that (on my battery powered device this behaviour saves the battery a lot).
If you like current behaviour don't apply the patch. :)
> And let's also be clear about something else. You _were_ crystal clear > on that aspect of it from your last mail on the subject since you were > asking for names of attributes to set and clear such a flag. I didn't > respond because I'm not going to hold your hand with such obvious > issues - if you need that level of support, it will be far faster for > me to write the damned patch myself.
In the past I did some "obvious" patches and the maintainer told me: "plase change this name" or "modify the default behaviour", etc.. That's why I asked for. I thought it could be less time consuming ask before then modify again after...
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 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |