Messages in this thread | | | From | Daisuke Nojiri <> | Date | Tue, 29 Aug 2023 10:46:19 -0700 | Subject | Re: [PATCH] cros_pchg: Sync port status on resume |
| |
Hi Sebastian. Friendly ping. Any progress on this? Thanks,
On Mon, May 8, 2023 at 9:37 AM Sebastian Reichel <sebastian.reichel@collabora.com> wrote: > > Hi, > > On Mon, Apr 17, 2023 at 03:16:10PM -0700, Daisuke Nojiri wrote: > > When a stylus is removed (or attached) during suspend, the device detach > > (or attach) events can be lost. This patch makes the peripheral device > > charge driver retrieve the latest status from the EC on resume. > > > > BUG=b:276414488 > > TEST=Redrix > > > > Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> > > --- > > Thanks, queued. > > -- Sebastian > > > .../power/supply/cros_peripheral_charger.c | 25 ++++++++++++++++--- > > 1 file changed, 22 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/power/supply/cros_peripheral_charger.c b/drivers/power/supply/cros_peripheral_charger.c > > index 1379afd9698d..a204f2355be4 100644 > > --- a/drivers/power/supply/cros_peripheral_charger.c > > +++ b/drivers/power/supply/cros_peripheral_charger.c > > @@ -227,8 +227,7 @@ static int cros_pchg_get_prop(struct power_supply *psy, > > return 0; > > } > > > > -static int cros_pchg_event(const struct charger_data *charger, > > - unsigned long host_event) > > +static int cros_pchg_event(const struct charger_data *charger) > > { > > int i; > > > > @@ -256,7 +255,7 @@ static int cros_ec_notify(struct notifier_block *nb, > > if (!(host_event & EC_MKBP_PCHG_DEVICE_EVENT)) > > return NOTIFY_DONE; > > > > - return cros_pchg_event(charger, host_event); > > + return cros_pchg_event(charger); > > } > > > > static int cros_pchg_probe(struct platform_device *pdev) > > @@ -281,6 +280,8 @@ static int cros_pchg_probe(struct platform_device *pdev) > > charger->ec_dev = ec_dev; > > charger->ec_device = ec_device; > > > > + platform_set_drvdata(pdev, charger); > > + > > ret = cros_pchg_port_count(charger); > > if (ret <= 0) { > > /* > > @@ -349,9 +350,27 @@ static int cros_pchg_probe(struct platform_device *pdev) > > return 0; > > } > > > > +#ifdef CONFIG_PM_SLEEP > > +static int __maybe_unused cros_pchg_resume(struct device *dev) > > +{ > > + struct charger_data *charger = dev_get_drvdata(dev); > > + > > + /* > > + * Sync all ports on resume in case reports from EC are lost during > > + * the last suspend. > > + */ > > + cros_pchg_event(charger); > > + > > + return 0; > > +} > > +#endif > > + > > +static SIMPLE_DEV_PM_OPS(cros_pchg_pm_ops, NULL, cros_pchg_resume); > > + > > static struct platform_driver cros_pchg_driver = { > > .driver = { > > .name = DRV_NAME, > > + .pm = &cros_pchg_pm_ops, > > }, > > .probe = cros_pchg_probe > > }; > > -- > > 2.39.2 > >
| |