Re: Resume enhancement: restore pci config space

From: Takashi Iwai
Date: Tue Jun 01 2004 - 10:32:43 EST


At Tue, 01 Jun 2004 17:06:38 +0200,
Arjan van de Ven wrote:
>
> [1 <text/plain (quoted-printable)>]
>
> > int xxx_resume(struct pci_dev *dev)
> > {
> > int err;
> > if ((err = pci_default_resume(dev)) < 0)
> > return err;
> > // ... do h/w specific
> > }
>
> well define "h/w specific", just give me an example of a real (alsa?)
> driver that would use it (or point me to one) so that I can see if this
> is the best API, what the return value should be etc etc

I'm afraid the ALSA drivers aren't be the best examples :)
It doesn't handle the error in suspend/resume at all.

Anyway, you can find suspend/resume callbacks in linux/sound/pci and
subdirectories (e.g. atiixp.c, es1968.c, intel8x0.c...)
Note that suspend/resume prototype is different from pci callbacks to
be interated with the power handler on ALSA control API.

Hmm, looking at them right now, and i found most of them don't have
pci_suspend_state() because it worked without saving/restoring the pci
state _casually_, and missing pci_set_power_state(), etc...
Using "standard" functions would be easier to fix such things.


> >
> > but IMO, the jobs of pci_default_suspend/resume() should be applied
> > always after/before calling driver's suspend/resume callbacks.
>
> I would be very wary of unconditionally doing the resume thing without
> the driver having had a chance to do it's thing. Imo the driver HAS to
> be able to override stuff or at least talk to the hw before the generic
> resume happens.

Ok, agreed.
Providing functions to do the standard jobs would suffice.


Takashi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/