Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp62531ybx; Tue, 29 Oct 2019 14:22:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqz5x950gFESD4OSKvfEwSRImdxgeqOd4PWrSQwxiazJRsInlkeuZWjdr6QsneZiDqYUoPFp X-Received: by 2002:a17:906:3b4e:: with SMTP id h14mr4714022ejf.111.1572384159973; Tue, 29 Oct 2019 14:22:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572384159; cv=none; d=google.com; s=arc-20160816; b=mkmMsfMr1UpQfFtxiONPcUrQL33omJvFBsFdc7oxKoJrU+ZTqdHWjAg90wfsKq6USk dHFboYF8g6Dxat+o+nJ4DOiGYXTRObLCNxpYw3/xywPmqUoNT5SoRdPhaRbekrAB/M2x qK8O6lSFPei7OawOyq04qqsTxfQIc/J0d+51g58CG0x6F1KFBhCnDtMdOjp5b3Gnwymm M3I1FrCR0xnhn3SKiRYYnWR3KVYklFlg0UFZ3JzR7N8R9gCIVEr+umKj/d6+XKndueyh K4N7qJKowK0YJjW1eUB2j6Mz+zUq34RCjqGgtbrqh2eSrGN0CNt7UctiDW2M5wgIASKn xGMw== 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=a8xArhRDoNXUbWX4EdmjweiHTW4/JnIyhzo/xyW6XxM=; b=Q4EqpTC8NUAqb+1yV36zGFMBnTritXaK8D2xDdy47GG+Z6gSyqy6Yk+ksOurDbdNAz envUnPMiYH+mFkDmPpFAACumfUeo1GuAHdPoyft0vRkJ94Hf29rRtljcPDMHOw7wwJ8y N71v4emjo7TS4fB+WHNOTEfpmg4QR96yv23QtRjegBQjWbf/Togj+MrykgU6NTeCJHra Fa8t2r1GgKFZd9p2hCATyyz3RInMGO8vLbgUn54t95EXbjBOd8KIzJnL5mVM5PhTqLKY iWvsFMC1FkF8n08+X6YRC3d7WqukZHhCc+ZTB6CB2f9/wlIY3nzynLd+h+BMbujfB7pj WDVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ojI912WJ; 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 i24si9089280ejh.35.2019.10.29.14.22.16; Tue, 29 Oct 2019 14:22:39 -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=ojI912WJ; 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 S1729247AbfJ2VVq (ORCPT + 99 others); Tue, 29 Oct 2019 17:21:46 -0400 Received: from mail-oi1-f193.google.com ([209.85.167.193]:32842 "EHLO mail-oi1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728592AbfJ2VVp (ORCPT ); Tue, 29 Oct 2019 17:21:45 -0400 Received: by mail-oi1-f193.google.com with SMTP id m193so164698oig.0 for ; Tue, 29 Oct 2019 14:21:44 -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=a8xArhRDoNXUbWX4EdmjweiHTW4/JnIyhzo/xyW6XxM=; b=ojI912WJLMKSe3iQP4WzhQapOtESvGrxE3lsv+poUzeRJOvYMlT5VDHYgM0JzH0W+P GwzA2iaxTkr79Yd7ObLdokzSiwQXcbC/T1LuORrYy328g18YaLRVvCn1qXXpijqq92ic y7EvOOdGC232K3ShfM7UVEDVke2LadybNi/xrh83ohR8YkA8eoS19aIBf+woFwI/EvbQ uawUf7MN1Dk0I8RJ/p5G8dDBLsKvnWVo1Yq3Glnb0hp2iL8M192isnr7unr+xY8qMPqO f1/ylqy+PdUlVsVFUJvGsAtP8hnvDi2U50zbUseLrGC+gle/3Qf42CzO81+L00jOcQ/6 B9mQ== 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=a8xArhRDoNXUbWX4EdmjweiHTW4/JnIyhzo/xyW6XxM=; b=kpqANedAmkHqogSNyYgs/aG/1VPWYroytpEprDCZuQXOOyFrc5H5f4VX4xWcXrhNJs A8qYLh+8OzZmhg9VVmc4qmngkwRzLoUQG1DwQQPuXIHQQcIIph0tTqOQTEvwVR+e2OsW F1x6lwnXOErRz9SCIXiYgi4czbQZrz/ZV5Yl6VBfi4l2Fz8ymwrzMzW7ptX9pbVlyP03 o6vHlCHrgg1Z39sHbxAcGD1LfGM1J5ELoaAB7ih08hFMzHLuLXEvAkSVAYetfmqsweRC sLjw/oWyBwbWfa3OCOvPZlc0VGfBNSjUvJchaiJY8ZJ9THsBYWQwA/IdbYt9YjVJNeCP qOVQ== X-Gm-Message-State: APjAAAVesMghQql3x5Y5tfEeE6AEt8EYkIGELi7BWQIInRay01tbj73u kJunXK/NxiyRLwdlrl4dBooGplHSsomasJDW3IZq8Q== X-Received: by 2002:aca:58c2:: with SMTP id m185mr6043338oib.128.1572384104335; Tue, 29 Oct 2019 14:21:44 -0700 (PDT) MIME-Version: 1.0 References: <20191028215919.83697-1-john.stultz@linaro.org> <20191028215919.83697-3-john.stultz@linaro.org> <87pnifj4tg.fsf@gmail.com> In-Reply-To: <87pnifj4tg.fsf@gmail.com> From: John Stultz Date: Tue, 29 Oct 2019 14:21:31 -0700 Message-ID: Subject: Re: [PATCH v4 2/9] usb: dwc3: Execute GCTL Core Soft Reset while switch modes To: Felipe Balbi Cc: lkml , 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 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 Tue, Oct 29, 2019 at 2:09 AM Felipe Balbi wrote: > 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 = 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); > > @@ -154,6 +167,9 @@ static void __dwc3_set_mode(struct work_struct *work) > > > > spin_lock_irqsave(&dwc->lock, flags); > > > > + /* 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. Ok. I've dropped this for now. Without this I do see an occasional issues seemingly more frequently where he board seems to initialize improperly on boot (usb-c is connected, but it doesn't seem to detect until I unplug and replug), but it also trips (though seemingly less frequently) without this, so this may be just affecting the timing of a initialization race issue. I'll watch this for more info and follow up on it later. Thanks for the review! -john