From 7567930cd20f1597bdeec2324f914934c727f104 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Sat, 21 Nov 2020 18:18:06 +0800 Subject: [PATCH] media: i2c: camera driver fixed pm get error There is a case, the app may call s_ctrl before device power on, pm_runtime_get will increment usage counter and call Sensor_runtime_resume, but when the s_ctrl function judges that the return value of pm_runtime_get is less than or equal to 0, it returns directly, causing pm_runtime_put not to be executed. so device can't be suspended. pm_runtime_get_if_in_use increment the device's counter when runtime PM status is RPM_ACTIVE and the runtime PM usage counter is nonzero. so used pm_runtime_get_if_in_use can avoid usage counter error. Signed-off-by: Zefa Chen Change-Id: I4e61cdefafd82083f2628f67181a6bb2eee50507 --- drivers/media/i2c/ar0230.c | 2 +- drivers/media/i2c/gc0403.c | 2 +- drivers/media/i2c/gc2053.c | 2 +- drivers/media/i2c/gc2093.c | 2 +- drivers/media/i2c/gc2355.c | 2 +- drivers/media/i2c/gc2375h.c | 2 +- drivers/media/i2c/gc2385.c | 2 +- drivers/media/i2c/gc4c33.c | 2 +- drivers/media/i2c/gc5024.c | 2 +- drivers/media/i2c/gc5025.c | 2 +- drivers/media/i2c/gc5035.c | 2 +- drivers/media/i2c/gc8034.c | 2 +- drivers/media/i2c/imx258.c | 2 +- drivers/media/i2c/imx307.c | 2 +- drivers/media/i2c/imx317.c | 2 +- drivers/media/i2c/imx323.c | 2 +- drivers/media/i2c/imx327.c | 2 +- drivers/media/i2c/imx334.c | 2 +- drivers/media/i2c/imx335.c | 2 +- drivers/media/i2c/imx347.c | 2 +- drivers/media/i2c/imx378.c | 2 +- drivers/media/i2c/imx415.c | 2 +- drivers/media/i2c/jx_f37.c | 2 +- drivers/media/i2c/jx_h65.c | 2 +- drivers/media/i2c/os04a10.c | 2 +- drivers/media/i2c/ov02k10.c | 2 +- drivers/media/i2c/ov13850.c | 2 +- drivers/media/i2c/ov2680.c | 2 +- drivers/media/i2c/ov2685.c | 3 ++- drivers/media/i2c/ov2718.c | 2 +- drivers/media/i2c/ov2735.c | 2 +- drivers/media/i2c/ov4686.c | 2 +- drivers/media/i2c/ov4689.c | 2 +- drivers/media/i2c/ov5648.c | 2 +- drivers/media/i2c/ov5670.c | 2 +- drivers/media/i2c/ov5695.c | 2 +- drivers/media/i2c/ov7251.c | 2 +- drivers/media/i2c/ov7750.c | 2 +- drivers/media/i2c/ov8858.c | 2 +- drivers/media/i2c/ov9281.c | 2 +- drivers/media/i2c/ov9750.c | 2 +- drivers/media/i2c/sc031gs.c | 2 +- drivers/media/i2c/sc132gs.c | 2 +- drivers/media/i2c/sc200ai.c | 16 +--------------- drivers/media/i2c/sc210iot.c | 2 +- drivers/media/i2c/sc2232.c | 4 ++-- drivers/media/i2c/sc2239.c | 2 +- drivers/media/i2c/sc2310.c | 2 +- drivers/media/i2c/sc4238.c | 2 +- 49 files changed, 51 insertions(+), 64 deletions(-) diff --git a/drivers/media/i2c/ar0230.c b/drivers/media/i2c/ar0230.c index dae7096f3273..654ca7cbd52c 100644 --- a/drivers/media/i2c/ar0230.c +++ b/drivers/media/i2c/ar0230.c @@ -1415,7 +1415,7 @@ static int ar0230_set_ctrl(struct v4l2_ctrl *ctrl) struct i2c_client *client = ar0230->client; int ret = 0; - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc0403.c b/drivers/media/i2c/gc0403.c index 5664719daf89..4d627574d3bd 100644 --- a/drivers/media/i2c/gc0403.c +++ b/drivers/media/i2c/gc0403.c @@ -967,7 +967,7 @@ static int gc0403_set_ctrl(struct v4l2_ctrl *ctrl) int analog_gain = 0; int i = 0; - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc2053.c b/drivers/media/i2c/gc2053.c index 3af9e6f0e71f..f87984393c45 100644 --- a/drivers/media/i2c/gc2053.c +++ b/drivers/media/i2c/gc2053.c @@ -536,7 +536,7 @@ static int gc2053_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc2093.c b/drivers/media/i2c/gc2093.c index 9bc4c81a04ed..4e77d4c74505 100644 --- a/drivers/media/i2c/gc2093.c +++ b/drivers/media/i2c/gc2093.c @@ -547,7 +547,7 @@ static int gc2093_set_ctrl(struct v4l2_ctrl *ctrl) gc2093->exposure->default_value); break; } - if (pm_runtime_get(gc2093->dev) <= 0) + if (!pm_runtime_get_if_in_use(gc2093->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc2355.c b/drivers/media/i2c/gc2355.c index 33873b6cd727..2e5b6bea92d0 100644 --- a/drivers/media/i2c/gc2355.c +++ b/drivers/media/i2c/gc2355.c @@ -883,7 +883,7 @@ static int gc2355_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc2375h.c b/drivers/media/i2c/gc2375h.c index ec7f9acf03aa..7d9116c3a843 100644 --- a/drivers/media/i2c/gc2375h.c +++ b/drivers/media/i2c/gc2375h.c @@ -1207,7 +1207,7 @@ static int gc2375h_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc2385.c b/drivers/media/i2c/gc2385.c index 4de65b7d5c97..97281f71dfaa 100644 --- a/drivers/media/i2c/gc2385.c +++ b/drivers/media/i2c/gc2385.c @@ -962,7 +962,7 @@ static int gc2385_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc4c33.c b/drivers/media/i2c/gc4c33.c index 01f0cd2f58df..ad5278a45241 100644 --- a/drivers/media/i2c/gc4c33.c +++ b/drivers/media/i2c/gc4c33.c @@ -2146,7 +2146,7 @@ static int gc4c33_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc5024.c b/drivers/media/i2c/gc5024.c index c2d751e855bb..cf26b2ce4a77 100644 --- a/drivers/media/i2c/gc5024.c +++ b/drivers/media/i2c/gc5024.c @@ -1065,7 +1065,7 @@ static int gc5024_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc5025.c b/drivers/media/i2c/gc5025.c index e0716c71676d..16c7c3aa9096 100644 --- a/drivers/media/i2c/gc5025.c +++ b/drivers/media/i2c/gc5025.c @@ -1622,7 +1622,7 @@ static int gc5025_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc5035.c b/drivers/media/i2c/gc5035.c index d3e0cf144406..9e80cb79d959 100644 --- a/drivers/media/i2c/gc5035.c +++ b/drivers/media/i2c/gc5035.c @@ -1150,7 +1150,7 @@ static int gc5035_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/gc8034.c b/drivers/media/i2c/gc8034.c index 1f14e289edea..cc54cf256d34 100644 --- a/drivers/media/i2c/gc8034.c +++ b/drivers/media/i2c/gc8034.c @@ -1899,7 +1899,7 @@ static int gc8034_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx258.c b/drivers/media/i2c/imx258.c index 3135a09725f4..6ce7f61c196c 100644 --- a/drivers/media/i2c/imx258.c +++ b/drivers/media/i2c/imx258.c @@ -1510,7 +1510,7 @@ static int imx258_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx307.c b/drivers/media/i2c/imx307.c index fb00488e93ad..f0d17a659da7 100644 --- a/drivers/media/i2c/imx307.c +++ b/drivers/media/i2c/imx307.c @@ -1665,7 +1665,7 @@ static int imx307_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx317.c b/drivers/media/i2c/imx317.c index 22eb4bdd2fc5..f7cd6c5d752b 100644 --- a/drivers/media/i2c/imx317.c +++ b/drivers/media/i2c/imx317.c @@ -1246,7 +1246,7 @@ static int imx317_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx323.c b/drivers/media/i2c/imx323.c index cc64f7296cdc..e48b3fa2e799 100644 --- a/drivers/media/i2c/imx323.c +++ b/drivers/media/i2c/imx323.c @@ -778,7 +778,7 @@ static int imx323_set_ctrl(struct v4l2_ctrl *ctrl) struct i2c_client *client = imx323->client; int ret = 0; - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx327.c b/drivers/media/i2c/imx327.c index 5ee75c6ca32b..a1b53f445208 100644 --- a/drivers/media/i2c/imx327.c +++ b/drivers/media/i2c/imx327.c @@ -1634,7 +1634,7 @@ static int imx327_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c index 6565b70fdea1..664c619e26f2 100644 --- a/drivers/media/i2c/imx334.c +++ b/drivers/media/i2c/imx334.c @@ -1515,7 +1515,7 @@ static int imx334_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c index 30f6cbdf9ba3..6d5596e43ee9 100644 --- a/drivers/media/i2c/imx335.c +++ b/drivers/media/i2c/imx335.c @@ -1717,7 +1717,7 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx347.c b/drivers/media/i2c/imx347.c index fbdb05adcf10..b09eceb41172 100644 --- a/drivers/media/i2c/imx347.c +++ b/drivers/media/i2c/imx347.c @@ -1828,7 +1828,7 @@ static int imx347_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx378.c b/drivers/media/i2c/imx378.c index 8a0715a3edb3..30f66b74dbc0 100644 --- a/drivers/media/i2c/imx378.c +++ b/drivers/media/i2c/imx378.c @@ -2609,7 +2609,7 @@ static int imx378_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/imx415.c b/drivers/media/i2c/imx415.c index 9e9c6a6ac6d2..0aac6301348e 100644 --- a/drivers/media/i2c/imx415.c +++ b/drivers/media/i2c/imx415.c @@ -1962,7 +1962,7 @@ static int imx415_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/jx_f37.c b/drivers/media/i2c/jx_f37.c index baf10ac3f7de..2ca1724d5732 100644 --- a/drivers/media/i2c/jx_f37.c +++ b/drivers/media/i2c/jx_f37.c @@ -1255,7 +1255,7 @@ static int jx_f37_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/jx_h65.c b/drivers/media/i2c/jx_h65.c index e256a6613198..be9cad13fdd5 100644 --- a/drivers/media/i2c/jx_h65.c +++ b/drivers/media/i2c/jx_h65.c @@ -959,7 +959,7 @@ static int jx_h65_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/os04a10.c b/drivers/media/i2c/os04a10.c index 99a1f3d1382c..a2923aa2d624 100644 --- a/drivers/media/i2c/os04a10.c +++ b/drivers/media/i2c/os04a10.c @@ -1972,7 +1972,7 @@ static int os04a10_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov02k10.c b/drivers/media/i2c/ov02k10.c index 8bdcd065813a..fa6a3d54b334 100644 --- a/drivers/media/i2c/ov02k10.c +++ b/drivers/media/i2c/ov02k10.c @@ -1591,7 +1591,7 @@ static int ov02k10_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov13850.c b/drivers/media/i2c/ov13850.c index 87548a194201..55ca9b57d8da 100644 --- a/drivers/media/i2c/ov13850.c +++ b/drivers/media/i2c/ov13850.c @@ -1304,7 +1304,7 @@ static int ov13850_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c index df0379df8b4b..d68c2f5ca2d1 100644 --- a/drivers/media/i2c/ov2680.c +++ b/drivers/media/i2c/ov2680.c @@ -972,7 +972,7 @@ static int ov2680_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov2685.c b/drivers/media/i2c/ov2685.c index 18cd9a370286..dc012ae1bf63 100644 --- a/drivers/media/i2c/ov2685.c +++ b/drivers/media/i2c/ov2685.c @@ -691,7 +691,8 @@ static int ov2685_set_ctrl(struct v4l2_ctrl *ctrl) break; } - pm_runtime_get_sync(&client->dev); + if (!pm_runtime_get_if_in_use(&client->dev)) + return 0; switch (ctrl->id) { case V4L2_CID_EXPOSURE: ov2685_set_exposure(ov2685, ctrl->val); diff --git a/drivers/media/i2c/ov2718.c b/drivers/media/i2c/ov2718.c index fd2008c1279d..1f7572911491 100644 --- a/drivers/media/i2c/ov2718.c +++ b/drivers/media/i2c/ov2718.c @@ -8657,7 +8657,7 @@ static int ov2718_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov2735.c b/drivers/media/i2c/ov2735.c index 3170fbc79ff1..cff8ffaabd21 100644 --- a/drivers/media/i2c/ov2735.c +++ b/drivers/media/i2c/ov2735.c @@ -898,7 +898,7 @@ static int ov2735_set_ctrl(struct v4l2_ctrl *ctrl) ov2735->exposure->default_value); break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; ret = ov2735_write_reg(client, PAGE_SELECT_REG, PAGE_ONE); diff --git a/drivers/media/i2c/ov4686.c b/drivers/media/i2c/ov4686.c index 71fd0f6851f5..cb14ec9adb89 100644 --- a/drivers/media/i2c/ov4686.c +++ b/drivers/media/i2c/ov4686.c @@ -1275,7 +1275,7 @@ static int OV4686_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov4689.c b/drivers/media/i2c/ov4689.c index 71ffee780d45..b27e538a5005 100644 --- a/drivers/media/i2c/ov4689.c +++ b/drivers/media/i2c/ov4689.c @@ -1297,7 +1297,7 @@ static int ov4689_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov5648.c b/drivers/media/i2c/ov5648.c index a87dba191770..457ed57046b6 100644 --- a/drivers/media/i2c/ov5648.c +++ b/drivers/media/i2c/ov5648.c @@ -1148,7 +1148,7 @@ static int ov5648_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov5670.c b/drivers/media/i2c/ov5670.c index 37aaaf6a777e..3f9af2912625 100644 --- a/drivers/media/i2c/ov5670.c +++ b/drivers/media/i2c/ov5670.c @@ -1480,7 +1480,7 @@ static int ov5670_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov5695.c b/drivers/media/i2c/ov5695.c index 8ce85b90dfdc..ad9dd263b078 100644 --- a/drivers/media/i2c/ov5695.c +++ b/drivers/media/i2c/ov5695.c @@ -1213,7 +1213,7 @@ static int ov5695_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c index 94182b5ebadd..81940b596ca9 100644 --- a/drivers/media/i2c/ov7251.c +++ b/drivers/media/i2c/ov7251.c @@ -889,7 +889,7 @@ static int ov7251_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov7750.c b/drivers/media/i2c/ov7750.c index 576d878aad37..cc090beda4f1 100644 --- a/drivers/media/i2c/ov7750.c +++ b/drivers/media/i2c/ov7750.c @@ -1006,7 +1006,7 @@ static int ov7750_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov8858.c b/drivers/media/i2c/ov8858.c index 1c07f6fd592b..2164cd087f84 100644 --- a/drivers/media/i2c/ov8858.c +++ b/drivers/media/i2c/ov8858.c @@ -2351,7 +2351,7 @@ static int ov8858_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov9281.c b/drivers/media/i2c/ov9281.c index aae5be3385d1..18fff1d6c475 100644 --- a/drivers/media/i2c/ov9281.c +++ b/drivers/media/i2c/ov9281.c @@ -874,7 +874,7 @@ static int ov9281_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/ov9750.c b/drivers/media/i2c/ov9750.c index 1b4f585684c7..3121bf8c2052 100644 --- a/drivers/media/i2c/ov9750.c +++ b/drivers/media/i2c/ov9750.c @@ -993,7 +993,7 @@ static int ov9750_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc031gs.c b/drivers/media/i2c/sc031gs.c index 3b82e9b29167..be1602b932dd 100644 --- a/drivers/media/i2c/sc031gs.c +++ b/drivers/media/i2c/sc031gs.c @@ -987,7 +987,7 @@ static int sc031gs_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc132gs.c b/drivers/media/i2c/sc132gs.c index ff2b955c34ef..f463915b17c3 100644 --- a/drivers/media/i2c/sc132gs.c +++ b/drivers/media/i2c/sc132gs.c @@ -907,7 +907,7 @@ static int sc132gs_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc200ai.c b/drivers/media/i2c/sc200ai.c index 9a47abdd8e03..81aa77041432 100644 --- a/drivers/media/i2c/sc200ai.c +++ b/drivers/media/i2c/sc200ai.c @@ -1178,8 +1178,6 @@ static long sc200ai_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) case PREISP_CMD_SET_HDRAE_EXP: sc200ai_set_hdrae(sc200ai, arg); break; - case RKMODULE_GET_NR_SWITCH_THRESHOLD: - break; case RKMODULE_SET_QUICK_STREAM: stream = *((u32 *)arg); @@ -1272,18 +1270,6 @@ static long sc200ai_compat_ioctl32(struct v4l2_subdev *sd, ret = sc200ai_ioctl(sd, cmd, hdrae); kfree(hdrae); break; - case RKMODULE_GET_NR_SWITCH_THRESHOLD: - nr_switch = kzalloc(sizeof(*nr_switch), GFP_KERNEL); - if (!nr_switch) { - ret = -ENOMEM; - return ret; - } - - ret = sc200ai_ioctl(sd, cmd, nr_switch); - if (!ret) - ret = copy_to_user(up, nr_switch, sizeof(*nr_switch)); - kfree(nr_switch); - break; case RKMODULE_SET_QUICK_STREAM: ret = copy_from_user(&stream, up, sizeof(u32)); if (!ret) @@ -1606,7 +1592,7 @@ static int sc200ai_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc210iot.c b/drivers/media/i2c/sc210iot.c index cd7265b770da..cee67a6b498a 100644 --- a/drivers/media/i2c/sc210iot.c +++ b/drivers/media/i2c/sc210iot.c @@ -376,7 +376,7 @@ static int sc210iot_set_ctrl(struct v4l2_ctrl *ctrl) sc210iot->exposure->default_value); break; } - if (pm_runtime_get(sc210iot->dev) <= 0) + if (!pm_runtime_get_if_in_use(sc210iot->dev)) return 0; switch (ctrl->id) { case V4L2_CID_EXPOSURE: diff --git a/drivers/media/i2c/sc2232.c b/drivers/media/i2c/sc2232.c index ecb2bb4ef80e..3e51882c927f 100644 --- a/drivers/media/i2c/sc2232.c +++ b/drivers/media/i2c/sc2232.c @@ -863,7 +863,7 @@ static long sc2232_compat_ioctl32(struct v4l2_subdev *sd, case RKMODULE_SET_QUICK_STREAM: ret = copy_from_user(&stream, up, sizeof(u32)); if (!ret) - ret = sc2310_ioctl(sd, cmd, &stream); + ret = sc2232_ioctl(sd, cmd, &stream); break; default: ret = -ENOIOCTLCMD; @@ -1166,7 +1166,7 @@ static int sc2232_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc2239.c b/drivers/media/i2c/sc2239.c index 38eead6a47be..30dba3bc3b43 100644 --- a/drivers/media/i2c/sc2239.c +++ b/drivers/media/i2c/sc2239.c @@ -933,7 +933,7 @@ static int sc2239_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc2310.c b/drivers/media/i2c/sc2310.c index 0f5c6e3c1078..f30bb282f323 100644 --- a/drivers/media/i2c/sc2310.c +++ b/drivers/media/i2c/sc2310.c @@ -1543,7 +1543,7 @@ static int sc2310_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) { diff --git a/drivers/media/i2c/sc4238.c b/drivers/media/i2c/sc4238.c index e84678f138ae..366a0027cc91 100644 --- a/drivers/media/i2c/sc4238.c +++ b/drivers/media/i2c/sc4238.c @@ -2058,7 +2058,7 @@ static int sc4238_set_ctrl(struct v4l2_ctrl *ctrl) break; } - if (pm_runtime_get(&client->dev) <= 0) + if (!pm_runtime_get_if_in_use(&client->dev)) return 0; switch (ctrl->id) {