diff mbox

gpio-poweroff: Use gpiod_set_value_cansleep

Message ID 1524568230-14353-1-git-send-email-mike.looijmans@topic.nl (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Mike Looijmans April 24, 2018, 11:10 a.m. UTC
The power-off call is done in a context that must be able to sleep, so
use gpiod_set_value_cansleep instead of the atomic gpiod_set_value call.

This fixes a kernel warning at shutdown when the gpio is controlled
through an IO expander for example.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
---
 drivers/power/reset/gpio-poweroff.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Sebastian Reichel April 25, 2018, 9:11 p.m. UTC | #1
Hi Mike,

On Tue, Apr 24, 2018 at 01:10:30PM +0200, Mike Looijmans wrote:
> The power-off call is done in a context that must be able to sleep, so
> use gpiod_set_value_cansleep instead of the atomic gpiod_set_value call.
> 
> This fixes a kernel warning at shutdown when the gpio is controlled
> through an IO expander for example.
> 
> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/reset/gpio-poweroff.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c
> index 6273ad3..38206c3 100644
> --- a/drivers/power/reset/gpio-poweroff.c
> +++ b/drivers/power/reset/gpio-poweroff.c
> @@ -35,11 +35,11 @@ static void gpio_poweroff_do_poweroff(void)
>  	gpiod_direction_output(reset_gpio, 1);
>  	mdelay(100);
>  	/* drive inactive, also active->inactive edge */
> -	gpiod_set_value(reset_gpio, 0);
> +	gpiod_set_value_cansleep(reset_gpio, 0);
>  	mdelay(100);
>  
>  	/* drive it active, also inactive->active edge */
> -	gpiod_set_value(reset_gpio, 1);
> +	gpiod_set_value_cansleep(reset_gpio, 1);
>  
>  	/* give it some time */
>  	mdelay(timeout);
> -- 
> 1.9.1
>
diff mbox

Patch

diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c
index 6273ad3..38206c3 100644
--- a/drivers/power/reset/gpio-poweroff.c
+++ b/drivers/power/reset/gpio-poweroff.c
@@ -35,11 +35,11 @@  static void gpio_poweroff_do_poweroff(void)
 	gpiod_direction_output(reset_gpio, 1);
 	mdelay(100);
 	/* drive inactive, also active->inactive edge */
-	gpiod_set_value(reset_gpio, 0);
+	gpiod_set_value_cansleep(reset_gpio, 0);
 	mdelay(100);
 
 	/* drive it active, also inactive->active edge */
-	gpiod_set_value(reset_gpio, 1);
+	gpiod_set_value_cansleep(reset_gpio, 1);
 
 	/* give it some time */
 	mdelay(timeout);