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: 92315 Delivered-To: patch@linaro.org Received: by 10.182.3.34 with SMTP id 2csp1621964obz; Tue, 24 Jan 2017 02:12:12 -0800 (PST) X-Received: by 10.99.64.4 with SMTP id n4mr33298317pga.71.1485252732403; Tue, 24 Jan 2017 02:12:12 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q186si18562325pga.81.2017.01.24.02.12.12; Tue, 24 Jan 2017 02:12:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-usb-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-usb-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-usb-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750891AbdAXKMG (ORCPT + 4 others); Tue, 24 Jan 2017 05:12:06 -0500 Received: from mail-wm0-f47.google.com ([74.125.82.47]:35628 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750867AbdAXKMA (ORCPT ); Tue, 24 Jan 2017 05:12:00 -0500 Received: by mail-wm0-f47.google.com with SMTP id r126so173806135wmr.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=mRrKhkRnwftKxgE9fwTl9UPLWIQWK388UDZcCpddAR9NYBEy3YKND0o8EezKXGQFDY mbHmJJpqEomgdGfIQZmIzl8CTbTsGaDPFfE9MbX1vlgMwa0UgyuLkhLHl5eqj3167oSr oFSc57YPGMI39QtN5q8SGwxovonckJ64eQRbVcGWna4n34TbG4IiGONu2w1KTJzqNG8z XKTjI+qDnxjEZPTpsqu++5jVhCsx93rbEdE40CmIVq4HZZ0Bis07aKs+biwQQ/5EYDNq omrFQMGw7WyCqnfmEazhz/MKC1rDE0TT3OIIvQGTZEkTdKH/7KSvy3oQrnw9k2a1K7pT kT9g== X-Gm-Message-State: AIkVDXKTYZuajSZx+HfFbiSRtgPcddl878k4Hr9jNsbyc4SxKAfzKMk5AdFiHpttNlJsJdjy 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-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@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-usb" 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; }