Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4675288ybg; Tue, 29 Oct 2019 10:41:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqy9gZ0yKyrtKQTvhTnKIhwLNxE/aeicc1EMsayxA/+ZltVkVFGUggLZYODLvHB2z5gUht1Z X-Received: by 2002:aa7:de03:: with SMTP id h3mr18422455edv.275.1572370867456; Tue, 29 Oct 2019 10:41:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572370867; cv=none; d=google.com; s=arc-20160816; b=v+S2rcGKxX66Xve3wdHckIw+jJYUJBz86hGnobL8X5S7YJEulKkharhF8E/r+Kh+Ug t8xiAv3O5c51DJga0ujPIZnV/EGO6XI+MVAcXMgPGkPMB2F8MFCJtlmp1nkl/WNG35Zt aa4X+LgM2ca3iOuk/y5uVXLI/z6xv8H4aCNZv6q/ChAwp3tpYgBNjUcWCUH/XtiLWceZ viHvGbQE80pngAcvfcl5Ffme1wWWjz+qyN1n9R+0RAGnBS0vv2c8xk54O4Jq6V5NQEev ot1q+PvUa5N4XuKscJNSRXd9WOdSapCLp9DBpMI41EXviipRu4Volz5MHsWgA8sYxWYS CFiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from; bh=0OPs7/kbYIJbikzRR1ZHu125hwHmJTU6bT7pd4GY1Tk=; b=YBVm0ca0zPnR9twJAbAZCIUGg6r9W9ozkEStI1hQRf2MnRVBQWUpj1tjOzLNoCIyJZ QASuFEmy3pJHcDp1gw4+RtJlL171ca1UvqQw6/02YN/J7vCzeIaqarWPc/aeeQUZOHt3 eI4zJuj2J79/ATPBG43iW76wrB48XwSEY08Rx0qXttv4iptuOF3HXe7s7kVhEPcmDNov KoBcDdpw/bC9a5ouODHZ8yKs8S5VNW7We9mLH9BxMlD7J++W8Pw8c8/rMk6xtIC0Qs1T SSEMvnMFdO+ybcxxBOv6UFoZvgT6TC8M/pyb1tpKS4pwTgDAG6mA6Tf7o6o5z2V87qJe ki4w== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p5si8667102eja.141.2019.10.29.10.40.43; Tue, 29 Oct 2019 10:41:07 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731114AbfJ2JJ7 (ORCPT + 99 others); Tue, 29 Oct 2019 05:09:59 -0400 Received: from mga02.intel.com ([134.134.136.20]:29569 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727320AbfJ2JJ6 (ORCPT ); Tue, 29 Oct 2019 05:09:58 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Oct 2019 02:09:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,243,1569308400"; d="asc'?scan'208";a="401084207" Received: from pipin.fi.intel.com (HELO pipin) ([10.237.72.175]) by fmsmga006.fm.intel.com with ESMTP; 29 Oct 2019 02:09:51 -0700 From: Felipe Balbi To: John Stultz , lkml Cc: Yu Chen , Greg Kroah-Hartman , Rob Herring , Mark Rutland , ShuFan Lee , Heikki Krogerus , Suzuki K Poulose , Chunfeng Yun , Hans de Goede , Andy Shevchenko , Jun Li , Valentin Schneider , Jack Pham , linux-usb@vger.kernel.org, devicetree@vger.kernel.org, John Stultz Subject: Re: [PATCH v4 2/9] usb: dwc3: Execute GCTL Core Soft Reset while switch modes In-Reply-To: <20191028215919.83697-3-john.stultz@linaro.org> References: <20191028215919.83697-1-john.stultz@linaro.org> <20191028215919.83697-3-john.stultz@linaro.org> Date: Tue, 29 Oct 2019 11:09:47 +0200 Message-ID: <87pnifj4tg.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, John Stultz writes: > From: Yu Chen > > On the HiKey960, we need to do a GCTL soft reset when > switching modes. > > Jack Pham also noted that in the Synopsys databook it > mentions performing a GCTL CoreSoftReset when changing the > PrtCapDir between device & host modes. > > So this patch always does a GCTL Core Soft Reset when > changing the mode. > > Cc: Greg Kroah-Hartman > Cc: Rob Herring > Cc: Mark Rutland > CC: ShuFan Lee > Cc: Heikki Krogerus > Cc: Suzuki K Poulose > Cc: Chunfeng Yun > Cc: Yu Chen > Cc: Felipe Balbi > Cc: Hans de Goede > Cc: Andy Shevchenko > Cc: Jun Li > Cc: Valentin Schneider > Cc: Jack Pham > Cc: linux-usb@vger.kernel.org > Cc: devicetree@vger.kernel.org > Signed-off-by: Yu Chen > Signed-off-by: John Stultz > --- > v3: Remove quirk conditional, as Jack Pham noted the > Synopsis databook states this should be done generally. > Also, at Jacks' suggestion, make the reset call before > changing the prtcap direction. > --- > drivers/usb/dwc3/core.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index 999ce5e84d3c..a039e35ec7ad 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -112,6 +112,19 @@ void dwc3_set_prtcap(struct dwc3 *dwc, u32 mode) > dwc->current_dr_role =3D mode; > } >=20=20 > +static void dwc3_gctl_core_soft_reset(struct dwc3 *dwc) > +{ > + u32 reg; > + > + reg =3D dwc3_readl(dwc->regs, DWC3_GCTL); > + reg |=3D DWC3_GCTL_CORESOFTRESET; > + dwc3_writel(dwc->regs, DWC3_GCTL, reg); > + > + reg =3D dwc3_readl(dwc->regs, DWC3_GCTL); > + reg &=3D ~DWC3_GCTL_CORESOFTRESET; > + dwc3_writel(dwc->regs, DWC3_GCTL, reg); > +} > + > static void __dwc3_set_mode(struct work_struct *work) > { > struct dwc3 *dwc =3D work_to_dwc(work); > @@ -154,6 +167,9 @@ static void __dwc3_set_mode(struct work_struct *work) >=20=20 > spin_lock_irqsave(&dwc->lock, flags); >=20=20 > + /* Execute a GCTL Core Soft Reset when switch mode */ > + dwc3_gctl_core_soft_reset(dwc); > + This is totally unnecessary. We have several platforms supporting dual role *without* this trick. The only reason why the databook mentions a reset is because some registers are shadowed, meaning that they share the same physical space and just appear as different things for SW. The reason being that Synopsys wanted to reduce the area of the IP and decided to shadow registers which are mutually exclusive. =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAl24AdsACgkQzL64meEa mQYG6w/+PhuVnHbENgibtiA17MLBxqUDMNcM8k1BFKTATCRhgTSg71W8idmJEq9B yRXMmOsvgimR6e7xqp/UAjlvwkBTmGQ/40XAvCxijNjA+cnDa5c4rIhqu6VqZHnp DYNqNkYm+JEQVepn4Hv5Bbq2yYnUxpgLdqnaqRS0RFMDAkcl1pZ2d9XR/CejK0Oo rA96WgtQCW2hOCSwEhkctB2WcrSI2IlM1ga5FjuTDRxR+yaAN+GDk0QIcYfhDMlb Njrikp/vnu7w5xCQ/ZsjNK4/2sQY658FMjPPncTbr2TpSsyD509EIIjvjTyFjEQA dOZjPx5AvOMpHdGG+5MxqfkNnyHnOPlBxI3UjJz+p0yc1VyP7I9cYKLfeYfVFDcH qNDv852Vr8gg0icrpiypjosNj0Lh7VG/jU2+c66NS5nLJPeOwAO14Vu86pOwkTJB t86Ui++sD3pJrhswKKJ/bmhYg0VoGEE0bi3ypwSTLCVPmzovXkYFOjqhAM2InwSl 6zHYIoAuCLo7OxEHi6bbLYRdNyMljv8MxbwGFCSAy7BJlD6CJbWuxA+9XuQHjp1g LNVXWQu1RGqDcXYKq/owlKciJvPrVmJkZvTBFr3vtlMRAWpua+QLmN/H2GJBhwSV d4APBgDKffT1wXXoeFkcAE2FHuMTSLWezcG/Ndo9J2/5pL1z0rg= =NuOU -----END PGP SIGNATURE----- --=-=-=--