From: Pavel Machek <pavel@ucw.cz>
To: Matt Ranostay <mranostay@gmail.com>
Cc: "Andrew F . Davis" <afd@ti.com>,
Sebastian Reichel <sre@kernel.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
Matt Ranostay <matt@ranostay.consulting>
Subject: Re: [PATCH 1/2] power: bq27xxx_battery: add configurable poll_interval by sysfs
Date: Fri, 7 Oct 2016 20:49:10 +0200 [thread overview]
Message-ID: <20161007184910.GF19976@amd> (raw)
In-Reply-To: <1474083775-30185-2-git-send-email-matt@ranostay.consulting>
[-- Attachment #1: Type: text/plain, Size: 3712 bytes --]
On Fri 2016-09-16 20:42:54, Matt Ranostay wrote:
> Allow the poll_interval to be runtime configurable via an sysfs entry.
> This is needed for udev control of the poll interval.
>
> Signed-off-by: Matt Ranostay <matt@ranostay.consulting>
working mail address would be nice here.
sysfs files should be documented.
Also... what is it good for?
Do you have a device that needs non-standard interval?
Pavel
> ---
> drivers/power/supply/bq27xxx_battery.c | 48 +++++++++++++++++++++++++++++++++-
> 1 file changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c
> index 3f57dd54803a..955424e10ae2 100644
> --- a/drivers/power/supply/bq27xxx_battery.c
> +++ b/drivers/power/supply/bq27xxx_battery.c
> @@ -395,6 +395,36 @@ module_param(poll_interval, uint, 0644);
> MODULE_PARM_DESC(poll_interval,
> "battery poll interval in seconds - 0 disables polling");
>
> +
> +static ssize_t show_poll_interval(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + return sprintf(buf, "%d\n", poll_interval);
> +}
> +
> +static ssize_t store_poll_interval(struct device *dev,
> + struct device_attribute *attr,
> + const char *buf, size_t size)
> +{
> + struct bq27xxx_device_info *di = dev_get_drvdata(dev);
> + int tmp = poll_interval;
> +
> + if (sscanf(buf, "%d\n", &poll_interval) != 1)
> + return -EINVAL;
> +
> + if (poll_interval < 0)
> + return -EINVAL;
> +
> + if (tmp != poll_interval) {
> + cancel_delayed_work_sync(&di->work);
> + schedule_delayed_work(&di->work, 0);
> + }
> +
> + return size;
> +}
> +
> +static DEVICE_ATTR(poll_interval, 0644, show_poll_interval, store_poll_interval);
> +
> /*
> * Common code for BQ27xxx devices
> */
> @@ -946,6 +976,7 @@ int bq27xxx_battery_setup(struct bq27xxx_device_info *di)
> {
> struct power_supply_desc *psy_desc;
> struct power_supply_config psy_cfg = { .drv_data = di, };
> + int ret;
>
> INIT_DELAYED_WORK(&di->work, bq27xxx_battery_poll);
> mutex_init(&di->lock);
> @@ -961,11 +992,19 @@ int bq27xxx_battery_setup(struct bq27xxx_device_info *di)
> psy_desc->num_properties = bq27xxx_battery_props[di->chip].size;
> psy_desc->get_property = bq27xxx_battery_get_property;
> psy_desc->external_power_changed = bq27xxx_external_power_changed;
> + dev_set_drvdata(di->dev, di);
> +
> + ret = sysfs_create_file(&di->dev->kobj, &dev_attr_poll_interval.attr);
> + if (ret) {
> + dev_err(di->dev, "failed to register poll_interval sysfs entry");
> + return ret;
> + }
>
> di->bat = power_supply_register_no_ws(di->dev, psy_desc, &psy_cfg);
> if (IS_ERR(di->bat)) {
> dev_err(di->dev, "failed to register battery\n");
> - return PTR_ERR(di->bat);
> + ret = PTR_ERR(di->bat);
> + goto err_out;
> }
>
> dev_info(di->dev, "support ver. %s enabled\n", DRIVER_VERSION);
> @@ -973,6 +1012,11 @@ int bq27xxx_battery_setup(struct bq27xxx_device_info *di)
> bq27xxx_battery_update(di);
>
> return 0;
> +
> +err_out:
> + sysfs_remove_file(&di->dev->kobj, &dev_attr_poll_interval.attr);
> +
> + return ret;
> }
> EXPORT_SYMBOL_GPL(bq27xxx_battery_setup);
>
> @@ -988,6 +1032,8 @@ void bq27xxx_battery_teardown(struct bq27xxx_device_info *di)
>
> cancel_delayed_work_sync(&di->work);
>
> + sysfs_remove_file(&di->dev->kobj, &dev_attr_poll_interval.attr);
> +
> power_supply_unregister(di->bat);
>
> mutex_destroy(&di->lock);
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
next prev parent reply other threads:[~2016-10-07 18:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-17 3:42 [PATCH 0/2] power: bq27xxx_battery: add configurable poll_interval Matt Ranostay
2016-09-17 3:42 ` [PATCH 1/2] power: bq27xxx_battery: add configurable poll_interval by sysfs Matt Ranostay
2016-09-19 19:46 ` Sebastian Reichel
2016-09-20 3:22 ` Matt Ranostay
2016-10-07 18:49 ` Pavel Machek [this message]
2016-10-24 3:08 ` Matt Ranostay
2016-10-24 8:23 ` Pavel Machek
2016-10-24 19:51 ` Pavel Machek
2016-10-24 19:55 ` Matt Ranostay
2016-09-17 3:42 ` [PATCH 2/2] power: bq27xxx_battery: allow kernel poll_interval parameter runtime update Matt Ranostay
2016-09-19 19:49 ` Sebastian Reichel
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=20161007184910.GF19976@amd \
--to=pavel@ucw.cz \
--cc=afd@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=matt@ranostay.consulting \
--cc=mranostay@gmail.com \
--cc=sre@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.