Messages in this thread Patch in this message | | | Date | Thu, 10 Oct 2013 10:39:32 +0200 | From | Ionut Nicu <> | Subject | [PATCH 1/2] i2c-mux-gpio: test if the gpio can sleep |
| |
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@nsn.com> --- 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)); + } } static int i2c_mux_gpio_select(struct i2c_adapter *adap, void *data, u32 chan) -- 1.7.1
| |