All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthias Kaehlcke <mka@chromium.org>
To: Enric Balletbo Serra <eballetbo@gmail.com>
Cc: MyungJoo Ham <myungjoo.ham@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Linux PM list <linux-pm@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Brian Norris <briannorris@chromium.org>,
	Douglas Anderson <dianders@chromium.org>
Subject: Re: [PATCH 11/11] misc/throttler: Add Chrome OS EC throttler
Date: Thu, 31 May 2018 10:33:31 -0700	[thread overview]
Message-ID: <20180531173331.GA88063@google.com> (raw)
In-Reply-To: <CAFqH_53iMhvq+6NXoXu50sD=PuXBf-2_D3K1Mf+iggLeGSu_mg@mail.gmail.com>

Hi Enric,

thanks for the review!

I'll address your comments in the next revision.

On Thu, May 31, 2018 at 11:05:09AM +0200, Enric Balletbo Serra wrote:
> Hi Matthias,
> 
> The patch looks good to me, just three minor comments to be more
> coherent with other cros-ec drivers.
> 
> 2018-05-25 22:30 GMT+02:00 Matthias Kaehlcke <mka@chromium.org>:
> > The driver subscribes to throttling events from the Chrome OS
> > embedded controller and enables/disables system throttling based
> > on these events.
> >
> > Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
> > ---
> >  drivers/misc/throttler/Kconfig             |  15 +++
> >  drivers/misc/throttler/Makefile            |   1 +
> >  drivers/misc/throttler/cros_ec_throttler.c | 122 +++++++++++++++++++++
> >  3 files changed, 138 insertions(+)
> >  create mode 100644 drivers/misc/throttler/cros_ec_throttler.c
> >
> > diff --git a/drivers/misc/throttler/Kconfig b/drivers/misc/throttler/Kconfig
> > index ef8388f6bc0a..652b6817b75c 100644
> > --- a/drivers/misc/throttler/Kconfig
> > +++ b/drivers/misc/throttler/Kconfig
> > @@ -11,3 +11,18 @@ menuconfig THROTTLER
> >           Note that you also need a event monitor module usually called
> >           *_throttler.
> >
> > +if THROTTLER
> > +
> > +config CROS_EC_THROTTLER
> > +       tristate "Throttler event monitor for the Chrome OS Embedded Controller"
> 
> s/Chrome OS/ChromeOS/ This is how other cros-ec drivers refer to the
> embedded controller, so will be good if you could maintain this
> denomination.
> 
> > +       default n
> > +       depends on MFD_CROS_EC
> > +       ---help---
> > +         This driver adds support to throttle the system in reaction to
> > +         Chrome OS EC events.
> > +
> 
> ditto
> 
> > +         To compile this driver as a module, choose M here: the
> > +         module will be called cros_ec_throttler.
> > +
> > +endif # THROTTLER
> > +
> > diff --git a/drivers/misc/throttler/Makefile b/drivers/misc/throttler/Makefile
> > index c8d920cee315..d9b2a77dabc9 100644
> > --- a/drivers/misc/throttler/Makefile
> > +++ b/drivers/misc/throttler/Makefile
> > @@ -1 +1,2 @@
> >  obj-$(CONFIG_THROTTLER)                += core.o
> > +obj-$(CONFIG_CROS_EC_THROTTLER)        += cros_ec_throttler.o
> > diff --git a/drivers/misc/throttler/cros_ec_throttler.c b/drivers/misc/throttler/cros_ec_throttler.c
> > new file mode 100644
> > index 000000000000..ea6bc002d49c
> > --- /dev/null
> > +++ b/drivers/misc/throttler/cros_ec_throttler.c
> > @@ -0,0 +1,122 @@
> > +/*
> > + * Driver for throttling triggered by EC events.
> > + *
> > + * Copyright (C) 2018 Google, Inc.
> > + *
> > + * This software is licensed under the terms of the GNU General Public
> > + * License version 2, as published by the Free Software Foundation, and
> > + * may be copied, distributed, and modified under those terms.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + */
> > +
> 
> Replace this for the SPDX header format
> 
> // SPDX-License-Identifier: GPL-2.0+
> // Driver for throttling triggered by EC events.
> //
> // Copyright (C) 2018 Google, Inc.
> // Author: Matthias Kaehlcke <mka@chromium.org>
> 
> > +#include <linux/kernel.h>
> > +#include <linux/mfd/cros_ec.h>
> > +#include <linux/module.h>
> > +#include <linux/notifier.h>
> > +#include <linux/of.h>
> > +#include <linux/of_platform.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/throttler.h>
> > +
> > +struct cros_ec_throttler {
> > +       struct cros_ec_device *ec;
> > +       struct throttler *throttler;
> > +       struct notifier_block nb;
> > +};
> > +
> > +static int cros_ec_throttler_event(struct notifier_block *nb,
> > +       unsigned long queued_during_suspend, void *_notify)
> > +{
> > +       struct cros_ec_throttler *cte =
> > +               container_of(nb, struct cros_ec_throttler, nb);
> 
> nit: Better add a define here instead of split the line like this ?
> 
> > +       u32 host_event;
> > +
> > +       host_event = cros_ec_get_host_event(cte->ec);
> > +       if (host_event & EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START)) {
> > +               throttler_set_level(cte->throttler, 1);
> > +
> > +               return NOTIFY_OK;
> > +       } else if (host_event & EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP)) {
> > +               throttler_set_level(cte->throttler, 0);
> > +
> > +               return NOTIFY_OK;
> > +       }
> > +
> > +       return NOTIFY_DONE;
> > +}
> > +
> > +static int cros_ec_throttler_probe(struct platform_device *pdev)
> > +{
> > +       struct cros_ec_throttler *cte;
> > +       struct device *dev = &pdev->dev;
> > +       struct device_node *np = pdev->dev.of_node;
> > +       int ret;
> > +
> > +       if (!np) {
> > +               /* should never happen */
> > +               return -EINVAL;
> > +       }
> > +
> > +       cte = devm_kzalloc(dev, sizeof(*cte), GFP_KERNEL);
> > +       if (!cte)
> > +               return -ENOMEM;
> > +
> > +       cte->ec = dev_get_drvdata(pdev->dev.parent);
> > +
> > +       cte->throttler = throttler_setup(dev);
> > +       if (IS_ERR(cte->throttler))
> > +               return PTR_ERR(cte->throttler);
> > +
> > +       dev_set_drvdata(dev, cte);
> > +
> > +       cte->nb.notifier_call = cros_ec_throttler_event;
> > +       ret = blocking_notifier_chain_register(&cte->ec->event_notifier,
> > +                                              &cte->nb);
> > +       if (ret < 0) {
> > +               dev_err(dev, "failed to register notifier\n");
> > +               throttler_teardown(cte->throttler);
> > +               return ret;
> > +       }
> > +
> > +       return 0;
> > +}
> > +
> > +static int cros_ec_throttler_remove(struct platform_device *pdev)
> > +{
> > +       struct cros_ec_throttler *cte = platform_get_drvdata(pdev);
> > +
> > +       blocking_notifier_chain_unregister(&cte->ec->event_notifier,
> > +                                          &cte->nb);
> > +
> > +       throttler_teardown(cte->throttler);
> > +
> > +       return 0;
> > +}
> > +
> > +#ifdef CONFIG_OF
> > +static const struct of_device_id cros_ec_throttler_of_match[] = {
> > +        { .compatible = "google,cros-ec-throttler" },
> > +        { /* sentinel */ }
> > +};
> > +MODULE_DEVICE_TABLE(of, cros_ec_throttler_of_match);
> > +#endif /* CONFIG_OF */
> > +
> > +static struct platform_driver cros_ec_throttler_driver = {
> > +       .driver = {
> > +               .name = "cros-ec-throttler",
> > +               .of_match_table = of_match_ptr(cros_ec_throttler_of_match),
> > +       },
> > +       .probe          = cros_ec_throttler_probe,
> > +       .remove         = cros_ec_throttler_remove,
> > +};
> > +
> > +module_platform_driver(cros_ec_throttler_driver);
> > +
> > +MODULE_LICENSE("GPL");
> > +MODULE_AUTHOR("Matthias Kaehlcke <mka@chromium.org>");
> > +MODULE_DESCRIPTION("Chrome OS EC Throttler");
> 
> s/Chrome OS/ChromeOS/
> 
> >
> 
> Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> 
> Thanks,
>   Enric

      reply	other threads:[~2018-05-31 17:33 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-25 20:30 [PATCH 00/11] Add throttler driver for non-thermal throttling Matthias Kaehlcke
2018-05-25 20:30 ` [PATCH 01/11] PM / devfreq: Init user limits from OPP limits, not viceversa Matthias Kaehlcke
2018-05-28  5:26   ` Chanwoo Choi
2018-05-29 18:06     ` Matthias Kaehlcke
2018-05-25 20:30 ` [PATCH 02/11] PM / devfreq: Fix handling of min/max_freq == 0 Matthias Kaehlcke
2018-05-28  3:59   ` MyungJoo Ham
2018-05-28  3:59     ` MyungJoo Ham
2018-05-28  6:37   ` Chanwoo Choi
2018-05-29 18:57     ` Matthias Kaehlcke
2018-05-30  8:04       ` Chanwoo Choi
2018-05-30 21:13         ` Matthias Kaehlcke
2018-06-05  9:40           ` Chanwoo Choi
2018-05-25 20:30 ` [PATCH 03/11] PM / devfreq: Remove check for df->max_freq == 0 from governors Matthias Kaehlcke
2018-05-28  4:51   ` MyungJoo Ham
2018-05-28  4:51     ` MyungJoo Ham
2018-05-28  5:27   ` Chanwoo Choi
2018-05-25 20:30 ` [PATCH 04/11] PM / devfreq: Remove redundant frequency adjustment " Matthias Kaehlcke
2018-05-28  4:57   ` MyungJoo Ham
2018-05-28  4:57     ` MyungJoo Ham
2018-05-28  5:36   ` Chanwoo Choi
2018-05-25 20:30 ` [PATCH 05/11] PM / devfreq: governors: Return device frequency limits instead of user limits Matthias Kaehlcke
2018-05-28  5:04   ` MyungJoo Ham
2018-05-28  5:04     ` MyungJoo Ham
2018-05-29 19:32     ` Matthias Kaehlcke
2018-05-28  6:56   ` Chanwoo Choi
2018-05-25 20:30 ` [PATCH 06/11] PM / devfreq: Add struct devfreq_policy Matthias Kaehlcke
2018-05-25 20:30 ` [PATCH 07/11] PM / devfreg: Add support policy notifiers Matthias Kaehlcke
2018-05-28  5:19   ` MyungJoo Ham
2018-05-28  5:19     ` MyungJoo Ham
2018-05-29 20:02     ` Matthias Kaehlcke
2018-05-25 20:30 ` [PATCH 08/11] PM / devfreq: Make update_devfreq() public Matthias Kaehlcke
2018-05-28  5:24   ` MyungJoo Ham
2018-05-28  5:24     ` MyungJoo Ham
2018-05-25 20:30 ` [PATCH 09/11] misc: throttler: Add core support for non-thermal throttling Matthias Kaehlcke
2018-05-28  7:32   ` Chanwoo Choi
2018-05-29 20:57     ` Matthias Kaehlcke
2018-05-30  8:08       ` Chanwoo Choi
2018-05-28  8:08   ` Greg Kroah-Hartman
2018-05-29 21:30     ` Matthias Kaehlcke
2018-05-25 20:30 ` [PATCH 10/11] dt-bindings: misc: add bindings for throttler Matthias Kaehlcke
2018-05-31 16:31   ` Rob Herring
2018-05-31 18:34     ` Matthias Kaehlcke
2018-05-31 20:04       ` Rob Herring
2018-05-31 21:10         ` Matthias Kaehlcke
2018-05-25 20:30 ` [PATCH 11/11] misc/throttler: Add Chrome OS EC throttler Matthias Kaehlcke
2018-05-31  9:05   ` Enric Balletbo Serra
2018-05-31 17:33     ` Matthias Kaehlcke [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180531173331.GA88063@google.com \
    --to=mka@chromium.org \
    --cc=arnd@arndb.de \
    --cc=briannorris@chromium.org \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=eballetbo@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.