diff options
author | Shawn Guo <shawn.guo@freescale.com> | 2013-07-14 08:28:05 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:00:39 -0400 |
commit | bf447efef7400aef61b26e80c972931d16920982 (patch) | |
tree | 009f232610240d9619a9d796b814f31c5ea22466 /drivers/reset | |
parent | 27e3604c82cbb1eabe69c1e068339b898b4afc63 (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.c | 5 |
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 | ||
38 | static int gpio_reset(struct reset_controller_dev *rcdev, unsigned long id) | 41 | static int gpio_reset(struct reset_controller_dev *rcdev, unsigned long id) |