[PATCH 0/2] UCSI race condition resulting in wrong port state

From: Benjamin Berg
Date: Fri Oct 09 2020 - 10:41:07 EST


From: Benjamin Berg <bberg@xxxxxxxxxx>

Hi all,

so, I kept running in an issue where the UCSI port information was saying
that power was being delivered (online: 1), while no cable was attached.

The core of the problem is that there are scenarios where UCSI change
notifications are lost. This happens because querying the changes that
happened is done using the GET_CONNECTOR_STATUS command while clearing the
bitfield happens from the separate ACK command. Any change in between will
be lost.

Note that the problem may be almost invisible in the UI as e.g. GNOME will
still show the battery as discharging. But some policies like automatic
suspend may be applied incorrectly.

Cc: Hans de Goede <hdegoede@xxxxxxxxxx>
Cc: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>

Benjamin Berg (2):
usb: typec: ucsi: acpi: Always decode connector change information
usb: typec: ucsi: Work around PPM losing change information

drivers/usb/typec/ucsi/ucsi.c | 125 ++++++++++++++++++++++++-----
drivers/usb/typec/ucsi/ucsi.h | 2 +
drivers/usb/typec/ucsi/ucsi_acpi.c | 5 +-
3 files changed, 110 insertions(+), 22 deletions(-)

--
2.26.2