From: Kevin Hilman <khilman@linaro.org>
To: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: linux-i2c@vger.kernel.org, Wolfram Sang <wsa@the-dreams.de>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
Lv Zheng <lv.zheng@intel.com>, Aaron Lu <aaron.lu@intel.com>,
linux-arm-kernel@lists.infradead.org,
Mark Brown <broonie@kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Mauro Carvalho Chehab <m.chehab@samsung.com>,
Samuel Ortiz <sameo@linux.intel.com>,
Lee Jones <lee.jones@linaro.org>, Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Kyungmin Park <kyungmin.park@samsung.com>
Subject: Re: [PATCH v2 1/9] i2c: prepare runtime PM support for I2C client devices
Date: Thu, 12 Sep 2013 14:34:21 -0700 [thread overview]
Message-ID: <87vc25pvvm.fsf@linaro.org> (raw)
In-Reply-To: <1378913560-2752-2-git-send-email-mika.westerberg@linux.intel.com> (Mika Westerberg's message of "Wed, 11 Sep 2013 18:32:32 +0300")
Mika Westerberg <mika.westerberg@linux.intel.com> writes:
> From: Aaron Lu <aaron.lu@intel.com>
>
> This patch adds runtime PM support for the I2C bus in a similar way that
> has been done for PCI bus already. This means that the I2C bus core
> prepares runtime PM for a client device just before a driver is about to be
> bound to it. Devices that are not bound to any driver are not prepared for
> runtime PM.
>
> In order to take advantage of this runtime PM support, the client device
> driver needs drop the device runtime PM reference count by calling
> pm_runtime_put() in its ->probe() callback and possibly implement rest of
> the runtime PM callbacks.
>
> If the driver doesn't support runtime PM (like most of the existing I2C
> client drivers), the device in question is regarded as being runtime PM
> active and powered on.
But for existing drivers which already support runtime PM (at least 7 by
a quick grep), they will be stuck runtime enabled and stop hitting
low-power states after this patch.
> The patch adds also runtime PM support for the adapter device because it is
> needed to be able to runtime power manage the I2C controller device. The
> adapter device is handled along with the I2C controller device (it uses
> pm_runtime_no_callbacks()).
>
> Signed-off-by: Aaron Lu <aaron.lu@intel.com>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> drivers/i2c/i2c-core.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 43 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index f32ca29..44374b4 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -248,11 +248,30 @@ static int i2c_device_probe(struct device *dev)
> client->flags & I2C_CLIENT_WAKE);
> dev_dbg(dev, "probe\n");
>
> + /* Make sure the adapter is active */
> + pm_runtime_get_sync(&client->adapter->dev);
> +
> + /*
> + * Enable runtime PM for the client device. If the client wants to
> + * participate on runtime PM it should call pm_runtime_put() in its
> + * probe() callback.
> + */
> + pm_runtime_get_noresume(&client->dev);
> + pm_runtime_set_active(&client->dev);
Why the set_active here?
For hardware that is disabled/powered-off on startup, there will now be
a mismatch between the hardware state an the RPM core state.
Kevin
WARNING: multiple messages have this Message-ID (diff)
From: khilman@linaro.org (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/9] i2c: prepare runtime PM support for I2C client devices
Date: Thu, 12 Sep 2013 14:34:21 -0700 [thread overview]
Message-ID: <87vc25pvvm.fsf@linaro.org> (raw)
In-Reply-To: <1378913560-2752-2-git-send-email-mika.westerberg@linux.intel.com> (Mika Westerberg's message of "Wed, 11 Sep 2013 18:32:32 +0300")
Mika Westerberg <mika.westerberg@linux.intel.com> writes:
> From: Aaron Lu <aaron.lu@intel.com>
>
> This patch adds runtime PM support for the I2C bus in a similar way that
> has been done for PCI bus already. This means that the I2C bus core
> prepares runtime PM for a client device just before a driver is about to be
> bound to it. Devices that are not bound to any driver are not prepared for
> runtime PM.
>
> In order to take advantage of this runtime PM support, the client device
> driver needs drop the device runtime PM reference count by calling
> pm_runtime_put() in its ->probe() callback and possibly implement rest of
> the runtime PM callbacks.
>
> If the driver doesn't support runtime PM (like most of the existing I2C
> client drivers), the device in question is regarded as being runtime PM
> active and powered on.
But for existing drivers which already support runtime PM (at least 7 by
a quick grep), they will be stuck runtime enabled and stop hitting
low-power states after this patch.
> The patch adds also runtime PM support for the adapter device because it is
> needed to be able to runtime power manage the I2C controller device. The
> adapter device is handled along with the I2C controller device (it uses
> pm_runtime_no_callbacks()).
>
> Signed-off-by: Aaron Lu <aaron.lu@intel.com>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> drivers/i2c/i2c-core.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 43 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index f32ca29..44374b4 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -248,11 +248,30 @@ static int i2c_device_probe(struct device *dev)
> client->flags & I2C_CLIENT_WAKE);
> dev_dbg(dev, "probe\n");
>
> + /* Make sure the adapter is active */
> + pm_runtime_get_sync(&client->adapter->dev);
> +
> + /*
> + * Enable runtime PM for the client device. If the client wants to
> + * participate on runtime PM it should call pm_runtime_put() in its
> + * probe() callback.
> + */
> + pm_runtime_get_noresume(&client->dev);
> + pm_runtime_set_active(&client->dev);
Why the set_active here?
For hardware that is disabled/powered-off on startup, there will now be
a mismatch between the hardware state an the RPM core state.
Kevin
next prev parent reply other threads:[~2013-09-12 21:34 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-11 15:32 [PATCH v2 0/9] runtime PM support for I2C and SPI client devices Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-11 15:32 ` [PATCH v2 1/9] i2c: prepare runtime PM support for I2C " Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-12 21:34 ` Kevin Hilman [this message]
2013-09-12 21:34 ` Kevin Hilman
[not found] ` <87vc25pvvm.fsf-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-09-12 21:40 ` Kevin Hilman
2013-09-12 21:40 ` Kevin Hilman
2013-09-12 21:40 ` Kevin Hilman
2013-09-13 6:54 ` Mika Westerberg
2013-09-13 9:59 ` Mark Brown
2013-09-13 9:59 ` Mark Brown
[not found] ` <20130913095950.GA29403-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-09-13 10:16 ` Mika Westerberg
2013-09-13 10:16 ` Mika Westerberg
2013-09-13 10:31 ` Mark Brown
2013-09-13 10:31 ` Mark Brown
[not found] ` <20130913103152.GE29403-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-09-13 11:50 ` Mika Westerberg
2013-09-13 11:50 ` Mika Westerberg
[not found] ` <20130913115035.GB7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-13 12:10 ` Mark Brown
2013-09-13 12:10 ` Mark Brown
2013-09-13 12:10 ` Mark Brown
2013-09-13 14:30 ` Kevin Hilman
2013-09-13 14:30 ` Kevin Hilman
2013-09-13 14:50 ` Mika Westerberg
[not found] ` <20130913145022.GC7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-13 17:31 ` Mika Westerberg
2013-09-13 17:31 ` Mika Westerberg
2013-09-13 21:10 ` Kevin Hilman
2013-09-13 21:10 ` Kevin Hilman
2013-09-15 6:41 ` Mika Westerberg
2013-09-15 12:47 ` Mark Brown
2013-09-15 12:47 ` Mark Brown
[not found] ` <20130915124744.GW29403-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-09-15 13:28 ` Mika Westerberg
2013-09-15 13:28 ` Mika Westerberg
2013-09-16 10:12 ` Mark Brown
2013-09-16 10:12 ` Mark Brown
[not found] ` <20130916101249.GX29403-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-09-16 14:38 ` Mika Westerberg
2013-09-16 14:38 ` Mika Westerberg
[not found] ` <20130916143811.GP7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-16 14:46 ` Graeme Gregory
2013-09-16 14:46 ` Graeme Gregory
2013-09-16 14:46 ` Graeme Gregory
2013-09-16 15:13 ` Mika Westerberg
2013-09-13 15:14 ` Sylwester Nawrocki
2013-09-13 15:14 ` Sylwester Nawrocki
[not found] ` <52332BF0.4060605-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-09-13 15:40 ` Mika Westerberg
2013-09-13 15:40 ` Mika Westerberg
[not found] ` <20130913154013.GD7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-15 13:48 ` Sylwester Nawrocki
2013-09-15 13:48 ` Sylwester Nawrocki
2013-09-15 13:48 ` Sylwester Nawrocki
[not found] ` <5235BA9C.1090509-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-09-16 8:47 ` Mika Westerberg
2013-09-16 8:47 ` Mika Westerberg
2013-09-16 19:07 ` Rafael J. Wysocki
2013-09-16 19:07 ` Rafael J. Wysocki
[not found] ` <1861747.RtS0ZLgUUN-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2013-09-16 23:31 ` Mark Brown
2013-09-16 23:31 ` Mark Brown
2013-09-16 23:31 ` Mark Brown
[not found] ` <20130916233111.GB21013-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-09-17 1:25 ` Rafael J. Wysocki
2013-09-17 1:25 ` Rafael J. Wysocki
2013-09-17 1:25 ` Rafael J. Wysocki
[not found] ` <1820315.QOOAzSjac3-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2013-09-17 10:48 ` Mark Brown
2013-09-17 10:48 ` Mark Brown
2013-09-17 10:48 ` Mark Brown
2013-09-17 11:00 ` Mika Westerberg
2013-09-17 11:00 ` Mika Westerberg
[not found] ` <20130917110021.GU7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-17 21:38 ` Rafael J. Wysocki
2013-09-17 21:38 ` Rafael J. Wysocki
2013-09-17 21:38 ` Rafael J. Wysocki
[not found] ` <20130916084708.GN7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-17 11:07 ` Sylwester Nawrocki
2013-09-17 11:07 ` Sylwester Nawrocki
2013-09-17 11:07 ` Sylwester Nawrocki
2013-09-24 5:18 ` Mika Westerberg
2013-09-12 22:06 ` Sylwester Nawrocki
2013-09-12 22:06 ` Sylwester Nawrocki
2013-09-13 1:14 ` Aaron Lu
2013-09-13 1:14 ` Aaron Lu
[not found] ` <523266EC.1060501-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-13 10:02 ` Mark Brown
2013-09-13 10:02 ` Mark Brown
2013-09-13 10:02 ` Mark Brown
2013-09-11 15:32 ` [PATCH v2 2/9] i2c: attach/detach I2C client device to the ACPI power domain Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-11 15:32 ` [PATCH v2 3/9] Input: misc - convert existing I2C client drivers to use I2C core runtime PM Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-11 15:32 ` [PATCH v2 4/9] [media] s5p-tv: convert " Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-11 15:32 ` [PATCH v2 5/9] drivers/misc: convert existing I2C clients driver " Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-12 21:29 ` Greg Kroah-Hartman
2013-09-12 21:29 ` Greg Kroah-Hartman
2013-09-11 15:32 ` [PATCH v2 6/9] mfd: wm8994: convert " Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-11 16:12 ` Samuel Ortiz
2013-09-11 16:12 ` Samuel Ortiz
2013-09-12 9:24 ` Mika Westerberg
[not found] ` <20130912092447.GJ7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-12 9:28 ` Samuel Ortiz
2013-09-12 9:28 ` Samuel Ortiz
2013-09-12 9:28 ` Samuel Ortiz
2013-09-11 15:32 ` [PATCH v2 7/9] ASoC: codecs: convert existing I2C client drivers " Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
[not found] ` <1378913560-2752-8-git-send-email-mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2013-09-11 15:44 ` Mark Brown
2013-09-11 15:44 ` Mark Brown
2013-09-11 15:44 ` Mark Brown
2013-09-11 15:32 ` [PATCH v2 8/9] spi: prepare runtime PM support for SPI devices Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
[not found] ` <1378913560-2752-9-git-send-email-mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2013-09-11 15:51 ` Mark Brown
2013-09-11 15:51 ` Mark Brown
2013-09-11 15:51 ` Mark Brown
2013-09-12 9:27 ` Mika Westerberg
[not found] ` <20130912092743.GK7393-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-09-12 9:31 ` Mark Brown
2013-09-12 9:31 ` Mark Brown
2013-09-12 9:31 ` Mark Brown
[not found] ` <20130912093145.GA29403-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-09-12 9:43 ` Mika Westerberg
2013-09-12 9:43 ` Mika Westerberg
2013-09-12 11:04 ` Rafael J. Wysocki
2013-09-12 11:04 ` Rafael J. Wysocki
2013-09-12 11:04 ` Wolfram Sang
2013-09-12 11:04 ` Wolfram Sang
2013-09-12 12:20 ` Mika Westerberg
2013-09-12 12:20 ` Mika Westerberg
[not found] ` <14222641.vVF4lKBqCB-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2013-09-12 12:25 ` Mika Westerberg
2013-09-12 12:25 ` Mika Westerberg
2013-09-11 15:32 ` [PATCH v2 9/9] spi: attach/detach SPI device to the ACPI power domain Mika Westerberg
2013-09-11 15:32 ` Mika Westerberg
2013-09-11 15:51 ` Mark Brown
2013-09-11 15:51 ` Mark Brown
[not found] ` <1378913560-2752-1-git-send-email-mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2013-09-11 15:53 ` [PATCH v2 0/9] runtime PM support for I2C and SPI client devices Mark Brown
2013-09-11 15:53 ` Mark Brown
2013-09-11 15:53 ` Mark Brown
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=87vc25pvvm.fsf@linaro.org \
--to=khilman@linaro.org \
--cc=aaron.lu@intel.com \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kyungmin.park@samsung.com \
--cc=lee.jones@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lv.zheng@intel.com \
--cc=m.chehab@samsung.com \
--cc=mika.westerberg@linux.intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=sameo@linux.intel.com \
--cc=wsa@the-dreams.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.