Received: by 10.213.65.68 with SMTP id h4csp1397214imn; Thu, 29 Mar 2018 04:07:30 -0700 (PDT) X-Google-Smtp-Source: AIpwx49qs9rYZkWSRNridIwO/jlzjhk8nHf77Tao9AgLkQDjSa5MMN9Ml5wDwxqoHmF0x1NHHXZh X-Received: by 2002:a17:902:b20f:: with SMTP id t15-v6mr7853704plr.349.1522321650454; Thu, 29 Mar 2018 04:07:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522321650; cv=none; d=google.com; s=arc-20160816; b=JWmNtyEAEVhaPWEEdVDq8m8GT8pRXdOrObMN+wBJJY+EG+vG6KYBrqyLdIheR84a6Z wZ2b9teUxdDWWtLt/5FlWndr+KpecGU6q3D8SxSaRjo3I7mZHsw6b0vvXbYymzzT5xub iRg5r7GV67cqYM4/V8xHLez2Ya6q5+S6V8GzBIj6Ewg4ZRr6nFyW4os77zbA2EvyMQOt UE2qFSX6hF8+MrgKpRYZVURjswn5WZXQCgVbFXlTVVLzSAK4PdfOz+oBBjLMkFGj0BBS lHoADZQaJnlq+FUFOBjgVw+x1C90AsW56QHuIu2enmtG9hLyZ+A9s/YSH7DAqYBnw98x Nnkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:dkim-signature:dkim-signature :arc-authentication-results; bh=IhSH246unSlSm2y52+36x+Ya3NE3ADHEmH3ghkVYEHI=; b=A4oEJ6mMiDnNDOrTtylfCFkOktak3Gjm99TbkphWESkG8k+ccst5t7qV9bOHlsgRwI 3bcZ73I0jRNAvMFnVLL77qBMFi2zkvRQh7AA2B9BeTQqAhG8imkcWdwQgSTo92m178K5 T5Jy5J+NGK9VLFMaQPNxWDUkAecc7OnEcBF9VrCkNi96xbT+dkbuQeccP2PvGKdDWiY4 tl6rx7lohoKPwIKuFEkNj6eEf0QRH3Qjy6XLQDnWyGQC3sh5UJspNqWilZ9e64y3uJ5Q qFmEX+4+478TMe6VdKqxkEYHKkxL5AEY4Nh9FliuIY1mC4ssPgU4ZYIG4XkU9D84UQZh gTAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=MIuqz0XR; dkim=pass header.i=@codeaurora.org header.s=default header.b=A4AgAg1P; 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 n1-v6si5685442pld.280.2018.03.29.04.07.16; Thu, 29 Mar 2018 04:07: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=@codeaurora.org header.s=default header.b=MIuqz0XR; dkim=pass header.i=@codeaurora.org header.s=default header.b=A4AgAg1P; 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 S1752570AbeC2LGN (ORCPT + 99 others); Thu, 29 Mar 2018 07:06:13 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:43368 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752209AbeC2LGL (ORCPT ); Thu, 29 Mar 2018 07:06:11 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id B1D0C601D3; Thu, 29 Mar 2018 11:06:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1522321570; bh=+wsU8sPexnHjC0GzZJAdrFRq+pQh2CLo8QB4Lr940Hg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MIuqz0XR3Fg/SuV8gBLjYrzEw2WrEGM6LD93bfmR3meFqyJwud4/eRQKY1VWDDrvk cBWjSqlj2zTSuIs+k1Yzdq6WsMSzJBX7uZNoFWqtV8hoF5dFcMNobi5ioSWw4o3IPI CdZQrKYtPjmImelmA+W7mIr6FXkhZwTikXhC0LwQ= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from mgautam-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mgautam@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id DC844600D0; Thu, 29 Mar 2018 11:06:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1522321569; bh=+wsU8sPexnHjC0GzZJAdrFRq+pQh2CLo8QB4Lr940Hg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A4AgAg1PX+6P1Wkj5rc80aOJ+lAMHi51NP+KW0KAG/zeoz9iUxe8FRb2Du+oc606y ZgJtvUeSRLM/1I+NSAxaOa8YF5Qo9b1tSxz2TlCPLcODICHP0T2iAFLfbdtaYwLVTl xZ6amNBzokryiaCH8tyAM2Aqphweu3wsoNxCckfo= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org DC844600D0 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=mgautam@codeaurora.org From: Manu Gautam To: Kishon Vijay Abraham I , robh@kernel.org, sboyd@codeaurora.org Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org, vivek.gautam@codeaurora.org, evgreen@chromium.org, dianders@chromium.org, linux-arm-msm@vger.kernel.org, Manu Gautam , Varadarajan Narayanan , Wei Yongjun , Fengguang Wu Subject: [PATCH v4 2/7] phy: qcom-qmp: Enable pipe_clk before PHY initialization Date: Thu, 29 Mar 2018 16:34:21 +0530 Message-Id: <1522321466-21755-3-git-send-email-mgautam@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1522321466-21755-1-git-send-email-mgautam@codeaurora.org> References: <1522321466-21755-1-git-send-email-mgautam@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QMP PHY for USB/PCIE requires pipe_clk for locking of retime buffers at the pipe interface. Driver checks for PHY_STATUS without enabling pipe_clk due to which phy_init() fails with initialization timeout. Though pipe_clk is output from PHY (after PLL is programmed during initialization sequence) to GCC clock_ctl and then fed back to PHY but for PHY_STATUS register to reflect successful initialization pipe_clk from GCC must be present. Since, clock driver now ignores status_check for pipe_clk on clk_enable/disable, driver can safely enable/disable pipe_clk from phy_init/exit. Signed-off-by: Manu Gautam --- drivers/phy/qualcomm/phy-qcom-qmp.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c index 6470c5d..fddb1c9 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c @@ -793,19 +793,6 @@ static void qcom_qmp_phy_configure(void __iomem *base, } } -static int qcom_qmp_phy_poweron(struct phy *phy) -{ - struct qmp_phy *qphy = phy_get_drvdata(phy); - struct qcom_qmp *qmp = qphy->qmp; - int ret; - - ret = clk_prepare_enable(qphy->pipe_clk); - if (ret) - dev_err(qmp->dev, "pipe_clk enable failed, err=%d\n", ret); - - return ret; -} - static int qcom_qmp_phy_com_init(struct qcom_qmp *qmp) { const struct qmp_phy_cfg *cfg = qmp->cfg; @@ -974,6 +961,12 @@ static int qcom_qmp_phy_init(struct phy *phy) } } + ret = clk_prepare_enable(qphy->pipe_clk); + if (ret) { + dev_err(qmp->dev, "pipe_clk enable failed err=%d\n", ret); + goto err_clk_enable; + } + /* Tx, Rx, and PCS configurations */ qcom_qmp_phy_configure(tx, cfg->regs, cfg->tx_tbl, cfg->tx_tbl_num); /* Configuration for other LANE for USB-DP combo PHY */ @@ -1019,6 +1012,8 @@ static int qcom_qmp_phy_init(struct phy *phy) return ret; err_pcs_ready: + clk_disable_unprepare(qphy->pipe_clk); +err_clk_enable: if (cfg->has_lane_rst) reset_control_assert(qphy->lane_rst); err_lane_rst: @@ -1283,7 +1278,6 @@ static int phy_pipe_clk_register(struct qcom_qmp *qmp, struct device_node *np) static const struct phy_ops qcom_qmp_phy_gen_ops = { .init = qcom_qmp_phy_init, .exit = qcom_qmp_phy_exit, - .power_on = qcom_qmp_phy_poweron, .set_mode = qcom_qmp_phy_set_mode, .owner = THIS_MODULE, }; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project