* [PATCH v1 0/2] usb: typec: ucsi: Recover from CrOS EC sysjump @ 2025-02-04 2:45 Jameson Thies 2025-02-04 2:45 ` [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition Jameson Thies 2025-02-04 2:45 ` [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init Jameson Thies 0 siblings, 2 replies; 8+ messages in thread From: Jameson Thies @ 2025-02-04 2:45 UTC (permalink / raw) To: ukaszb, tzungbi, linux-usb, chrome-platform Cc: bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski, Jameson Thies An EC sysjump can break communication with the cros_ec_ucsi driver by clearing any previously enabled notifications. This updates the cros_ec_ucsi driver to monitor for PD initialization events from the EC and re-enable notifications by treating the init event as a system resume. Jameson Thies (2): platform/chrome: add PD_EVENT_INIT bit definition usb: typec: ucsi: resume work after EC init drivers/usb/typec/ucsi/cros_ec_ucsi.c | 17 ++++++++++++----- include/linux/platform_data/cros_ec_commands.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b -- 2.48.1.362.g079036d154-goog ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition 2025-02-04 2:45 [PATCH v1 0/2] usb: typec: ucsi: Recover from CrOS EC sysjump Jameson Thies @ 2025-02-04 2:45 ` Jameson Thies 2025-02-04 14:35 ` Benson Leung 2025-02-05 4:27 ` Tzung-Bi Shih 2025-02-04 2:45 ` [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init Jameson Thies 1 sibling, 2 replies; 8+ messages in thread From: Jameson Thies @ 2025-02-04 2:45 UTC (permalink / raw) To: ukaszb, tzungbi, linux-usb, chrome-platform Cc: bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski, Jameson Thies Update cros_ec_commands.h to include a definition for PD_EVENT_INIT. On platforms supporting UCSI, this host event type is sent when the PPM initializes. Signed-off-by: Jameson Thies <jthies@google.com> --- include/linux/platform_data/cros_ec_commands.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index ecf290a0c98f..1f4e4f2b89bb 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -5046,6 +5046,7 @@ struct ec_response_pd_status { #define PD_EVENT_DATA_SWAP BIT(3) #define PD_EVENT_TYPEC BIT(4) #define PD_EVENT_PPM BIT(5) +#define PD_EVENT_INIT BIT(6) struct ec_response_host_event_status { uint32_t status; /* PD MCU host event status */ -- 2.48.1.362.g079036d154-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition 2025-02-04 2:45 ` [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition Jameson Thies @ 2025-02-04 14:35 ` Benson Leung 2025-02-04 15:01 ` Łukasz Bartosik 2025-02-05 4:27 ` Tzung-Bi Shih 1 sibling, 1 reply; 8+ messages in thread From: Benson Leung @ 2025-02-04 14:35 UTC (permalink / raw) To: Jameson Thies Cc: ukaszb, tzungbi, linux-usb, chrome-platform, bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski [-- Attachment #1: Type: text/plain, Size: 1104 bytes --] Hi Jameson, On Tue, Feb 04, 2025 at 02:45:58AM +0000, Jameson Thies wrote: > Update cros_ec_commands.h to include a definition for PD_EVENT_INIT. > On platforms supporting UCSI, this host event type is sent when the PPM > initializes. > > Signed-off-by: Jameson Thies <jthies@google.com> Reviewed-by: Benson Leung <bleung@chromium.org> > --- > include/linux/platform_data/cros_ec_commands.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h > index ecf290a0c98f..1f4e4f2b89bb 100644 > --- a/include/linux/platform_data/cros_ec_commands.h > +++ b/include/linux/platform_data/cros_ec_commands.h > @@ -5046,6 +5046,7 @@ struct ec_response_pd_status { > #define PD_EVENT_DATA_SWAP BIT(3) > #define PD_EVENT_TYPEC BIT(4) > #define PD_EVENT_PPM BIT(5) > +#define PD_EVENT_INIT BIT(6) > > struct ec_response_host_event_status { > uint32_t status; /* PD MCU host event status */ > -- > 2.48.1.362.g079036d154-goog > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition 2025-02-04 14:35 ` Benson Leung @ 2025-02-04 15:01 ` Łukasz Bartosik 0 siblings, 0 replies; 8+ messages in thread From: Łukasz Bartosik @ 2025-02-04 15:01 UTC (permalink / raw) To: Jameson Thies Cc: tzungbi, linux-usb, chrome-platform, bleung, heikki.krogerus, Benson Leung, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski On Tue, Feb 4, 2025 at 3:35 PM Benson Leung <bleung@google.com> wrote: > > Hi Jameson, > > On Tue, Feb 04, 2025 at 02:45:58AM +0000, Jameson Thies wrote: > > Update cros_ec_commands.h to include a definition for PD_EVENT_INIT. > > On platforms supporting UCSI, this host event type is sent when the PPM > > initializes. > > > > Signed-off-by: Jameson Thies <jthies@google.com> > > Reviewed-by: Benson Leung <bleung@chromium.org> > Reviewed-by: Łukasz Bartosik <ukaszb@chromium.org> > > --- > > include/linux/platform_data/cros_ec_commands.h | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h > > index ecf290a0c98f..1f4e4f2b89bb 100644 > > --- a/include/linux/platform_data/cros_ec_commands.h > > +++ b/include/linux/platform_data/cros_ec_commands.h > > @@ -5046,6 +5046,7 @@ struct ec_response_pd_status { > > #define PD_EVENT_DATA_SWAP BIT(3) > > #define PD_EVENT_TYPEC BIT(4) > > #define PD_EVENT_PPM BIT(5) > > +#define PD_EVENT_INIT BIT(6) > > > > struct ec_response_host_event_status { > > uint32_t status; /* PD MCU host event status */ > > -- > > 2.48.1.362.g079036d154-goog > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition 2025-02-04 2:45 ` [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition Jameson Thies 2025-02-04 14:35 ` Benson Leung @ 2025-02-05 4:27 ` Tzung-Bi Shih 1 sibling, 0 replies; 8+ messages in thread From: Tzung-Bi Shih @ 2025-02-05 4:27 UTC (permalink / raw) To: Jameson Thies Cc: ukaszb, linux-usb, chrome-platform, bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski On Tue, Feb 04, 2025 at 02:45:58AM +0000, Jameson Thies wrote: > Update cros_ec_commands.h to include a definition for PD_EVENT_INIT. > On platforms supporting UCSI, this host event type is sent when the PPM > initializes. > > Signed-off-by: Jameson Thies <jthies@google.com> Acked-by: Tzung-Bi Shih <tzungbi@kernel.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init 2025-02-04 2:45 [PATCH v1 0/2] usb: typec: ucsi: Recover from CrOS EC sysjump Jameson Thies 2025-02-04 2:45 ` [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition Jameson Thies @ 2025-02-04 2:45 ` Jameson Thies 2025-02-04 14:34 ` Benson Leung 1 sibling, 1 reply; 8+ messages in thread From: Jameson Thies @ 2025-02-04 2:45 UTC (permalink / raw) To: ukaszb, tzungbi, linux-usb, chrome-platform Cc: bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski, Jameson Thies 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> --- drivers/usb/typec/ucsi/cros_ec_ucsi.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/usb/typec/ucsi/cros_ec_ucsi.c b/drivers/usb/typec/ucsi/cros_ec_ucsi.c index c605c8616726..5f17fcbda059 100644 --- a/drivers/usb/typec/ucsi/cros_ec_ucsi.c +++ b/drivers/usb/typec/ucsi/cros_ec_ucsi.c @@ -205,12 +205,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; } -- 2.48.1.362.g079036d154-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init 2025-02-04 2:45 ` [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init Jameson Thies @ 2025-02-04 14:34 ` Benson Leung 2025-02-04 15:12 ` Łukasz Bartosik 0 siblings, 1 reply; 8+ messages in thread From: Benson Leung @ 2025-02-04 14:34 UTC (permalink / raw) To: Jameson Thies Cc: ukaszb, tzungbi, linux-usb, chrome-platform, bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski [-- Attachment #1: Type: text/plain, Size: 1724 bytes --] Hi Jameson, On Tue, Feb 04, 2025 at 02:45:59AM +0000, Jameson Thies wrote: > 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: Benson Leung <bleung@chromium.org> > --- > drivers/usb/typec/ucsi/cros_ec_ucsi.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/drivers/usb/typec/ucsi/cros_ec_ucsi.c b/drivers/usb/typec/ucsi/cros_ec_ucsi.c > index c605c8616726..5f17fcbda059 100644 > --- a/drivers/usb/typec/ucsi/cros_ec_ucsi.c > +++ b/drivers/usb/typec/ucsi/cros_ec_ucsi.c > @@ -205,12 +205,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; > } > -- > 2.48.1.362.g079036d154-goog > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init 2025-02-04 14:34 ` Benson Leung @ 2025-02-04 15:12 ` Łukasz Bartosik 0 siblings, 0 replies; 8+ messages in thread From: Łukasz Bartosik @ 2025-02-04 15:12 UTC (permalink / raw) To: Jameson Thies Cc: tzungbi, linux-usb, chrome-platform, bleung, heikki.krogerus, gregkh, dmitry.baryshkov, abhishekpandit, akuchynski, Benson Leung On Tue, Feb 4, 2025 at 3:34 PM Benson Leung <bleung@google.com> wrote: > > Hi Jameson, > > On Tue, Feb 04, 2025 at 02:45:59AM +0000, Jameson Thies wrote: > > 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: Benson Leung <bleung@chromium.org> > Reviewed-by: Łukasz Bartosik <ukaszb@chromium.org> > > --- > > drivers/usb/typec/ucsi/cros_ec_ucsi.c | 17 ++++++++++++----- > > 1 file changed, 12 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/usb/typec/ucsi/cros_ec_ucsi.c b/drivers/usb/typec/ucsi/cros_ec_ucsi.c > > index c605c8616726..5f17fcbda059 100644 > > --- a/drivers/usb/typec/ucsi/cros_ec_ucsi.c > > +++ b/drivers/usb/typec/ucsi/cros_ec_ucsi.c > > @@ -205,12 +205,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; > > } > > -- > > 2.48.1.362.g079036d154-goog > > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-02-05 4:27 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-04 2:45 [PATCH v1 0/2] usb: typec: ucsi: Recover from CrOS EC sysjump Jameson Thies 2025-02-04 2:45 ` [PATCH v1 1/2] platform/chrome: add PD_EVENT_INIT bit definition Jameson Thies 2025-02-04 14:35 ` Benson Leung 2025-02-04 15:01 ` Łukasz Bartosik 2025-02-05 4:27 ` Tzung-Bi Shih 2025-02-04 2:45 ` [PATCH v1 2/2] usb: typec: ucsi: resume work after EC init Jameson Thies 2025-02-04 14:34 ` Benson Leung 2025-02-04 15:12 ` Łukasz Bartosik
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox