From: Pavel Machek <pavel@ucw.cz>
To: Greg KH <greg@kroah.com>
Cc: linux-pm@lists.osdl.org,
kernel list <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@zip.com.au>
Subject: Re: Cleanup PCI power states
Date: Fri, 17 Dec 2004 01:34:43 +0100 [thread overview]
Message-ID: <20041217003443.GF25573@elf.ucw.cz> (raw)
In-Reply-To: <20041217000629.GB11531@kroah.com>
Hi!
> > > Care to resend this, I seem to have lost them :(
> >
> > Could this go to "after 2.6.10 tree", too? It is a helper that
> > converts system state into PCI state. We really do not want to have
> > this copied into every driver, because it will need to change when
> > system state gets type-checked / expanded to struct.
>
> So this is how you want to switch stuff over? Can you give me an
> example of how this will be used?
Yes. Some way to convert between system-state and pci-state is needed;
for now it only silences warning, but I guess it will get more complex
in future.
Example is here:
--- clean/drivers/net/e100.c 2004-10-01 00:30:15.000000000 +0200
+++ linux/drivers/net/e100.c 2004-11-14 23:36:46.000000000 +0100
@@ -2313,7 +2313,7 @@
pci_save_state(pdev, nic->pm_state);
pci_enable_wake(pdev, state, nic->flags & (wol_magic | e100_asf(nic)));
pci_disable_device(pdev);
- pci_set_power_state(pdev, state);
+ pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0;
}
@@ -2323,7 +2323,7 @@
struct net_device *netdev = pci_get_drvdata(pdev);
struct nic *nic = netdev_priv(netdev);
- pci_set_power_state(pdev, 0);
+ pci_set_power_state(pdev, PCI_D0);
pci_restore_state(pdev, nic->pm_state);
e100_hw_init(nic);
> > --- clean/drivers/pci/pci.c 2004-10-01 00:30:16.000000000 +0200
> > +++ linux/drivers/pci/pci.c 2004-11-14 23:36:46.000000000 +0100
> > @@ -300,6 +300,30 @@
> > }
> >
> > /**
> > + * pci_choose_state - Choose the power state of a PCI device
> > + * @dev: PCI device to be suspended
> > + * @state: target sleep state for the whole system
> > + *
> > + * Returns PCI power state suitable for given device and given system
> > + * message.
> > + */
> > +
> > +pci_power_t pci_choose_state(struct pci_dev *dev, u32 state)
> > +{
> > + if (!pci_find_capability(dev, PCI_CAP_ID_PM))
> > + return PCI_D0;
> > +
> > + switch (state) {
> > + case 0: return PCI_D0;
> > + case 2: return PCI_D2;
> > + case 3: return PCI_D3hot;
> > + default: BUG();
> > + }
> > +}
> > +
> > +EXPORT_SYMBOL(pci_choose_state);
>
> EXPORT_SYMBOL_GPL() perhaps?
Ugh, I do not have any strong feelings here, but I want nvidia etc to
use this one so that they implement driver model properly.
Pavel
--
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
next prev parent reply other threads:[~2004-12-17 0:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-16 13:04 Cleanup PCI power states Pavel Machek
2004-11-16 15:56 ` Greg KH
2004-11-17 12:08 ` Pavel Machek
2004-11-24 23:40 ` Greg KH
2004-11-25 11:36 ` Pavel Machek
2004-12-17 0:05 ` Greg KH
2004-12-17 0:31 ` Pavel Machek
2004-12-17 16:12 ` [linux-pm] " Alan Stern
2004-12-17 16:33 ` Pavel Machek
2004-12-17 22:02 ` Greg KH
2004-12-17 23:39 ` Pavel Machek
2004-12-21 19:57 ` Greg KH
2004-12-17 23:50 ` Pavel Machek
2004-12-21 20:03 ` Greg KH
2004-12-21 23:25 ` Pavel Machek
2004-12-21 23:29 ` Greg KH
2004-12-18 0:09 ` Pavel Machek
2004-12-21 20:04 ` Greg KH
2004-12-21 23:37 ` Pavel Machek
2004-12-22 0:41 ` Greg KH
2004-11-25 11:39 ` Pavel Machek
2004-12-17 0:06 ` Greg KH
2004-12-17 0:34 ` Pavel Machek [this message]
2004-12-17 7:48 ` [linux-pm] " Benjamin Herrenschmidt
2004-12-17 19:22 ` Greg KH
2004-12-17 22:02 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041217003443.GF25573@elf.ucw.cz \
--to=pavel@ucw.cz \
--cc=akpm@zip.com.au \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox