msm: camera: sync: Add support for synx objects
Add support to create, release, signal and import a synx object using the existing generic fence operations. Handle signaling of underlying synx object when a sync object is signaled & vice versa. CRs-Fixed: 3317280 Change-Id: Ia6fac6eb732ed7091ec62f04875bdb30d88c8676 Signed-off-by: Petar Nedev <quic_pnedev@quicinc.com>
This commit is contained in:

committed by
Camera Software Integration

parent
c5035ff7d8
commit
f22f48c91f
@@ -149,7 +149,8 @@ clean_children_info:
|
||||
}
|
||||
|
||||
int cam_sync_deinit_object(struct sync_table_row *table, uint32_t idx,
|
||||
struct cam_sync_check_for_dma_release *check_for_dma_release)
|
||||
struct cam_sync_check_for_dma_release *check_for_dma_release,
|
||||
struct cam_sync_check_for_synx_release *check_for_synx_release)
|
||||
{
|
||||
struct sync_table_row *row = table + idx;
|
||||
struct sync_child_info *child_info, *temp_child;
|
||||
@@ -296,6 +297,19 @@ int cam_sync_deinit_object(struct sync_table_row *table, uint32_t idx,
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if same synx obj is being released with the sync obj */
|
||||
if (test_bit(CAM_GENERIC_FENCE_TYPE_SYNX_OBJ, &row->ext_fence_mask)) {
|
||||
if (check_for_synx_release) {
|
||||
if (row->synx_obj_info.synx_obj ==
|
||||
check_for_synx_release->synx_obj) {
|
||||
check_for_synx_release->synx_obj_row_idx =
|
||||
row->synx_obj_info.synx_obj_row_idx;
|
||||
check_for_synx_release->sync_created_with_synx =
|
||||
row->synx_obj_info.sync_created_with_synx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
memset(row, 0, sizeof(*row));
|
||||
clear_bit(idx, sync_dev->bitmap);
|
||||
INIT_LIST_HEAD(&row->callback_list);
|
||||
|
Reference in New Issue
Block a user