From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.4 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19A08C43143 for ; Mon, 1 Oct 2018 19:45:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D3FBE2145D for ; Mon, 1 Oct 2018 19:45:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="dpqKwe5J" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D3FBE2145D Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726475AbeJBCYf (ORCPT ); Mon, 1 Oct 2018 22:24:35 -0400 Received: from mail-pg1-f202.google.com ([209.85.215.202]:44087 "EHLO mail-pg1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726204AbeJBCYe (ORCPT ); Mon, 1 Oct 2018 22:24:34 -0400 Received: by mail-pg1-f202.google.com with SMTP id h9-v6so7567627pgs.11 for ; Mon, 01 Oct 2018 12:45:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=QnL/wTVd8g+QQeeekaKssRaFgYtQTuUuTzrOIXl9vSk=; b=dpqKwe5Jx6HO0cUzvwv0H7tzvpV3wpkeNtz/Ke092GpEnNuuOikG2YlGK0AHPileSq lXd1DzNXvtw/eJItv146cxyedGJxyOkan/mUQiiHNdBN/zfHG+PI1i3vCTgM0rxscIX+ Odj5CK5qqOI0YdMP7xmRWpRzJGJjpQZX8C0G1yB4ysJgcJ7JKz5IS8HOQvGrxSZV+7nT 7e4ztgfS5x9SHICPTqgIQpXfp22QixU8mI9uwhsNxtLcB20byNYUExTIUXCxwK1lphu+ NrkLwJr+CDpBrr+opME9s2rOdSCCl/n/7SuXJl4LMbPRYxqicfaamUGw+7UJUu9ImuC2 ofKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=QnL/wTVd8g+QQeeekaKssRaFgYtQTuUuTzrOIXl9vSk=; b=qf8K2UmJHtc6BWG8Z6awdkx2ADNhYh5/OnvxgaX9HB1+AecTkL4y5DqpkFuRcmHsni ROuWGHvRyInGSGb1YyKczJNAkL5WM1am2JP7PKUgM/nf1H46HZUCDpoVZTPu5KqZaVLl cHKdbRPjINlT57IgLxbsXPlwR4VFtJNq6UGbAqtxK7ME9MNwBCtT2xEfUMucDOhvIwbd lCut7vVh64IPpUd+l+NZH10m0CJnnoYwTCNU5ufthrCa0hkSnfLLzpcKnsxGqenI+qgK xhHyvZ75sHCYjw2BcshzBziWjZYyKzx88Jt/iBQFkAp30Rp0M46ERGF6hCbdTW1RH/ST wDYA== X-Gm-Message-State: ABuFfogM/GC8JEpklqqRef+m4MA8+sq0VA6CPhZ4vTwMBqfWOdOLtvSx iiVyKQRRBzkETbUcxQ9NlKgGSE4kMKk= X-Google-Smtp-Source: ACcGV60qsdXK9rO3A9sY2pXzzAk/S0SH0TV+mpPlUa2AYv0/Arbuk5qof6QLcwgxy129G1i2UOIikyd1XsY= X-Received: by 2002:a62:9c8d:: with SMTP id u13-v6mr2959384pfk.41.1538423113792; Mon, 01 Oct 2018 12:45:13 -0700 (PDT) Date: Mon, 1 Oct 2018 12:45:01 -0700 In-Reply-To: <20181001194501.58338-1-badhri@google.com> Message-Id: <20181001194501.58338-3-badhri@google.com> Mime-Version: 1.0 References: <20181001194501.58338-1-badhri@google.com> X-Mailer: git-send-email 2.19.0.605.g01d371f741-goog Subject: [PATCH v3 3/3] usb: typec: tcpm: charge current handling for sink during hard reset From: Badhri Jagan Sridharan To: Rob Herring , Mark Rutland , Heikki Krogerus , Greg Kroah-Hartman , Chanwoo Choi , Andrzej Hajda , Li Jun , linux@roeck-us.net, jackp@codeaurora.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Badhri Jagan Sridharan Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During the initial connect to a non-pd port, sink would hard reset twice before deeming that the port partner is non-pd. TCPM sets the the charge path to false during the hard reset. This causes unnecessary connects/disconnects of charge path and makes port take longer to charge from the non-pd ports. Avoid this by not setting the charge path to false unless the partner has already identified to be pd capable. When partner is a pd port, set the charge path to false in SNK_HARD_RESET_SINK_OFF. Set the current limits to default value based of CC pull up and resume the charge path when port enters SNK_HARD_RESET_SINK_ON. Signed-off-by: Badhri Jagan Sridharan -------- Changes in V3: Rebase on top of usb-next Changes in V2: Based on feedback of jackp@codeaurora.org - vsafe_5v_hard_reset flag from tcpc_config is removed - Patch only differentiates between pd port partner and non-pd port partner V1 version of the patch is here: https://lkml.org/lkml/2018/9/14/11 --- drivers/usb/typec/tcpm/tcpm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c3ac0e46106b..c25a69922ee6 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3273,7 +3273,8 @@ static void run_state_machine(struct tcpm_port *port) case SNK_HARD_RESET_SINK_OFF: memset(&port->pps_data, 0, sizeof(port->pps_data)); tcpm_set_vconn(port, false); - tcpm_set_charge(port, false); + if (port->pd_capable) + tcpm_set_charge(port, false); tcpm_set_roles(port, port->self_powered, TYPEC_SINK, TYPEC_DEVICE); /* @@ -3305,6 +3306,12 @@ static void run_state_machine(struct tcpm_port *port) * Similar, dual-mode ports in source mode should transition * to PE_SNK_Transition_to_default. */ + if (port->pd_capable) { + tcpm_set_current_limit(port, + tcpm_get_current_limit(port), + 5000); + tcpm_set_charge(port, true); + } tcpm_set_attached_state(port, true); tcpm_set_state(port, SNK_STARTUP, 0); break; -- 2.19.0.605.g01d371f741-goog From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,3/3] usb: typec: tcpm: charge current handling for sink during hard reset From: Badhri Jagan Sridharan Message-Id: <20181001194501.58338-3-badhri@google.com> Date: Mon, 1 Oct 2018 12:45:01 -0700 To: Rob Herring , Mark Rutland , Heikki Krogerus , Greg Kroah-Hartman , Chanwoo Choi , Andrzej Hajda , Li Jun , linux@roeck-us.net, jackp@codeaurora.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Badhri Jagan Sridharan List-ID: RHVyaW5nIHRoZSBpbml0aWFsIGNvbm5lY3QgdG8gYSBub24tcGQgcG9ydCwgc2luayB3b3VsZCBo YXJkIHJlc2V0CnR3aWNlIGJlZm9yZSBkZWVtaW5nIHRoYXQgdGhlIHBvcnQgcGFydG5lciBpcyBu b24tcGQuIFRDUE0gc2V0cyB0aGUKdGhlIGNoYXJnZSBwYXRoIHRvIGZhbHNlIGR1cmluZyB0aGUg aGFyZCByZXNldC4gVGhpcyBjYXVzZXMgdW5uZWNlc3NhcnkKY29ubmVjdHMvZGlzY29ubmVjdHMg b2YgY2hhcmdlIHBhdGggYW5kIG1ha2VzIHBvcnQgdGFrZSBsb25nZXIgdG8KY2hhcmdlIGZyb20g dGhlIG5vbi1wZCBwb3J0cy4gQXZvaWQgdGhpcyBieSBub3Qgc2V0dGluZyB0aGUgY2hhcmdlIHBh dGgKdG8gZmFsc2UgdW5sZXNzIHRoZSBwYXJ0bmVyIGhhcyBhbHJlYWR5IGlkZW50aWZpZWQgdG8g YmUgcGQgY2FwYWJsZS4KCldoZW4gcGFydG5lciBpcyBhIHBkIHBvcnQsIHNldCB0aGUgY2hhcmdl IHBhdGggdG8gZmFsc2UgaW4KU05LX0hBUkRfUkVTRVRfU0lOS19PRkYuIFNldCB0aGUgY3VycmVu dCBsaW1pdHMgdG8gZGVmYXVsdCB2YWx1ZSBiYXNlZApvZiBDQyBwdWxsIHVwIGFuZCByZXN1bWUg dGhlIGNoYXJnZSBwYXRoIHdoZW4gcG9ydCBlbnRlcnMKU05LX0hBUkRfUkVTRVRfU0lOS19PTi4K ClNpZ25lZC1vZmYtYnk6IEJhZGhyaSBKYWdhbiBTcmlkaGFyYW4gPGJhZGhyaUBnb29nbGUuY29t PgoKLS0tLS0tLS0KQ2hhbmdlcyBpbiBWMzoKUmViYXNlIG9uIHRvcCBvZiB1c2ItbmV4dAoKQ2hh bmdlcyBpbiBWMjoKQmFzZWQgb24gZmVlZGJhY2sgb2YgamFja3BAY29kZWF1cm9yYS5vcmcKLSB2 c2FmZV81dl9oYXJkX3Jlc2V0IGZsYWcgZnJvbSB0Y3BjX2NvbmZpZyBpcyByZW1vdmVkCi0gUGF0 Y2ggb25seSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHBkIHBvcnQgcGFydG5lciBhbmQgbm9uLXBk IHBvcnQKcGFydG5lcgoKVjEgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggaXMgaGVyZToKaHR0cHM6Ly9s a21sLm9yZy9sa21sLzIwMTgvOS8xNC8xMQotLS0KIGRyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNw bS5jIHwgOSArKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2Ry aXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jCmluZGV4IGMzYWMwZTQ2MTA2Yi4uYzI1YTY5OTIy ZWU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYworKysgYi9kcml2 ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwpAQCAtMzI3Myw3ICszMjczLDggQEAgc3RhdGljIHZv aWQgcnVuX3N0YXRlX21hY2hpbmUoc3RydWN0IHRjcG1fcG9ydCAqcG9ydCkKIAljYXNlIFNOS19I QVJEX1JFU0VUX1NJTktfT0ZGOgogCQltZW1zZXQoJnBvcnQtPnBwc19kYXRhLCAwLCBzaXplb2Yo cG9ydC0+cHBzX2RhdGEpKTsKIAkJdGNwbV9zZXRfdmNvbm4ocG9ydCwgZmFsc2UpOwotCQl0Y3Bt X3NldF9jaGFyZ2UocG9ydCwgZmFsc2UpOworCQlpZiAocG9ydC0+cGRfY2FwYWJsZSkKKwkJCXRj cG1fc2V0X2NoYXJnZShwb3J0LCBmYWxzZSk7CiAJCXRjcG1fc2V0X3JvbGVzKHBvcnQsIHBvcnQt PnNlbGZfcG93ZXJlZCwgVFlQRUNfU0lOSywKIAkJCSAgICAgICBUWVBFQ19ERVZJQ0UpOwogCQkv KgpAQCAtMzMwNSw2ICszMzA2LDEyIEBAIHN0YXRpYyB2b2lkIHJ1bl9zdGF0ZV9tYWNoaW5lKHN0 cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCiAJCSAqIFNpbWlsYXIsIGR1YWwtbW9kZSBwb3J0cyBpbiBz b3VyY2UgbW9kZSBzaG91bGQgdHJhbnNpdGlvbgogCQkgKiB0byBQRV9TTktfVHJhbnNpdGlvbl90 b19kZWZhdWx0LgogCQkgKi8KKwkJaWYgKHBvcnQtPnBkX2NhcGFibGUpIHsKKwkJCXRjcG1fc2V0 X2N1cnJlbnRfbGltaXQocG9ydCwKKwkJCQkJICAgICAgIHRjcG1fZ2V0X2N1cnJlbnRfbGltaXQo cG9ydCksCisJCQkJCSAgICAgICA1MDAwKTsKKwkJCXRjcG1fc2V0X2NoYXJnZShwb3J0LCB0cnVl KTsKKwkJfQogCQl0Y3BtX3NldF9hdHRhY2hlZF9zdGF0ZShwb3J0LCB0cnVlKTsKIAkJdGNwbV9z ZXRfc3RhdGUocG9ydCwgU05LX1NUQVJUVVAsIDApOwogCQlicmVhazsK