[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4540f1c2-b045-b535-1559-4d15ed60030b@google.com>
Date: Fri, 23 Jun 2017 15:12:39 -0700
From: Benson Leung <bleung@...gle.com>
To: Enric Balletbo i Serra <enric.balletbo@...labora.com>,
olof@...om.net, bleung@...omium.org, linux-kernel@...r.kernel.org
Cc: lee.jones@...aro.org, Eric Caruso <ejcaruso@...omium.org>,
Guenter Roeck <groeck@...omium.org>
Subject: Re: [PATCH RESEND 12/13] platform/chrome: cros_ec_lightbar - Add
userspace lightbar control bit to EC
Hi Enric,
Looks good.
On 05/16/2017 09:13 AM, Enric Balletbo i Serra wrote:
> From: Eric Caruso <ejcaruso@...omium.org>
>
> Some devices might want to turn off the lightbar if e.g. the
> system turns the screen off due to idleness. This prevents the
> kernel from going through its normal suspend/resume pathways.
>
> Signed-off-by: Eric Caruso <ejcaruso@...omium.org>
> Signed-off-by: Guenter Roeck <groeck@...omium.org>
> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@...labora.com>
Signed-off-by: Benson Leung <bleung@...omium.org>
Applied.
> ---
> drivers/platform/chrome/cros_ec_lightbar.c | 38 ++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/drivers/platform/chrome/cros_ec_lightbar.c b/drivers/platform/chrome/cros_ec_lightbar.c
> index 4df379d..e570c1e 100644
> --- a/drivers/platform/chrome/cros_ec_lightbar.c
> +++ b/drivers/platform/chrome/cros_ec_lightbar.c
> @@ -38,6 +38,12 @@
> /* Rate-limit the lightbar interface to prevent DoS. */
> static unsigned long lb_interval_jiffies = 50 * HZ / 1000;
>
> +/*
> + * Whether or not we have given userspace control of the lightbar.
> + * If this is true, we won't do anything during suspend/resume.
> + */
> +static bool userspace_control;
> +
> static ssize_t interval_msec_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> @@ -407,11 +413,17 @@ int lb_manual_suspend_ctrl(struct cros_ec_dev *ec, uint8_t enable)
>
> int lb_suspend(struct cros_ec_dev *ec)
> {
> + if (userspace_control)
> + return 0;
> +
> return lb_send_empty_cmd(ec, LIGHTBAR_CMD_SUSPEND);
> }
>
> int lb_resume(struct cros_ec_dev *ec)
> {
> + if (userspace_control)
> + return 0;
> +
> return lb_send_empty_cmd(ec, LIGHTBAR_CMD_RESUME);
> }
>
> @@ -528,6 +540,30 @@ static ssize_t program_store(struct device *dev, struct device_attribute *attr,
> return ret;
> }
>
> +static ssize_t userspace_control_show(struct device *dev,
> + struct device_attribute *attr,
> + char *buf)
> +{
> + return scnprintf(buf, PAGE_SIZE, "%d\n", userspace_control);
> +}
> +
> +static ssize_t userspace_control_store(struct device *dev,
> + struct device_attribute *attr,
> + const char *buf,
> + size_t count)
> +{
> + bool enable;
> + int ret;
> +
> + ret = strtobool(buf, &enable);
> + if (ret < 0)
> + return ret;
> +
> + userspace_control = enable;
> +
> + return count;
> +}
> +
> /* Module initialization */
>
> static DEVICE_ATTR_RW(interval_msec);
> @@ -536,6 +572,7 @@ static DEVICE_ATTR_WO(brightness);
> static DEVICE_ATTR_WO(led_rgb);
> static DEVICE_ATTR_RW(sequence);
> static DEVICE_ATTR_WO(program);
> +static DEVICE_ATTR_RW(userspace_control);
>
> static struct attribute *__lb_cmds_attrs[] = {
> &dev_attr_interval_msec.attr,
> @@ -544,6 +581,7 @@ static struct attribute *__lb_cmds_attrs[] = {
> &dev_attr_led_rgb.attr,
> &dev_attr_sequence.attr,
> &dev_attr_program.attr,
> + &dev_attr_userspace_control.attr,
> NULL,
> };
>
>
--
Benson Leung
Staff Software Engineer
Chrome OS Kernel
Google Inc.
bleung@...gle.com
Chromium OS Project
bleung@...omium.org
Download attachment "signature.asc" of type "application/pgp-signature" (837 bytes)
Powered by blists - more mailing lists