All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Badhri Jagan Sridharan <badhri@google.com>
Cc: Guenter Roeck <linux@roeck-us.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	Kyle Tso <kyletso@google.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH v2] usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect
Date: Tue, 30 Nov 2021 12:56:06 +0200	[thread overview]
Message-ID: <YaYDRs0uvliAwTJZ@kuha.fi.intel.com> (raw)
In-Reply-To: <20211130001825.3142830-1-badhri@google.com>

On Mon, Nov 29, 2021 at 04:18:25PM -0800, Badhri Jagan Sridharan wrote:
> 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."
> 
> This change makes TCPM to wait in SNK_DEBOUNCED state until
> CC1 and CC2 pins is SNK.Open for at least tPDDebounce. Previously,
> TCPM resets the port if vbus is not present in PD_T_PS_SOURCE_ON.
> This causes TCPM to loop continuously when connected to a
> faulty power source that does not present vbus. Waiting in
> SNK_DEBOUNCED also ensures that TCPM is adherant to
> "4.5.2.2.4.2 Exiting from AttachWait.SNK State" requirements.
> 
> [ 6169.280751] CC1: 0 -> 0, CC2: 0 -> 5 [state TOGGLING, polarity 0, connected]
> [ 6169.280759] state change TOGGLING -> SNK_ATTACH_WAIT [rev2 NONE_AMS]
> [ 6169.280771] pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 170 ms [rev2 NONE_AMS]
> [ 6169.282427] CC1: 0 -> 0, CC2: 5 -> 5 [state SNK_ATTACH_WAIT, polarity 0, connected]
> [ 6169.450825] state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED [delayed 170 ms]
> [ 6169.450834] pending state change SNK_DEBOUNCED -> PORT_RESET @ 480 ms [rev2 NONE_AMS]
> [ 6169.930892] state change SNK_DEBOUNCED -> PORT_RESET [delayed 480 ms]
> [ 6169.931296] disable vbus discharge ret:0
> [ 6169.931301] Setting usb_comm capable false
> [ 6169.932783] Setting voltage/current limit 0 mV 0 mA
> [ 6169.932802] polarity 0
> [ 6169.933706] Requesting mux state 0, usb-role 0, orientation 0
> [ 6169.936689] cc:=0
> [ 6169.936812] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev2 NONE_AMS]
> [ 6169.937157] CC1: 0 -> 0, CC2: 5 -> 0 [state PORT_RESET, polarity 0, disconnected]
> [ 6170.036880] state change PORT_RESET -> PORT_RESET_WAIT_OFF [delayed 100 ms]
> [ 6170.036890] state change PORT_RESET_WAIT_OFF -> SNK_UNATTACHED [rev2 NONE_AMS]
> [ 6170.036896] Start toggling
> [ 6170.041412] CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING, polarity 0, disconnected]
> [ 6170.042973] CC1: 0 -> 0, CC2: 0 -> 5 [state TOGGLING, polarity 0, connected]
> [ 6170.042976] state change TOGGLING -> SNK_ATTACH_WAIT [rev2 NONE_AMS]
> [ 6170.042981] pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 170 ms [rev2 NONE_AMS]
> [ 6170.213014] state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED [delayed 170 ms]
> [ 6170.213019] pending state change SNK_DEBOUNCED -> PORT_RESET @ 480 ms [rev2 NONE_AMS]
> [ 6170.693068] state change SNK_DEBOUNCED -> PORT_RESET [delayed 480 ms]
> [ 6170.693304] disable vbus discharge ret:0
> [ 6170.693308] Setting usb_comm capable false
> [ 6170.695193] Setting voltage/current limit 0 mV 0 mA
> [ 6170.695210] polarity 0
> [ 6170.695990] Requesting mux state 0, usb-role 0, orientation 0
> [ 6170.701896] cc:=0
> [ 6170.702181] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev2 NONE_AMS]
> [ 6170.703343] CC1: 0 -> 0, CC2: 5 -> 0 [state PORT_RESET, polarity 0, disconnected]
> 
> Cc: stable@vger.kernel.org
> Fixes: f0690a25a140b8 ("staging: typec: USB Type-C Port Manager (tcpm)")
> Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index 7f2f3ff1b391..6010b9901126 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -4110,11 +4110,7 @@ static void run_state_machine(struct tcpm_port *port)
>  				       tcpm_try_src(port) ? SRC_TRY
>  							  : SNK_ATTACHED,
>  				       0);
> -		else
> -			/* Wait for VBUS, but not forever */
> -			tcpm_set_state(port, PORT_RESET, PD_T_PS_SOURCE_ON);
>  		break;
> -
>  	case SRC_TRY:
>  		port->try_src_count++;
>  		tcpm_set_cc(port, tcpm_rp_cc(port));
> -- 
> 2.34.0.rc2.393.gf8c9666880-goog

-- 
heikki

      reply	other threads:[~2021-11-30 10:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-30  0:18 [PATCH v2] usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect Badhri Jagan Sridharan
2021-11-30 10:56 ` Heikki Krogerus [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YaYDRs0uvliAwTJZ@kuha.fi.intel.com \
    --to=heikki.krogerus@linux.intel.com \
    --cc=badhri@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kyletso@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.