From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754046Ab0ILWUj (ORCPT ); Sun, 12 Sep 2010 18:20:39 -0400 Received: from ogre.sisk.pl ([217.79.144.158]:47740 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753892Ab0ILWUi (ORCPT ); Sun, 12 Sep 2010 18:20:38 -0400 From: "Rafael J. Wysocki" To: Jiri Slaby Subject: Re: [PATCH v3] Gigabit Ethernet driver of Topcliff PCH Date: Mon, 13 Sep 2010 00:19:26 +0200 User-Agent: KMail/1.13.5 (Linux/2.6.36-rc3-rjw+; KDE/4.4.4; x86_64; ; ) Cc: Masayuki Ohtake , "David S. Miller" , Randy Dunlap , John Linn , Ralf Baechle , Kristoffer Glembo , Maxime Bizon , Greg Rose , ML netdev , LKML , MeeGo , Stephen Hemminger , FUJITA Tomonori , "Wang, Qi" , "Wang, Yong Y" , Andrew , Intel OTC , "Foster, Margie" , Arjan , Toshiharu Okada , Takahiro Shimizu , Tomoya Morinaga References: <4C89C23A.6090707@dsn.okisemi.com> <4C89EA12.3000409@suse.cz> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit Message-Id: <201009130019.27356.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday, September 10, 2010, Rafael J. Wysocki wrote: > On Friday, September 10, 2010, Jiri Slaby wrote: > > Ccing Rafael (please find pch_gbe_resume here) Thanks. ... > > > > > +#ifdef CONFIG_PM > > > +static int pch_gbe_resume(struct pci_dev *pdev) > > > +{ > > > + struct net_device *netdev = pci_get_drvdata(pdev); > > > + struct pch_gbe_adapter *adapter = netdev_priv(netdev); > > > + struct pch_gbe_hw *hw = &adapter->hw; > > > + u32 err; > > > + > > > + pci_enable_wake(pdev, PCI_D0, 0); > > > + pci_set_power_state(pdev, PCI_D0); > > > + pci_restore_state(pdev); > > > + err = pci_enable_device(pdev); > > > + if (err) { > > > + pr_err("Cannot enable PCI device from suspend\n"); > > > + return err; > > > + } > > > + pci_set_master(pdev); > > > > Not sure which of those you need. Rafael may tell you more. You should > > not set power state and restore state, but I might be wrong. You're basically right. In fact you're supposed to use struct dev_pm_ops for defining PM callbacks and then you don't need do any PCI-specific operations directly in the driver. All of this is described in detail in Documentation/power/pci.txt and you can have a look into r8169.c for a reference implementation. Thanks, Rafael