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.
v2 changes: - added cc stable tag to commit message
Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default") Cc: stable@vger.kernel.org Signed-off-by: Jameson Thies jthies@google.com Reviewed-by: Benson Leung bleung@chromium.org Reviewed-by: Heikki Krogerus heikki.krogerus@linux.intel.com Tested-by: Kenneth R. Crudup kenny@panix.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
On Fri, Oct 17, 2025 at 10:30:53PM +0000, 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.
v2 changes:
- added cc stable tag to commit message
Note, as per the documentation, this needs to go below the --- line.
thanks,
greg k-h
On Fri, Oct 17, 2025 at 10:30:53PM +0000, 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.
v2 changes:
- added cc stable tag to commit message
Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default") Cc: stable@vger.kernel.org Signed-off-by: Jameson Thies jthies@google.com Reviewed-by: Benson Leung bleung@chromium.org Reviewed-by: Heikki Krogerus heikki.krogerus@linux.intel.com Tested-by: Kenneth R. Crudup kenny@panix.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;- }
What prevents this from changing right after checking it?
thanks,
greg k-h
Sorry for the incorrect commit message formatting. I'll resolve this in a v3 update.
What prevents this from changing right after checking it?
There is nothing that prevents the connection status from changing just after this is checked, but that is true of most of the values we are using to set power supply properties. If there is a connection change, ucsi_port_psy_changed() will be called from ucsi_handle_connector_change() in ucsi.c. This then calls power_supply_changed() which should signal to userspace or other drivers that this value needs to be reevaluated based on the updated connector status.
-Jameson
Hi,
On Fri, Oct 17, 2025 at 10:30:53PM +0000, 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.
v2 changes:
- added cc stable tag to commit message
Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default") Cc: stable@vger.kernel.org Signed-off-by: Jameson Thies jthies@google.com Reviewed-by: Benson Leung bleung@chromium.org Reviewed-by: Heikki Krogerus heikki.krogerus@linux.intel.com Tested-by: Kenneth R. Crudup kenny@panix.com
With the changelog moved under ---:
Reviewed-by: Sebastian Reichel sebastian.reichel@collabora.com
Greetings,
-- Sebastian
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
linux-stable-mirror@lists.linaro.org