Hi Roman, On Mon, Apr 13, 2020 at 12:17:47PM +0300, Roman Kovalivskyi wrote: > From: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > > All calls to the gpio library are in contexts that can sleep, > therefore there is no issue with having those GPIOs controlled > by controllers which require sleeping (eg I2C GPIO expanders). > > Switch to using gpiod_set_value_cansleep instead of gpiod_set_value > to avoid triggering the warning in gpiolib should the GPIO > controller need to sleep. > > Signed-off-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > Signed-off-by: Roman Kovalivskyi <roman.kovalivskyi@xxxxxxxxxxxxxxx> This should be merged with the second patch. > --- > drivers/media/i2c/ov5647.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c > index 8a1a515388e0..07550377be2e 100644 > --- a/drivers/media/i2c/ov5647.c > +++ b/drivers/media/i2c/ov5647.c > @@ -373,7 +373,7 @@ static int ov5647_sensor_power(struct v4l2_subdev *sd, int on) > dev_dbg(&client->dev, "OV5647 power on\n"); > > if (ov5647->pwdn) { > - gpiod_set_value(ov5647->pwdn, 0); > + gpiod_set_value_cansleep(ov5647->pwdn, 0); > msleep(PWDN_ACTIVE_DELAY_MS); > } > > @@ -415,7 +415,7 @@ static int ov5647_sensor_power(struct v4l2_subdev *sd, int on) > > clk_disable_unprepare(ov5647->xclk); > > - gpiod_set_value(ov5647->pwdn, 1); > + gpiod_set_value_cansleep(ov5647->pwdn, 1); > } > > /* Update the power count. */ > @@ -648,13 +648,13 @@ static int ov5647_probe(struct i2c_client *client) > goto mutex_remove; > > if (sensor->pwdn) { > - gpiod_set_value(sensor->pwdn, 0); > + gpiod_set_value_cansleep(sensor->pwdn, 0); > msleep(PWDN_ACTIVE_DELAY_MS); > } > > ret = ov5647_detect(sd); > > - gpiod_set_value(sensor->pwdn, 1); > + gpiod_set_value_cansleep(sensor->pwdn, 1); > > if (ret < 0) > goto error; > -- > 2.17.1 > -- Sakari Ailus