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: 9536739 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id CC6636046A for ; Wed, 25 Jan 2017 10:33:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BBBD826B39 for ; Wed, 25 Jan 2017 10:33:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B06E527E5A; Wed, 25 Jan 2017 10:33:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 50E6926B39 for ; Wed, 25 Jan 2017 10:33:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751900AbdAYKdd (ORCPT ); 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 X-Virus-Scanned: ClamAV using ClamSMTP 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(-) 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; }