Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1373404rwb; Fri, 23 Sep 2022 11:42:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7BJ+SCJ1L7nPUTxrZFsni/OpGexZFBleWCt43L1u4FOFSBQ7A11RpVIcsTglq5+kNc9X6g X-Received: by 2002:a05:6402:26d4:b0:451:280d:3533 with SMTP id x20-20020a05640226d400b00451280d3533mr9816011edd.316.1663958522618; Fri, 23 Sep 2022 11:42:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663958522; cv=none; d=google.com; s=arc-20160816; b=iwC/fHkbJ9CJaTUuBtwGX3bWCGbHNEdYxZ3vt3WlLTWBoFKum++2tlBGOYEqJFGpU1 XSlaLBiWIcf+jFvJU5FhPLLeRKWXvmxy2eJhfFkBSd4RlSsq6uB0TIjzZtqEaCqF/qeN F4IkhUjtAO/HoxBOA6ZJ6bQ/E4hoYC/sGjJtCMNsAWyS76x85IwGw84EKrV1Oev6XJaj eSQjXfCRssWzgsNqupOt5ysy/LmQrES5N89iTh/EGtVvso8iU0g6P/Tbj9aAEkpguIla vh7Ftvf83QFiXBThQpsrTVOignjwrGhZNVNhZQwxKbWKj0VJyJwRnF+d3JtXkxQzxDkI l00w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=33LjaNk1Tjca6dUzmO0Adf4kxIK8nCjhuFIJU9mQ4Eg=; b=Njl5NW9xDaDyfGLPd850HT2LOMUuxWFJUScR5N+2RlfkIonGYTB2+vHFRPyFGOhxcJ CshvqBfctAqqo5FyBEJ//tlwpNbLkzsBZnWvI1esiDgHOR6PxBRL2p88RQumcB8wXMeM 8/0zICxwe8hMJDNv/HThNH0p0dR43AylogFdYa4sVD9UKpCHA7MtMlOzzOuBmJLY3z5L Ns+a0lGKEZ0kX6YkINOIfnbOKLRe4aHs+HIn1A9T3hjf3E9vsWuqxkX0bheKQBGbNutY EmdniugA7Z9ryRVNIESobYGb/Z4gremGVFwsf+IlDVFbta72Z1uVre/+nT3ghM6sH/ea blrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=lQcqH4KR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z14-20020a05640240ce00b00453882ae516si10311153edb.166.2022.09.23.11.41.36; Fri, 23 Sep 2022 11:42:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=lQcqH4KR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232804AbiIWSXr (ORCPT + 99 others); Fri, 23 Sep 2022 14:23:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232406AbiIWSXh (ORCPT ); Fri, 23 Sep 2022 14:23:37 -0400 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C44E113B51; Fri, 23 Sep 2022 11:23:36 -0700 (PDT) Received: by mail-ed1-x532.google.com with SMTP id z2so1349124edi.1; Fri, 23 Sep 2022 11:23:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date; bh=33LjaNk1Tjca6dUzmO0Adf4kxIK8nCjhuFIJU9mQ4Eg=; b=lQcqH4KRF+rxXiS6T2p0DEjlyIn7bhnOAeOkm7j+nt8p/XJ74lq5GRRpa6ngtGOYXa GxMXpdPNeLcqatOyg/OS9FAlZzYQlEH82qhgw7Gks2mMuySztgEiwsRx75bHG5qrkDJ6 23gzU+XBrfuEYxN/2DiADScTX19E2TM6lvRK8IK/ZneQqlysQT5uPn0Kx6GDQSgtGj4E 0P1eLiSgRqZt0FxKQ5zmL1ZtJNyant/S7nvVUIxB4aurZnXJOFZIzh4IhdV6hbLpMvFc OYBAOo7SVcoIhDyq8glts+2d3DpOG3brAMh2Fi5Htf09/CiCya1b0iXnbCgNmrZ5OzOW bJyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date; bh=33LjaNk1Tjca6dUzmO0Adf4kxIK8nCjhuFIJU9mQ4Eg=; b=AuKzPWZXW5f7cb51e/syYZaEXpt48mpKasxlhdfbAeC0iiupM5waVs6kRZuruCQzW0 sgmShqjNcg2NUfmDKxRzoMZfQ4zBrNI9UvXxVJC3T0hrPZhRxZgJAl7qbHubjQv0BSyZ b+g9u1uh5ivDl9kFZEq/m5Vt1wDBEvEWP4SvUrfc0ancwHFUKsjguQSw6ywGNl/t2Tpw +9lnCo3MnZMXym4fIa27qn5ulekptB6y+yVjbghSfzbCkyh2+Jp0p32mdWbsK/hjlVE4 OghdARSsslBFXmN5hkmnotLT+7BRBkmRBcEW6KwpDbHlGcf9hdZM9kx4hFRDbJIz24GV 0AgQ== X-Gm-Message-State: ACrzQf3sn7J+aQpARdt/VKRANOxPh52K2wwVeVY8sGZ7aWRRXIa4Lj7h mKiIXRa8MglkiY3U5voN8pKTDr561rGa0AXtGd4= X-Received: by 2002:a05:6402:909:b0:435:a8b:5232 with SMTP id g9-20020a056402090900b004350a8b5232mr9868769edz.240.1663957414824; Fri, 23 Sep 2022 11:23:34 -0700 (PDT) MIME-Version: 1.0 References: <20220403164907.662860-1-andrew.smirnov@gmail.com> <691c3073-5105-9a2b-e6f2-ea0a4b8aaea8@gmail.com> In-Reply-To: From: Andrey Smirnov Date: Fri, 23 Sep 2022 11:23:23 -0700 Message-ID: Subject: Re: [PATCH v4] usb: dwc3: Don't switch OTG -> peripheral if extcon is present To: Andy Shevchenko Cc: Ferry Toth , Greg Kroah-Hartman , Felipe Balbi , Thinh Nguyen , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Thinh Nguyen , Sven Peter Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 23, 2022 at 9:42 AM Andy Shevchenko wrote: > > On Thu, Sep 22, 2022 at 04:32:55PM -0700, Andrey Smirnov wrote: > > On Thu, Sep 22, 2022 at 3:23 AM Ferry Toth wrote: > > > On 22-09-2022 12:08, Andy Shevchenko wrote: > > > On Sun, Apr 03, 2022 at 09:49:07AM -0700, Andrey Smirnov wrote: > > FYI: For now I sent a revert, but if we got a solution quicker we always > can choose the course of actions. > I think we have another problem. This patch happened in parallel to mine https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?= h=3Dv6.0-rc6&id=3Dab7aa2866d295438dc60522f85c5421c6b4f1507 so my changes didn't have that fix in mind and I think your revert will not preserve that fix. Can you update your revert to take care of that too, please? I'm really confused how the above commit could be followed up by: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/d= rivers/usb/dwc3/drd.c?h=3Dv6.0-rc6&id=3D0f01017191384e3962fa31520a9fd9846c3= d352f the diffs in dwc3_drd_init seem contradictory > > > If the extcon device exists, get the mode from the extcon device. If > > > the controller is DRD and the driver is unable to determine the mode, > > > only then default the dr_mode to USB_DR_MODE_PERIPHERAL. > > > > > > According to Ferry (Cc'ed) this broke Intel Merrifield platform. Ferr= y, can you > > > share bisect log? > > > > > > I can but not right now. But what I did was bisect between 5.18.0 (go= od) and 5.19.0 (bad) then when I got near the culprit (~20 remaining) based= on the commit message I tried 0f01017191384e3962fa31520a9fd9846c3d352f "us= b: dwc3: Don't switch OTG -> peripheral if extcon is present" (bad) and com= mit before that (good). > > > > > > The effect of the patch is that on Merrifield (I tested with Intel Ed= ison Arduino board which has a HW switch to select between host and device = mode) device mode works but in host mode USB is completely not working. > > > > > > Currently on host mode - when working - superfluous error messages fr= om tusb1210 appear. When host mode is not working there are no tusb1210 mes= sages in the logs / on the console at all. Seemingly tusb1210 is not probed= , which points in the direction of a relation to extcon. > > > > > > Taking into account the late cycle, I would like to revert the change= . And > > > Ferry and I would help to test any other (non-regressive) approach). > > > > > > I have not yet tested if a simple revert fixes the problem but will t= onight. > > > > > > > > > I would be happy to test other approaches too. > > > > > > It's a bit hard for me to suggest an alternative approach without > > knowing how things are breaking in this case. I'd love to order one of > > those boards to repro and fix this on my end, but it looks like this > > HW is EOLed and out of stock in most places. If you guys know how to > > get my hands on those boards I'm all ears. > > There are still some second hand Intel Edison boards flying around > (but maybe cost a bit more than expected) and there are also > Dell Venue 7 3740 tablets based on the same platform/SoC. The latter > option though requires more actions in order something to be boot > there. > OK, I'll check e-bay just in case. > In any case, it's probably quicker to ask Ferry or me for testing. > (Although currently I have no access to the board to test OTG, it's > remote device which I can only power on and off and it has always > be in host mode.) > > > Barring that, Ferry can you dig more into this failure? E.g. is it this= hunk > > > > @@ -85,7 +86,7 @@ static int dwc3_get_dr_mode(struct dwc3 *dwc) > > * mode. If the controller supports DRD but the dr_mode= is not > > * specified or set to OTG, then set the mode to periph= eral. > > */ > > - if (mode =3D=3D USB_DR_MODE_OTG && > > + if (mode =3D=3D USB_DR_MODE_OTG && !dwc->edev && > > (!IS_ENABLED(CONFIG_USB_ROLE_SWITCH) || > > !device_property_read_bool(dwc->dev, "usb-role-swi= tch")) && > > !DWC3_VER_IS_PRIOR(DWC3, 330A)) > > @@ -1632,6 +1633,51 @@ static void dwc3_check_params(struct dwc3 *dwc) > > } > > } > > > > that's problematic or moving > > I think you wanted to revert only this line and test? Yes. > > > static int dwc3_probe(struct platform_device *pdev) > > { > > struct device *dev =3D &pdev->dev; > > @@ -1744,6 +1790,13 @@ static int dwc3_probe(struct platform_device *pd= ev) > > goto err2; > > } > > > > + dwc->edev =3D dwc3_get_extcon(dwc); > > + if (IS_ERR(dwc->edev)) { > > + ret =3D PTR_ERR(dwc->edev); > > + dev_err_probe(dwc->dev, ret, "failed to get extcon\n"); > > + goto err3; > > + } > > + > > ret =3D dwc3_get_dr_mode(dwc); > > if (ret) > > goto err3; > > > > to happen earlier? > > It is not always possible to have an extcon driver available, that's why = in > some cases the probe of it defers. I dunno how your patch supposed to wor= k > in that case. I'm not sure I understand what you mean. AFAIU the logic is that if the platform specifies the presence of extcon either via DT or, like Merrifield, via and explicit "linux,extcon-name" device property in the code then extcon is a mandatory component of the DRD stack and the driver is expected to be present for the whole thing to work. I don't think I really changed that logic with my patch, even after the revert dwc3_get_extcon() will be called as a part of a probing codepath, so if the a missing driver is causing a probe deferral it should still be happening, unless I missed something. > > > Does tracing the "mrfld_bcove_pwrsrc" driver (the > > excton provider in this case AFIACT) show anything interesting? > > I believe there is nothing interesting. > > -- > With Best Regards, > Andy Shevchenko > >