public inbox for linux-arm-msm@vger.kernel.org
 help / color / mirror / Atom feed
From: Manu Gautam <mgautam@codeaurora.org>
To: Vivek Gautam <vivek.gautam@codeaurora.org>
Cc: Kishon Vijay Abraham I <kishon@ti.com>,
	Felipe Balbi <balbi@kernel.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Linux USB Mailing List <linux-usb@vger.kernel.org>,
	Varadarajan Narayanan <varada@codeaurora.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Wei Yongjun <weiyongjun1@huawei.com>,
	Fengguang Wu <fengguang.wu@intel.com>,
	"open list:GENERIC PHY FRAMEWORK" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 05/16] phy: qcom-qmp: Fix PHY block reset sequence
Date: Fri, 12 Jan 2018 14:16:19 +0530	[thread overview]
Message-ID: <77b12f94-e496-ff44-fe61-75b21a1a4e76@codeaurora.org> (raw)
In-Reply-To: <CAFp+6iF=b2cxskVOkbw+1fb5Xm1msZz4jL6eO9t5hqJTRJZXSA@mail.gmail.com>

Hi Vivek,


On 1/12/2018 2:14 PM, Vivek Gautam wrote:
> On Wed, Jan 3, 2018 at 4:58 PM, Manu Gautam <mgautam@codeaurora.org> wrote:
>> PHY block or asynchronous reset requires signal
>> to be asserted before de-asserting. Driver is only
>> de-asserting signal which is already low, hence
>> reset operation is a no-op. Fix this by asserting
>> signal first. Also, resetting requires PHY clocks
>> to be turned ON only after reset is finished. Fix
>> that as well.
>>
>> Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
>> ---
>>  drivers/phy/qualcomm/phy-qcom-qmp.c | 28 +++++++++++++++++++---------
>>  1 file changed, 19 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c
>> index 1b82cea..ecff261 100644
>> --- a/drivers/phy/qualcomm/phy-qcom-qmp.c
>> +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c
>> @@ -752,13 +752,16 @@ static int qcom_qmp_phy_com_init(struct qcom_qmp *qmp)
>>                 goto err_reg_enable;
>>         }
>>
>> -       ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks);
>> -       if (ret) {
>> -               dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret);
>> -               goto err_clk_enable;
>> +       for (i = 0; i < cfg->num_resets; i++) {
>> +               ret = reset_control_assert(qmp->resets[i]);
>> +               if (ret) {
>> +                       dev_err(qmp->dev, "%s reset assert failed\n",
>> +                               cfg->reset_list[i]);
>> +                       goto err_rst_assert;
>> +               }
>>         }
>>
>> -       for (i = 0; i < cfg->num_resets; i++) {
>> +       for (i = cfg->num_resets - 1; i >= 0; i--) {
> Do we a dependency on the order in which these resets are
> applied?
> If not then we can use the 'bulk reset' APIs as well.

We need to follow an order for assert and opposite order for
de-assert, hence cant use 'bulk reset' APIs.

>
> With that bulk reset change you can add my review.
>
> Reviewed-by: Vivek Gautam <vivek.gautam@codeaurora.org>
>
> Thanks
> Vivek
>
>>                 ret = reset_control_deassert(qmp->resets[i]);
>>                 if (ret) {
>>                         dev_err(qmp->dev, "%s reset deassert failed\n",
>> @@ -767,6 +770,12 @@ static int qcom_qmp_phy_com_init(struct qcom_qmp *qmp)
>>                 }
>>         }
>>
>> +       ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks);
>> +       if (ret) {
>> +               dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret);
>> +               goto err_rst;
>> +       }
>> +
>>         if (cfg->has_phy_com_ctrl)
>>                 qphy_setbits(serdes, cfg->regs[QPHY_COM_POWER_DOWN_CONTROL],
>>                              SW_PWRDN);
>> @@ -791,7 +800,7 @@ static int qcom_qmp_phy_com_init(struct qcom_qmp *qmp)
>>                 if (ret) {
>>                         dev_err(qmp->dev,
>>                                 "phy common block init timed-out\n");
>> -                       goto err_rst;
>> +                       goto err_com_init;
>>                 }
>>         }
>>
>> @@ -799,11 +808,12 @@ static int qcom_qmp_phy_com_init(struct qcom_qmp *qmp)
>>
>>         return 0;
>>
>> +err_com_init:
>> +       clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks);
>>  err_rst:
>> -       while (--i >= 0)
>> +       while (++i < cfg->num_resets)
>>                 reset_control_assert(qmp->resets[i]);
>> -       clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks);
>> -err_clk_enable:
>> +err_rst_assert:
>>         regulator_bulk_disable(cfg->num_vregs, qmp->vregs);
>>  err_reg_enable:
>>         mutex_unlock(&qmp->phy_mutex);
>> --
>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
>> a Linux Foundation Collaborative Project
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2018-01-12  8:46 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-03 11:28 [PATCH v4 00/16] Support for Qualcomm QUSBv2 and QMPv3 USB PHYs Manu Gautam
2018-01-03 11:28 ` [PATCH v4 01/16] phy: qcom-qmp: Fix phy pipe clock gating Manu Gautam
2018-01-03 11:28 ` [PATCH v4 02/16] phy: qcom-qmp: Adapt to clk_bulk_* APIs Manu Gautam
2018-01-03 11:28 ` [PATCH v4 03/16] phy: qcom-qmp: Power-on PHY before initialization Manu Gautam
     [not found]   ` <1514978930-31341-4-git-send-email-mgautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-01-12  8:27     ` Vivek Gautam
2018-01-03 11:28 ` [PATCH v4 04/16] phy: qcom-qusb2: " Manu Gautam
     [not found]   ` <1514978930-31341-5-git-send-email-mgautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-01-12  8:29     ` Vivek Gautam
