[alsa-devel] PNP_DRIVER_RES_DISABLE breaks swsusp at least with snd_cs4236
Rene Herman
rene.herman at keyaccess.nl
Fri Jan 11 02:19:07 CET 2008
On 10-01-08 08:58, Jaroslav Kysela wrote:
> On Thu, 10 Jan 2008, Rene Herman wrote:
>
>> On 09-01-08 23:43, Ondrej Zary wrote:
>>
>> Jaroslav -- in your role as ISA-PnP maintainer and Bjorn, in yours as
>> having been foollish enough to touch PnP recently:
>>
>>> as hibernation (swsusp) started to work with my CPU, I found that my Turtle
>>> Beach Malibu stops working after resume from hibernation. It's caused by fact
>>> that the card is not enabled on the pnp layer during resume - and thus card
>>> registers are inaccessible (reads return FFs, writes go nowhere).
>>>
>>> During resume, pnp_bus_resume() in drivers/pnp/driver.c is called for each pnp
>>> device. This function calls pnp_start_dev() only when the
>>> PNP_DRIVER_RES_DO_NOT_CHANGE bit is NOT seting pnp_drv->flags. But the cs4236
>>> driver in sound/isa/cs423x/cs4236.c explicitly sets the .flags to
>>> PNP_DRIVER_RES_DISABLE - it's value is 3 and that includes
>>> PNP_DRIVER_RES_DO_NOT_CHANGE bit.
>> Ehm. Isn't that a bit unexpected:
>>
>> #define PNP_DRIVER_RES_DO_NOT_CHANGE 0x0001 /* do not change the state
>> of the device */
>> #define PNP_DRIVER_RES_DISABLE 0x0003 /* ensure the device is
>> disabled */
>>
>> I'd say that disabling is changing, so isn't this just a braino where
>> someone meant to write 2 instead of 3?
>
> It's irrelevant. I think that condition in driver.c in suspend and resume
> callbacks is invalid, because PNP_DRIVER_RES_DO_NOT_CHANGE means that
> resources should not be changed in the pnp core but only in the driver,
> but in suspend/resume process are resources preserved, so the condition
> should be removed.
I see a PnP resume _consists_ of setting the resources so I can see the test
implementation wise, but yes, conceptually it seems this test shouldn't be
present. So just like the attached then?
Pierre, what was the idea here? Added the other SOBs to the CC as well...
> Author of this code is:
>
> author Pierre Ossman <drzeus-list at drzeus.cx> Tue, 29 Nov 2005 09:09:32 +0100
> committer Jaroslav Kysela <perex at suse.cz> Tue, 03 Jan 2006 12:31:30 +0100
>
> [ALSA] [PATCH] alsa: Improved PnP suspend support
>
> Also use the PnP functions to start/stop the devices during the suspend so
> that drivers will not have to duplicate this code.
>
> Cc: Adam Belay <ambx1 at neo.rr.com>
> Cc: Jaroslav Kysela <perex at suse.cz>
> Cc: Takashi Iwai <tiwai at suse.de>
>
> Signed-off-by: Pierre Ossman <drzeus at drzeus.cx>
> Signed-off-by: Andrew Morton <akpm at osdl.org>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
Rene.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pnp_driver_res_do_not_test.diff
Url: http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20080111/88c246c0/attachment.bat
More information about the Alsa-devel
mailing list