Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2242483imm; Mon, 28 May 2018 04:37:30 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpmvOQcoqm7u56ocMnwW1uh7ZSK1Pg4Q8bAfDPQq08gmXZT2+MOl7VB5GdwblINj1e+Dp67 X-Received: by 2002:a17:902:aa83:: with SMTP id d3-v6mr13703435plr.323.1527507450121; Mon, 28 May 2018 04:37:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527507450; cv=none; d=google.com; s=arc-20160816; b=xICIaUEUfzTeku3hI0wC1TcNnG/hz4W1bz9Q8FqXEqG0V9BCNnD6eXerzmoWwxqIJk GQW1VzcgeHCxloTJlakvprFK2ZHxmGiQJtxLol4utwAPS3A402WhyTbSQ8xE6ZdGx5Zr RlKOPGq800d6x869r35r3zbQdbyTNc3458T2CAo+YcKxwfk2SB/VqumXayyg+2p7V1iz UeVVHKWAmJUxy6ehbDtetLUE1JLdjmoJZeK/Lmtz9KSjHsX57lz91UdMhqc2+rtkaeer BbyuqQq7dOSscUW5g1CHRCxAqGEqTWXZAqBV9wh6hxyE4pBifw2i5XjSho7xSzOGIvAX phVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=SEfSpC/3OeQHu4uXlK1bJjGGZdSU9Hp86Djfxp9zYnc=; b=w0iwp5nAw84lqZeSWbv/gylv0R5HFa3dn9su3jpUyZWyhst1ah+RplWfQ9kLAnipew mMf/26jhA1cAPunMtE6XUgkH3gNVYIefPhA6BtH5xFOWjoUjoWD5KlqPZQ7XDKM0V1iF wdGA3MY8L9M07StsXtYHN/bG1bsG+A3cCHYPlq+uG8qe4PoHdINXfv8XgD8EazEzQ3Hm mNfPPVpYQQIj281tyZmFV4Smx0AKXYK9JDKbK8CztZzyFGGQTpdwoYru/XNQ9sQ/TfuZ mUJFNyrY40Me1jnnrgM83CfJS1vaa2r5fHKDl5uH4tUQI73brj2jdI8/wBMjqS/61xXI L6bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bhjzDe+T; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o189-v6si29582696pfo.20.2018.05.28.04.37.15; Mon, 28 May 2018 04:37:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bhjzDe+T; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938306AbeE1Lg0 (ORCPT + 99 others); Mon, 28 May 2018 07:36:26 -0400 Received: from mail.kernel.org ([198.145.29.99]:60778 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1424220AbeE1LNI (ORCPT ); Mon, 28 May 2018 07:13:08 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C7BF0206B7; Mon, 28 May 2018 11:13:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527505988; bh=3bLO8SN+Psz7DgsNDFvP/webwhtY30888fERhp4lFx8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bhjzDe+THqh/zRLpa3shq8r0+t+PcymOZwyvl3NIFEeFZm1N/Iz4d4fCM5I7tl3pc kgjh1HaJx6Ih6L/qE8i7+ETx98e2StTklxSL/vfPaano+hJ+xIwjXutt9sWlH1OIrv 6tw7QOt0mx5lAY5J8pqNVl64S3m1o1I09Cqe4azY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vivek Gautam , Manu Gautam , Kishon Vijay Abraham I , Sasha Levin Subject: [PATCH 4.16 201/272] phy: qcom-qmp: Fix phy pipe clock gating Date: Mon, 28 May 2018 12:03:54 +0200 Message-Id: <20180528100257.428919683@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100240.256525891@linuxfoundation.org> References: <20180528100240.256525891@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: Vivek Gautam [ Upstream commit f8ba22a39e985c93e278709b1d5f20857a26b49b ] Pipe clock comes out of the phy and is available as long as the phy is turned on. Clock controller fails to gate this clock after the phy is turned off and generates a warning. / # [ 33.048561] gcc_usb3_phy_pipe_clk status stuck at 'on' [ 33.048585] ------------[ cut here ]------------ [ 33.052621] WARNING: CPU: 1 PID: 18 at ../drivers/clk/qcom/clk-branch.c:97 clk_branch_wait+0xf0/0x108 [ 33.057384] Modules linked in: [ 33.066497] CPU: 1 PID: 18 Comm: kworker/1:0 Tainted: G W 4.12.0-rc7-00024-gfe926e34c36d-dirty #96 [ 33.069451] Hardware name: Qualcomm Technologies, Inc. DB820c (DT) ... [ 33.278565] [] clk_branch_wait+0xf0/0x108 [ 33.286375] [] clk_branch2_disable+0x28/0x34 [ 33.291761] [] clk_core_disable+0x5c/0x88 [ 33.297660] [] clk_core_disable_lock+0x20/0x34 [ 33.303129] [] clk_disable+0x1c/0x24 [ 33.309384] [] qcom_qmp_phy_poweroff+0x20/0x48 [ 33.314328] [] phy_power_off+0x80/0xdc [ 33.320492] [] dwc3_core_exit+0x94/0xa0 [ 33.325784] [] dwc3_suspend_common+0x50/0x60 [ 33.331080] [] dwc3_runtime_suspend+0x48/0x6c [ 33.336810] [] pm_generic_runtime_suspend+0x28/0x38 [ 33.342627] [] __rpm_callback+0x150/0x254 [ 33.349222] [] rpm_callback+0x24/0x78 [ 33.354604] [] rpm_suspend+0xe0/0x4e4 [ 33.359813] [] pm_runtime_work+0xdc/0xf0 [ 33.365028] [] process_one_work+0x12c/0x28c [ 33.370576] [] worker_thread+0x58/0x3b8 [ 33.376393] [] kthread+0x100/0x12c [ 33.381776] [] ret_from_fork+0x10/0x50 Fix this by disabling it as the first thing in phy_exit(). Fixes: e78f3d15e115 ("phy: qcom-qmp: new qmp phy driver for qcom-chipsets") Signed-off-by: Vivek Gautam Signed-off-by: Manu Gautam Signed-off-by: Kishon Vijay Abraham I Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/phy/qualcomm/phy-qcom-qmp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/drivers/phy/qualcomm/phy-qcom-qmp.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c @@ -751,8 +751,6 @@ static int qcom_qmp_phy_poweroff(struct struct qmp_phy *qphy = phy_get_drvdata(phy); struct qcom_qmp *qmp = qphy->qmp; - clk_disable_unprepare(qphy->pipe_clk); - regulator_bulk_disable(qmp->cfg->num_vregs, qmp->vregs); return 0; @@ -936,6 +934,8 @@ static int qcom_qmp_phy_exit(struct phy const struct qmp_phy_cfg *cfg = qmp->cfg; int i = cfg->num_clks; + clk_disable_unprepare(qphy->pipe_clk); + /* PHY reset */ qphy_setbits(qphy->pcs, cfg->regs[QPHY_SW_RESET], SW_RESET);