Messages in this thread | | | Date | Thu, 27 Oct 2022 18:37:58 +0000 | From | Sakari Ailus <> | Subject | Re: [PATCH v2 2/5] media: i2c: ov5645: Use runtime PM |
| |
Hi Prabhakar,
On Thu, Oct 27, 2022 at 05:32:07PM +0100, Lad, Prabhakar wrote: > Hi Sakari, > > On Thu, Oct 27, 2022 at 1:47 PM Sakari Ailus > <sakari.ailus@linux.intel.com> wrote: > > > > Hi Prabhakar, > > > > On Thu, Oct 27, 2022 at 01:01:52PM +0100, Lad, Prabhakar wrote: > > > Hi Sakari, > > > > > > On Thu, Oct 27, 2022 at 12:20 PM Sakari Ailus > > > <sakari.ailus@linux.intel.com> wrote: > > > > > > > > Hi Prabhakar, > > > > > > > > One more comment. > > > > > > > > On Fri, Oct 14, 2022 at 07:34:56PM +0100, Prabhakar wrote: > > > > > @@ -1209,12 +1190,16 @@ static int ov5645_probe(struct i2c_client *client) > > > > > > > > > > dev_info(dev, "OV5645 detected at address 0x%02x\n", client->addr); > > > > > > > > > > + pm_runtime_set_active(dev); > > > > > + pm_runtime_get_noresume(dev); > > > > > + pm_runtime_enable(dev); > > > > > > > > You won't gain anything by eanbling runtime PM here. Just move it to the > > > > end of the function before the rest of the calls. Error handling becomes > > > > more simple. > > > > > > > If I move the above calls below I get the below warning: > > > > > > [ 2.633386] ov5645 0-003c: Runtime PM usage count underflow! > > > > > > This is because of the last patch which moves ov5645_entity_init_cfg() > > > before registering the subdev. ov5645_entity_init_cfg() calls s_ctrl > > > due to which we are seeing the above message. Please let me know how > > > to proceed on this. > > > > Ah. Yes, this is a problem with the usage pattern of > > pm_runtime_get_if_in_use(). But please don't change that. > > > > You can still move enabling runtime PM later in the function. > > > Agreed, the final version looks like below: > > pm_runtime_set_active(dev); > pm_runtime_get_noresume(dev); >
You'll have to enable runtime PM here, before pm_runtime_get_if_in_use() gets called.
I'll see if it could be made to work in a sensible way when runtime PM isn't enabled yet.
> ov5645_entity_init_cfg(&ov5645->sd, NULL); > > ret = v4l2_async_register_subdev(&ov5645->sd); > if (ret < 0) { > dev_err(dev, "could not register v4l2 device\n"); > goto err_pm_runtime; > } > > pm_runtime_set_autosuspend_delay(dev, 1000); > pm_runtime_use_autosuspend(dev); > pm_runtime_enable(dev);
-- Kind regards,
Sakari Ailus
| |