Loading drivers/media/platform/msm/camera/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c +9 −45 Original line number Diff line number Diff line Loading @@ -1314,32 +1314,6 @@ static int cam_icp_hw_mgr_create_debugfs_entry(void) return rc; } static int cam_icp_mgr_process_cmd_and_free_mem(void *priv, void *data) { int rc; struct hfi_cmd_work_data *task_data = NULL; struct cam_icp_hw_mgr *hw_mgr; if (!data || !priv) { CAM_ERR(CAM_ICP, "Invalid params%pK %pK", data, priv); return -EINVAL; } hw_mgr = priv; task_data = (struct hfi_cmd_work_data *)data; if (!task_data->data) { CAM_ERR(CAM_ICP, "Invalid data"); return -EINVAL; } rc = hfi_write_cmd(task_data->data); kfree(task_data->data); task_data->data = NULL; return rc; } static int cam_icp_mgr_process_cmd(void *priv, void *data) { int rc; Loading Loading @@ -2214,14 +2188,13 @@ static int cam_icp_mgr_abort_handle( task_data->data = (void *)abort_cmd; task_data->request_id = 0; task_data->type = ICP_WORKQ_TASK_CMD_TYPE; task->process_cb = cam_icp_mgr_process_cmd_and_free_mem; task->process_cb = cam_icp_mgr_process_cmd; rc = cam_req_mgr_workq_enqueue_task(task, &icp_hw_mgr, CRM_TASK_PRIORITY_0); if (rc) { kfree(abort_cmd); return rc; } CAM_DBG(CAM_ICP, "payload data = %pK", task_data->data); CAM_DBG(CAM_ICP, "fw_handle = %x ctx_data = %pK", ctx_data->fw_handle, ctx_data); rem_jiffies = wait_for_completion_timeout(&ctx_data->wait_complete, Loading Loading @@ -2278,14 +2251,13 @@ static int cam_icp_mgr_destroy_handle( task_data->data = (void *)destroy_cmd; task_data->request_id = 0; task_data->type = ICP_WORKQ_TASK_CMD_TYPE; task->process_cb = cam_icp_mgr_process_cmd_and_free_mem; task->process_cb = cam_icp_mgr_process_cmd; rc = cam_req_mgr_workq_enqueue_task(task, &icp_hw_mgr, CRM_TASK_PRIORITY_0); if (rc) { kfree(destroy_cmd); return rc; } CAM_DBG(CAM_ICP, "payload data = %pK", task_data->data); CAM_DBG(CAM_ICP, "fw_handle = %x ctx_data = %pK", ctx_data->fw_handle, ctx_data); rem_jiffies = wait_for_completion_timeout(&ctx_data->wait_complete, Loading Loading @@ -3560,7 +3532,7 @@ static int cam_icp_mgr_create_handle(uint32_t dev_type, static int cam_icp_mgr_send_ping(struct cam_icp_hw_ctx_data *ctx_data) { struct hfi_cmd_ping_pkt *ping_pkt; struct hfi_cmd_ping_pkt ping_pkt; struct hfi_cmd_work_data *task_data; unsigned long rem_jiffies; int timeout = 5000; Loading @@ -3573,28 +3545,20 @@ static int cam_icp_mgr_send_ping(struct cam_icp_hw_ctx_data *ctx_data) return -ENOMEM; } ping_pkt = kzalloc(sizeof(struct hfi_cmd_ping_pkt), GFP_KERNEL); if (!ping_pkt) { rc = -ENOMEM; return rc; } ping_pkt->size = sizeof(struct hfi_cmd_ping_pkt); ping_pkt->pkt_type = HFI_CMD_SYS_PING; ping_pkt->user_data = (uint64_t)ctx_data; ping_pkt.size = sizeof(struct hfi_cmd_ping_pkt); ping_pkt.pkt_type = HFI_CMD_SYS_PING; ping_pkt.user_data = (uint64_t)ctx_data; init_completion(&ctx_data->wait_complete); task_data = (struct hfi_cmd_work_data *)task->payload; task_data->data = (void *)ping_pkt; task_data->data = (void *)&ping_pkt; task_data->request_id = 0; task_data->type = ICP_WORKQ_TASK_CMD_TYPE; task->process_cb = cam_icp_mgr_process_cmd_and_free_mem; task->process_cb = cam_icp_mgr_process_cmd; rc = cam_req_mgr_workq_enqueue_task(task, &icp_hw_mgr, CRM_TASK_PRIORITY_0); if (rc) { kfree(ping_pkt); if (rc) return rc; } CAM_DBG(CAM_ICP, "payload data = %pK", task_data->data); rem_jiffies = wait_for_completion_timeout(&ctx_data->wait_complete, msecs_to_jiffies((timeout))); Loading drivers/media/platform/msm/camera/cam_sensor_module/cam_csiphy/include/cam_csiphy_1_0_hwreg.h +13 −9 Original line number Diff line number Diff line /* Copyright (c) 2017, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading @@ -19,8 +19,8 @@ struct csiphy_reg_parms_t csiphy_v1_0 = { .mipi_csiphy_interrupt_status0_addr = 0x8B0, .mipi_csiphy_interrupt_clear0_addr = 0x858, .mipi_csiphy_glbl_irq_cmd_addr = 0x828, .csiphy_common_array_size = 3, .csiphy_reset_array_size = 3, .csiphy_common_array_size = 5, .csiphy_reset_array_size = 5, .csiphy_2ph_config_array_size = 14, .csiphy_3ph_config_array_size = 19, }; Loading @@ -29,12 +29,16 @@ struct csiphy_reg_t csiphy_common_reg_1_0[] = { {0x0814, 0x00, 0x00, CSIPHY_LANE_ENABLE}, {0x0818, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x081C, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x01, 0x01, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, }; struct csiphy_reg_t csiphy_reset_reg_1_0[] = { {0x0814, 0x00, 0x50, CSIPHY_LANE_ENABLE}, {0x0814, 0x00, 0x05, CSIPHY_LANE_ENABLE}, {0x0818, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x081C, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x01, 0x01, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, }; struct csiphy_reg_t csiphy_irq_reg_1_0[] = { Loading Loading @@ -148,7 +152,7 @@ struct csiphy_reg_t {0x0008, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x0010, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0038, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0060, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0060, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0064, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -164,7 +168,7 @@ struct csiphy_reg_t {0x070C, 0xA5, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0710, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0738, 0x1F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0760, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0760, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0764, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -179,7 +183,7 @@ struct csiphy_reg_t {0x0208, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x0210, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0238, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0260, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0260, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0264, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -194,7 +198,7 @@ struct csiphy_reg_t {0x0408, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x0410, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0438, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0460, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0460, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0464, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -210,7 +214,7 @@ struct csiphy_reg_t {0x060C, 0xA5, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0610, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0638, 0x1F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0660, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0660, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0664, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, }; Loading Loading
drivers/media/platform/msm/camera/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c +9 −45 Original line number Diff line number Diff line Loading @@ -1314,32 +1314,6 @@ static int cam_icp_hw_mgr_create_debugfs_entry(void) return rc; } static int cam_icp_mgr_process_cmd_and_free_mem(void *priv, void *data) { int rc; struct hfi_cmd_work_data *task_data = NULL; struct cam_icp_hw_mgr *hw_mgr; if (!data || !priv) { CAM_ERR(CAM_ICP, "Invalid params%pK %pK", data, priv); return -EINVAL; } hw_mgr = priv; task_data = (struct hfi_cmd_work_data *)data; if (!task_data->data) { CAM_ERR(CAM_ICP, "Invalid data"); return -EINVAL; } rc = hfi_write_cmd(task_data->data); kfree(task_data->data); task_data->data = NULL; return rc; } static int cam_icp_mgr_process_cmd(void *priv, void *data) { int rc; Loading Loading @@ -2214,14 +2188,13 @@ static int cam_icp_mgr_abort_handle( task_data->data = (void *)abort_cmd; task_data->request_id = 0; task_data->type = ICP_WORKQ_TASK_CMD_TYPE; task->process_cb = cam_icp_mgr_process_cmd_and_free_mem; task->process_cb = cam_icp_mgr_process_cmd; rc = cam_req_mgr_workq_enqueue_task(task, &icp_hw_mgr, CRM_TASK_PRIORITY_0); if (rc) { kfree(abort_cmd); return rc; } CAM_DBG(CAM_ICP, "payload data = %pK", task_data->data); CAM_DBG(CAM_ICP, "fw_handle = %x ctx_data = %pK", ctx_data->fw_handle, ctx_data); rem_jiffies = wait_for_completion_timeout(&ctx_data->wait_complete, Loading Loading @@ -2278,14 +2251,13 @@ static int cam_icp_mgr_destroy_handle( task_data->data = (void *)destroy_cmd; task_data->request_id = 0; task_data->type = ICP_WORKQ_TASK_CMD_TYPE; task->process_cb = cam_icp_mgr_process_cmd_and_free_mem; task->process_cb = cam_icp_mgr_process_cmd; rc = cam_req_mgr_workq_enqueue_task(task, &icp_hw_mgr, CRM_TASK_PRIORITY_0); if (rc) { kfree(destroy_cmd); return rc; } CAM_DBG(CAM_ICP, "payload data = %pK", task_data->data); CAM_DBG(CAM_ICP, "fw_handle = %x ctx_data = %pK", ctx_data->fw_handle, ctx_data); rem_jiffies = wait_for_completion_timeout(&ctx_data->wait_complete, Loading Loading @@ -3560,7 +3532,7 @@ static int cam_icp_mgr_create_handle(uint32_t dev_type, static int cam_icp_mgr_send_ping(struct cam_icp_hw_ctx_data *ctx_data) { struct hfi_cmd_ping_pkt *ping_pkt; struct hfi_cmd_ping_pkt ping_pkt; struct hfi_cmd_work_data *task_data; unsigned long rem_jiffies; int timeout = 5000; Loading @@ -3573,28 +3545,20 @@ static int cam_icp_mgr_send_ping(struct cam_icp_hw_ctx_data *ctx_data) return -ENOMEM; } ping_pkt = kzalloc(sizeof(struct hfi_cmd_ping_pkt), GFP_KERNEL); if (!ping_pkt) { rc = -ENOMEM; return rc; } ping_pkt->size = sizeof(struct hfi_cmd_ping_pkt); ping_pkt->pkt_type = HFI_CMD_SYS_PING; ping_pkt->user_data = (uint64_t)ctx_data; ping_pkt.size = sizeof(struct hfi_cmd_ping_pkt); ping_pkt.pkt_type = HFI_CMD_SYS_PING; ping_pkt.user_data = (uint64_t)ctx_data; init_completion(&ctx_data->wait_complete); task_data = (struct hfi_cmd_work_data *)task->payload; task_data->data = (void *)ping_pkt; task_data->data = (void *)&ping_pkt; task_data->request_id = 0; task_data->type = ICP_WORKQ_TASK_CMD_TYPE; task->process_cb = cam_icp_mgr_process_cmd_and_free_mem; task->process_cb = cam_icp_mgr_process_cmd; rc = cam_req_mgr_workq_enqueue_task(task, &icp_hw_mgr, CRM_TASK_PRIORITY_0); if (rc) { kfree(ping_pkt); if (rc) return rc; } CAM_DBG(CAM_ICP, "payload data = %pK", task_data->data); rem_jiffies = wait_for_completion_timeout(&ctx_data->wait_complete, msecs_to_jiffies((timeout))); Loading
drivers/media/platform/msm/camera/cam_sensor_module/cam_csiphy/include/cam_csiphy_1_0_hwreg.h +13 −9 Original line number Diff line number Diff line /* Copyright (c) 2017, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading @@ -19,8 +19,8 @@ struct csiphy_reg_parms_t csiphy_v1_0 = { .mipi_csiphy_interrupt_status0_addr = 0x8B0, .mipi_csiphy_interrupt_clear0_addr = 0x858, .mipi_csiphy_glbl_irq_cmd_addr = 0x828, .csiphy_common_array_size = 3, .csiphy_reset_array_size = 3, .csiphy_common_array_size = 5, .csiphy_reset_array_size = 5, .csiphy_2ph_config_array_size = 14, .csiphy_3ph_config_array_size = 19, }; Loading @@ -29,12 +29,16 @@ struct csiphy_reg_t csiphy_common_reg_1_0[] = { {0x0814, 0x00, 0x00, CSIPHY_LANE_ENABLE}, {0x0818, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x081C, 0x02, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x01, 0x01, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, }; struct csiphy_reg_t csiphy_reset_reg_1_0[] = { {0x0814, 0x00, 0x50, CSIPHY_LANE_ENABLE}, {0x0814, 0x00, 0x05, CSIPHY_LANE_ENABLE}, {0x0818, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x081C, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x01, 0x01, CSIPHY_DEFAULT_PARAMS}, {0x0800, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, }; struct csiphy_reg_t csiphy_irq_reg_1_0[] = { Loading Loading @@ -148,7 +152,7 @@ struct csiphy_reg_t {0x0008, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x0010, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0038, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0060, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0060, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0064, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -164,7 +168,7 @@ struct csiphy_reg_t {0x070C, 0xA5, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0710, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0738, 0x1F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0760, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0760, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0764, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -179,7 +183,7 @@ struct csiphy_reg_t {0x0208, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x0210, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0238, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0260, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0260, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0264, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -194,7 +198,7 @@ struct csiphy_reg_t {0x0408, 0x00, 0x00, CSIPHY_SETTLE_CNT_LOWER_BYTE}, {0x0410, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0438, 0xFE, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0460, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0460, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0464, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, { Loading @@ -210,7 +214,7 @@ struct csiphy_reg_t {0x060C, 0xA5, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0610, 0x52, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0638, 0x1F, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0660, 0x00, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0660, 0x01, 0x00, CSIPHY_DEFAULT_PARAMS}, {0x0664, 0x7F, 0x00, CSIPHY_DEFAULT_PARAMS}, }, }; Loading