From: Andrew Morton <akpm@linux-foundation.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] isl29020: ambient light sensor
Date: Fri, 22 Oct 2010 12:51:30 -0700 [thread overview]
Message-ID: <20101022125130.064710ba.akpm@linux-foundation.org> (raw)
In-Reply-To: <20101022124554.19822.58177.stgit@localhost.localdomain>
On Fri, 22 Oct 2010 13:46:07 +0100
Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> From: Kalhan Trisal <kalhan.trisal@intel.com>
>
> The LS driver will read the latest Lux measurement based upon the
> light brightness and will report the LUX output through sysfs interface.
>
> This hardware isn't quite the same as the ISL29003 so has a different driver.
>
>
> ...
>
> +static ssize_t als_lux_input_data_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct i2c_client *client = to_i2c_client(dev);
> + int ret_val, val;
> + unsigned long int lux;
> + int temp;
> +
> + pm_runtime_get_sync(dev);
> + msleep(100);
The msleep() is a bit mysterious. And long! A little code comment
explaining why it's here would illuminate things (heh, I kill me).
> + mutex_lock(&mutex);
> + temp = i2c_smbus_read_byte_data(client, 0x02); /* MSB data */
> + if (temp < 0) {
> + pm_runtime_put_sync(dev);
> + mutex_unlock(&mutex);
> + return temp;
> + }
> +
> + ret_val = i2c_smbus_read_byte_data(client, 0x01); /* LSB data */
> + mutex_unlock(&mutex);
> +
> + if (ret_val < 0) {
> + pm_runtime_put_sync(dev);
> + return ret_val;
> + }
> +
> + ret_val |= temp << 8;
> + val = i2c_smbus_read_byte_data(client, 0x00);
> + pm_runtime_put_sync(dev);
> + if (val < 0)
> + return val;
> + lux = ((((1 << (2 * (val & 3))))*1000) * ret_val) / 65536;
> + return sprintf(buf, "%ld\n", lux);
> +}
> +
>
> ...
>
> +static int isl29020_runtime_suspend(struct device *dev)
> +{
> + struct i2c_client *client = to_i2c_client(dev);
> + als_set_power_state(client, 0);
> + return 0;
> +}
> +
> +static int isl29020_runtime_resume(struct device *dev)
> +{
> + struct i2c_client *client = to_i2c_client(dev);
> + als_set_power_state(client, 1);
> + return 0;
> +}
> +
> +MODULE_DEVICE_TABLE(i2c, isl29020_id);
> +
> +static const struct dev_pm_ops isl29020_pm_ops = {
> + .runtime_suspend = isl29020_runtime_suspend,
> + .runtime_resume = isl29020_runtime_resume,
> +};
>
> +static struct i2c_driver isl29020_driver = {
> + .driver = {
> + .name = "isl29020",
> + .pm = &isl29020_pm_ops,
> + },
> + .probe = isl29020_probe,
> + .remove = isl29020_remove,
> + .id_table = isl29020_id,
> +};
Could/should we make the PM code disappear if !CONFIG_PM? Such as
--- a/drivers/misc/isl29020.c~isl29020-ambient-light-sensor-fix
+++ a/drivers/misc/isl29020.c
@@ -192,6 +192,10 @@ static struct i2c_device_id isl29020_id[
{ }
};
+MODULE_DEVICE_TABLE(i2c, isl29020_id);
+
+#ifdef CONFIG_PM
+
static int isl29020_runtime_suspend(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
@@ -206,17 +210,20 @@ static int isl29020_runtime_resume(struc
return 0;
}
-MODULE_DEVICE_TABLE(i2c, isl29020_id);
-
static const struct dev_pm_ops isl29020_pm_ops = {
.runtime_suspend = isl29020_runtime_suspend,
.runtime_resume = isl29020_runtime_resume,
};
+#define ISL29020_PM_OPS (&isl29020_pm_ops)
+#else /* CONFIG_PM */
+#define ISL29020_PM_OPS NULL
+#endif /* CONFIG_PM */
+
static struct i2c_driver isl29020_driver = {
.driver = {
.name = "isl29020",
- .pm = &isl29020_pm_ops,
+ .pm = ISL29020_PM_OPS,
},
.probe = isl29020_probe,
.remove = isl29020_remove,
_
before: 3066 bytes, after: 2705 bytes.
next prev parent reply other threads:[~2010-10-22 19:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-22 12:46 Alan Cox
2010-10-22 19:51 ` Andrew Morton [this message]
2010-10-22 20:01 ` Alan Cox
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=20101022125130.064710ba.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®