msm: camera: uapi: Add support for using synx objects
This change adds synx object support for all fence ops. CRs-Fixed: 3317280 Change-Id: Id370a9fdb3155378c61a84dde2fa849a993ec6a2 Signed-off-by: Petar Nedev <quic_pnedev@quicinc.com>
This commit is contained in:

committed by
Camera Software Integration

parent
3ae6e71b78
commit
a9b45021cc
@@ -150,9 +150,19 @@
|
|||||||
#define CAM_SYNC_EVENT_MAX 8
|
#define CAM_SYNC_EVENT_MAX 8
|
||||||
#define CAM_SYNC_EVENT_REASON_CODE_INDEX 0
|
#define CAM_SYNC_EVENT_REASON_CODE_INDEX 0
|
||||||
|
|
||||||
/* Fence types supported by the driver */
|
/* Fence types supported by the driver, when used in the fence mask it
|
||||||
|
* represents bit position, for masks it needs to be set as
|
||||||
|
* BIT(fence_type) on other occasions use as is.
|
||||||
|
*/
|
||||||
#define CAM_GENERIC_FENCE_TYPE_SYNC_OBJ 0x1
|
#define CAM_GENERIC_FENCE_TYPE_SYNC_OBJ 0x1
|
||||||
#define CAM_GENERIC_FENCE_TYPE_DMA_FENCE 0x2
|
#define CAM_GENERIC_FENCE_TYPE_DMA_FENCE 0x2
|
||||||
|
#define CAM_GENERIC_FENCE_TYPE_SYNX_OBJ 0x3
|
||||||
|
|
||||||
|
/* Additional param index for cam_generic_fence_config */
|
||||||
|
#define CAM_GENERIC_FENCE_CONFIG_FLAG_PARAM_INDEX BIT(0)
|
||||||
|
|
||||||
|
/* Flag fields for cam_generic_fence_config */
|
||||||
|
#define CAM_GENERIC_FENCE_FLAG_IS_GLOBAL_SYNX_OBJ BIT(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct cam_sync_ev_header - Event header for sync event notification
|
* struct cam_sync_ev_header - Event header for sync event notification
|
||||||
@@ -251,7 +261,8 @@ struct cam_sync_wait {
|
|||||||
* @fence_sel_mask: Fence select mask, if set for fence types other than the type
|
* @fence_sel_mask: Fence select mask, if set for fence types other than the type
|
||||||
* this input is processed for, the corresponding types would be
|
* this input is processed for, the corresponding types would be
|
||||||
* processed as well. For example if one wants to import a sync
|
* processed as well. For example if one wants to import a sync
|
||||||
* object for an existing dma fence, set mask |= CAM_GENERIC_FENCE_TYPE_SYNC_OBJ,
|
* object for an existing dma fence, set bit with index
|
||||||
|
* CAM_GENERIC_FENCE_TYPE_SYNC_OBJ in mask,
|
||||||
* a new sync object would be returned in sync_obj linked to an
|
* a new sync object would be returned in sync_obj linked to an
|
||||||
* existing dma_fence_fd.
|
* existing dma_fence_fd.
|
||||||
* @sync_obj: Sync object
|
* @sync_obj: Sync object
|
||||||
@@ -278,6 +289,34 @@ struct cam_generic_fence_config {
|
|||||||
__u32 params[4];
|
__u32 params[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct cam_generic_fence_signal_info - Fence signaling info
|
||||||
|
*
|
||||||
|
* @version: Struct version
|
||||||
|
* @num_fences_requested: Number of fences to process
|
||||||
|
* @num_fences_processed: Number of fences processed by the driver
|
||||||
|
* @fence_handle_type: Type of the fence signal handle [user handle is expected]
|
||||||
|
* @fence_data_size: Size of the data pointed to by fence_info_hdl,
|
||||||
|
* it should be the consolidated size of
|
||||||
|
* total fences to process * size of the corresponding signaling
|
||||||
|
* input structure
|
||||||
|
* @fence_info_hdl: Handle to the fence signal data (synx/dma)
|
||||||
|
* @num_valid_params: Valid number of params being used
|
||||||
|
* @valid_param_mask: Mask to indicate the field types in params
|
||||||
|
* @params: Additional params
|
||||||
|
*/
|
||||||
|
struct cam_generic_fence_signal_info {
|
||||||
|
__u32 version;
|
||||||
|
__u32 num_fences_requested;
|
||||||
|
__u32 num_fences_processed;
|
||||||
|
__u32 fence_handle_type;
|
||||||
|
__u32 fence_data_size;
|
||||||
|
__u64 fence_info_hdl;
|
||||||
|
__u32 num_valid_params;
|
||||||
|
__u32 valid_param_mask;
|
||||||
|
__s32 params[3];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct cam_dma_fence_signal - DMA fence signaling info
|
* struct cam_dma_fence_signal - DMA fence signaling info
|
||||||
*
|
*
|
||||||
@@ -297,6 +336,27 @@ struct cam_dma_fence_signal {
|
|||||||
__s32 params[3];
|
__s32 params[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct cam_synx_obj_signal - Synx object signaling info
|
||||||
|
*
|
||||||
|
* @version: Struct version
|
||||||
|
* @synx_obj: Synx object to be signaled
|
||||||
|
* @status: Fence status
|
||||||
|
* @reason_code: Indicates if the operation was successful or not
|
||||||
|
* @num_valid_params: Valid number of params being used
|
||||||
|
* @valid_param_mask: Mask to indicate the field types in params
|
||||||
|
* @params: Additional params
|
||||||
|
*/
|
||||||
|
struct cam_synx_obj_signal {
|
||||||
|
__u32 version;
|
||||||
|
__u32 synx_obj;
|
||||||
|
__u32 status;
|
||||||
|
__s32 reason_code;
|
||||||
|
__u32 num_valid_params;
|
||||||
|
__u32 valid_param_mask;
|
||||||
|
__s32 params[4];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct cam_generic_fence_input_info - Parent structure that
|
* struct cam_generic_fence_input_info - Parent structure that
|
||||||
* provides info on fence batching
|
* provides info on fence batching
|
||||||
|
Reference in New Issue
Block a user