Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753950AbaATOmX (ORCPT ); Mon, 20 Jan 2014 09:42:23 -0500 Received: from arroyo.ext.ti.com ([192.94.94.40]:47800 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753870AbaATOl6 (ORCPT ); Mon, 20 Jan 2014 09:41:58 -0500 From: Roger Quadros To: CC: , , , , , , , , Roger Quadros , Balaji T K Subject: [PATCH v5 4/4] ata: ahci_platform: runtime resume the device before use Date: Mon, 20 Jan 2014 16:41:28 +0200 Message-ID: <1390228888-5537-5-git-send-email-rogerq@ti.com> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1390228888-5537-1-git-send-email-rogerq@ti.com> References: <1390228888-5537-1-git-send-email-rogerq@ti.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On OMAP platforms the device needs to be runtime resumed before it can be accessed. The OMAP HWMOD framework takes care of enabling the module and its resources based on the device's runtime PM state. In this patch we runtime resume during .probe() and runtime suspend during .remove() (i.e. ahci_host_stop()). We also update the runtime PM state during .resume(). Signed-off-by: Roger Quadros Signed-off-by: Balaji T K Reviewed-by: Bartlomiej Zolnierkiewicz --- drivers/ata/ahci_platform.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c index 580567f..b3a48bb 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "ahci.h" static void ahci_host_stop(struct ata_host *host); @@ -142,6 +143,9 @@ static int ahci_probe(struct platform_device *pdev) } } + pm_runtime_enable(dev); + pm_runtime_get_sync(dev); + hpriv->phy = devm_phy_get(dev, "sata-phy"); if (IS_ERR(hpriv->phy)) { rc = PTR_ERR(hpriv->phy); @@ -285,6 +289,9 @@ static void ahci_host_stop(struct ata_host *host) clk_disable_unprepare(hpriv->clk); clk_put(hpriv->clk); } + + pm_runtime_put_sync(dev); + pm_runtime_disable(dev); } #ifdef CONFIG_PM_SLEEP @@ -356,6 +363,11 @@ static int ahci_resume(struct device *dev) ata_host_resume(host); + /* We resumed so update PM runtime state */ + pm_runtime_disable(dev); + pm_runtime_set_active(dev); + pm_runtime_enable(dev); + return 0; disable_unprepare_clk: -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/