Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp1957610iob; Thu, 5 May 2022 11:48:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwpzLpvfOBzIolfMhnca4eybzkl7PiTewxmv348iI0TaPg10POwEr5ZeGZBp9ngiLaHK4P/ X-Received: by 2002:a17:907:a40c:b0:6f4:59cc:ae8b with SMTP id sg12-20020a170907a40c00b006f459ccae8bmr20971292ejc.522.1651776511629; Thu, 05 May 2022 11:48:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651776511; cv=none; d=google.com; s=arc-20160816; b=sBYcGXWoPpdRV/V7XWA46Ew5ICnZWKapPQNzav0bGNw0DCpCspE+LD1BSCWJnutayZ ZwZsncqWq8A02FdgWGs2Aw45NWh5W5Q7Dqn9vyTL2Tkmc5qoNVN/pYwROIszw7ElGoDo PdtyzLSKp5XPaGUKRHYziYe6eK9Uz2TtWVxRs5GmbBwohnkz5rIogxUKYdiHwZ5Bul7H zFtgmR4cCvriAaPA6I25p+67KaG5RPOljejLgdteD6XhHAPHVZ1cQgubsOMhy4CuRGOD Aj4dc+YnLijcB/LWOo/y3GWfL/0gHo7ON/XxLqo4MwnxUhiRzjCyx+n2ETSTxASs5l8M tA3g== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=P00ngeIIu7ygEQ2j8CTEz21HOL0R+nse204MOxhqI4Q=; b=Hx5/oR+R6zldD3/yea+AQgQSHL2QkhI3r7XWvEDYiyrKfPw3eKdNUZZN8WSKK30nSe 3FExUieOD7JtkiAFEMMSpX3dUwkvtJxlE6LR2LtLvVbgp5g7X57fhAq+EWlcxzpdPY4Y xPPIAEfNk0ZKLcP9NtYZ0YgzCfgParY/kzk01shC37jqzmH+4kqUgIpNZHOp1fbx0Pp+ RKumUyMp5xE1yVuaCB0I1uHPWY2xF3RGzSicavSeAcWvQpL9oPZjfwUmJeWU9HXgiqbJ jaGIcr583UMQCTphnYdiz81fcGFPQaV1tdHrAbSSys/KzFdIqkBVzUFPwVcsEAcgN/+8 zfYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=eRpyS4uc; 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=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b17-20020a170906661100b006df76385e8fsi3202377ejp.815.2022.05.05.11.48.07; Thu, 05 May 2022 11:48:31 -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=@linuxfoundation.org header.s=korg header.b=eRpyS4uc; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346993AbiEDRkm (ORCPT + 99 others); Wed, 4 May 2022 13:40:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356693AbiEDRJi (ORCPT ); Wed, 4 May 2022 13:09:38 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AF231573B; Wed, 4 May 2022 09:55:23 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B9672618AC; Wed, 4 May 2022 16:55:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 042EFC385A5; Wed, 4 May 2022 16:55:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1651683322; bh=tKZj744Ki6jJM/kUR5/uSIXL2DmzSoeiIvGPzX9mJc0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eRpyS4ucYue8RFMSyyCi5RobqG4qkEO+3P1LN503huEMpWrtfGd9AS+lUuMOsSjQs /gFVZaUce+tsUpHzPh88m44siEy6PCqsOngMTbcmdo4rjlcNc0az/BG89zolZ/INqd y5S8DLCYPRbNBjM2D0TlF5dab7XlmokLA17840QE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Fabien Parent , Chunfeng Yun , Macpaul Lin , Tainping Fang Subject: [PATCH 5.17 001/225] usb: mtu3: fix USB 3.0 dual-role-switch from device to host Date: Wed, 4 May 2022 18:43:59 +0200 Message-Id: <20220504153110.258558138@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220504153110.096069935@linuxfoundation.org> References: <20220504153110.096069935@linuxfoundation.org> User-Agent: quilt/0.66 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, 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: Macpaul Lin commit 456244aeecd54249096362a173dfe06b82a5cafa upstream. Issue description: When an OTG port has been switched to device role and then switch back to host role again, the USB 3.0 Host (XHCI) will not be able to detect "plug in event of a connected USB 2.0/1.0 ((Highspeed and Fullspeed) devices until system reboot. Root cause and Solution: There is a condition checking flag "ssusb->otg_switch.is_u3_drd" in toggle_opstate(). At the end of role switch procedure, toggle_opstate() will be called to set DC_SESSION and SOFT_CONN bit. If "is_u3_drd" was set and switched the role to USB host 3.0, bit DC_SESSION and SOFT_CONN will be skipped hence caused the port cannot detect connected USB 2.0 (Highspeed and Fullspeed) devices. Simply remove the condition check to solve this issue. Fixes: d0ed062a8b75 ("usb: mtu3: dual-role mode support") Cc: stable@vger.kernel.org Tested-by: Fabien Parent Reviewed-by: Chunfeng Yun Signed-off-by: Macpaul Lin Signed-off-by: Tainping Fang Link: https://lore.kernel.org/r/20220419081245.21015-1-macpaul.lin@mediatek.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/mtu3/mtu3_dr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/usb/mtu3/mtu3_dr.c b/drivers/usb/mtu3/mtu3_dr.c index a6b04831b20b..9b8aded3d95e 100644 --- a/drivers/usb/mtu3/mtu3_dr.c +++ b/drivers/usb/mtu3/mtu3_dr.c @@ -21,10 +21,8 @@ static inline struct ssusb_mtk *otg_sx_to_ssusb(struct otg_switch_mtk *otg_sx) static void toggle_opstate(struct ssusb_mtk *ssusb) { - if (!ssusb->otg_switch.is_u3_drd) { - mtu3_setbits(ssusb->mac_base, U3D_DEVICE_CONTROL, DC_SESSION); - mtu3_setbits(ssusb->mac_base, U3D_POWER_MANAGEMENT, SOFT_CONN); - } + mtu3_setbits(ssusb->mac_base, U3D_DEVICE_CONTROL, DC_SESSION); + mtu3_setbits(ssusb->mac_base, U3D_POWER_MANAGEMENT, SOFT_CONN); } /* only port0 supports dual-role mode */ -- 2.36.0