From patchwork Mon Mar 13 23:37:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshihiro Shimoda X-Patchwork-Id: 9622283 X-Patchwork-Delegate: geert@linux-m68k.org 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 22DAF60414 for ; Mon, 13 Mar 2017 23:39:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 13CB32851E for ; Mon, 13 Mar 2017 23:39:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 084FD28522; Mon, 13 Mar 2017 23:39:54 +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.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI 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 59D9B2851E for ; Mon, 13 Mar 2017 23:39:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753732AbdCMXjx (ORCPT ); Mon, 13 Mar 2017 19:39:53 -0400 Received: from relmlor1.renesas.com ([210.160.252.171]:40345 "EHLO relmlie4.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752885AbdCMXjw (ORCPT ); Mon, 13 Mar 2017 19:39:52 -0400 Received: from unknown (HELO relmlir4.idc.renesas.com) ([10.200.68.154]) by relmlie4.idc.renesas.com with ESMTP; 14 Mar 2017 08:39:49 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir4.idc.renesas.com (Postfix) with ESMTP id 8280262788; Tue, 14 Mar 2017 08:39:49 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id 6E373480A5; Tue, 14 Mar 2017 08:39:49 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id 6663E48014; Tue, 14 Mar 2017 08:39:49 +0900 (JST) Received: from relmlii2.idc.renesas.com [10.200.68.66] by relmlac4.idc.renesas.com with ESMTP id JAS18525; Tue, 14 Mar 2017 08:39:49 +0900 X-IronPort-AV: E=Sophos;i="5.36,161,1486393200"; d="scan'208";a="237391476" Received: from mail-hk2apc01lp0209.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.209]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 14 Mar 2017 08:39:48 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=g2/cMzl/K3dg/sTw+DmNua3S0aQecwI0Z0iGYqF7Wok=; b=TtUolZLSbj1shyFzlt24hL1DyaUPS6D+8vJrKIBkE4txoGSYq3aoPx+onVSGYPtElgEE3I3P3etR2Wa/pcEssEUszJbv0WjyjaD4jp4/dkn6mOm6GzyxFudf3F0pv0XLBdQ57v84IdpOqfhHScvQdGjdQmw4XokPe1Iu+7762uo= Authentication-Results: ti.com; dkim=none (message not signed) header.d=none; ti.com; dmarc=none action=none header.from=renesas.com; Received: from localhost.localdomain (211.11.155.144) by SG2PR06MB1696.apcprd06.prod.outlook.com (10.167.82.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.961.17; Mon, 13 Mar 2017 23:39:45 +0000 From: Yoshihiro Shimoda To: CC: , , Yoshihiro Shimoda Subject: [PATCH v3] phy: rcar-gen3-usb2: fix implementation for runtime PM Date: Tue, 14 Mar 2017 08:37:40 +0900 Message-ID: <1489448261-4477-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: KAWPR01CA0069.jpnprd01.prod.outlook.com (10.174.229.157) To SG2PR06MB1696.apcprd06.prod.outlook.com (10.167.82.138) X-MS-Office365-Filtering-Correlation-Id: 8508a819-13dc-4a3e-3d20-08d46a6a3b5b X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:SG2PR06MB1696; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB1696; 3:RA9mNQPjq+lB9PNGgPPjIWh1ueqxGuzu6wk3b6siV/npW0f2vYsU/zx6PMgueHa8agbJWVsvs2OPV/73mdOcMQqXOSBLrfklUmNJBXQnaXVs1j2gd//uhSuCNSQqyFAyzx3UVn1w9c9l+5zaX8TrNUg/soZzfm4NyE9yiUV7v6yqyTPjcX37Oa+KFxwTUVJc2f90ZgRWnRzEGQJ0FlRzMiwKFJrYV7zuhxu1pl0OOS4DByPWDD/IMlfdDgmukZ9f236Q8nfob8BQyJQtzVNSCKG2YYtMp1/z+o3N+pQbv1A=; 25:nTQNKHelo/kxPh4cryYc3efHzUJU9TZ6kU4HQ/zj8ta5M7Ud7RwGPe5WTQ/kbCs2rnwtSzcqPq1X4WYPtXNEUeM1gwLOvKgmzFBQUF5daglChfO++LQE/lA/7d9ZoSyIY9xtVnhvwscF0QbTQhAoUPgrdvdbh6dmfbxYJSnb7NhyuqWoWGjs7vJ1Pi5++5t6npItmyuPE/7v9rJ1GiJ5gPAqj+vfaT4w1x7X9tn2e8SYz9T+ulrJjDm2N8YfvcOqY+1wMVpLNKbQ2UuJT8bnTt9yT4yiI7lhi2WvaKGPn1qFtXMFk3tTilLaPHSoLUOk/LFDRD692SiLANrlXZSY0glJcvO3csQUimEJ516gWZanLaJ8Bh2DlUVJ8i19bMqIUDjpW4FEbAOsuJH1EFOB0h3Mks2nY86MI0KsBCdGG1WoqYzGc03Gzn1swPF7gzL258exVftaMO+z3OBaJxY5rA== X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB1696; 31:b5wXoPS2nHX8IKfZwMkECWlPB/KUEAHk6TWWhY/IMXuJzKigK+HwKerBPb2mz5M6JzVZpKy0N9OgK6LJvFEUySwsibUL0fU8KSi7EVfmsQatiKTtdktbfn0uxIG2iOdXybtxZGlIMA9+EHVSLkODQszeLipbb4yml7eoyv99zbll/Fc4fG83LukpgOd4NBn23Ov7Urbm+uAkEoypnevVDEgq5EqO/feDjhBo7goyERHgN7PdUaLrbAjX3lH+M3RA; 20:xkEwfPMjVO0n79LfimKcLrbMjjorGu9r7otTBkjG0vVIi524HaUIj8rqmlCdOxTQPkXKCH6fmCbw3VXJ+ATPzJcquv2IA3ro0boTSpATcDhD/oY9yz8hKxlTmjUpFl908kKm/QfVufPLnziy7HY58P6zC1F/PSw+TuiMF5DDkL9Ski6iYCjQwuMZH8P+BqZDOR6/ooU8RFyVxcfc/eON3DKxrGSBHBv0hP61om6akyUmBKA5dFPn5IWzXRWjqeafwoulkGGRnZUYwv/HDPYMKz4M0kfuJkYIq08JOu98VpKddStKdtUnbxPgekAAZfnFm/SxmWD5AAcnmPFXGM1uFOHFUMcc939EJ8zrJTIVgmhMYaFLS0ewZw7o8MpJbIbMtt7NPw0Y7R/wZGC2n7xnoKM/JLA+/sCQu2+NuMTFVmy+U2xCAvpbNVvryv4dXlC8IrqwAzKgHBRACpoU3gDpYERW4iJRH5QOX+ICsPWfolWXGGbmZOdvfN/QGirWvDqc X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123558025)(20161123564025)(6072148); SRVR:SG2PR06MB1696; BCL:0; PCL:0; RULEID:; SRVR:SG2PR06MB1696; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB1696; 4:59p7qwpXWRo4VH1f7kllZ+ZRyCDN4tPvvgHuD9cxSWGtSp6vO100PXh2N2XAde24utiOyZGZKobo3pv3nJI1bwap1DLVz29dxF4+jMfYZ5HT4cXHHOTFnLUqrvUULMwMBYhjPSwPqK97PPJh/ZI+Y+hqoaXiQVIX6cZHigYLWQR7celXaXwHP7lPZCz44uvTaH1rvrS7HtL79D31rkituyKDJoieVc9XsOO+k9MJEMDZpYOIpbi3XHdrCWZOBB4PfOTBuJ65Trf37UYqq7dHCxBRWiBwwVEKYx6qDX8uJqWshUqRY+6irix51u0KUyQNijGOpftq/6GdcoIlr4Visy/xv5UqdYmEcVGGEfIxwjT2jcntm7MkBB1qhmoIb5zGK0GmK4mTW1ECm3WyomzaIOGapEDyRfjGycWtbiWIJdoGlcQClTMzj6oatlyKhLkGS50Rie0/UXJiy/+3V84Vdr2r0D3/FDavAucUHaqzcw0T0wIKb+JJiwQb0DqdhYeH4l7xxHyBe8yZ48I7U2wp2pPxAU2Z4+3JqZ3MjgVUcTTIl5nAKTXUz8qchqGyietDLLa6wWT2IYxjuer8VZ4G+ZUTHTXCYKlcrWQ2K6gPsVbGjct+PIg8qEKfXQw23iCE X-Forefront-PRVS: 0245702D7B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(6069001)(39860400002)(39840400002)(39410400002)(39850400002)(39450400003)(43544003)(23433003)(33646002)(50986999)(6916009)(6506006)(6666003)(42882006)(5660300001)(305945005)(81166006)(7736002)(2351001)(2906002)(25786008)(47776003)(66066001)(6486002)(110136004)(5003940100001)(38730400002)(107886003)(78352004)(6512007)(4326008)(48376002)(54906002)(50466002)(3846002)(6116002)(50226002)(189998001)(8676002)(36756003)(42186005)(230783001)(53936002); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR06MB1696; H:localhost.localdomain; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR06MB1696; 23:ucZuDHLbWGiD7XX4L6+zzOCF8A7irFCROfzZtdOL5?= =?us-ascii?Q?5fgyoOtEkFTUKqguIkYqCfcrzIFdfxYvI6AIScOffC7bpGCkSh3cAg+LXWdu?= =?us-ascii?Q?ENXNUmCOWKI5JJa8Se2GWiHDNiP0IWcE3BnT3m8kf4kTwfqYMxjknXLks6W8?= =?us-ascii?Q?BZrvWoc4I5ius1oF0BC2PQnqs2nTdz/wxunonQWXhIpEwbjQmZV77uJjURJ/?= =?us-ascii?Q?P6p3IDN5Bw6EHccraYs1eb84fYuY3C07w+YctWZNnqeCelqmw4QKPJ1U8vqj?= =?us-ascii?Q?SEZFaOWOB/4+AkOgXSxDKzf0pqnwsHNKaf0iGFSPhKuuA9Cv9j5KDWAh7EGQ?= =?us-ascii?Q?jOjwd9c0mzC/X0R7fNwFq7873aIxkaRwDOyzlUnOk0FQzo4G8Y3qhLGMn/Iz?= =?us-ascii?Q?SK0g9wAa5tbvPF+wktpSsQIfazD15GgKhanU8KbXqDx06zQ1Ic8Odk4SWcxF?= =?us-ascii?Q?+v5mDhIOgYBkT8DmbFdBYARLPQW1YLwwW2ZxQZdYWu7TJox7E/K4iGvB17Od?= =?us-ascii?Q?PmsUH9HYwT4kIhlRjL4Srbi0cOyGii+RVz6yeIeCZaJDvM4bHWVTz31rsTip?= =?us-ascii?Q?jVX9ziClad3dmrwd0to5isyjj+qHEwTi7S1+hnn10Tt5mtbdxz3iLBxMdRKt?= =?us-ascii?Q?ZVKjMeHhuwbTXF1LgAHD3iv5Kpu8N5ZWEbi919tdQwAZ90pHdgn7Yrme6OQ9?= =?us-ascii?Q?DfG0Laa9oxwmkLXiUiFFCy13ldo4UxiJa0EDx12Pk0DwJhUgxc5FeIWzAICo?= =?us-ascii?Q?+sIhhpNU7GqEAQ5riK9TJGC7o5/JoBVU2Y0hGEzD/K0Ij4xLcruuPka6e6xJ?= =?us-ascii?Q?Yfbd/an7ZOwfAWJOria0frfwZhagQgpahVlA2KUALR8J0wdk5VfK/h0uQGH/?= =?us-ascii?Q?P4wI8Fq/FVLUn7iFQ2kfdcU1nWp0mmArDvFXbHxx0u98qxvuvuEwc0MiJ8/O?= =?us-ascii?Q?CKfygXUNJFsdfUq6JRxrO1L73kXkmERXZPLz7eM0v+vXqvYofBltOEgG7NfE?= =?us-ascii?Q?RLDlRG/LLwi1JddA8tHzIuiX4ZbLkJ+07QvV/NMS2wZTGq4LhpyX9yAc2Pwd?= =?us-ascii?Q?7Y1WElgm/MoT2xqUVuen28GfEERtWMhPELFMWOcwj38ePOOknRFvQIZLL3PM?= =?us-ascii?Q?uluNtwn/5w=3D?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB1696; 6:0w+O8c6pYyBWMdvuL4PFs57LsH8EqEYJPFthdzyGUiIM694amSFfeOlBpJ0Ei55hrdIjx5C2zWZwdjXvlVz1cXlQTpRQlCx8PILT8w3eYwcmudjmHg/k0mMKRZa45A3ui9J6Hvx8Uwpp7z1x2iA14OabjNYcK2OjfqUxCYjm4YuMzmKeh9XigT9iT+pQ31+RLL1Puye/GlM0I8oHg9Bc58LttJ/9YYdduIbO73qXoPP3tqu19UARi1IYXZmNDlHmDwCfUP0a20ShuroKMe75WgsNj0oj5SYClBJAvkSrTyTZyhLwI+5lXhd8dDi0/+zBJP/1CQKa+TB+FyUlCPCq6KfFI8hrkEAobx7wRpPF/S2dAf2XI3zlVluXiOf/IyhWSNF8IP0iloP1pxZVzcD/kbtDV8ZJSNOrkM8bQolWbs8=; 5:3NHnuFpVNRV9iz0Khi6VOZLUMYdalRTK2210f9ihIeRWU2zbRUY6HM++pXUsHQv8us9tNpndxplLxq5RI30ZxXE0pf/1IXjCgYVMuMeNsBFXFNzVKJuXrrxcnQQTr2r98szPEkaIrfsyKmKENJplDUxrVVcykFAXmJBsl4UhlJM=; 24:EO4wQOhCBO5htJrtGZ0Mjfk9qujc4Ve6xR3IUSEeTWNj7RxWCNSjsBcemKl3Kb/PLjBGpdw9YAE26HmO+dKe/yDPFSWGHnwvS4tQBbaJTXY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB1696; 7:iOF6Uqkndh6s2ZrVT9E3juquSj/mQHZlk16TSxRMoY9JxraIN8lmX8MIhG79O0ahBN34jHzBCCBZ+Aaqb4ATesDvJ0+NK8p2GKO6iDMEzUpkaIHkErvVHejyOmwJO7t4HwdsUEeTpOyle3lQ6Fin1jCImGroQjFE5QgxFI/i23gn43934E3h1hEZcMA01RnD7hTgvRlPtlosG13jyBDfSSWD6Td0kWBuZhKTtTWWj5CyUcu3A9EpTcRqSy+Nff33Wb44LqdQmMhi9wck4Rg2q53vHw/ABvsqucorKVo7jM+BZb0zcy5vZzwVEtlItrSpo9aXPjGNLZcYDNyl9mzpzQ==; 20:GERa9RP9fMpP7YU/HfJzJmMkgPB1FJ+Thtl8bVC+zIOQvmgaM+YM3yquiZmbLQhJMK2lzWhKUj6OKtLm4IAXluCPpuUEdXLOhZ84FnSIru9HlVgJwY3QyunVsJ2vuWlPoLLHeUxFy7ft1tr/xII0RoLaN0sImjUzyNYw28TdTGc= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2017 23:39:45.6151 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR06MB1696 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch fixes an issue that this driver doesn't take care of the runtime PM. This code assumed that devm_phy_create() called pm_runtime_enable(dev), but it misunderstood the dev_phy_create()'s specification. This driver should call its own pm_runtime_enable() before dev_phy_create(). Fixes: f3b5a8d9b50d ("phy: rcar-gen3-usb2: Add R-Car Gen3 USB2 PHY driver") Signed-off-by: Yoshihiro Shimoda --- Changes from v2: - revise the commit log (s/pm_runtime_pm/pm_runtime_enable) Changes from v1: - revise the commit log (s/the own/its own/) - simplify return code in probe(). drivers/phy/phy-rcar-gen3-usb2.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/drivers/phy/phy-rcar-gen3-usb2.c b/drivers/phy/phy-rcar-gen3-usb2.c index afb4d04..54c3429 100644 --- a/drivers/phy/phy-rcar-gen3-usb2.c +++ b/drivers/phy/phy-rcar-gen3-usb2.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -395,7 +396,7 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev) struct rcar_gen3_chan *channel; struct phy_provider *provider; struct resource *res; - int irq; + int irq, ret = 0; if (!dev->of_node) { dev_err(dev, "This driver needs device tree\n"); @@ -434,17 +435,24 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev) } } - /* devm_phy_create() will call pm_runtime_enable(dev); */ + /* + * devm_phy_create() will call pm_runtime_enable(&phy->dev); + * And then, phy-core will manage runtime pm for this device. + */ + pm_runtime_enable(dev); channel->phy = devm_phy_create(dev, NULL, &rcar_gen3_phy_usb2_ops); if (IS_ERR(channel->phy)) { dev_err(dev, "Failed to create USB2 PHY\n"); - return PTR_ERR(channel->phy); + ret = PTR_ERR(channel->phy); + goto error; } channel->vbus = devm_regulator_get_optional(dev, "vbus"); if (IS_ERR(channel->vbus)) { - if (PTR_ERR(channel->vbus) == -EPROBE_DEFER) - return PTR_ERR(channel->vbus); + if (PTR_ERR(channel->vbus) == -EPROBE_DEFER) { + ret = PTR_ERR(channel->vbus); + goto error; + } channel->vbus = NULL; } @@ -454,15 +462,22 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev) provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate); if (IS_ERR(provider)) { dev_err(dev, "Failed to register PHY provider\n"); + ret = PTR_ERR(provider); + goto error; } else if (channel->has_otg) { int ret; ret = device_create_file(dev, &dev_attr_role); if (ret < 0) - return ret; + goto error; } - return PTR_ERR_OR_ZERO(provider); + return 0; + +error: + pm_runtime_disable(dev); + + return ret; } static int rcar_gen3_phy_usb2_remove(struct platform_device *pdev) @@ -472,6 +487,8 @@ static int rcar_gen3_phy_usb2_remove(struct platform_device *pdev) if (channel->has_otg) device_remove_file(&pdev->dev, &dev_attr_role); + pm_runtime_disable(&pdev->dev); + return 0; };