Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp4969192iog; Wed, 22 Jun 2022 09:15:25 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tEUCnPn96QEE3DHFbe3lVEs0QZG2Fzd0wG6wiIUMqkhYu2NE2WPQBSOHEyDYiqfNBGxuZp X-Received: by 2002:a63:7511:0:b0:40c:a228:c3ca with SMTP id q17-20020a637511000000b0040ca228c3camr3555435pgc.316.1655914524865; Wed, 22 Jun 2022 09:15:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655914524; cv=none; d=google.com; s=arc-20160816; b=MZBQnEn0sA22P9QX/CDkaDudMoSQO1vQwrTGg4v3ru1u9rWq4nLjd6Zy46Ft0Hndc2 3sQh5XNTA6xA1GfIXMjH9SxfLGGlTNNEnF2NQS29+GU3m84eK5mOfOgrE0tvYsi/ijo9 ewEKMdzcQm09nQe3zpMW+Eoo35wnKK+i/UhMlm3g3M4gRvgXJul6KBG+9Xa2EEks9RLK Nbn4rZzbiqamA6+U2+uhEOVhhFLtEZyg4DBmYF5BWHpSZ6S5PlVhoCj3mSobfDIAODzC NoNBjnnfBquvGWqZRfOWlWdmCQPHx03ZVBPCqWs/+ASNATvaRy6XNprow7BCwI8XVko/ 3uMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=RAY93IwuRebxvVNpTUKMgt368RsmG9FCdTJ6aOrH0Rs=; b=eUyMKeQLwN1h31Q0FkeX2UEX81X5miXTZiERO3zpnB3SLSZLvv0qQNU+DkixZA0bdc ojvzc0obOGiSJID7DIuVNDYBRJ1+cNFA5XdtZKuufCQqT4Y1XjrfI6rowx2KtIaDjwIM tnG5cEsW7vEm65Ja56HsJzD8jV9ltIgedx7bPVLb3C85gqyp8K1zCjH8YQ/XhU5jRUlk GRl8C5AZq11nt8Ujdhtm26NpNkZdYMe8nnVizuED7B3T9wmy/30So/Ao+R9cRVjKDyds SbxVuGxWTkfQA77Z2nIqcWp3/nFW0NEancgh9HFzSVbEr2fJUqUamRjVjWffoA3U+OdC vvqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=YZ4rNkKO; 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=NONE dis=NONE) header.from=foss.st.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u18-20020a170903125200b0016406db85e0si26535262plh.266.2022.06.22.09.15.12; Wed, 22 Jun 2022 09:15:24 -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=@foss.st.com header.s=selector1 header.b=YZ4rNkKO; 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=NONE dis=NONE) header.from=foss.st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1357692AbiFVQIB (ORCPT + 99 others); Wed, 22 Jun 2022 12:08:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236963AbiFVQH6 (ORCPT ); Wed, 22 Jun 2022 12:07:58 -0400 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F41C6202; Wed, 22 Jun 2022 09:07:51 -0700 (PDT) Received: from pps.filterd (m0241204.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25MFunGD006624; Wed, 22 Jun 2022 18:07:36 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=selector1; bh=RAY93IwuRebxvVNpTUKMgt368RsmG9FCdTJ6aOrH0Rs=; b=YZ4rNkKOO6XCFfqSPDi/QQmbFJjAppAgpW7WVhOBLIXiY+KbPuzG8mtlrbZQbs8T1vFq ACYDpc4nTXzbpmZU2eJNxy9YsbQMq8/TJKM0sDymdG0ChSFk8Z1+zheZUoke6knW8MLI yOBUvsR01mrQ/0zsHEtj+7cGbc+ufsM4wvsAG5zd6GiTVPP9P/pdwmgOgJ0C4qg9Tah8 bn+GlSNwLOjLRthpsxt/CQ5NfRGmsy8EdIqMhxYa0IAeBdQ2GG2jVkfGPDHdIBWAOLBN gO2kws1D5f1QfCtfRByt34Loh8HYB84vyUa3d3I4+BdNSMYbjSijlQnub/GPUjM8FMDV Cg== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 3gua1n9f1u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jun 2022 18:07:36 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id C1AD410002A; Wed, 22 Jun 2022 18:07:34 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node2.st.com [10.75.129.70]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 2D34522ECC1; Wed, 22 Jun 2022 18:07:34 +0200 (CEST) Received: from localhost (10.75.127.117) by SHFDAG1NODE2.st.com (10.75.129.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2308.20; Wed, 22 Jun 2022 18:07:33 +0200 From: Fabrice Gasnier To: , CC: , , , , , Subject: [PATCH] usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch Date: Wed, 22 Jun 2022 18:07:17 +0200 Message-ID: <20220622160717.314580-1-fabrice.gasnier@foss.st.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.75.127.117] X-ClientProxiedBy: GPXDAG2NODE5.st.com (10.75.127.69) To SHFDAG1NODE2.st.com (10.75.129.70) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-06-22_04,2022-06-22_03,2022-06-22_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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 From: Amelie Delaunay When using usb-role-switch, D+ pull-up is set as soon as DTCL_SFTDISCON is cleared, whatever the vbus valid signal state is. The pull-up should not be set when vbus isn't present (this is determined by the drd controller). This patch ensures that B-Session (so Peripheral role + vbus valid signal) is valid before clearing the DCTL_SFTDISCON bit when role switch is used. Keep original behavior when usb-role-switch isn't used. Signed-off-by: Amelie Delaunay Signed-off-by: Fabrice Gasnier --- drivers/usb/dwc2/gadget.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index fe2a58c758610..8b15742d9e8aa 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -3594,7 +3594,8 @@ void dwc2_hsotg_core_disconnect(struct dwc2_hsotg *hsotg) void dwc2_hsotg_core_connect(struct dwc2_hsotg *hsotg) { /* remove the soft-disconnect and let's go */ - dwc2_clear_bit(hsotg, DCTL, DCTL_SFTDISCON); + if (!hsotg->role_sw || (dwc2_readl(hsotg, GOTGCTL) & GOTGCTL_BSESVLD)) + dwc2_clear_bit(hsotg, DCTL, DCTL_SFTDISCON); } /** -- 2.25.1