From patchwork Wed Apr 14 02:39:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Badhri Jagan Sridharan X-Patchwork-Id: 421263 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=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=unavailable 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 393FDC43461 for ; Wed, 14 Apr 2021 02:40:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1D2F3610CB for ; Wed, 14 Apr 2021 02:40:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345518AbhDNCk3 (ORCPT ); Tue, 13 Apr 2021 22:40:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238229AbhDNCk2 (ORCPT ); Tue, 13 Apr 2021 22:40:28 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9E08C06138E for ; Tue, 13 Apr 2021 19:40:07 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id n13so18387506ybp.14 for ; Tue, 13 Apr 2021 19:40:07 -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=zITHXmYSEGrpR+08cIDRIpeKXQIvom7Nfxqoy64vyVU=; b=C1p05V8aXy0pUNoTlGHaPYXjPdNLHBzel2rlneXFncHcWnkOvSdECMtDQ3AQ682zD7 X/6FxFdlQa3fVGrePXOfP8vqSM3xAZGdvEqCMmICSeLh/TmVwu3+exKCgKliDUNIeHzE /ZXHoCc6cxMD4n1NRrrjCUVRabA7zJnq/bTI/MmWNrbBbZeZkK5rQu9dxu4fHb/ALIFc w5J5GZeJ8SmsN8r/TxPC1SBkaqBM5Eyxr47lLF5OlH7zUK5YY8c7IlY+AdTccXhmvXKD jYPwja3I2+OCtDSP4j/J3Cuztv69uKG7r+fgZo/n78C5JVpIAjmhArq1e3DhS8aLZyfv MXRA== 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=zITHXmYSEGrpR+08cIDRIpeKXQIvom7Nfxqoy64vyVU=; b=dHhI/3vIoRsd+aK7YoIEbq262O7VRCuqVYgsyjN15pxCtFzp8uADLKF2GmUF+NGQDn WFJYdtsY4V4M/KgIdhmCFu0D1nUj+hkTB4qzvRLT2u4Row1DHp69qMu8Hp2boaN8P+6i gc7JPp/9dOu3vv4wlf9b0eWyYEiyQAExAJHr12D0G3CZ0gC0cO73bFcfsZNPnJY6Z9jD UDtbFMceBGg5GPXip/swuyUOrZS0Su7emNBvegQlpdl+6k2YMxo5qImMJhN1SuDdFEk+ 6TrZBCTb8c9Ex+T81KDpJn7EBY6YfKayCVUitDRAvl+YEw+PrV31pKZxbLnHtqdtLANF oghw== X-Gm-Message-State: AOAM533/x3LgdJzdfQB8cWEAw26pxI5hHeg3ohz7Q5I/gDx6xRQ6phhf 8kJcQd6C0lAjBvMRaHdS+I4rcNRB+6A= X-Google-Smtp-Source: ABdhPJzefCYV5RXeI1VVZejUFS4/Tj7hrJeXqx6rLWZBPHyUW2YanGEB8xs/PP2eljYU+4K1f38RrBF4+R8= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:91dd:58ac:7590:aa21]) (user=badhri job=sendgmr) by 2002:a25:d181:: with SMTP id i123mr26623226ybg.387.1618368007045; Tue, 13 Apr 2021 19:40:07 -0700 (PDT) Date: Tue, 13 Apr 2021 19:39:59 -0700 In-Reply-To: <20210414024000.4175263-1-badhri@google.com> Message-Id: <20210414024000.4175263-2-badhri@google.com> Mime-Version: 1.0 References: <20210414024000.4175263-1-badhri@google.com> X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v3 2/3] usb: typec: tcpm: Allow slow charging loops to comply to pSnkStby From: Badhri Jagan Sridharan To: Guenter Roeck , Heikki Krogerus , Greg Kroah-Hartman , Rob Herring , Adam Thomson Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Kyle Tso , Badhri Jagan Sridharan Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org When a PD charger advertising Rp-3.0 is connected to a sink port, the sink port current limit would 3A, during SNK_DISCOVERY, till power negotiation starts. Once the negotiation starts the power limit needs to drop down to pSnkStby(500mA @ 5V) and to negotiated current limit once the explicit contract is in place. Not all charging loops can ramp up to 3A and drop down to 500mA within tSnkStdby which is 15ms. The port partner might hard reset if tSnkStdby is not met. To solve this problem, this patch introduces slow-charger-loop which when set makes the port request PD_P_SNK_STDBY_MW upon entering SNK_DISCOVERY(instead of 3A or the 1.5A during SNK_DISCOVERY) and the actual currrent limit after RX of PD_CTRL_PSRDY for PD link or during SNK_READY for non-pd link. Signed-off-by: Badhri Jagan Sridharan Reviewed-by: Heikki Krogerus --- Changes since V2: * Refactored code based on Heikki's suggestion --- drivers/usb/typec/tcpm/tcpm.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index aedc8bb9532a..2ad5e14a6867 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -459,6 +459,12 @@ struct tcpm_port { /* Auto vbus discharge status */ bool auto_vbus_discharge_enabled; + /* + * When set, port requests PD_P_SNK_STDBY_MW upon entering SNK_DISCOVERY and + * the actual currrent limit after RX of PD_CTRL_PSRDY for PD link, + * SNK_READY for non-pd link. + */ + bool slow_charger_loop; #ifdef CONFIG_DEBUG_FS struct dentry *dentry; struct mutex logbuffer_lock; /* log buffer access lock */ @@ -4047,9 +4053,11 @@ static void run_state_machine(struct tcpm_port *port) break; case SNK_DISCOVERY: if (port->vbus_present) { - tcpm_set_current_limit(port, - tcpm_get_current_limit(port), - 5000); + u32 current_lim = tcpm_get_current_limit(port); + + if (port->slow_charger_loop || (current_lim > PD_P_SNK_STDBY_MW / 5)) + current_lim = PD_P_SNK_STDBY_MW / 5; + tcpm_set_current_limit(port, current_lim, 5000); tcpm_set_charge(port, true); tcpm_set_state(port, SNK_WAIT_CAPABILITIES, 0); break; @@ -4161,6 +4169,8 @@ static void run_state_machine(struct tcpm_port *port) port->pwr_opmode = TYPEC_PWR_MODE_PD; } + if (!port->pd_capable && port->slow_charger_loop) + tcpm_set_current_limit(port, tcpm_get_current_limit(port), 5000); tcpm_swap_complete(port, 0); tcpm_typec_connect(port); mod_enable_frs_delayed_work(port, 0); @@ -5763,6 +5773,7 @@ static int tcpm_fw_get_caps(struct tcpm_port *port, port->typec_caps.type = ret; port->port_type = port->typec_caps.type; + port->slow_charger_loop = fwnode_property_read_bool(fwnode, "slow-charger-loop"); if (port->port_type == TYPEC_PORT_SNK) goto sink; From patchwork Wed Apr 14 02:40:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Badhri Jagan Sridharan X-Patchwork-Id: 421986 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=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=unavailable 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 8EC3FC433B4 for ; Wed, 14 Apr 2021 02:40:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 72B6B61131 for ; Wed, 14 Apr 2021 02:40:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345824AbhDNCkd (ORCPT ); Tue, 13 Apr 2021 22:40:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345704AbhDNCka (ORCPT ); Tue, 13 Apr 2021 22:40:30 -0400 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AAD00C06175F for ; Tue, 13 Apr 2021 19:40:09 -0700 (PDT) Received: by mail-pj1-x1049.google.com with SMTP id q10-20020a17090a2dcab029014e44f5454aso5667637pjm.4 for ; Tue, 13 Apr 2021 19:40:09 -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=qaeiP4TcmkgXReccF8JNSG63nl5JyNyZTFgqbhXpA8w=; b=Inaem3hvoh6bBnQ/t6s8zhXAyDUbPjoohiMB3we9nLNBh9OKJSk3yK1ERidnzbCHKZ 8av0rHQJyFviHs3ODvVWEuBu5GgTUa02STo6Z1Vh0ois97JRYkWHQyptVwRgwoRqqdlp jJfbzKXePPrVxhP0YSvbNs9AJ1lvAxYtAyPxAdzq66BU8IVKBGZXLTzI+mc7OlKjsF3l b/8UvlKL+4XI5AlKBqS5QDBKrFGMW3hzsYog3y+O+yWhQpaO4jb6Q+GJFGG3CnCXY5zb LebyUhmGy0RY2GgthKz/nGW7bfOuMWsmoe1FNMfsvD7Fw+fNnuPNXzEdftYUUZVvApUC 0olw== 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=qaeiP4TcmkgXReccF8JNSG63nl5JyNyZTFgqbhXpA8w=; b=Bzup8pwo2dc+lTe5H+ZzyO2aF9XY8nbJHP+n7pG/SNFCwgZiAU68xYNnpl7/HWHmzo hp1q6eSKsvNrVlkPPo2zBaAwqBm9iMR0FFPJ3ynT7+em2DGHVzg5VGfN9KGVSN0bkoSB 1akXvna0i1/7d9ZsMZI/hV8N8XTCZj46wDcLd938N+ZMfP8WjoBrtRv7tbsPaSv/kEyO 38IMjLY2R1IeO3/QC6oH6h1TeoQzTJnkOMw/IkTEdpYKlRizQ/cu6IT/4tzJHmvYQTwB UhaYkcfQsUVl0e+rulXVDWbH82+YNP9ZidOdBL/89/5RUiMvYhMcQ54RWbNjbeQyWX70 Wb7g== X-Gm-Message-State: AOAM533MZ4pszB6LP+nnmKp4qdYTuYD1BVXWbLd7JdCb1mQ3QpxdGBhu wS/VAX4vV6a6kMSdT/1ryLg//EeQVHo= X-Google-Smtp-Source: ABdhPJwPV18N9xjx5dwA3igxAJiFUaZL/VMUHoyaPfs+7PbKnBAcBE9xSAnWOXyldokRvRo3Bqkk4S2P2pk= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:91dd:58ac:7590:aa21]) (user=badhri job=sendgmr) by 2002:a62:4d86:0:b029:252:c889:2dd8 with SMTP id a128-20020a624d860000b0290252c8892dd8mr1790835pfb.41.1618368009191; Tue, 13 Apr 2021 19:40:09 -0700 (PDT) Date: Tue, 13 Apr 2021 19:40:00 -0700 In-Reply-To: <20210414024000.4175263-1-badhri@google.com> Message-Id: <20210414024000.4175263-3-badhri@google.com> Mime-Version: 1.0 References: <20210414024000.4175263-1-badhri@google.com> X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v3 3/3] dt-bindings:: connector: Add slow-charger-loop definition From: Badhri Jagan Sridharan To: Guenter Roeck , Heikki Krogerus , Greg Kroah-Hartman , Rob Herring , Adam Thomson Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Kyle Tso , Badhri Jagan Sridharan Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Allows PMIC charger loops which are slow(i.e. cannot meet the 15ms deadline) to still comply to pSnkStby i.e Maximum power that can be consumed by sink while in Sink Standby state as defined in 7.4.2 Sink Electrical Parameters of USB Power Delivery Specification Revision 3.0, Version 1.2. This patch introduces slow-charger-loop which when set makes the port request PD_P_SNK_STDBY_MW(2.5W i.e 500mA@5V) upon entering SNK_DISCOVERY (instead of 3A or the 1.5A during SNK_DISCOVERY) and the actual currrent limit after RX of PD_CTRL_PSRDY for PD link or during SNK_READY for non-pd link. Signed-off-by: Badhri Jagan Sridharan --- Changes since V2: To address Rob's comments * Updated commit and the binding description. * Updated subject as well. --- .../devicetree/bindings/connector/usb-connector.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml index b6daedd62516..32509b98142e 100644 --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml @@ -197,6 +197,16 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 enum: [1, 2, 3] + slow-charger-loop: + description: Allows PMIC charger loops which are slow(i.e. cannot meet the 15ms deadline) to + still comply to pSnkStby i.e Maximum power that can be consumed by sink while in Sink Standby + state as defined in 7.4.2 Sink Electrical Parameters of USB Power Delivery Specification + Revision 3.0, Version 1.2. When the property is set, the port requests pSnkStby(2.5W - + 5V@500mA) upon entering SNK_DISCOVERY(instead of 3A or the 1.5A, Rp current advertised, during + SNK_DISCOVERY) and the actual currrent limit after reception of PS_Ready for PD link or during + SNK_READY for non-pd link. + type: boolean + required: - compatible