openwrt/target/linux/bcm27xx/patches-5.10/950-0118-media-ov5647-Use-gpiod_set_value_cansleep.patch
Álvaro Fernández Rojas 8299d1f057 bcm27xx: add kernel 5.10 support
Rebased RPi foundation patches on linux 5.10.59, removed applied and reverted
patches, wireless patches and defconfig patches.

bcm2708: boot tested on RPi B+ v1.2
bcm2709: boot tested on RPi 4B v1.1 4G
bcm2711: boot tested on RPi 4B v1.1 4G

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-08-21 19:07:07 +02:00

55 lines
1.6 KiB
Diff

From 58f1758adcdbfd1cf556eb3cbb85b88ddcef0840 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Tue, 18 Sep 2018 11:08:51 +0100
Subject: [PATCH] media: ov5647: Use gpiod_set_value_cansleep
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@raspberrypi.org>
---
drivers/media/i2c/ov5647.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
@@ -373,7 +373,7 @@ static int ov5647_sensor_power(struct v4
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 v4
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_clien
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;