]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
media: smiapp: Register sensor after enabling runtime PM on the device
authorSakari Ailus <sakari.ailus@linux.intel.com>
Fri, 11 Oct 2019 11:16:02 +0000 (08:16 -0300)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 24 Oct 2019 21:56:18 +0000 (18:56 -0300)
Earlier it was possible that the parts of the driver that assumed runtime
PM was enabled were being called before runtime PM was enabled in the
driver's probe function. So enable runtime PM before registering the
sub-device.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/i2c/smiapp/smiapp-core.c

index 19d722aa1e9b0dec237f28225507d8248946678f..6d4b749b48b4e6f5aeb23de350800f15f2ead344 100644 (file)
@@ -3059,19 +3059,23 @@ static int smiapp_probe(struct i2c_client *client)
        if (rval < 0)
                goto out_media_entity_cleanup;
 
-       rval = v4l2_async_register_subdev_sensor_common(&sensor->src->sd);
-       if (rval < 0)
-               goto out_media_entity_cleanup;
-
        pm_runtime_set_active(&client->dev);
        pm_runtime_get_noresume(&client->dev);
        pm_runtime_enable(&client->dev);
+
+       rval = v4l2_async_register_subdev_sensor_common(&sensor->src->sd);
+       if (rval < 0)
+               goto out_disable_runtime_pm;
+
        pm_runtime_set_autosuspend_delay(&client->dev, 1000);
        pm_runtime_use_autosuspend(&client->dev);
        pm_runtime_put_autosuspend(&client->dev);
 
        return 0;
 
+out_disable_runtime_pm:
+       pm_runtime_disable(&client->dev);
+
 out_media_entity_cleanup:
        media_entity_cleanup(&sensor->src->sd.entity);