Loading drivers/cam_icp/hfi.c +15 −60 Original line number Diff line number Diff line Loading @@ -31,7 +31,8 @@ #define HFI_VERSION_INFO_STEP_BMSK 0xFF #define HFI_VERSION_INFO_STEP_SHFT 0 #define HFI_MAX_POLL_TRY 5 #define HFI_POLL_DELAY_US 100 #define HFI_POLL_TIMEOUT_US 10000 #define HFI_MAX_PC_POLL_TRY 150 #define HFI_POLL_TRY_SLEEP 1 Loading Loading @@ -588,7 +589,6 @@ int cam_hfi_resume(struct hfi_mem_info *hfi_mem, int rc = 0; uint32_t data; uint32_t fw_version, status = 0; uint32_t retry_cnt = 0; cam_hfi_enable_cpu(icp_base); g_hfi->csr_base = icp_base; Loading @@ -611,33 +611,12 @@ int cam_hfi_resume(struct hfi_mem_info *hfi_mem, icp_base + HFI_REG_A5_CSR_A5_CONTROL); } while (retry_cnt < HFI_MAX_POLL_TRY) { readw_poll_timeout((icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE), status, (status == ICP_INIT_RESP_SUCCESS), 100, 10000); CAM_DBG(CAM_HFI, "1: status = %u", status); status = cam_io_r_mb(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE); CAM_DBG(CAM_HFI, "2: status = %u", status); if (status == ICP_INIT_RESP_SUCCESS) break; if (status == ICP_INIT_RESP_FAILED) { CAM_ERR(CAM_HFI, "ICP Init Failed. status = %u", if (readl_poll_timeout(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE, status, status == ICP_INIT_RESP_SUCCESS, HFI_POLL_DELAY_US, HFI_POLL_TIMEOUT_US)) { CAM_ERR(CAM_HFI, "response poll timed out: status=0x%08x", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "fw version : [%x]", fw_version); return -EINVAL; } retry_cnt++; } if ((retry_cnt == HFI_MAX_POLL_TRY) && (status == ICP_INIT_RESP_RESET)) { CAM_ERR(CAM_HFI, "Reached Max retries. status = %u", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "fw version : [%x]", fw_version); return -EINVAL; return -ETIMEDOUT; } cam_io_w_mb((uint32_t)(INTR_ENABLE|INTR_ENABLE_WD0), Loading Loading @@ -689,7 +668,6 @@ int cam_hfi_init(uint8_t event_driven_mode, struct hfi_mem_info *hfi_mem, struct hfi_qtbl_hdr *qtbl_hdr; struct hfi_q_hdr *cmd_q_hdr, *msg_q_hdr, *dbg_q_hdr; uint32_t hw_version, fw_version, status = 0; uint32_t retry_cnt = 0; struct sfr_buf *sfr_buffer; mutex_lock(&hfi_cmd_q_mutex); Loading Loading @@ -877,39 +855,16 @@ int cam_hfi_init(uint8_t event_driven_mode, struct hfi_mem_info *hfi_mem, hfi_mem->io_mem.iova, hfi_mem->io_mem.len, hfi_mem->io_mem2.iova, hfi_mem->io_mem2.len); hw_version = cam_io_r(icp_base + HFI_REG_A5_HW_VERSION); while (retry_cnt < HFI_MAX_POLL_TRY) { readw_poll_timeout((icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE), status, (status == ICP_INIT_RESP_SUCCESS), 100, 10000); CAM_DBG(CAM_HFI, "1: status = %u rc = %d", status, rc); status = cam_io_r_mb(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE); CAM_DBG(CAM_HFI, "2: status = %u rc = %d", status, rc); if (status == ICP_INIT_RESP_SUCCESS) break; if (status == ICP_INIT_RESP_FAILED) { CAM_ERR(CAM_HFI, "ICP Init Failed. status = %u", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "fw version : [%x]", fw_version); goto regions_fail; } retry_cnt++; } if ((retry_cnt == HFI_MAX_POLL_TRY) && (status == ICP_INIT_RESP_RESET)) { CAM_ERR(CAM_HFI, "Reached Max retries. status = %u", if (readl_poll_timeout(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE, status, status == ICP_INIT_RESP_SUCCESS, HFI_POLL_DELAY_US, HFI_POLL_TIMEOUT_US)) { CAM_ERR(CAM_HFI, "response poll timed out: status=0x%08x", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "hw version : : [%x], fw version : [%x]", hw_version, fw_version); rc = -ETIMEDOUT; goto regions_fail; } hw_version = cam_io_r(icp_base + HFI_REG_A5_HW_VERSION); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_DBG(CAM_HFI, "hw version : : [%x], fw version : [%x]", hw_version, fw_version); Loading Loading
drivers/cam_icp/hfi.c +15 −60 Original line number Diff line number Diff line Loading @@ -31,7 +31,8 @@ #define HFI_VERSION_INFO_STEP_BMSK 0xFF #define HFI_VERSION_INFO_STEP_SHFT 0 #define HFI_MAX_POLL_TRY 5 #define HFI_POLL_DELAY_US 100 #define HFI_POLL_TIMEOUT_US 10000 #define HFI_MAX_PC_POLL_TRY 150 #define HFI_POLL_TRY_SLEEP 1 Loading Loading @@ -588,7 +589,6 @@ int cam_hfi_resume(struct hfi_mem_info *hfi_mem, int rc = 0; uint32_t data; uint32_t fw_version, status = 0; uint32_t retry_cnt = 0; cam_hfi_enable_cpu(icp_base); g_hfi->csr_base = icp_base; Loading @@ -611,33 +611,12 @@ int cam_hfi_resume(struct hfi_mem_info *hfi_mem, icp_base + HFI_REG_A5_CSR_A5_CONTROL); } while (retry_cnt < HFI_MAX_POLL_TRY) { readw_poll_timeout((icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE), status, (status == ICP_INIT_RESP_SUCCESS), 100, 10000); CAM_DBG(CAM_HFI, "1: status = %u", status); status = cam_io_r_mb(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE); CAM_DBG(CAM_HFI, "2: status = %u", status); if (status == ICP_INIT_RESP_SUCCESS) break; if (status == ICP_INIT_RESP_FAILED) { CAM_ERR(CAM_HFI, "ICP Init Failed. status = %u", if (readl_poll_timeout(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE, status, status == ICP_INIT_RESP_SUCCESS, HFI_POLL_DELAY_US, HFI_POLL_TIMEOUT_US)) { CAM_ERR(CAM_HFI, "response poll timed out: status=0x%08x", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "fw version : [%x]", fw_version); return -EINVAL; } retry_cnt++; } if ((retry_cnt == HFI_MAX_POLL_TRY) && (status == ICP_INIT_RESP_RESET)) { CAM_ERR(CAM_HFI, "Reached Max retries. status = %u", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "fw version : [%x]", fw_version); return -EINVAL; return -ETIMEDOUT; } cam_io_w_mb((uint32_t)(INTR_ENABLE|INTR_ENABLE_WD0), Loading Loading @@ -689,7 +668,6 @@ int cam_hfi_init(uint8_t event_driven_mode, struct hfi_mem_info *hfi_mem, struct hfi_qtbl_hdr *qtbl_hdr; struct hfi_q_hdr *cmd_q_hdr, *msg_q_hdr, *dbg_q_hdr; uint32_t hw_version, fw_version, status = 0; uint32_t retry_cnt = 0; struct sfr_buf *sfr_buffer; mutex_lock(&hfi_cmd_q_mutex); Loading Loading @@ -877,39 +855,16 @@ int cam_hfi_init(uint8_t event_driven_mode, struct hfi_mem_info *hfi_mem, hfi_mem->io_mem.iova, hfi_mem->io_mem.len, hfi_mem->io_mem2.iova, hfi_mem->io_mem2.len); hw_version = cam_io_r(icp_base + HFI_REG_A5_HW_VERSION); while (retry_cnt < HFI_MAX_POLL_TRY) { readw_poll_timeout((icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE), status, (status == ICP_INIT_RESP_SUCCESS), 100, 10000); CAM_DBG(CAM_HFI, "1: status = %u rc = %d", status, rc); status = cam_io_r_mb(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE); CAM_DBG(CAM_HFI, "2: status = %u rc = %d", status, rc); if (status == ICP_INIT_RESP_SUCCESS) break; if (status == ICP_INIT_RESP_FAILED) { CAM_ERR(CAM_HFI, "ICP Init Failed. status = %u", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "fw version : [%x]", fw_version); goto regions_fail; } retry_cnt++; } if ((retry_cnt == HFI_MAX_POLL_TRY) && (status == ICP_INIT_RESP_RESET)) { CAM_ERR(CAM_HFI, "Reached Max retries. status = %u", if (readl_poll_timeout(icp_base + HFI_REG_ICP_HOST_INIT_RESPONSE, status, status == ICP_INIT_RESP_SUCCESS, HFI_POLL_DELAY_US, HFI_POLL_TIMEOUT_US)) { CAM_ERR(CAM_HFI, "response poll timed out: status=0x%08x", status); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_ERR(CAM_HFI, "hw version : : [%x], fw version : [%x]", hw_version, fw_version); rc = -ETIMEDOUT; goto regions_fail; } hw_version = cam_io_r(icp_base + HFI_REG_A5_HW_VERSION); fw_version = cam_io_r(icp_base + HFI_REG_FW_VERSION); CAM_DBG(CAM_HFI, "hw version : : [%x], fw version : [%x]", hw_version, fw_version); Loading