All of lore.kernel.org
 help / color / mirror / Atom feed
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!

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.