Linux USB
 help / color / mirror / Atom feed
* [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected
@ 2025-10-17  0:00 Jameson Thies
  2025-10-17  0:24 ` Kenneth Crudup
  2025-10-17  0:26 ` Kenneth Crudup
  0 siblings, 2 replies; 4+ messages in thread
From: Jameson Thies @ 2025-10-17  0:00 UTC (permalink / raw)
  To: heikki.krogerus, linux-usb, linux-kernel
  Cc: dmitry.baryshkov, bleung, gregkh, akuchynski, abhishekpandit,
	sebastian.reichel, kenny, linux-pm, stable, Jameson Thies

The ucsi_psy_get_current_max function defaults to 0.1A when it is not
clear how much current the partner device can support. But this does
not check the port is connected, and will report 0.1A max current when
nothing is connected. Update ucsi_psy_get_current_max to report 0A when
there is no connection.

Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default")
Signed-off-by: Jameson Thies <jthies@google.com>
Reviewed-by: Benson Leung <bleung@chromium.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
 drivers/usb/typec/ucsi/psy.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/usb/typec/ucsi/psy.c b/drivers/usb/typec/ucsi/psy.c
index 62a9d68bb66d..8ae900c8c132 100644
--- a/drivers/usb/typec/ucsi/psy.c
+++ b/drivers/usb/typec/ucsi/psy.c
@@ -145,6 +145,11 @@ static int ucsi_psy_get_current_max(struct ucsi_connector *con,
 {
 	u32 pdo;
 
+	if (!UCSI_CONSTAT(con, CONNECTED)) {
+		val->intval = 0;
+		return 0;
+	}
+
 	switch (UCSI_CONSTAT(con, PWR_OPMODE)) {
 	case UCSI_CONSTAT_PWR_OPMODE_PD:
 		if (con->num_pdos > 0) {

base-commit: e40b984b6c4ce3f80814f39f86f87b2a48f2e662
-- 
2.51.0.858.gf9c4a03a3a-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected
  2025-10-17  0:00 [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected Jameson Thies
@ 2025-10-17  0:24 ` Kenneth Crudup
  2025-10-17  0:26 ` Kenneth Crudup
  1 sibling, 0 replies; 4+ messages in thread
From: Kenneth Crudup @ 2025-10-17  0:24 UTC (permalink / raw)
  To: Jameson Thies, heikki.krogerus, linux-usb, linux-kernel,
	Kenneth C
  Cc: dmitry.baryshkov, bleung, gregkh, akuchynski, abhishekpandit,
	sebastian.reichel, linux-pm, stable


Tested-By: Kenneth R. Crudup <kenny@panix.com>

On 10/16/25 17:00, Jameson Thies wrote:
> The ucsi_psy_get_current_max function defaults to 0.1A when it is not
> clear how much current the partner device can support. But this does
> not check the port is connected, and will report 0.1A max current when
> nothing is connected. Update ucsi_psy_get_current_max to report 0A when
> there is no connection.
> 
> Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default")
> Signed-off-by: Jameson Thies <jthies@google.com>
> Reviewed-by: Benson Leung <bleung@chromium.org>
> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
>   drivers/usb/typec/ucsi/psy.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/typec/ucsi/psy.c b/drivers/usb/typec/ucsi/psy.c
> index 62a9d68bb66d..8ae900c8c132 100644
> --- a/drivers/usb/typec/ucsi/psy.c
> +++ b/drivers/usb/typec/ucsi/psy.c
> @@ -145,6 +145,11 @@ static int ucsi_psy_get_current_max(struct ucsi_connector *con,
>   {
>   	u32 pdo;
>   
> +	if (!UCSI_CONSTAT(con, CONNECTED)) {
> +		val->intval = 0;
> +		return 0;
> +	}
> +
>   	switch (UCSI_CONSTAT(con, PWR_OPMODE)) {
>   	case UCSI_CONSTAT_PWR_OPMODE_PD:
>   		if (con->num_pdos > 0) {
> 
> base-commit: e40b984b6c4ce3f80814f39f86f87b2a48f2e662

-- 
Kenneth R. Crudup / Sr. SW Engineer, Scott County Consulting, Orange 
County CA


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected
  2025-10-17  0:00 [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected Jameson Thies
  2025-10-17  0:24 ` Kenneth Crudup
@ 2025-10-17  0:26 ` Kenneth Crudup
  2025-10-17 20:48   ` Jameson Thies
  1 sibling, 1 reply; 4+ messages in thread
From: Kenneth Crudup @ 2025-10-17  0:26 UTC (permalink / raw)
  To: Jameson Thies, heikki.krogerus, linux-usb, linux-kernel,
	Kenneth C
  Cc: dmitry.baryshkov, bleung, gregkh, akuchynski, abhishekpandit,
	sebastian.reichel, linux-pm, stable


I wonder if this is the reason my (Kubuntu 25.04, FWIW) system will 
sometimes show the battery icon as "Charging" even when it's discharging 
(or nothing is plugged into either USB-C port)?

-Kenny

On 10/16/25 17:00, Jameson Thies wrote:
> The ucsi_psy_get_current_max function defaults to 0.1A when it is not
> clear how much current the partner device can support. But this does
> not check the port is connected, and will report 0.1A max current when
> nothing is connected. Update ucsi_psy_get_current_max to report 0A when
> there is no connection.
> 
> Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default")
> Signed-off-by: Jameson Thies <jthies@google.com>
> Reviewed-by: Benson Leung <bleung@chromium.org>
> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
>   drivers/usb/typec/ucsi/psy.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/typec/ucsi/psy.c b/drivers/usb/typec/ucsi/psy.c
> index 62a9d68bb66d..8ae900c8c132 100644
> --- a/drivers/usb/typec/ucsi/psy.c
> +++ b/drivers/usb/typec/ucsi/psy.c
> @@ -145,6 +145,11 @@ static int ucsi_psy_get_current_max(struct ucsi_connector *con,
>   {
>   	u32 pdo;
>   
> +	if (!UCSI_CONSTAT(con, CONNECTED)) {
> +		val->intval = 0;
> +		return 0;
> +	}
> +
>   	switch (UCSI_CONSTAT(con, PWR_OPMODE)) {
>   	case UCSI_CONSTAT_PWR_OPMODE_PD:
>   		if (con->num_pdos > 0) {
> 
> base-commit: e40b984b6c4ce3f80814f39f86f87b2a48f2e662

-- 
Kenneth R. Crudup / Sr. SW Engineer, Scott County Consulting, Orange 
County CA


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected
  2025-10-17  0:26 ` Kenneth Crudup
@ 2025-10-17 20:48   ` Jameson Thies
  0 siblings, 0 replies; 4+ messages in thread
From: Jameson Thies @ 2025-10-17 20:48 UTC (permalink / raw)
  To: Kenneth Crudup
  Cc: heikki.krogerus, linux-usb, linux-kernel, dmitry.baryshkov,
	bleung, gregkh, akuchynski, abhishekpandit, sebastian.reichel,
	linux-pm, stable

> Rule: add the tag "Cc: stable@vger.kernel.org" in the sign-off area to have the patch automatically included in the stable tree.
> Subject: [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected
> Link: https://lore.kernel.org/stable/20251017000051.2094101-1-jthies%40google.com

My mistake, I'll send up a v2 adding the appropriate CCs.

> I wonder if this is the reason my (Kubuntu 25.04, FWIW) system will
> sometimes show the battery icon as "Charging" even when it's discharging
> (or nothing is plugged into either USB-C port)?

The update to set max current to 0.1A for BC and default USB operation
landed only a couple months ago. If the battery icon issue is a recent
regression, it's definitely possible.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-10-17 20:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-17  0:00 [PATCH] usb: typec: ucsi: psy: Set max current to zero when disconnected Jameson Thies
2025-10-17  0:24 ` Kenneth Crudup
2025-10-17  0:26 ` Kenneth Crudup
2025-10-17 20:48   ` Jameson Thies

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox