From patchwork Wed Jan 25 10:33:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Bailon X-Patchwork-Id: 92423 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp2143377qgi; Wed, 25 Jan 2017 02:33:35 -0800 (PST) X-Received: by 10.99.152.65 with SMTP id l1mr17580957pgo.28.1485340415502; Wed, 25 Jan 2017 02:33:35 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x23si22998087pfa.140.2017.01.25.02.33.35; Wed, 25 Jan 2017 02:33:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@baylibre-com.20150623.gappssmtp.com; spf=pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-omap-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751900AbdAYKdd (ORCPT + 4 others); Wed, 25 Jan 2017 05:33:33 -0500 Received: from mail-wm0-f45.google.com ([74.125.82.45]:37558 "EHLO mail-wm0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751867AbdAYKdb (ORCPT ); Wed, 25 Jan 2017 05:33:31 -0500 Received: by mail-wm0-f45.google.com with SMTP id c206so22857278wme.0 for ; Wed, 25 Jan 2017 02:33:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0q33KdiIIb8XngnzO2a6Da8IUut9FKf6dTmewQw1SjY=; b=zULMq2ZDhqhmJdhw24xQuwQgQjPDs0DogrN9mYapwm/TtfmZ4F7FQdemqrjUGS75o+ WPJqm5xcpU5ON+sal+wX+dfJiGqUUU8x+4DFtnxTTzuhA0DYPB8l2HIRBvUutJKCyJxR PFYDDrborCPOslE30b5gf+jZ+TBM1UQAKPTTmx37ICKb6Nvay99nFIyujm/Yuht3wst9 jLAajhjurBDD4ZnjcGU6+GfHiVbDHylQq7Hc9jmWsxKj7zKggGELlVELgFZF1URNmAqp wq3QBZfN5JwCnh+kKmxkCBRukJ0p6aotroascE8tvteuR3qXTjGuxeeS7z42bc63+dIb KUxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0q33KdiIIb8XngnzO2a6Da8IUut9FKf6dTmewQw1SjY=; b=SkrTH7Kt91Q8A6w6uE3f4kDuSQZHcY1aFFrqVGUo2NsYk4mfEgP4OIIpl1IDWPaYwh fnUMCXTCIht/NdlS0c45qiKvvoBsjFQuMmQcSDqrPYnLaW1AV22Je7zG4AOjwdNQe4xi U3+h4/9x+ueiC8Xc/8nHMIOUV9P+eaOli5fvp1fOfGygKO05XA+3fjwzdcx+zkhTHRe0 rGZP9gm2V+jPbgbF9mG3KF9otjnxOiHx8UyjfAzPzBqy2gTf+MtsYGZ+8cH8uSIoh1Ah /MQEUQhSZbLNUrwdo2GWiV9FKdSzQ9piDTDvdVH9Rm/qVJSQq8+TBzEGr1Metxgxy49Z vgBQ== X-Gm-Message-State: AIkVDXLIGkAmvy9UUfTkjHMNLVAC1yicYiYX8i5k44pSZY0UKVvlb+NRKGFvBZxee0gb/jiT X-Received: by 10.28.60.66 with SMTP id j63mr12613661wma.74.1485340409392; Wed, 25 Jan 2017 02:33:29 -0800 (PST) Received: from localhost.localdomain ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id z134sm30599521wmc.20.2017.01.25.02.33.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 25 Jan 2017 02:33:28 -0800 (PST) From: Alexandre Bailon To: b-liu@ti.com Cc: nsekhar@ti.com, khilman@baylibre.com, ptitiano@baylibre.com, tony@atomide.com, linux-omap@vger.kernel.org, sergei.shtylyov@cogentembedded.com, linux-usb@vger.kernel.org, Alexandre Bailon Subject: [PATCH v5 5/5] usb: musb: da8xx: Add a primary support of PM runtime Date: Wed, 25 Jan 2017 11:33:19 +0100 Message-Id: <20170125103319.26021-6-abailon@baylibre.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20170125103319.26021-1-abailon@baylibre.com> References: <20170125103319.26021-1-abailon@baylibre.com> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Currently, MUSB DA8xx glue driver doesn't have PM runtime support. Because the CPPI 4.1 is using the same clock as MUSB DA8xx and CPPI 4.1 is a child of MUSB DA8xx glue, add support of PM runtime to the DA8xx glue driver in order to let the CPPI 4.1 driver manage the clock by using PM runtime. Signed-off-by: Alexandre Bailon --- drivers/usb/musb/da8xx.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) -- 2.10.2 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index d87fb9b..bebc9ed 100644 --- a/drivers/usb/musb/da8xx.c +++ b/drivers/usb/musb/da8xx.c @@ -30,7 +30,6 @@ */ #include -#include #include #include #include @@ -86,7 +85,6 @@ struct da8xx_glue { struct device *dev; struct platform_device *musb; struct platform_device *usb_phy; - struct clk *clk; struct phy *phy; }; @@ -377,11 +375,7 @@ static int da8xx_musb_init(struct musb *musb) musb->mregs += DA8XX_MENTOR_CORE_OFFSET; - ret = clk_prepare_enable(glue->clk); - if (ret) { - dev_err(glue->dev, "failed to enable clock\n"); - return ret; - } + pm_runtime_get_sync(musb->controller->parent); /* Returns zero if e.g. not clocked */ rev = musb_readl(reg_base, DA8XX_USB_REVISION_REG); @@ -424,7 +418,7 @@ static int da8xx_musb_init(struct musb *musb) err_phy_power_on: phy_exit(glue->phy); fail: - clk_disable_unprepare(glue->clk); + pm_runtime_put(musb->controller->parent); return ret; } @@ -436,7 +430,7 @@ static int da8xx_musb_exit(struct musb *musb) phy_power_off(glue->phy); phy_exit(glue->phy); - clk_disable_unprepare(glue->clk); + pm_runtime_put(musb->controller->parent); usb_put_phy(musb->xceiv); @@ -519,7 +513,6 @@ static int da8xx_probe(struct platform_device *pdev) struct musb_hdrc_platform_data *pdata = dev_get_platdata(&pdev->dev); struct da8xx_glue *glue; struct platform_device_info pinfo; - struct clk *clk; struct device_node *np = pdev->dev.of_node; int ret; @@ -527,12 +520,6 @@ static int da8xx_probe(struct platform_device *pdev) if (!glue) return -ENOMEM; - clk = devm_clk_get(&pdev->dev, "usb20"); - if (IS_ERR(clk)) { - dev_err(&pdev->dev, "failed to get clock\n"); - return PTR_ERR(clk); - } - glue->phy = devm_phy_get(&pdev->dev, "usb-phy"); if (IS_ERR(glue->phy)) { if (PTR_ERR(glue->phy) != -EPROBE_DEFER) @@ -541,7 +528,6 @@ static int da8xx_probe(struct platform_device *pdev) } glue->dev = &pdev->dev; - glue->clk = clk; if (IS_ENABLED(CONFIG_OF) && np) { pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); @@ -587,6 +573,8 @@ static int da8xx_probe(struct platform_device *pdev) pinfo.data = pdata; pinfo.size_data = sizeof(*pdata); + pm_runtime_enable(&pdev->dev); + glue->musb = platform_device_register_full(&pinfo); ret = PTR_ERR_OR_ZERO(glue->musb); if (ret) { @@ -603,6 +591,7 @@ static int da8xx_remove(struct platform_device *pdev) platform_device_unregister(glue->musb); usb_phy_generic_unregister(glue->usb_phy); + pm_runtime_disable(&pdev->dev); return 0; }