From patchwork Tue Jan 24 10:11:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Bailon X-Patchwork-Id: 9534745 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 8CD41601D3 for ; Tue, 24 Jan 2017 10:12:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7E6FC24DA2 for ; Tue, 24 Jan 2017 10:12:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 72C8A26AE3; Tue, 24 Jan 2017 10:12:11 +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 EA23324DA2 for ; Tue, 24 Jan 2017 10:12:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750789AbdAXKMF (ORCPT ); Tue, 24 Jan 2017 05:12:05 -0500 Received: from mail-wm0-f43.google.com ([74.125.82.43]:37686 "EHLO mail-wm0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750871AbdAXKMA (ORCPT ); Tue, 24 Jan 2017 05:12:00 -0500 Received: by mail-wm0-f43.google.com with SMTP id c206so200732781wme.0 for ; Tue, 24 Jan 2017 02:11:59 -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=R7NwmbEouLtWggADZSGXsiR9TRbHrwxB1X49PDlsfqJ3VZyYY8LGecQ+CzOvJwKLYC /eU3jDvlKK/yDMy2r5/l+GMuwv8el4nLzdDJpqCBxzrWknIR2Ym1h7DmKbkg3XywbY4B tJIqPIQYsw2kYaQoLDPLV9TIS8ePVhO2XBGztGdaKnon94P++bpreyjRlVMMUV40oURp 1ichz6KTjOfK9WGUuoFJt8mOgdghd16RrlZws41PnslfiB94HW3mDwrcvHoch6l3dzCn sJTUW8bd1m61jSgSJuvVR67PFwo2XbFJ6uWLFrL8cVEriXV/QEsEZg8fV3rSGA1gqsiM DWhg== 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=dwjIa1+doKIuBWxFGkJyCMIHUajszn1dSqrInErrhDnCwJzia7hxUYsNN/m9smPkNF x/bsIYDhm99K8yvQJf1ZFlPUCzqVEqb0bGNRitebIO+jL/veOpUeJB1PsYHkRCDoulbh rNs+9rlYBOhhELItY7d2k+/BUPMz2VlaM7n7WZ8CtruYjsuKVtBqI2xhGWJCJu3/HJWd YMdkg3EVv3AdMafhVTlD96vWssOAjqcpmtVwdbp14mFroF5Kark/fFsHt44/uQdxovKs AXsO4KcJhv1Lu5sxh0Jp8nZUiKY5If20b+Wcza3C4kWOg4PExy0HncY9deomt8k7vXQ4 c3QQ== X-Gm-Message-State: AIkVDXK0oX0OA2dm1goWCgTY/Ja0ATv2zD4xRmDFp7S7gGlgPZTtycO1yB5CdET23vCiZias X-Received: by 10.28.84.88 with SMTP id p24mr16413714wmi.52.1485252718896; Tue, 24 Jan 2017 02:11:58 -0800 (PST) Received: from localhost.localdomain ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id c81sm25427318wmf.22.2017.01.24.02.11.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Jan 2017 02:11:58 -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, linux-usb@vger.kernel.org, sergei.shtylyov@cogentembedded.com, Alexandre Bailon Subject: [PATCH v4 5/5] usb: musb: da8xx: Add a primary support of PM runtime Date: Tue, 24 Jan 2017 11:11:49 +0100 Message-Id: <20170124101149.14920-6-abailon@baylibre.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20170124101149.14920-1-abailon@baylibre.com> References: <20170124101149.14920-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; }