|
@@ -5942,28 +5942,45 @@ compat_hw_name_failed:
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+static void cam_req_mgr_process_workq_icp_command_queue(struct work_struct *w)
|
|
|
+{
|
|
|
+ cam_req_mgr_process_workq(w);
|
|
|
+}
|
|
|
+
|
|
|
+static void cam_req_mgr_process_workq_icp_message_queue(struct work_struct *w)
|
|
|
+{
|
|
|
+ cam_req_mgr_process_workq(w);
|
|
|
+}
|
|
|
+
|
|
|
+static void cam_req_mgr_process_workq_icp_timer_queue(struct work_struct *w)
|
|
|
+{
|
|
|
+ cam_req_mgr_process_workq(w);
|
|
|
+}
|
|
|
+
|
|
|
static int cam_icp_mgr_create_wq(void)
|
|
|
{
|
|
|
int rc;
|
|
|
int i;
|
|
|
|
|
|
rc = cam_req_mgr_workq_create("icp_command_queue", ICP_WORKQ_NUM_TASK,
|
|
|
- &icp_hw_mgr.cmd_work, CRM_WORKQ_USAGE_NON_IRQ,
|
|
|
- 0);
|
|
|
+ &icp_hw_mgr.cmd_work, CRM_WORKQ_USAGE_NON_IRQ, 0,
|
|
|
+ cam_req_mgr_process_workq_icp_command_queue);
|
|
|
if (rc) {
|
|
|
CAM_ERR(CAM_ICP, "unable to create a command worker");
|
|
|
goto cmd_work_failed;
|
|
|
}
|
|
|
|
|
|
rc = cam_req_mgr_workq_create("icp_message_queue", ICP_WORKQ_NUM_TASK,
|
|
|
- &icp_hw_mgr.msg_work, CRM_WORKQ_USAGE_IRQ, 0);
|
|
|
+ &icp_hw_mgr.msg_work, CRM_WORKQ_USAGE_IRQ, 0,
|
|
|
+ cam_req_mgr_process_workq_icp_message_queue);
|
|
|
if (rc) {
|
|
|
CAM_ERR(CAM_ICP, "unable to create a message worker");
|
|
|
goto msg_work_failed;
|
|
|
}
|
|
|
|
|
|
rc = cam_req_mgr_workq_create("icp_timer_queue", ICP_WORKQ_NUM_TASK,
|
|
|
- &icp_hw_mgr.timer_work, CRM_WORKQ_USAGE_IRQ, 0);
|
|
|
+ &icp_hw_mgr.timer_work, CRM_WORKQ_USAGE_IRQ, 0,
|
|
|
+ cam_req_mgr_process_workq_icp_timer_queue);
|
|
|
if (rc) {
|
|
|
CAM_ERR(CAM_ICP, "unable to create a timer worker");
|
|
|
goto timer_work_failed;
|