Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756216AbcKEQdt (ORCPT ); Sat, 5 Nov 2016 12:33:49 -0400 Received: from saturn.retrosnub.co.uk ([178.18.118.26]:51003 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754881AbcKEQds (ORCPT ); Sat, 5 Nov 2016 12:33:48 -0400 Subject: Re: [PATCH v2] iio: adc: at91: add suspend and resume callback To: Wenyou Yang , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, Wenyou Yang , linux-arm-kernel@lists.infradead.org, Nicolas Ferre References: <1478078508-24541-1-git-send-email-wenyou.yang@atmel.com> <20161103141654.7oitq25gxqcy7qna@rfolt0960.corp.atmel.com> From: Jonathan Cameron Message-ID: Date: Sat, 5 Nov 2016 16:33:45 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20161103141654.7oitq25gxqcy7qna@rfolt0960.corp.atmel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2312 Lines: 81 On 03/11/16 14:16, Ludovic Desroches wrote: > On Wed, Nov 02, 2016 at 05:21:48PM +0800, Wenyou Yang wrote: >> Add suspend/resume callback, support the pinctrl sleep state when >> the system suspend as well. >> >> Signed-off-by: Wenyou Yang > Acked-by: Ludovic Desroches Applied to the togreg branch of iio.git. Initially pushed out as testing for the autobuilders to play with it. Thanks, Jonathan > > Thanks > >> --- >> >> Changes in v2: >> - Use CONFIG_PM_SLEEP. >> - Use SIMPLE_DEV_PM_OPS macro. >> >> drivers/iio/adc/at91_adc.c | 28 ++++++++++++++++++++++++++++ >> 1 file changed, 28 insertions(+) >> >> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c >> index bbdac07..34b928c 100644 >> --- a/drivers/iio/adc/at91_adc.c >> +++ b/drivers/iio/adc/at91_adc.c >> @@ -30,6 +30,7 @@ >> #include >> #include >> #include >> +#include >> >> /* Registers */ >> #define AT91_ADC_CR 0x00 /* Control Register */ >> @@ -1347,6 +1348,32 @@ static int at91_adc_remove(struct platform_device *pdev) >> return 0; >> } >> >> +#ifdef CONFIG_PM_SLEEP >> +static int at91_adc_suspend(struct device *dev) >> +{ >> + struct iio_dev *idev = platform_get_drvdata(to_platform_device(dev)); >> + struct at91_adc_state *st = iio_priv(idev); >> + >> + pinctrl_pm_select_sleep_state(dev); >> + clk_disable_unprepare(st->clk); >> + >> + return 0; >> +} >> + >> +static int at91_adc_resume(struct device *dev) >> +{ >> + struct iio_dev *idev = platform_get_drvdata(to_platform_device(dev)); >> + struct at91_adc_state *st = iio_priv(idev); >> + >> + clk_prepare_enable(st->clk); >> + pinctrl_pm_select_default_state(dev); >> + >> + return 0; >> +} >> +#endif >> + >> +static SIMPLE_DEV_PM_OPS(at91_adc_pm_ops, at91_adc_suspend, at91_adc_resume); >> + >> static struct at91_adc_caps at91sam9260_caps = { >> .calc_startup_ticks = calc_startup_ticks_9260, >> .num_channels = 4, >> @@ -1441,6 +1468,7 @@ static struct platform_driver at91_adc_driver = { >> .driver = { >> .name = DRIVER_NAME, >> .of_match_table = of_match_ptr(at91_adc_dt_ids), >> + .pm = &at91_adc_pm_ops, >> }, >> }; >> >> -- >> 2.7.4 >>