From: Daniel Mack <daniel@caiaq.de>
To: linux-kernel@vger.kernel.org
Cc: Anton Vorontsov <cbou@mail.ru>,
David Woodhouse <dwmw2@infradead.org>,
Andres Salomon <dilinger@collabora.co.uk>,
Alexey Starikovskiy <astarikovskiy@suse.de>,
Len Brown <len.brown@intel.com>,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
Matt Reimer <mreimer@vpop.net>,
Evgeniy Polyakov <zbr@ioremap.net>, Tejun Heo <tj@kernel.org>
Subject: Re: [PATCH 1/3] pda_power: add support for writeable properties
Date: Fri, 7 May 2010 19:54:41 +0200 [thread overview]
Message-ID: <20100507175441.GA30801@buzzloop.caiaq.de> (raw)
In-Reply-To: <1273254733-7010-1-git-send-email-daniel@caiaq.de>
Sorry for the resend guys. My clock was skewed again, which might cause
people missing the messages. Fixed some commit logs on the way.
Sent from a tired brain, excuse typos :)
On Fri, May 07, 2010 at 07:52:11PM +0200, Daniel Mack wrote:
> This patch adds support for writeable power supply properties and
> exposes them as writeable to sysfs.
>
> A power supply implementation must implement two new function calls in
> order to use that feature:
>
> int set_property(struct power_supply *psy,
> enum power_supply_property psp,
> const union power_supply_propval *val);
>
> int property_is_writeable(struct power_supply *psy,
> enum power_supply_property psp);
>
> Signed-off-by: Daniel Mack <daniel@caiaq.de>
> Cc: Anton Vorontsov <cbou@mail.ru>
> Cc: David Woodhouse <dwmw2@infradead.org>
> Cc: Andres Salomon <dilinger@collabora.co.uk>
> Cc: Alexey Starikovskiy <astarikovskiy@suse.de>
> Cc: Len Brown <len.brown@intel.com>
> Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
> Cc: Matt Reimer <mreimer@vpop.net>
> Cc: Evgeniy Polyakov <zbr@ioremap.net>
> Cc: Tejun Heo <tj@kernel.org>
> ---
> drivers/power/power_supply_sysfs.c | 31 +++++++++++++++++++++++++++++--
> include/linux/power_supply.h | 5 +++++
> 2 files changed, 34 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c
> index 5b6e352..5cfb410 100644
> --- a/drivers/power/power_supply_sysfs.c
> +++ b/drivers/power/power_supply_sysfs.c
> @@ -31,9 +31,9 @@
>
> #define POWER_SUPPLY_ATTR(_name) \
> { \
> - .attr = { .name = #_name, .mode = 0444 }, \
> + .attr = { .name = #_name }, \
> .show = power_supply_show_property, \
> - .store = NULL, \
> + .store = power_supply_store_property, \
> }
>
> static struct device_attribute power_supply_attrs[];
> @@ -91,6 +91,25 @@ static ssize_t power_supply_show_property(struct device *dev,
> return sprintf(buf, "%d\n", value.intval);
> }
>
> +static ssize_t power_supply_store_property(struct device *dev,
> + struct device_attribute *attr,
> + const char *buf, size_t count) {
> + ssize_t ret;
> + struct power_supply *psy = dev_get_drvdata(dev);
> + const ptrdiff_t off = attr - power_supply_attrs;
> + union power_supply_propval value;
> + long long_val;
> +
> + /* TODO: support other types than int */
> + ret = strict_strtol(buf, 10, &long_val);
> + if (ret < 0)
> + return ret;
> +
> + value.intval = long_val;
> +
> + return psy->set_property(psy, off, &value);
> +}
> +
> /* Must be in the same order as POWER_SUPPLY_PROP_* */
> static struct device_attribute power_supply_attrs[] = {
> /* Properties of type `int' */
> @@ -164,6 +183,14 @@ int power_supply_create_attrs(struct power_supply *psy)
> }
>
> for (j = 0; j < psy->num_properties; j++) {
> + mode_t mode = S_IRUSR | S_IRGRP | S_IROTH;
> +
> + if (psy->property_is_writeable &&
> + psy->property_is_writeable(psy, psy->properties[j]) > 0)
> + mode |= S_IWUSR;
> +
> + power_supply_attrs[psy->properties[j]].attr.mode = mode;
> +
> rc = device_create_file(psy->dev,
> &power_supply_attrs[psy->properties[j]]);
> if (rc)
> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
> index ebd2b8f..f02f7fd 100644
> --- a/include/linux/power_supply.h
> +++ b/include/linux/power_supply.h
> @@ -144,6 +144,11 @@ struct power_supply {
> int (*get_property)(struct power_supply *psy,
> enum power_supply_property psp,
> union power_supply_propval *val);
> + int (*set_property)(struct power_supply *psy,
> + enum power_supply_property psp,
> + const union power_supply_propval *val);
> + int (*property_is_writeable)(struct power_supply *psy,
> + enum power_supply_property psp);
> void (*external_power_changed)(struct power_supply *psy);
> void (*set_charged)(struct power_supply *psy);
>
> --
> 1.6.3.3
>
next prev parent reply other threads:[~2010-05-07 17:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-07 17:52 [PATCH 1/3] pda_power: add support for writeable properties Daniel Mack
2010-05-07 17:52 ` [PATCH 2/3] power/ds2760_battery: make charge_now and charge_full_design writeable Daniel Mack
2010-05-10 9:52 ` Mark Brown
2010-05-10 13:28 ` Daniel Mack
2010-05-07 17:52 ` [PATCH 3/3] [RFC] power/ds2760_battery: use factor of 50 for rated_capacity Daniel Mack
2010-05-07 17:54 ` Daniel Mack [this message]
2010-05-10 9:48 ` [PATCH 1/3] pda_power: add support for writeable properties Mark Brown
2010-05-10 13:29 ` Daniel Mack
-- strict thread matches above, loose matches on Subject: below --
2010-05-11 16:38 Daniel Mack
2010-05-11 17:47 ` Anton Vorontsov
2010-05-11 17:58 ` Daniel Mack
2010-05-11 18:23 ` Anton Vorontsov
2010-05-11 22:28 ` Daniel Mack
2010-05-11 18:32 ` Anton Vorontsov
2010-03-23 9:06 Daniel Mack
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=20100507175441.GA30801@buzzloop.caiaq.de \
--to=daniel@caiaq.de \
--cc=astarikovskiy@suse.de \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=cbou@mail.ru \
--cc=dilinger@collabora.co.uk \
--cc=dwmw2@infradead.org \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mreimer@vpop.net \
--cc=tj@kernel.org \
--cc=zbr@ioremap.net \
/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.