On Wed, Apr 22, 2020 at 4:37 PM Mark Brown <broonie@xxxxxxxxxx> wrote: > > If there is a power GPIO provided we control it from DAPM context so there > is no problem with a sleeping GPIO, use the _cansleep() version of the API > to allow this. Compared gpiod_set_value_cansleep() vs. gpiod_set_value(). gpiod_set_value_cansleep() + might_sleep_if(extra_checks); gpiod_set_value() + /* Should be using gpiod_set_value_cansleep() */ + WARN_ON(desc->gdev->chip->can_sleep); And the extra_checks is: #ifdef DEBUG #define extra_checks 1 #else #define extra_checks 0 #endif Looks like it only changes behavior when DEBUG. Wondering about: - Did you get any warning message to inspire you to use _cansleep() version? - Does that imply in any _can sleep_ context, it is more encouraged to call _cansleep() version? (e.g. https://elixir.bootlin.com/linux/v5.7-rc2/source/sound/soc/codecs/max98357a.c#L41)