2018-01-03 11:28 ` [PATCH v4 05/16] phy: qcom-qmp: Fix PHY block reset sequence Manu Gautam
2018-01-12  8:44   ` Vivek Gautam
2018-01-12  8:46     ` Manu Gautam [this message]
2018-01-12  9:12       ` Vivek Gautam
2018-01-03 11:28 ` [PATCH v4 06/16] phy: qcom-qmp: Move SERDES/PCS START after PHY reset Manu Gautam
2018-01-03 11:28 ` [PATCH v4 07/16] phy: qcom-qusb2: Add support for different register layouts Manu Gautam
2018-01-12  9:18   ` Vivek Gautam
2018-01-03 11:28 ` [PATCH v4 08/16] dt-bindings: phy-qcom-qusb2: Update binding for QUSB2 V2 version Manu Gautam
2018-01-03 11:28 ` [PATCH v4 09/16] phy: qcom-qusb2: Add support " Manu Gautam
2018-01-12  9:29   ` Vivek Gautam
2018-01-03 11:28 ` [PATCH v4 10/16] phy: qcom-qmp: Move register offsets to header file Manu Gautam
2018-01-12  6:26   ` Vivek Gautam
2018-01-03 11:28 ` [PATCH v4 11/16] phy: qcom-qmp: Add register offsets for QMP V3 PHY Manu Gautam
2018-01-03 11:28 ` [PATCH v4 12/16] dt-bindings: phy-qcom-qmp: Update bindings for QMP V3 USB PHY Manu Gautam
2018-01-03 11:28 ` [PATCH v4 13/16] phy: qcom-qmp: Add support for QMP V3 USB3 PHY Manu Gautam
2018-01-03 11:28 ` [PATCH v4 14/16] phy: Add USB speed related PHY modes Manu Gautam
2018-01-05 11:01   ` Kishon Vijay Abraham I
2018-01-08  4:46     ` Manu Gautam
2018-01-03 11:28 ` [PATCH v4 15/16] phy: qcom-qusb2: Add support for runtime PM Manu Gautam
2018-01-03 11:28 ` [PATCH v4 16/16] phy: qcom-qmp: " Manu Gautam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=77b12f94-e496-ff44-fe61-75b21a1a4e76@codeaurora.org \
    --to=mgautam@codeaurora.org \
    --cc=balbi@kernel.org \
    --cc=fengguang.wu@intel.com \
    --cc=kishon@ti.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=varada@codeaurora.org \
    --cc=viresh.kumar@linaro.org \
    --cc=vivek.gautam@codeaurora.org \
    --cc=weiyongjun1@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox