From patchwork Wed Jul 27 12:14:57 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 1011612 X-Patchwork-Delegate: bhelgaas@google.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.4) with ESMTP id p6RCE9IF032024 for ; Wed, 27 Jul 2011 12:14:09 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754241Ab1G0MOH (ORCPT ); Wed, 27 Jul 2011 08:14:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53433 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754219Ab1G0MOD (ORCPT ); Wed, 27 Jul 2011 08:14:03 -0400 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p6RCDuED002197 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 27 Jul 2011 08:13:57 -0400 Received: from localhost (dhcp-27-232.brq.redhat.com [10.34.27.232]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p6RCDtPQ019492; Wed, 27 Jul 2011 08:13:56 -0400 From: Stanislaw Gruszka To: linux-wireless Cc: ath9k-devel@venema.h4ckr.net, camilo@mesias.co.uk, Jonathan Nieder , Tony Houghton , Rajkumar Manoharan , ath9k-devel@venema.h4ckr.net, Adrian Chadd , Stanislaw Gruszka , Jesse Barnes , linux-pci@vger.kernel.org Subject: [RFC/RFT v2 10/12] pci: aspm: add settings changed callback Date: Wed, 27 Jul 2011 14:14:57 +0200 Message-Id: <1311768899-4559-11-git-send-email-sgruszka@redhat.com> In-Reply-To: <1311768899-4559-1-git-send-email-sgruszka@redhat.com> References: <1311768899-4559-1-git-send-email-sgruszka@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Wed, 27 Jul 2011 12:14:31 +0000 (UTC) Inform drivers that register pci_drviver->aspm_changed(), about new ASPM settings. Callback is only called for child (endpoint) devices. Cc: Jesse Barnes Cc: linux-pci@vger.kernel.org Signed-off-by: Stanislaw Gruszka --- drivers/pci/pcie/aspm.c | 5 ++++- include/linux/pci.h | 3 +++ 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 2883fc3..d7acec8 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -474,8 +474,11 @@ static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state) */ if (state & ASPM_STATE_L1) pcie_config_aspm_dev(parent, upstream); - list_for_each_entry(child, &linkbus->devices, bus_list) + list_for_each_entry(child, &linkbus->devices, bus_list) { pcie_config_aspm_dev(child, dwstream); + if (child->driver && child->driver->aspm_changed) + child->driver->aspm_changed(child, dwstream); + } if (!(state & ASPM_STATE_L1)) pcie_config_aspm_dev(parent, upstream); diff --git a/include/linux/pci.h b/include/linux/pci.h index c446b5c..2110d63 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -555,6 +555,9 @@ struct pci_driver { int (*resume_early) (struct pci_dev *dev); int (*resume) (struct pci_dev *dev); /* Device woken up */ void (*shutdown) (struct pci_dev *dev); +#ifdef CONFIG_PCIEASPM + void (*aspm_changed) (struct pci_dev *dev, u32 state); +#endif struct pci_error_handlers *err_handler; struct device_driver driver; struct pci_dynids dynids;