From: Jonathan Cameron <jic23@kernel.org>
To: NeilBrown <neilb@suse.de>
Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
GTA04 owners <gta04-owner@goldelico.com>,
"chr >> Doug Anderson" <dianders@chromium.org>,
Thorsten Nowak <thorsten.nowak@iis.fraunhofer.de>,
Manuel Stahl <manuel.stahl@iis.fraunhofer.de>,
"christian.strobel@iis.fraunhofer.de >> Christian Strobel"
<christian.strobel@iis.fraunhofer.de>
Subject: Re: [PATCH] iio: gyro: itg3200: add suspend/resume support.
Date: Sat, 08 Nov 2014 11:52:33 +0000 [thread overview]
Message-ID: <545E0401.2000505@kernel.org> (raw)
In-Reply-To: <20141108111833.3829480c@notabene.brown>
On 08/11/14 00:18, NeilBrown wrote:
>
>
> Unless we put the device to sleep when not it use, it wastes
> 6mA.
>
> If the device is asleep on probe, the 'id' register
> sometimes mis-reads - so reset first. If the device responds
> at all a command sent to the address, it is almost certainly
> the correct device already.
>
> Signed-off-by: NeilBrown <neil@brown.name>
Hi Neil,
Looks fine to me - but you should have cc'd a few people from
the listed driver authors. Will give them a few days to respond...
Jonathan
>
> diff --git a/drivers/iio/gyro/itg3200_core.c b/drivers/iio/gyro/itg3200_core.c
> index 6a8020d48140..394667fb23f9 100644
> --- a/drivers/iio/gyro/itg3200_core.c
> +++ b/drivers/iio/gyro/itg3200_core.c
> @@ -223,6 +223,7 @@ static int itg3200_initial_setup(struct iio_dev *indio_dev)
> int ret;
> u8 val;
>
> + ret = itg3200_reset(indio_dev);
> ret = itg3200_read_reg_8(indio_dev, ITG3200_REG_ADDRESS, &val);
> if (ret)
> goto err_ret;
> @@ -351,6 +352,35 @@ static int itg3200_remove(struct i2c_client *client)
> return 0;
> }
>
> +#ifdef CONFIG_PM_SLEEP
> +static int itg3200_suspend(struct device *dev)
> +{
> + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> + struct itg3200 *st = iio_priv(indio_dev);
> + int ret;
> +
> + dev_dbg(&st->i2c->dev, "suspend device");
> +
> + ret = itg3200_write_reg_8(indio_dev,
> + ITG3200_REG_POWER_MANAGEMENT,
> + ITG3200_SLEEP);
> + return ret;
> +}
> +
> +static int itg3200_resume(struct device *dev)
> +{
> + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> +
> + itg3200_reset(indio_dev);
> + return 0;
> +}
> +
> +static SIMPLE_DEV_PM_OPS(itg3200_pm_ops, itg3200_suspend, itg3200_resume);
> +#define ITG3200_PM_OPS (&itg3200_pm_ops)
> +#else
> +#define ITG3200_PM_OPS NULL
> +#endif
> +
> static const struct i2c_device_id itg3200_id[] = {
> { "itg3200", 0 },
> { }
> @@ -361,6 +391,7 @@ static struct i2c_driver itg3200_driver = {
> .driver = {
> .owner = THIS_MODULE,
> .name = "itg3200",
> + .pm = ITG3200_PM_OPS,
> },
> .id_table = itg3200_id,
> .probe = itg3200_probe,
>
next prev parent reply other threads:[~2014-11-08 11:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-08 0:18 [PATCH] iio: gyro: itg3200: add suspend/resume support NeilBrown
2014-11-08 11:52 ` Jonathan Cameron [this message]
2014-11-09 22:57 ` NeilBrown
2014-11-10 9:57 ` Manuel Stahl
2014-11-19 22:37 ` Hartmut Knaack
2015-02-24 2:21 ` NeilBrown
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=545E0401.2000505@kernel.org \
--to=jic23@kernel.org \
--cc=christian.strobel@iis.fraunhofer.de \
--cc=dianders@chromium.org \
--cc=gta04-owner@goldelico.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=manuel.stahl@iis.fraunhofer.de \
--cc=neilb@suse.de \
--cc=thorsten.nowak@iis.fraunhofer.de \
/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.