Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp868696pxb; Tue, 1 Feb 2022 12:05:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJzybOzDtl70cCTq4VR72xDnfBu2LSfJWBSPTi3LJ+HsIdmaDwS2+TZKIRTP4xFZtyoQfZOg X-Received: by 2002:a17:903:120c:: with SMTP id l12mr27439465plh.135.1643745953553; Tue, 01 Feb 2022 12:05:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643745953; cv=none; d=google.com; s=arc-20160816; b=RUlNjUlBDXShEMh5yYOAeETQDNzAfRkmkjVKNt3qIx5qb1MMPBaYBSo1/PK+UiPnFx LSJ8Up85vR5Si7e19mEz1o1Yhx3LssRP77C73yce4hoSMTnuO/1OM0oZX1gVFRfxgmxs NceCToE9bVvjHlcNUiHdTPX0XMz4CMK/iEJ0wimhIHG65V6hStvSouja1ee4sPq5j9jD CBfLYDiRQDsqYKqYI5WwwyKnZeZwU+Ezfhh4A+YcJ3lu+UCyO9FttFYOF8RTs8ULbIKv JwdvRigXz/Zl//oE4h97NihG0wyCyqS/FVQ6zAjz9/gMSFr8MrDBuXs0tBtP8Sz64yp5 wKaw== 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=HEo30pbF9tsTLcs2x358B+BGj55Tsfk960cVyShPYyE=; b=bbRbaTE7oNDUR78ha86osn53YjR13WjPH/gLVqtq/J8bTFRRIuArl0+ecbZhebE/l8 H53vXV6C6ri912W3Gs6VTyMoJ2QW8BBkuyYwY9N7br4kGBTmAjgBNrRlH0uuX7/x2B4e EyvHHilAeUXentbTN2rhA5ES2M+wRdrxCeoW/m1YYsyjL6QFr4JG4KkXCYZvW0/2qeg/ LEZguzSxu4y2mAqXkoqtDhO+A8to6S9Zc6qhww6En+seUSoKWKT7lwyUUDxW+xEMCN+C ieSO+gUrMIpPf7TBuo4NFmqeqw7Oc6nFhnZevQSgcQYVN2UpswlHLjiFRkaxhz/dMKHL RNZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=SBKSXX23; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f13si16765745pgv.730.2022.02.01.12.05.41; Tue, 01 Feb 2022 12:05:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=SBKSXX23; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S1378066AbiAaLXi (ORCPT + 99 others); Mon, 31 Jan 2022 06:23:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377059AbiAaLNj (ORCPT ); Mon, 31 Jan 2022 06:13:39 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60C91C06175D; Mon, 31 Jan 2022 03:10:59 -0800 (PST) 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 F272461139; Mon, 31 Jan 2022 11:10:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5C5CC340E8; Mon, 31 Jan 2022 11:10:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643627458; bh=wkmgY9tv0bWhmBo3+tNenMqi2h+T3VVLoWGvfFfuTjE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SBKSXX23q0B0ZQ8nSiJmWL/025tKqV6g/UEsTqcA+nz9ZhjxssqpuoTaQqGamMbVp 5BOJoBLD5Gs925HsdRix6cKIDtrNxmq4wdXfdTdlSslxnIXBBOcuMUGu95flPECEXc ZSS9tYEnBiyPD3G69y7uXwIz6BQQ6zkcgRUj9/FM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Heikki Krogerus , Badhri Jagan Sridharan Subject: [PATCH 5.15 063/171] usb: typec: tcpm: Do not disconnect when receiving VSAFE0V Date: Mon, 31 Jan 2022 11:55:28 +0100 Message-Id: <20220131105232.167332623@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220131105229.959216821@linuxfoundation.org> References: <20220131105229.959216821@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Badhri Jagan Sridharan commit 746f96e7d6f7a276726860f696671766bfb24cf0 upstream. With some chargers, vbus might momentarily raise above VSAFE5V and fall back to 0V causing VSAFE0V to be triggered. This will will report a VBUS off event causing TCPM to transition to SNK_UNATTACHED state where it should be waiting in either SNK_ATTACH_WAIT or SNK_DEBOUNCED state. This patch makes TCPM avoid VSAFE0V events while in SNK_ATTACH_WAIT or SNK_DEBOUNCED state. Stub from the spec: "4.5.2.2.4.2 Exiting from AttachWait.SNK State A Sink shall transition to Unattached.SNK when the state of both the CC1 and CC2 pins is SNK.Open for at least tPDDebounce. A DRP shall transition to Unattached.SRC when the state of both the CC1 and CC2 pins is SNK.Open for at least tPDDebounce." [23.194131] CC1: 0 -> 0, CC2: 0 -> 5 [state SNK_UNATTACHED, polarity 0, connected] [23.201777] state change SNK_UNATTACHED -> SNK_ATTACH_WAIT [rev3 NONE_AMS] [23.209949] pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 170 ms [rev3 NONE_AMS] [23.300579] VBUS off [23.300668] state change SNK_ATTACH_WAIT -> SNK_UNATTACHED [rev3 NONE_AMS] [23.301014] VBUS VSAFE0V [23.301111] Start toggling Fixes: 28b43d3d746b8 ("usb: typec: tcpm: Introduce vsafe0v for vbus") Cc: stable@vger.kernel.org Acked-by: Heikki Krogerus Signed-off-by: Badhri Jagan Sridharan Link: https://lore.kernel.org/r/20220122015520.332507-2-badhri@google.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/typec/tcpm/tcpm.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -5264,6 +5264,10 @@ static void _tcpm_pd_vbus_vsafe0v(struct case PR_SWAP_SNK_SRC_SOURCE_ON: /* Do nothing, vsafe0v is expected during transition */ break; + case SNK_ATTACH_WAIT: + case SNK_DEBOUNCED: + /*Do nothing, still waiting for VSAFE5V for connect */ + break; default: if (port->pwr_role == TYPEC_SINK && port->auto_vbus_discharge_enabled) tcpm_set_state(port, SNK_UNATTACHED, 0);