mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 04:23:35 +02:00
usb: typec: ucsi: resume work after EC init
A manual EC sysjump will restart the PPM and break communication with the UCSI driver by disabling notifications in the initial PPM state. Update cros_ec_ucsi to listen for PPM init events and treat them as a system resume to re-establish communication with the PPM (ChromeOS EC). Signed-off-by: Jameson Thies <jthies@google.com> Reviewed-by: Łukasz Bartosik <ukaszb@chromium.org> Reviewed-by: Benson Leung <bleung@chromium.org> Link: https://lore.kernel.org/r/20250204024600.4138776-3-jthies@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dcba69711f
commit
7f7283183c
|
|
@ -206,12 +206,19 @@ static int cros_ucsi_event(struct notifier_block *nb,
|
|||
{
|
||||
struct cros_ucsi_data *udata = container_of(nb, struct cros_ucsi_data, nb);
|
||||
|
||||
if (!(host_event & PD_EVENT_PPM))
|
||||
return NOTIFY_OK;
|
||||
if (host_event & PD_EVENT_INIT) {
|
||||
/* Late init event received from ChromeOS EC. Treat this as a
|
||||
* system resume to re-enable communication with the PPM.
|
||||
*/
|
||||
dev_dbg(udata->dev, "Late PD init received\n");
|
||||
ucsi_resume(udata->ucsi);
|
||||
}
|
||||
|
||||
dev_dbg(udata->dev, "UCSI notification received\n");
|
||||
flush_work(&udata->work);
|
||||
schedule_work(&udata->work);
|
||||
if (host_event & PD_EVENT_PPM) {
|
||||
dev_dbg(udata->dev, "UCSI notification received\n");
|
||||
flush_work(&udata->work);
|
||||
schedule_work(&udata->work);
|
||||
}
|
||||
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user