2019-08-14 08:24:04

by Yilun Lin

[permalink] [raw]
Subject: [PATCH] platform/chrome: cros_ec_rpmsg: Add host command AP sleep state support

Add EC host command to inform EC of AP suspend/resume status.

Signed-off-by: Yilun Lin <[email protected]>
---

drivers/platform/chrome/cros_ec_rpmsg.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/drivers/platform/chrome/cros_ec_rpmsg.c b/drivers/platform/chrome/cros_ec_rpmsg.c
index 5d3fb2abad1d..6f34fe629e2c 100644
--- a/drivers/platform/chrome/cros_ec_rpmsg.c
+++ b/drivers/platform/chrome/cros_ec_rpmsg.c
@@ -236,6 +236,25 @@ static void cros_ec_rpmsg_remove(struct rpmsg_device *rpdev)
cancel_work_sync(&ec_rpmsg->host_event_work);
}

+#ifdef CONFIG_PM_SLEEP
+static int cros_ec_rpmsg_suspend(struct device *dev)
+{
+ struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
+
+ return cros_ec_suspend(ec_dev);
+}
+
+static int cros_ec_rpmsg_resume(struct device *dev)
+{
+ struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
+
+ return cros_ec_resume(ec_dev);
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(cros_ec_rpmsg_pm_ops, cros_ec_rpmsg_suspend,
+ cros_ec_rpmsg_resume);
+
static const struct of_device_id cros_ec_rpmsg_of_match[] = {
{ .compatible = "google,cros-ec-rpmsg", },
{ }
@@ -246,6 +265,7 @@ static struct rpmsg_driver cros_ec_driver_rpmsg = {
.drv = {
.name = "cros-ec-rpmsg",
.of_match_table = cros_ec_rpmsg_of_match,
+ .pm = &cros_ec_rpmsg_pm_ops,
},
.probe = cros_ec_rpmsg_probe,
.remove = cros_ec_rpmsg_remove,
--
2.23.0.rc1.153.gdeed80330f-goog


2019-08-23 12:51:25

by Enric Balletbo i Serra

[permalink] [raw]
Subject: Re: [PATCH] platform/chrome: cros_ec_rpmsg: Add host command AP sleep state support

Hi,

On 14/8/19 10:17, Yilun Lin wrote:
> Add EC host command to inform EC of AP suspend/resume status.
>
> Signed-off-by: Yilun Lin <[email protected]>

The patch looks good to me but as I don't have the hardware to test this, could
I get a Tested-by Pi-Hsun if possible before queuing in chrome-platform-5.4

Thanks,
Enric

> ---
>
> drivers/platform/chrome/cros_ec_rpmsg.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/platform/chrome/cros_ec_rpmsg.c b/drivers/platform/chrome/cros_ec_rpmsg.c
> index 5d3fb2abad1d..6f34fe629e2c 100644
> --- a/drivers/platform/chrome/cros_ec_rpmsg.c
> +++ b/drivers/platform/chrome/cros_ec_rpmsg.c
> @@ -236,6 +236,25 @@ static void cros_ec_rpmsg_remove(struct rpmsg_device *rpdev)
> cancel_work_sync(&ec_rpmsg->host_event_work);
> }
>
> +#ifdef CONFIG_PM_SLEEP
> +static int cros_ec_rpmsg_suspend(struct device *dev)
> +{
> + struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
> +
> + return cros_ec_suspend(ec_dev);
> +}
> +
> +static int cros_ec_rpmsg_resume(struct device *dev)
> +{
> + struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
> +
> + return cros_ec_resume(ec_dev);
> +}
> +#endif
> +
> +static SIMPLE_DEV_PM_OPS(cros_ec_rpmsg_pm_ops, cros_ec_rpmsg_suspend,
> + cros_ec_rpmsg_resume);
> +
> static const struct of_device_id cros_ec_rpmsg_of_match[] = {
> { .compatible = "google,cros-ec-rpmsg", },
> { }
> @@ -246,6 +265,7 @@ static struct rpmsg_driver cros_ec_driver_rpmsg = {
> .drv = {
> .name = "cros-ec-rpmsg",
> .of_match_table = cros_ec_rpmsg_of_match,
> + .pm = &cros_ec_rpmsg_pm_ops,
> },
> .probe = cros_ec_rpmsg_probe,
> .remove = cros_ec_rpmsg_remove,
>

2019-08-27 04:04:13

by Pi-Hsun Shih

[permalink] [raw]
Subject: Re: [PATCH] platform/chrome: cros_ec_rpmsg: Add host command AP sleep state support

Tested that with this patch, SCP does receive host command from AP
while AP goes to suspend and back.

Tested-by: Pi-Hsun Shih <[email protected]>

On Fri, Aug 23, 2019 at 3:36 AM Enric Balletbo i Serra
<[email protected]> wrote:
>
> Hi,
>
> On 14/8/19 10:17, Yilun Lin wrote:
> > Add EC host command to inform EC of AP suspend/resume status.
> >
> > Signed-off-by: Yilun Lin <[email protected]>
>
> The patch looks good to me but as I don't have the hardware to test this, could
> I get a Tested-by Pi-Hsun if possible before queuing in chrome-platform-5.4
>
> Thanks,
> Enric
>
> > ---
> >
> > drivers/platform/chrome/cros_ec_rpmsg.c | 20 ++++++++++++++++++++
> > 1 file changed, 20 insertions(+)
> >
> > diff --git a/drivers/platform/chrome/cros_ec_rpmsg.c b/drivers/platform/chrome/cros_ec_rpmsg.c
> > index 5d3fb2abad1d..6f34fe629e2c 100644
> > --- a/drivers/platform/chrome/cros_ec_rpmsg.c
> > +++ b/drivers/platform/chrome/cros_ec_rpmsg.c
> > @@ -236,6 +236,25 @@ static void cros_ec_rpmsg_remove(struct rpmsg_device *rpdev)
> > cancel_work_sync(&ec_rpmsg->host_event_work);
> > }
> >
> > +#ifdef CONFIG_PM_SLEEP
> > +static int cros_ec_rpmsg_suspend(struct device *dev)
> > +{
> > + struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
> > +
> > + return cros_ec_suspend(ec_dev);
> > +}
> > +
> > +static int cros_ec_rpmsg_resume(struct device *dev)
> > +{
> > + struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
> > +
> > + return cros_ec_resume(ec_dev);
> > +}
> > +#endif
> > +
> > +static SIMPLE_DEV_PM_OPS(cros_ec_rpmsg_pm_ops, cros_ec_rpmsg_suspend,
> > + cros_ec_rpmsg_resume);
> > +
> > static const struct of_device_id cros_ec_rpmsg_of_match[] = {
> > { .compatible = "google,cros-ec-rpmsg", },
> > { }
> > @@ -246,6 +265,7 @@ static struct rpmsg_driver cros_ec_driver_rpmsg = {
> > .drv = {
> > .name = "cros-ec-rpmsg",
> > .of_match_table = cros_ec_rpmsg_of_match,
> > + .pm = &cros_ec_rpmsg_pm_ops,
> > },
> > .probe = cros_ec_rpmsg_probe,
> > .remove = cros_ec_rpmsg_remove,
> >

2019-08-28 07:55:57

by Enric Balletbo i Serra

[permalink] [raw]
Subject: Re: [PATCH] platform/chrome: cros_ec_rpmsg: Add host command AP sleep state support

Hi,

On 14/8/19 10:17, Yilun Lin wrote:
> Add EC host command to inform EC of AP suspend/resume status.
>
> Signed-off-by: Yilun Lin <[email protected]>

Applied for 5.4. Thanks,

Enric

> ---
>
> drivers/platform/chrome/cros_ec_rpmsg.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/platform/chrome/cros_ec_rpmsg.c b/drivers/platform/chrome/cros_ec_rpmsg.c
> index 5d3fb2abad1d..6f34fe629e2c 100644
> --- a/drivers/platform/chrome/cros_ec_rpmsg.c
> +++ b/drivers/platform/chrome/cros_ec_rpmsg.c
> @@ -236,6 +236,25 @@ static void cros_ec_rpmsg_remove(struct rpmsg_device *rpdev)
> cancel_work_sync(&ec_rpmsg->host_event_work);
> }
>
> +#ifdef CONFIG_PM_SLEEP
> +static int cros_ec_rpmsg_suspend(struct device *dev)
> +{
> + struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
> +
> + return cros_ec_suspend(ec_dev);
> +}
> +
> +static int cros_ec_rpmsg_resume(struct device *dev)
> +{
> + struct cros_ec_device *ec_dev = dev_get_drvdata(dev);
> +
> + return cros_ec_resume(ec_dev);
> +}
> +#endif
> +
> +static SIMPLE_DEV_PM_OPS(cros_ec_rpmsg_pm_ops, cros_ec_rpmsg_suspend,
> + cros_ec_rpmsg_resume);
> +
> static const struct of_device_id cros_ec_rpmsg_of_match[] = {
> { .compatible = "google,cros-ec-rpmsg", },
> { }
> @@ -246,6 +265,7 @@ static struct rpmsg_driver cros_ec_driver_rpmsg = {
> .drv = {
> .name = "cros-ec-rpmsg",
> .of_match_table = cros_ec_rpmsg_of_match,
> + .pm = &cros_ec_rpmsg_pm_ops,
> },
> .probe = cros_ec_rpmsg_probe,
> .remove = cros_ec_rpmsg_remove,
>