From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Hilman Subject: Re: [PATCH v2 3/4] i2c: davinci: Add suspend/resume support Date: Tue, 05 Jan 2010 14:56:44 -0800 Message-ID: <87vdfgrwib.fsf@deeprootsystems.com> References: <1260267218-19406-1-git-send-email-chaithrika@ti.com> <1260267218-19406-2-git-send-email-chaithrika@ti.com> <1260267218-19406-3-git-send-email-chaithrika@ti.com> <1260267218-19406-4-git-send-email-chaithrika@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: In-Reply-To: <1260267218-19406-4-git-send-email-chaithrika-l0cyMroinI0@public.gmane.org> (Chaithrika U. S.'s message of "Tue\, 8 Dec 2009 15\:43\:37 +0530") Sender: linux-i2c-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Chaithrika U S Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org List-Id: linux-i2c@vger.kernel.org Chaithrika U S writes: > Add suspend and resume callbacks to DaVinci I2C driver. > This has been tested on DA850/OMAP-L138 EVM. The SoC specific > suspend-to-RAM support patch series [1] is needed to test this feature. > > [1] http://linux.davincidsp.com/pipermail/davinci-linux-open-source/ > 2009-November/016958.html > > Signed-off-by: Chaithrika U S > --- > drivers/i2c/busses/i2c-davinci.c | 32 ++++++++++++++++++++++++++++++++ > 1 files changed, 32 insertions(+), 0 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c > index 81c1049..c1c2909 100644 > --- a/drivers/i2c/busses/i2c-davinci.c > +++ b/drivers/i2c/busses/i2c-davinci.c > @@ -622,6 +622,36 @@ static int davinci_i2c_remove(struct platform_device *pdev) > return 0; > } > > +#ifdef CONFIG_PM > +static int davinci_i2c_suspend(struct platform_device *pdev, pm_message_t state) > +{ > + struct davinci_i2c_dev *dev = platform_get_drvdata(pdev); > + > + /* put I2C into reset */ > + davinci_i2c_reset_ctrl(dev, 0); > + > + clk_disable(dev->clk); > + > + return 0; > +} > + > +static int davinci_i2c_resume(struct platform_device *pdev) > +{ > + struct davinci_i2c_dev *dev = platform_get_drvdata(pdev); > + > + clk_enable(dev->clk); > + > + /* take I2C out of reset */ > + davinci_i2c_reset_ctrl(dev, 1); > + > + return 0; > +} > + > +#else > +#define davinci_i2c_suspend NULL > +#define davinci_i2c_resume NULL > +#endif > + > /* work with hotplug and coldplug */ > MODULE_ALIAS("platform:i2c_davinci"); > > @@ -632,6 +662,8 @@ static struct platform_driver davinci_i2c_driver = { > .name = "i2c_davinci", > .owner = THIS_MODULE, > }, > + .suspend = davinci_i2c_suspend, > + .resume = davinci_i2c_resume, Rather than adding these to the platform_driver, you should use dev_pm_ops. Something like the patch below on top of your PATCH 3/4 should work. Other than this, I'm OK with this series, feel free to add my signoff and resend to linux-i2c and LKML. linux-i2c has had very slow response to embedded patches lately. Kevin