All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Vishwanath BS <vishwanath.bs@ti.com>,
	linux-i2c@vger.kernel.org, linux-omap@vger.kernel.org,
	Partha Basak <p-basak2@ti.com>, "Rafael J. Wysocki" <rjw@sisk.pl>,
	Ben Dooks <ben-linux@fluff.org>,
	Jean Delvare <khali@linux-fr.org>
Subject: Re: [PATCH] I2C: Fix for suspend/resume issue in i2c-core
Date: Tue, 31 Aug 2010 12:16:11 +0100	[thread overview]
Message-ID: <20100831111611.GF20849@rakim.wolfsonmicro.main> (raw)
In-Reply-To: <87wrr83pro.fsf@deeprootsystems.com>

On Mon, Aug 30, 2010 at 11:43:23AM -0700, Kevin Hilman wrote:
> Vishwanath BS <vishwanath.bs@ti.com> writes:
> 
> > In current i2c core driver, pm_runtime_set_active call from i2c_device_pm_resume
> > is not balanced by pm_runtime_set_suspended call from i2c_device_pm_suspend.
> > pm_runtime_set_active called from resume path will increase the child_count of
> > the device's parent. However, matching pm_runtime_set_suspended is not called
> > in suspend routine because of which child_count of the device's parent
> > is not balanced, preventing the parent device to idle.
> > Issue has been fixed by adding pm_runtime_set_suspended call inside suspend
> > reoutine which will make sure that child_counts are balanced.
> > This fix has been tested on OMAP4430.
> >
> > Signed-off-by: Partha Basak <p-basak2@ti.com>
> > Signed-off-by: Vishwanath BS <vishwanath.bs@ti.com>
> >
> > Cc: Rafael J. Wysocki <rjw@sisk.pl>
> > Cc: Kevin Hilman <khilman@deeprootsystems.com>
> > Cc: Ben Dooks <ben-linux@fluff.org>
> 
> Also Cc'ing Mark Brown as original author of runtime PM for i2-core.

Also Jean Delvare who maintains the I2C core.  To be honest Rafael did
all the actual work here (and has since rewritten the code anyway).

> > ---
> >  drivers/i2c/i2c-core.c |   12 ++++++++++--
> >  1 files changed, 10 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> > index 6649176..3146bff
> > --- a/drivers/i2c/i2c-core.c
> > +++ b/drivers/i2c/i2c-core.c
> > @@ -196,14 +196,22 @@ static int i2c_legacy_resume(struct device *dev)
> >  static int i2c_device_pm_suspend(struct device *dev)
> >  {
> >  	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
> > +	int ret;
> >  
> >  	if (pm_runtime_suspended(dev))
> >  		return 0;
> >  
> >  	if (pm)
> > -		return pm->suspend ? pm->suspend(dev) : 0;
> > +		ret = pm->suspend ? pm->suspend(dev) : 0;
> > +	else
> > +		ret = i2c_legacy_suspend(dev, PMSG_SUSPEND);
> >  
> > -	return i2c_legacy_suspend(dev, PMSG_SUSPEND);
> > +	if (!ret) {
> > +		pm_runtime_disable(dev);
> > +		pm_runtime_set_suspended(dev);
> > +		pm_runtime_enable(dev);
> > +	}
> > +	return ret;
> >  }
> >  
> >  static int i2c_device_pm_resume(struct device *dev)

  reply	other threads:[~2010-08-31 11:16 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-31  1:50 [PATCH] I2C: Fix for suspend/resume issue in i2c-core Vishwanath BS
     [not found] ` <1283219414-8798-1-git-send-email-vishwanath.bs-l0cyMroinI0@public.gmane.org>
2010-08-30 18:43   ` Kevin Hilman
2010-08-31 11:16     ` Mark Brown [this message]
     [not found]       ` <20100831111611.GF20849-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org>
2010-08-31 23:12         ` Rafael J. Wysocki
     [not found]           ` <201009010112.11834.rjw-KKrjLPT3xs0@public.gmane.org>
2010-09-01  8:40             ` Jean Delvare
     [not found]               ` <20100901104052.5967ca25-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2010-09-03 17:38                 ` Sripathy, Vishwanath
     [not found]                   ` <FCCFB4CDC6E5564B9182F639FC35608703114DA108-/tLxBxkBPtCIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2010-09-03 23:10                     ` Rafael J. Wysocki
     [not found]                       ` <201009040110.10858.rjw-KKrjLPT3xs0@public.gmane.org>
2010-09-04  6:49                         ` Jean Delvare
2010-09-01 15:53 ` Kevin Hilman
  -- strict thread matches above, loose matches on Subject: below --
2010-08-31  1:47 Vishwanath BS

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=20100831111611.GF20849@rakim.wolfsonmicro.main \
    --to=broonie@opensource.wolfsonmicro.com \
    --cc=ben-linux@fluff.org \
    --cc=khali@linux-fr.org \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=p-basak2@ti.com \
    --cc=rjw@sisk.pl \
    --cc=vishwanath.bs@ti.com \
    /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.