aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/reset
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@freescale.com>2013-07-14 08:28:05 -0400
committerNitin Garg <nitin.garg@freescale.com>2014-04-16 09:00:39 -0400
commitbf447efef7400aef61b26e80c972931d16920982 (patch)
tree009f232610240d9619a9d796b814f31c5ea22466 /drivers/reset
parent27e3604c82cbb1eabe69c1e068339b898b4afc63 (diff)
ENGR00269945: reset: handle cansleep case in gpio-reset
Some gpio reset may be backed by a gpio that can sleep, e.g. pca953x gpio output. For such gpio, gpio_set_value_cansleep() should be called. Otherwise, the WARN_ON(chip->can_sleep) in gpiod_set_value() will be hit. Add a gpio_cansleep() check to handle cansleep gpio. Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
Diffstat (limited to 'drivers/reset')
-rw-r--r--drivers/reset/gpio-reset.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/reset/gpio-reset.c b/drivers/reset/gpio-reset.c
index 5d2515af6a5f..4f372f9e437b 100644
--- a/drivers/reset/gpio-reset.c
+++ b/drivers/reset/gpio-reset.c
@@ -32,7 +32,10 @@ static void gpio_reset_set(struct reset_controller_dev *rcdev, int asserted)
32 if (drvdata->active_low) 32 if (drvdata->active_low)
33 value = !value; 33 value = !value;
34 34
35 gpio_set_value(drvdata->gpio, value); 35 if (gpio_cansleep(drvdata->gpio))
36 gpio_set_value_cansleep(drvdata->gpio, value);
37 else
38 gpio_set_value(drvdata->gpio, value);
36} 39}
37 40
38static int gpio_reset(struct reset_controller_dev *rcdev, unsigned long id) 41static int gpio_reset(struct reset_controller_dev *rcdev, unsigned long id)