From patchwork Wed Apr 7 20:07:18 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: 417155 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, 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 0ED8FC43462 for ; Wed, 7 Apr 2021 20:07:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D6A74613C0 for ; Wed, 7 Apr 2021 20:07:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355898AbhDGUHi (ORCPT ); Wed, 7 Apr 2021 16:07:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355894AbhDGUHi (ORCPT ); Wed, 7 Apr 2021 16:07:38 -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 0E447C061760 for ; Wed, 7 Apr 2021 13:07:28 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id g7so18479715ybm.13 for ; Wed, 07 Apr 2021 13:07:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=BxDC0Eh7ydMZJg1PFupA4h3+Cq4GAnRY2vElU6GR0XY=; b=sfIKHfu8fB43yPliqSo5fnTfDUrby+DjTuziu1/KgUSQQ0ifHLh3cEXorN5y07O2cR Jn4/t8fNJGMs5CnQYi4uLl1KVTb92oW4DYjMuS6EfJr5W+uDshrLAeXLYTn/lyTovQw9 rgDFFr0+j3HVCtULrdrFJIoF0gLIszMtUdmduI+Ps8DM2Td8VooWfwwGvQXvXgn9zBWs Hc8/M5ed7HUlLAMh3pW5bFSJQvhrJq0cSq3aD/fEojIJ+qS5tabLvmx/MeTLOLs8WqkZ GDeRPdzgWPPWKNMbnVCa8pscGLDtCd9Ji0zfnoEBrycPa5rQ4luujHHzwYqNr8/UWbet ielg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=BxDC0Eh7ydMZJg1PFupA4h3+Cq4GAnRY2vElU6GR0XY=; b=cBox4qRxjJLDcDIyIe9Nm+QOnyKZg93bAMMP3iO55f51zFj/VH7j396A/y1wwdal5o 4TylY/5FdyWL/7/NEiSKaEFJS37BktYRFa071AP+WxBX/AN2QlsMVECdnldb3Acg+PEi G6YwAqZOMmo5MZO/su4tpc+o4dLGYh5q+Gd4EO2YJLPO8UXP5k3gvHGjOlQlvK1EFErC UkRVKgB2Qu/JNprVAo0FYV3BYMx3+YcAA/QV8ZMuqC/o/ahwFb/7fpT8laenuLHDcckU RTjkYUnAPIruOnXS4YooFqwqSkwICQh0epenuZeaSNj1vByUEAuZliHJhS6dqPjKIx2Q QH6A== X-Gm-Message-State: AOAM533w5orbkWb+4IPl0JZ3EPjfGPhXzLRttGJ1mZestgNhGuveBmzL 4S4ht8bcyDUhCvtPBQHYa+Bo61/CRXA= X-Google-Smtp-Source: ABdhPJyt+SZadsjmFa+1Q3dijTgZqqWRn4fhyZZKytbO/HVINExegAkdwyAPaRtYq/AsbllM+OTgdOharjs= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:991:6d08:9e6d:683d]) (user=badhri job=sendgmr) by 2002:a25:2b08:: with SMTP id r8mr7331360ybr.194.1617826047254; Wed, 07 Apr 2021 13:07:27 -0700 (PDT) Date: Wed, 7 Apr 2021 13:07:18 -0700 Message-Id: <20210407200723.1914388-1-badhri@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v2 1/6] usb: typec: tcpm: Address incorrect values of tcpm psy for fixed supply 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: linux-usb@vger.kernel.org tcpm_pd_build_request overwrites current_limit and supply_voltage even before port partner accepts the requests. This leaves stale values in current_limit and supply_voltage that get exported by "tcpm-source-psy-". Solving this problem by caching the request values of current limit/supply voltage in req_current_limit and req_supply_voltage. current_limit/supply_voltage gets updated once the port partner accepts the request. Fixes: f2a8aa053c176 ("typec: tcpm: Represent source supply through power_supply") Signed-off-by: Badhri Jagan Sridharan Reviewed-by: Guenter Roeck Reviewed-by: Adam Thomson Reviewed-by: Heikki Krogerus Reviewed-by: Guenter Roeck --- Changes since V1: * Fixed typo as suggested by Guenter Roeck. * Added Reviewed-by tags. --- drivers/usb/typec/tcpm/tcpm.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index ca1fc77697fc..4ea4b30ae885 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -389,7 +389,10 @@ struct tcpm_port { unsigned int operating_snk_mw; bool update_sink_caps; - /* Requested current / voltage */ + /* Requested current / voltage to the port partner */ + u32 req_current_limit; + u32 req_supply_voltage; + /* Actual current / voltage limit of the local port */ u32 current_limit; u32 supply_voltage; @@ -2435,8 +2438,8 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, case SNK_TRANSITION_SINK: if (port->vbus_present) { tcpm_set_current_limit(port, - port->current_limit, - port->supply_voltage); + port->req_current_limit, + port->req_supply_voltage); port->explicit_contract = true; tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_PD, @@ -2545,8 +2548,8 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, break; case SNK_NEGOTIATE_PPS_CAPABILITIES: port->pps_data.active = true; - port->supply_voltage = port->pps_data.out_volt; - port->current_limit = port->pps_data.op_curr; + port->req_supply_voltage = port->pps_data.out_volt; + port->req_current_limit = port->pps_data.op_curr; tcpm_set_state(port, SNK_TRANSITION_SINK, 0); break; case SOFT_RESET_SEND: @@ -3195,8 +3198,8 @@ static int tcpm_pd_build_request(struct tcpm_port *port, u32 *rdo) flags & RDO_CAP_MISMATCH ? " [mismatch]" : ""); } - port->current_limit = ma; - port->supply_voltage = mv; + port->req_current_limit = ma; + port->req_supply_voltage = mv; return 0; } From patchwork Wed Apr 7 20:07:19 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: 417954 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=-23.5 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, UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED, 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 476BBC43460 for ; Wed, 7 Apr 2021 20:07:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1C2B0611EE for ; Wed, 7 Apr 2021 20:07:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355913AbhDGUHm (ORCPT ); Wed, 7 Apr 2021 16:07:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355905AbhDGUHk (ORCPT ); Wed, 7 Apr 2021 16:07:40 -0400 Received: from mail-qv1-xf49.google.com (mail-qv1-xf49.google.com [IPv6:2607:f8b0:4864:20::f49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11053C061760 for ; Wed, 7 Apr 2021 13:07:30 -0700 (PDT) Received: by mail-qv1-xf49.google.com with SMTP id n3so13428073qvr.8 for ; Wed, 07 Apr 2021 13:07:30 -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=6diRnkZekp7rckkpsXWg5DBCGJnJP3NdYdgGwctNvO8=; b=csiyhr4njzuPfgf5pSrhos+B7wdG3G7S/7nNrIrVtfiUOwLcdYfy713VRfJ57bYvHn 2/diOifTqOvIAcgoBn8I/GDbfN60B5nmVACRFrf76iBIGlUHjMPX5ojBLoExi2miDj6z yotPJRkKW5o9gQQ8od+dBRd2vGZyeQdKKB2I6KoFkKJ0uajM0nlcXcoozZnpd4gYqazS huR0zWqOOvAtAKx3S7hqzZgeySlgDOnftRT/6ZtxLDXHrVdE9qhV2nCVsPNghpGwvVb1 9C033Vw8WccOZAWSwRVpxze9yuGEBgIYm1lIOCZHHeKwz5kzPeGJruSuDTLnWubqiiMP od7A== 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=6diRnkZekp7rckkpsXWg5DBCGJnJP3NdYdgGwctNvO8=; b=p8K7GMC+aUHbMYuPXFIrJXLAJnRys/7A2AC7PAcj6XQ8TAITtxj3OZjku0f9piaern kvq5ToryloIImRzUjDR5xFk6SgkRnGcNZnNlr+WbQyFEUWhubHM4jS8FWUi8+MOqIlth UCzo2boMwFA4MX+78hC+qmGuCvKrEzSiW2qkJtkYufHorIMx2Ks5G/WJy1CGaqZ1ynqT kCLg0Nkw1VwN4cuaHr+XBspGVDyN/wXvFAEm2zqF4/ixQ9rjVol66VwZy+1DaXRd4646 uda528IfaqeNFn+eMrvkUnE2fcpzDL30LGjB2RpsnmNUkTRP8/krCPVJAEbIrgjZ2YFI pjPg== X-Gm-Message-State: AOAM530v6XLjSoz9MiaZBu8r4PiIbcMnhR8LJj7/uWh1huAU+fFiEytz MN63StRq43cPULymDZZEVdRJvmQR0yk= X-Google-Smtp-Source: ABdhPJxzpt07Z1s/q62rDlJbz4WMkdZxAuhdtmUUHewGRAvWF+rP27gjfYh5HEf88Uh1wMxLPtWHpY9MnOo= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:991:6d08:9e6d:683d]) (user=badhri job=sendgmr) by 2002:ad4:5767:: with SMTP id r7mr5167852qvx.27.1617826049288; Wed, 07 Apr 2021 13:07:29 -0700 (PDT) Date: Wed, 7 Apr 2021 13:07:19 -0700 In-Reply-To: <20210407200723.1914388-1-badhri@google.com> Message-Id: <20210407200723.1914388-2-badhri@google.com> Mime-Version: 1.0 References: <20210407200723.1914388-1-badhri@google.com> X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v2 2/6] usb: typec: tcpm: Address incorrect values of tcpm psy for pps supply 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: linux-usb@vger.kernel.org tcpm_pd_select_pps_apdo overwrites port->pps_data.min_volt, port->pps_data.max_volt, port->pps_data.max_curr even before port partner accepts the requests. This leaves incorrect values in current_limit and supply_voltage that get exported by "tcpm-source-psy-". Solving this problem by caching the request values in req_min_volt, req_max_volt, req_max_curr, req_out_volt, req_op_curr. min_volt, max_volt, max_curr gets updated once the partner accepts the request. current_limit, supply_voltage gets updated once local port's tcpm enters SNK_TRANSITION_SINK when the accepted current_limit and supply_voltage is enforced. Fixes: f2a8aa053c176 ("typec: tcpm: Represent source supply through power_supply") Signed-off-by: Badhri Jagan Sridharan Reviewed-by: Adam Thomson Reviewed-by: Guenter Roeck --- Changes since V1: * Moved to kerneldoc header as suggested by Greg KH. * Added reviewed by tags. --- drivers/usb/typec/tcpm/tcpm.c | 88 +++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 35 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 4ea4b30ae885..b4a40099d7e9 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -268,12 +268,27 @@ struct pd_mode_data { struct typec_altmode_desc altmode_desc[ALTMODE_DISCOVERY_MAX]; }; +/* + * @min_volt: Actual min voltage at the local port + * @req_min_volt: Requested min voltage to the port partner + * @max_volt: Actual max voltage at the local port + * @req_max_volt: Requested max voltage to the port partner + * @max_curr: Actual max current at the local port + * @req_max_curr: Requested max current of the port partner + * @req_out_volt: Requested output voltage to the port partner + * @req_op_curr: Requested operating current to the port partner + * @supported: Parter has atleast one APDO hence supports PPS + * @active: PPS mode is active + */ struct pd_pps_data { u32 min_volt; + u32 req_min_volt; u32 max_volt; + u32 req_max_volt; u32 max_curr; - u32 out_volt; - u32 op_curr; + u32 req_max_curr; + u32 req_out_volt; + u32 req_op_curr; bool supported; bool active; }; @@ -2498,8 +2513,8 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, break; case SNK_NEGOTIATE_PPS_CAPABILITIES: /* Revert data back from any requested PPS updates */ - port->pps_data.out_volt = port->supply_voltage; - port->pps_data.op_curr = port->current_limit; + port->pps_data.req_out_volt = port->supply_voltage; + port->pps_data.req_op_curr = port->current_limit; port->pps_status = (type == PD_CTRL_WAIT ? -EAGAIN : -EOPNOTSUPP); @@ -2548,8 +2563,11 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, break; case SNK_NEGOTIATE_PPS_CAPABILITIES: port->pps_data.active = true; - port->req_supply_voltage = port->pps_data.out_volt; - port->req_current_limit = port->pps_data.op_curr; + port->pps_data.min_volt = port->pps_data.req_min_volt; + port->pps_data.max_volt = port->pps_data.req_max_volt; + port->pps_data.max_curr = port->pps_data.req_max_curr; + port->req_supply_voltage = port->pps_data.req_out_volt; + port->req_current_limit = port->pps_data.req_op_curr; tcpm_set_state(port, SNK_TRANSITION_SINK, 0); break; case SOFT_RESET_SEND: @@ -3108,16 +3126,16 @@ static unsigned int tcpm_pd_select_pps_apdo(struct tcpm_port *port) src = port->source_caps[src_pdo]; snk = port->snk_pdo[snk_pdo]; - port->pps_data.min_volt = max(pdo_pps_apdo_min_voltage(src), - pdo_pps_apdo_min_voltage(snk)); - port->pps_data.max_volt = min(pdo_pps_apdo_max_voltage(src), - pdo_pps_apdo_max_voltage(snk)); - port->pps_data.max_curr = min_pps_apdo_current(src, snk); - port->pps_data.out_volt = min(port->pps_data.max_volt, - max(port->pps_data.min_volt, - port->pps_data.out_volt)); - port->pps_data.op_curr = min(port->pps_data.max_curr, - port->pps_data.op_curr); + port->pps_data.req_min_volt = max(pdo_pps_apdo_min_voltage(src), + pdo_pps_apdo_min_voltage(snk)); + port->pps_data.req_max_volt = min(pdo_pps_apdo_max_voltage(src), + pdo_pps_apdo_max_voltage(snk)); + port->pps_data.req_max_curr = min_pps_apdo_current(src, snk); + port->pps_data.req_out_volt = min(port->pps_data.max_volt, + max(port->pps_data.min_volt, + port->pps_data.req_out_volt)); + port->pps_data.req_op_curr = min(port->pps_data.max_curr, + port->pps_data.req_op_curr); power_supply_changed(port->psy); } @@ -3245,10 +3263,10 @@ static int tcpm_pd_build_pps_request(struct tcpm_port *port, u32 *rdo) tcpm_log(port, "Invalid APDO selected!"); return -EINVAL; } - max_mv = port->pps_data.max_volt; - max_ma = port->pps_data.max_curr; - out_mv = port->pps_data.out_volt; - op_ma = port->pps_data.op_curr; + max_mv = port->pps_data.req_max_volt; + max_ma = port->pps_data.req_max_curr; + out_mv = port->pps_data.req_out_volt; + op_ma = port->pps_data.req_op_curr; break; default: tcpm_log(port, "Invalid PDO selected!"); @@ -3295,8 +3313,8 @@ static int tcpm_pd_build_pps_request(struct tcpm_port *port, u32 *rdo) tcpm_log(port, "Requesting APDO %d: %u mV, %u mA", src_pdo_index, out_mv, op_ma); - port->pps_data.op_curr = op_ma; - port->pps_data.out_volt = out_mv; + port->pps_data.req_op_curr = op_ma; + port->pps_data.req_out_volt = out_mv; return 0; } @@ -5429,7 +5447,7 @@ static int tcpm_try_role(struct typec_port *p, int role) return ret; } -static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 op_curr) +static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 req_op_curr) { unsigned int target_mw; int ret; @@ -5447,12 +5465,12 @@ static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 op_curr) goto port_unlock; } - if (op_curr > port->pps_data.max_curr) { + if (req_op_curr > port->pps_data.max_curr) { ret = -EINVAL; goto port_unlock; } - target_mw = (op_curr * port->pps_data.out_volt) / 1000; + target_mw = (req_op_curr * port->supply_voltage) / 1000; if (target_mw < port->operating_snk_mw) { ret = -EINVAL; goto port_unlock; @@ -5466,10 +5484,10 @@ static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 op_curr) } /* Round down operating current to align with PPS valid steps */ - op_curr = op_curr - (op_curr % RDO_PROG_CURR_MA_STEP); + req_op_curr = req_op_curr - (req_op_curr % RDO_PROG_CURR_MA_STEP); reinit_completion(&port->pps_complete); - port->pps_data.op_curr = op_curr; + port->pps_data.req_op_curr = req_op_curr; port->pps_status = 0; port->pps_pending = true; mutex_unlock(&port->lock); @@ -5490,7 +5508,7 @@ static int tcpm_pps_set_op_curr(struct tcpm_port *port, u16 op_curr) return ret; } -static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 out_volt) +static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 req_out_volt) { unsigned int target_mw; int ret; @@ -5508,13 +5526,13 @@ static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 out_volt) goto port_unlock; } - if (out_volt < port->pps_data.min_volt || - out_volt > port->pps_data.max_volt) { + if (req_out_volt < port->pps_data.min_volt || + req_out_volt > port->pps_data.max_volt) { ret = -EINVAL; goto port_unlock; } - target_mw = (port->pps_data.op_curr * out_volt) / 1000; + target_mw = (port->current_limit * req_out_volt) / 1000; if (target_mw < port->operating_snk_mw) { ret = -EINVAL; goto port_unlock; @@ -5528,10 +5546,10 @@ static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 out_volt) } /* Round down output voltage to align with PPS valid steps */ - out_volt = out_volt - (out_volt % RDO_PROG_VOLT_MV_STEP); + req_out_volt = req_out_volt - (req_out_volt % RDO_PROG_VOLT_MV_STEP); reinit_completion(&port->pps_complete); - port->pps_data.out_volt = out_volt; + port->pps_data.req_out_volt = req_out_volt; port->pps_status = 0; port->pps_pending = true; mutex_unlock(&port->lock); @@ -5589,8 +5607,8 @@ static int tcpm_pps_activate(struct tcpm_port *port, bool activate) /* Trigger PPS request or move back to standard PDO contract */ if (activate) { - port->pps_data.out_volt = port->supply_voltage; - port->pps_data.op_curr = port->current_limit; + port->pps_data.req_out_volt = port->supply_voltage; + port->pps_data.req_op_curr = port->current_limit; } mutex_unlock(&port->lock); From patchwork Wed Apr 7 20:07:20 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: 417154 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, 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 AF1F3C433B4 for ; Wed, 7 Apr 2021 20:07:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 83010611C1 for ; Wed, 7 Apr 2021 20:07:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355917AbhDGUHu (ORCPT ); Wed, 7 Apr 2021 16:07:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355915AbhDGUHn (ORCPT ); Wed, 7 Apr 2021 16:07:43 -0400 Received: from mail-qv1-xf49.google.com (mail-qv1-xf49.google.com [IPv6:2607:f8b0:4864:20::f49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E34E4C061760 for ; Wed, 7 Apr 2021 13:07:31 -0700 (PDT) Received: by mail-qv1-xf49.google.com with SMTP id s13so1809920qvn.22 for ; Wed, 07 Apr 2021 13:07:31 -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=ZHNgOhbcBGIxSCKPDQlgoIy0m+9VFY0wXe/8bm4YHTE=; b=CcxsuTq6nOfVVtaFysl/WbmIZWJ8Y7tCDtjLWq++bLaMadYBg0LoVCqEYtBiwN+m2Q ba7a/Mo9Aszkb2RRB/GqWUQkZRwqhLbW1W/NHYDnpP9npIYBEDMTHs1njBizSzCsiRY6 lr0W5EioZZPbZH9M9Coizz2WeSdQnLh6jM/UWF52AeVjGHneKqTrrpJQaDmTNns6cz5D yAdLMS7uaTuPYsCMZG4qUg/BvrP8p1nswRYOOy0d31CXolBdmWYeuCnE+/ERVt+oMW35 NhZTxTZZVakscfQseDwQk1e/804YAyNPK8cJYYQC8rvb/NICARUColyiHMY3qi5awBgB zrJg== 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=ZHNgOhbcBGIxSCKPDQlgoIy0m+9VFY0wXe/8bm4YHTE=; b=bs3eAEkI6TVQurKiYaEFMa0A3iomtUCWB3zJsXgZop/MA3UM4KlQJbKq88kZSb/ade OTssJRxqDNxhgApEVKVVGsqKeVmQNVC9yT5hGUhEyAQFlXVArFsvEDZjx7wObdMk0yUz VzanaNdORhVI08HZ1Jzwz9NtT3cj7gE6ERcqg0C8Xs02VJPHZsXXn5GF4IL276gM1TdX yuS3uwb1tOfV3TxJCObYnenEUrsRD/3rS8heKwwrM65S41m6SJTv/YVA77mFW+XtjICl 6b/VjO1TePxS4GuvggcBxctwK1FhjiQpnNvVLWRDPdYry3Mddmk859qVpRasgn1ohN+c 4cBQ== X-Gm-Message-State: AOAM530XuXCR5FCzZ+cLDo43YXG/1p2ik/GYcFKgmNOhOWc11n3CnVV/ JTdOShJyTEQGwvBpdVV1i7xVCm3AQZs= X-Google-Smtp-Source: ABdhPJyvzz9BZE9t+ER2QnbrEnqgaZrLMj5yua7F/zskwASinK5bE68tYBmirVkKr2rT0avnu466FoQvXG4= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:991:6d08:9e6d:683d]) (user=badhri job=sendgmr) by 2002:a05:6214:10ca:: with SMTP id r10mr5249610qvs.53.1617826051169; Wed, 07 Apr 2021 13:07:31 -0700 (PDT) Date: Wed, 7 Apr 2021 13:07:20 -0700 In-Reply-To: <20210407200723.1914388-1-badhri@google.com> Message-Id: <20210407200723.1914388-3-badhri@google.com> Mime-Version: 1.0 References: <20210407200723.1914388-1-badhri@google.com> X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v2 3/6] usb: typec: tcpm: update power supply once partner accepts 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: linux-usb@vger.kernel.org power_supply_changed needs to be called to notify clients after the partner accepts the requested values for the pps case. Also, remove the redundant power_supply_changed at the end of the tcpm_reset_port as power_supply_changed is already called right after usb_type is changed. Fixes: f2a8aa053c176 ("typec: tcpm: Represent source supply through power_supply") Signed-off-by: Badhri Jagan Sridharan Reviewed-by: Adam Thomson Reviewed-by: Heikki Krogerus Reviewed-by: Guenter Roeck --- Changes since V1: * Updated commit description to clarify Guenter Roeck's concern. * Added Reviewed-by tags --- drivers/usb/typec/tcpm/tcpm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index b4a40099d7e9..d1d03ee90d8f 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -2568,6 +2568,7 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port, port->pps_data.max_curr = port->pps_data.req_max_curr; port->req_supply_voltage = port->pps_data.req_out_volt; port->req_current_limit = port->pps_data.req_op_curr; + power_supply_changed(port->psy); tcpm_set_state(port, SNK_TRANSITION_SINK, 0); break; case SOFT_RESET_SEND: @@ -3136,7 +3137,6 @@ static unsigned int tcpm_pd_select_pps_apdo(struct tcpm_port *port) port->pps_data.req_out_volt)); port->pps_data.req_op_curr = min(port->pps_data.max_curr, port->pps_data.req_op_curr); - power_supply_changed(port->psy); } return src_pdo; @@ -3561,8 +3561,6 @@ static void tcpm_reset_port(struct tcpm_port *port) port->sink_cap_done = false; if (port->tcpc->enable_frs) port->tcpc->enable_frs(port->tcpc, false); - - power_supply_changed(port->psy); } static void tcpm_detach(struct tcpm_port *port) From patchwork Wed Apr 7 20:07:22 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: 417153 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=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 62DD1C433B4 for ; Wed, 7 Apr 2021 20:07:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 12DE461159 for ; Wed, 7 Apr 2021 20:07:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355926AbhDGUHw (ORCPT ); Wed, 7 Apr 2021 16:07:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355911AbhDGUHt (ORCPT ); Wed, 7 Apr 2021 16:07:49 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4A20C0613D9 for ; Wed, 7 Apr 2021 13:07:35 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id d1so24963060ybj.15 for ; Wed, 07 Apr 2021 13:07:35 -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=gni+OuRztGG9vq8fyGub8QeENwXoTEQ8rz4IMi+bKtk=; b=abqPz3iC0Y6rDJvYZsAExnpkiIDKRrjm0+5nGUT9yhzRp9RfNV/jYl8B1nitNgMzqS 2ojpx0ugRHKAa9LhyqZOMHQYP9volsOw6i3w1ZDzrbXF8DR+kU0wpfRAwcPTZ66kP5cq BptQtIDLbdeflTyXLSzUbycHzfjgpjRLN8LYNDgC8e2AgElqPIdKQsLk9thqdQnssaa+ 2W6T/AoW7w3GqcW33ldQoSvUT+CRExK09TNbl1DfAY01/J4SE9DSG4XH/Hq1Ve9Njl0j lQ9PMcWh4JRRQDXKB8uByXI4h54UanF17V+kF6vEpA+RMLNvfp+f+4BGFYuLO3Zk/ojB u7uA== 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=gni+OuRztGG9vq8fyGub8QeENwXoTEQ8rz4IMi+bKtk=; b=jOeN4J/VwoD+e54oaQ9xenQflBFRe9J+WtcU9HU+yuDWBQ/da2Vfs9VQyGO4NBfyVE nrRRn7ExQ2g23o1+QvY9adjLrqmf+ik39XEi7eOfwnlT+IOy971lo/duGS2Bt9wtmFGq N4rQfov2DKC126VJkmYFE5BYHlpyII/OymZwOoOEMhQBe+GV4a0wmC7zeFnvXAx6MsHI QYdHpgjNz2es2FsSAVTIJGZsHTVJGYwEi1bIAtVmJi5p4JnPbFJ0Wk/213yb1U9oBGgg jO3Z6yh09XzbFCiTH/HUONxZna+25vmGyFKr9TSRLbEhKgL/bYKTW2z6xPJ75onPtH1O vMgA== X-Gm-Message-State: AOAM530IxflTdw2/XcS1jjBWUvP4vE+3PkbJLORYrJnsTgn1zN9tIwob rlw+PPuIIDtbBXNAwVviwV50Jd/7RQ4= X-Google-Smtp-Source: ABdhPJykren/to6+VFAK9GoVBCT+QUQhMl3sOKzPJvq9xqM77MRf7+ZLoMPrGHCn+gHxaMhr6J/5+T8Xytw= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:991:6d08:9e6d:683d]) (user=badhri job=sendgmr) by 2002:a25:d07:: with SMTP id 7mr6804424ybn.135.1617826055040; Wed, 07 Apr 2021 13:07:35 -0700 (PDT) Date: Wed, 7 Apr 2021 13:07:22 -0700 In-Reply-To: <20210407200723.1914388-1-badhri@google.com> Message-Id: <20210407200723.1914388-5-badhri@google.com> Mime-Version: 1.0 References: <20210407200723.1914388-1-badhri@google.com> X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v2 5/6] 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: linux-usb@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 --- drivers/usb/typec/tcpm/tcpm.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 770b2edd9a04..b5bed6866a2b 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,12 @@ 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 = (!port->slow_charger_loop || + (tcpm_get_current_limit(port) <= + PD_P_SNK_STDBY_MW / 5)) ? + tcpm_get_current_limit(port) : + 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 +4170,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 +5774,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 7 20:07:23 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: 417953 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 5A6CFC43470 for ; Wed, 7 Apr 2021 20:07:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 341AA61159 for ; Wed, 7 Apr 2021 20:07:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355916AbhDGUHy (ORCPT ); Wed, 7 Apr 2021 16:07:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355936AbhDGUHt (ORCPT ); Wed, 7 Apr 2021 16:07:49 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1769C0613DC for ; Wed, 7 Apr 2021 13:07:37 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id x22so25010899ybi.1 for ; Wed, 07 Apr 2021 13:07:37 -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=t6Wz/CVZhwgzgH8yLnIu+vnyKNs6ZhIxtjweGyR/2B8=; b=FSC2jYpPA82SAAkfv1hMUNBohzVcc7Th6hrXiJqSgER6+jeR4Ccx4adLo9Hn+SW1hu cwAAscw+AetobhNdNh+yBc5og9bElI6Iz/RcobSM1X19YTxv8AG8RM28QDvqCnRcaJJB fJPctp+wQlmCDQ6ck64VOXj2kGoo2OpjzosSBBzcOKNiTU4hgXUKRtGy/FFy1IND5EQ3 spJZ8YWOC+YwKmDutHXr/z/KIvVPk0kKgt0rYSQYDw+FalpkvXJszSIMmbPyaWjamQSM tbAsNyheZj1QrZoJL4TXbLmmz/7DiDZqdkq+hX5S9PdX2XG8FPduZZapDvsE0J5lPCC7 odYg== 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=t6Wz/CVZhwgzgH8yLnIu+vnyKNs6ZhIxtjweGyR/2B8=; b=V4Y/+cK1fZZdxDgBRgkBwgiGHZG0T/giqvC1/Fna1ga/iuN5yz38iYEvyBPe8xthgV Tl7F3gDf78AU+dvG7ULEEExSOyn3ilspzEnYjHpxsaZDp5ayFqPx5WrBrh8k0sE+UNhE TN8bSC1p+1aTjXB5tedrMzsm+FV2kLwAHCbfphUezO3r23rQ09b+mrGAB37KTKUjl0CM 5wlQD57VA9sxWVi1Zkk2Me9Z107kHSpjWXmjJR7l92qUOECMf2wXvICa0gV0+n+pFhfU IThQAAFK02gACgJAqkhSTloxhjZ4BmBY1LCdhT5QNyx3MLx+w42tiVJ1CFQL8HWB8mYw apvQ== X-Gm-Message-State: AOAM531DnfofywGIUWpJL51F/fFZ3l2csEaBt7VJUKKC5l/5qb+3I7bm GvhQk7YVaEp+vUXMTeVQi7QGUvkfNYY= X-Google-Smtp-Source: ABdhPJxurCs/KLCLksXagV4vQfDZRQNrdM8eLYqSSfdRv8DfRKA8DybKoHd/G9wFRtUg3C5RNhK3GIMdrrE= X-Received: from badhri.mtv.corp.google.com ([2620:15c:211:201:991:6d08:9e6d:683d]) (user=badhri job=sendgmr) by 2002:a25:5146:: with SMTP id f67mr6672249ybb.332.1617826057017; Wed, 07 Apr 2021 13:07:37 -0700 (PDT) Date: Wed, 7 Apr 2021 13:07:23 -0700 In-Reply-To: <20210407200723.1914388-1-badhri@google.com> Message-Id: <20210407200723.1914388-6-badhri@google.com> Mime-Version: 1.0 References: <20210407200723.1914388-1-badhri@google.com> X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH v2 6/6] Documentation: 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: linux-usb@vger.kernel.org To allow slow charger loops to comply to pSnkStby requirement, 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 --- .../devicetree/bindings/connector/usb-connector.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml index b6daedd62516..09ad3ad983a6 100644 --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml @@ -197,6 +197,13 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 enum: [1, 2, 3] + slow-charger-loop: + description: Allows slow charging loops to comply to pSnkStby. When set makes + the port request pSnkStby(2.5W - 5V@500mA) upon entering SNK_DISCOVERY(instead + of 3A or the 1.5A 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