Use nvhost_free_syncpts() to free the syncpts during driver
unload
This is required to fix syncpts leak
Bug
1489488
Bug
1305024
Change-Id: Ic02771e2078ddead4c9b54826a669bb7c3653ba2
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/388116
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-by: Bryan Wu <pengw@nvidia.com>
Tested-by: Bryan Wu <pengw@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
vb2_dma_contig_cleanup_ctx(cam->alloc_ctx);
+ if (cam->ops)
+ cam->ops->free_syncpts(cam);
+
if (cam->ops)
cam->ops->clks_deinit(cam);
int (*capture_stop)(struct tegra_camera_dev *vi2_cam, int port);
void (*init_syncpts)(struct tegra_camera_dev *vi2_cam);
+ void (*free_syncpts)(struct tegra_camera_dev *vi2_cam);
void (*incr_syncpts)(struct tegra_camera_dev *vi2_cam);
void (*save_syncpts)(struct tegra_camera_dev *vi2_cam);
cam->syncpt_id_vip = nvhost_get_syncpt_client_managed("vi_vip");
}
+static void vi_free_syncpts(struct tegra_camera_dev *cam)
+{
+ nvhost_free_syncpt(cam->syncpt_id_csi_a);
+
+ nvhost_free_syncpt(cam->syncpt_id_csi_b);
+
+ nvhost_free_syncpt(cam->syncpt_id_vip);
+}
+
static void vi_save_syncpts(struct tegra_camera_dev *cam)
{
u32 val;
.deactivate = vi_powergate,
.init_syncpts = vi_init_syncpts,
+ .free_syncpts = vi_free_syncpts,
.save_syncpts = vi_save_syncpts,
.incr_syncpts = vi_incr_syncpts,
cam->syncpt_id_csi_b = nvhost_get_syncpt_client_managed("vi_csi_B");
}
+static void vi2_free_syncpts(struct tegra_camera_dev *cam)
+{
+ nvhost_free_syncpt(cam->syncpt_id_csi_a);
+
+ nvhost_free_syncpt(cam->syncpt_id_csi_b);
+}
+
static void vi2_save_syncpts(struct tegra_camera_dev *cam)
{
u32 val;
.activate = vi2_sw_reset,
.init_syncpts = vi2_init_syncpts,
+ .free_syncpts = vi2_free_syncpts,
.save_syncpts = vi2_save_syncpts,
.incr_syncpts = vi2_incr_syncpts,