Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp4945665ybp; Mon, 7 Oct 2019 16:54:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqwYxWx61Q/vQce6aSACOtXuna7vWU+fjFPtgsdFH6r9X9isrEenlw5dxmOCX54bssCflQxc X-Received: by 2002:a17:906:b34c:: with SMTP id cd12mr26572046ejb.48.1570492475162; Mon, 07 Oct 2019 16:54:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570492475; cv=none; d=google.com; s=arc-20160816; b=ta0Ya+q63p5hHbsx+ajuIJpjxEgce2i163tk9Kyh4bQoux0I8btxOWDLWzM6HlHptL oUIg7kbj5qRdZzuB6PzDjgg44e5jKOLaxXhGABMQCNiSwPv5X/5n0JDPD8JegwQ9Xy1y Bs7apxSAycqdcRDrJD/N3TzWkg3B5mB6NFQacuNXT9mMz9rZrJivXpPc5En6UGKtWiXK agPEpQfdvoMBOU4pllF3RUtTJ4BlPeQkNDlZ2r93xUzpU5ZwC+A3/0+1T2fVkAACLq2X KABx9EoBC9UD0bbMBuAzihFffU2dsfYPv5S+1HACJllLcfp4ZY8g6ZIgikR6ibQN7hfd zcAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=3Mn1LnJy3uGyTmsaBJVW9W+hDHZSF304DHp1ze76muE=; b=eyi42P3Y1QrZskpByWHfq3vLdK6O+VvoFAedXgg6DIrvsd1fdSa6bJeTvnRzxPzTr4 ZUHaYyfoTPJ60PkHMQCXJUF1MSPwI5hTshBgZ4vhqeOkBQaB1+HqfMZFBK1Dr4T183Ef OYddocHkuu7/ZzqBS4OqMQEY0IEISt+HIos8AhPh3kanvJ1p6efIBywHmt/rrs9s4Ybk kLsLOUpbtdCO3Z3qQowcmp3kQOo+fe9U/GdIjlMrB9OKEgVa3FUtOI6NlZRmredP5Ntv BDGbC+C0tP64NUXPrbfj7KSGjMo62asz1XUICgxlnzoPqc2TcPRSpUdGUWZ17Zucn0HF bOiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=s8zULUZP; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e11si7856866ejr.383.2019.10.07.16.54.10; Mon, 07 Oct 2019 16:54:35 -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=@linaro.org header.s=google header.b=s8zULUZP; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729678AbfJGXxt (ORCPT + 99 others); Mon, 7 Oct 2019 19:53:49 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:34230 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729529AbfJGXxs (ORCPT ); Mon, 7 Oct 2019 19:53:48 -0400 Received: by mail-wm1-f68.google.com with SMTP id y135so1116007wmc.1 for ; Mon, 07 Oct 2019 16:53:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3Mn1LnJy3uGyTmsaBJVW9W+hDHZSF304DHp1ze76muE=; b=s8zULUZPK3ba1eRXod3nvamrb1SLAHardF0wnLYeYvyyT2ya70yNsbW0dqybGnwP9X pfqkzudINyre/xBswTYzGAdW9MaIBWM8RCEV9cIjfatj5sd5Ii0QPut9PuDIwtJa3GTZ MsPKXm2lNvPAM1uMif9Z32ML0CCmnFguhE57DpuujFa9I2fnhtWxQV8zPHtMH7PDhATi NZ1HRzBvinSl0mNOiaGEiB600xn09/BkWAtgLhHL4DkfvvlQnVu3LYP5Xc0KRjlK7k3b goJ036XFGox5/tWNcFIqpjXC/8ooK5LUUM46uPFE+YizcAKD02jWqn54uYDJ5GpsD2PY UyuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3Mn1LnJy3uGyTmsaBJVW9W+hDHZSF304DHp1ze76muE=; b=iqeTYKgM5LMszqhqg7auRlbdyhtNzOuMvUwaskXzXU1BIvIYJb1decIQ5J5AQ1Tgpy i0kbAFv0Cp0Vh8mH2iPhjS7N4j7vbkg3fgNZpdexhigaaCGQvMyz8cAx02bzHIVvB9Y8 XVofQuTwye4yjvwVh5GK/Xj69bvTtF+A8ylYCr0cJ8eik2FfI26eOKfqfHSsw5pEg7ZM ofjzfitBi3G7FtkdPtsQmF60ywlFX+MDyreXrJut9gudRhR8r6vMaLvNAY79y4qJj8tj z0yulhi6nwA/jc2B4/QZhSE1hU1C70ypRTJzv5a/J3JkcIlW5Zr+7h962fXnFrxLIY02 LfSg== X-Gm-Message-State: APjAAAUP6rjgOqppyIrX1QpQ3J5q4SQCUj2jYeAjGVd2IcdjIpXH/DSQ 7zUUWP2VAI/a4HIY/LIInmb1f4VSEexH9rlNTi0mog== X-Received: by 2002:a7b:c8d9:: with SMTP id f25mr1340025wml.153.1570492426235; Mon, 07 Oct 2019 16:53:46 -0700 (PDT) MIME-Version: 1.0 References: <20191007175553.66940-1-john.stultz@linaro.org> <20191007175553.66940-3-john.stultz@linaro.org> <20191007233904.GC9754@jackp-linux.qualcomm.com> In-Reply-To: <20191007233904.GC9754@jackp-linux.qualcomm.com> From: John Stultz Date: Mon, 7 Oct 2019 16:53:33 -0700 Message-ID: Subject: Re: [RFC][PATCH v2 2/5] usb: dwc3: Execute GCTL Core Soft Reset while switch mdoe for Hisilicon Kirin Soc To: Jack Pham Cc: Yu Chen , Felipe Balbi , lkml , Greg Kroah-Hartman , Andy Shevchenko , Rob Herring , Mark Rutland , Matthias Brugger , Chunfeng Yun , Linux USB List , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 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 On Mon, Oct 7, 2019 at 4:39 PM Jack Pham wrote: > > Hi John, Yu, Felipe, > > On Mon, Oct 07, 2019 at 05:55:50PM +0000, John Stultz wrote: > > From: Yu Chen > > > > A GCTL soft reset should be executed when switch mode for dwc3 core > > of Hisilicon Kirin Soc. > > > > Cc: Greg Kroah-Hartman > > Cc: Felipe Balbi > > Cc: Andy Shevchenko > > Cc: Rob Herring > > Cc: Mark Rutland > > Cc: Yu Chen > > Cc: Matthias Brugger > > Cc: Chunfeng Yun > > Cc: linux-usb@vger.kernel.org > > Cc: devicetree@vger.kernel.org > > Signed-off-by: Yu Chen > > Signed-off-by: John Stultz > > --- > > drivers/usb/dwc3/core.c | 20 ++++++++++++++++++++ > > drivers/usb/dwc3/core.h | 3 +++ > > 2 files changed, 23 insertions(+) > > > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > > index 999ce5e84d3c..440261432421 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 = mode; > > } > > > > +static void dwc3_gctl_core_soft_reset(struct dwc3 *dwc) > > +{ > > + u32 reg; > > + > > + reg = dwc3_readl(dwc->regs, DWC3_GCTL); > > + reg |= DWC3_GCTL_CORESOFTRESET; > > + dwc3_writel(dwc->regs, DWC3_GCTL, reg); > > + > > + reg = dwc3_readl(dwc->regs, DWC3_GCTL); > > + reg &= ~DWC3_GCTL_CORESOFTRESET; > > + dwc3_writel(dwc->regs, DWC3_GCTL, reg); > > +} > > + > > static void __dwc3_set_mode(struct work_struct *work) > > { > > struct dwc3 *dwc = work_to_dwc(work); > > @@ -156,6 +169,10 @@ static void __dwc3_set_mode(struct work_struct *work) > > > > dwc3_set_prtcap(dwc, dwc->desired_dr_role); > > > > + /* Execute a GCTL Core Soft Reset when switch mode */ > > + if (dwc->gctl_reset_quirk) > > + dwc3_gctl_core_soft_reset(dwc); > > + > > In fact it is mentioned in the Synopsys databook to perform a GCTL > CoreSoftReset when changing the PrtCapDir between device & host modes. > So I think this should apply generally without a quirk. Further, it > states to do this *prior* to writing PrtCapDir, so should it go before > dwc3_set_prtcap() instead? Sounds good. I have no such access to the hardware docs, so I really appreciate your input here! I'll refactor it as you describe and remove the quirk flag. thanks -john