On 10.10.2013 10:46, ext Lars-Peter Clausen wrote: > On 10/10/2013 10:39 AM, Ionut Nicu wrote: >> Some gpio chips may have get/set operations that >> can sleep. For this type of chips we must use the >> _cansleep() version of gpio_set_value. >> >> Signed-off-by: Ionut Nicu <ioan.nicu.ext@xxxxxxx> >> --- >> drivers/i2c/muxes/i2c-mux-gpio.c | 11 ++++++++--- >> 1 files changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/i2c/muxes/i2c-mux-gpio.c b/drivers/i2c/muxes/i2c-mux-gpio.c >> index a764da7..b5f17ef 100644 >> --- a/drivers/i2c/muxes/i2c-mux-gpio.c >> +++ b/drivers/i2c/muxes/i2c-mux-gpio.c >> @@ -27,11 +27,16 @@ struct gpiomux { >> >> static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned val) >> { >> + unsigned gpio; >> int i; >> >> - for (i = 0; i < mux->data.n_gpios; i++) >> - gpio_set_value(mux->gpio_base + mux->data.gpios[i], >> - val & (1 << i)); >> + for (i = 0; i < mux->data.n_gpios; i++) { >> + gpio = mux->gpio_base + mux->data.gpios[i]; >> + if (gpio_cansleep(gpio)) >> + gpio_set_value_cansleep(gpio, val & (1 << i)); >> + else >> + gpio_set_value(gpio, val & (1 << i)); > > The proper way to do this is just always use the _cansleep() version. > gpio_set_value() only works for chips which do not sleep, > gpio_set_value_cansleep() works for both those who do sleep and those who do > not. > Ok, then I will re-work the patch to do just that. Thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html