Hi Biju, On Mi, 2022-03-09 at 19:45 +0000, Biju Das wrote: [...] > @@ -569,7 +570,19 @@ static void vsp1_mask_all_interrupts(struct > vsp1_device *vsp1) > */ > int vsp1_device_get(struct vsp1_device *vsp1) > { > - return pm_runtime_resume_and_get(vsp1->dev); > + int ret = reset_control_deassert(vsp1->rstc); > + > + if (ret < 0) > + goto err; > + > + ret = pm_runtime_resume_and_get(vsp1->dev); > + if (ret < 0) > + goto err; > + > + return 0; > +err: > + reset_control_assert(vsp1->rstc); > + return ret; > } > > /* > @@ -581,6 +594,7 @@ int vsp1_device_get(struct vsp1_device *vsp1) > void vsp1_device_put(struct vsp1_device *vsp1) > { > pm_runtime_put_sync(vsp1->dev); > + reset_control_assert(vsp1->rstc); Now the comment above doesn't fit anymore, since reset_control_assert is not reference counted in case vsp1->rstc has exclusive control: /* * vsp1_device_put - Release the VSP1 device * * Decrement the VSP1 reference count and cleanup the device if the last * reference is released. */ regards Philipp