From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755772AbeAJNY7 (ORCPT + 1 other); Wed, 10 Jan 2018 08:24:59 -0500 Received: from fllnx210.ext.ti.com ([198.47.19.17]:47699 "EHLO fllnx210.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755668AbeAJNY4 (ORCPT ); Wed, 10 Jan 2018 08:24:56 -0500 Subject: Re: [PATCH] usb: dwc3: core: Don't try to get PHYs during suspend/resume To: CC: , , , , "linux-stable # = v4 . 13" References: <1515589914-23460-1-git-send-email-rogerq@ti.com> From: Roger Quadros Message-ID: <0c2c7e45-9324-316a-d44b-dd17a3a2c68b@ti.com> Date: Wed, 10 Jan 2018 15:24:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <1515589914-23460-1-git-send-email-rogerq@ti.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-GB Content-Transfer-Encoding: 8bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Felipe, On 10/01/18 15:11, Roger Quadros wrote: > The USB PHYs should be requested only once during the life cycle of > this driver. > > As dwc3_core_init() is called during system suspend/resume > it will result in multiple calls to dwc3_core_get_phy() which is wrong. > > To prevent that let's move dwc3_core_get_phy() call > outside dwc3_core_init(). > > Fixes: 541768b08a4 ("usb: dwc3: core: Call dwc3_core_get_phy() before initializing phys") > Cc: linux-stable # >= v4.13 > Signed-off-by: Roger Quadros FYI. this patch brings the code back to revert 541768b08a40 ("usb: dwc3: core: Call dwc3_core_get_phy() before initializing phys") revert f54edb539c11 ("usb: dwc3: core: initialize ULPI before trying to get the PHY") So looks like this will break ULPI PHY case? Where do we initialize ULPI PHY, in dwc3_phy_setup()? if so then 541768b08a40 breaks the ULPI PHY case as well, right? > --- > drivers/usb/dwc3/core.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index 0783250..1274251 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -722,8 +722,6 @@ static void dwc3_core_setup_global_control(struct dwc3 *dwc) > dwc3_writel(dwc->regs, DWC3_GCTL, reg); > } > > -static int dwc3_core_get_phy(struct dwc3 *dwc); > - > /** > * dwc3_core_init - Low-level initialization of DWC3 Core > * @dwc: Pointer to our controller context structure > @@ -754,10 +752,6 @@ static int dwc3_core_init(struct dwc3 *dwc) > dwc->maximum_speed = USB_SPEED_HIGH; > } > > - ret = dwc3_core_get_phy(dwc); > - if (ret) > - goto err0; > - > ret = dwc3_core_soft_reset(dwc); > if (ret) > goto err0; > @@ -1177,6 +1171,10 @@ static int dwc3_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, dwc); > dwc3_cache_hwparams(dwc); > > + ret = dwc3_core_get_phy(dwc); > + if (ret) > + goto err0; > + > spin_lock_init(&dwc->lock); > > pm_runtime_set_active(dev); > -- cheers, -roger Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki