Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36ea6a11 authored by Abhijit Trivedi's avatar Abhijit Trivedi Committed by vhajeri
Browse files

Revert "msm: camera: Correct sequence for destroy_handle"



This reverts commit faae7345
as there was a firmware version mismatch which caused regression.

Change-Id: I8faedde984160072bec6e8f6d0ab0cfcb0060604
Signed-off-by: default avatarAbhijit Trivedi <abhijitt@codeaurora.org>
parent c907330f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -110,8 +110,7 @@ void cam_hfi_disable_cpu(void __iomem *icp_base);
/**
 * cam_hfi_deinit() - cleanup HFI
 */
void cam_hfi_deinit(void __iomem *icp_base);

void cam_hfi_deinit(void);
/**
 * hfi_set_debug_level() - set debug level
 * @lvl: FW debug message level
+1 −4
Original line number Diff line number Diff line
@@ -721,7 +721,7 @@ int cam_hfi_init(uint8_t event_driven_mode, struct hfi_mem_info *hfi_mem,
}


void cam_hfi_deinit(void __iomem *icp_base)
void cam_hfi_deinit(void)
{
	mutex_lock(&hfi_cmd_q_mutex);
	mutex_lock(&hfi_msg_q_mutex);
@@ -734,9 +734,6 @@ void cam_hfi_deinit(void __iomem *icp_base)
	g_hfi->cmd_q_state = false;
	g_hfi->msg_q_state = false;

	cam_io_w((uint32_t)ICP_INIT_REQUEST_RESET,
		icp_base + HFI_REG_HOST_ICP_INIT_REQUEST);

	cam_io_w((uint32_t)INTR_DISABLE,
		g_hfi->csr_base + HFI_REG_A5_CSR_A2HOSTINTEN);
	kzfree(g_hfi);
+4 −34
Original line number Diff line number Diff line
@@ -1385,18 +1385,11 @@ static int cam_icp_mgr_process_direct_ack_msg(uint32_t *msg_ptr)
{
	struct cam_icp_hw_ctx_data *ctx_data = NULL;
	struct hfi_msg_ipebps_async_ack *ioconfig_ack = NULL;
	struct cam_hw_intf *a5_dev_intf = NULL;
	struct cam_hw_info *a5_dev = NULL;
	int rc = 0;

	a5_dev_intf = icp_hw_mgr.a5_dev_intf;
	if (!a5_dev_intf) {
		CAM_ERR(CAM_ICP, "a5_dev_intf is invalid");
		return -EINVAL;
	}
	a5_dev = (struct cam_hw_info *)a5_dev_intf->hw_priv;

	switch (msg_ptr[ICP_PACKET_OPCODE]) {
	case HFI_IPEBPS_CMD_OPCODE_IPE_DESTROY:
	case HFI_IPEBPS_CMD_OPCODE_BPS_DESTROY:
	case HFI_IPEBPS_CMD_OPCODE_IPE_ABORT:
	case HFI_IPEBPS_CMD_OPCODE_BPS_ABORT:
		CAM_DBG(CAM_ICP, "received IPE/BPS_DESTROY/ABORT:");
@@ -1407,26 +1400,6 @@ static int cam_icp_mgr_process_direct_ack_msg(uint32_t *msg_ptr)
			(ctx_data->state == CAM_ICP_CTX_STATE_IN_USE))
			complete(&ctx_data->wait_complete);

		break;
	case HFI_IPEBPS_CMD_OPCODE_IPE_DESTROY:
	case HFI_IPEBPS_CMD_OPCODE_BPS_DESTROY:
		CAM_INFO(CAM_ICP, "received IPE/BPS_DESTROY/ABORT:");
		ioconfig_ack = (struct hfi_msg_ipebps_async_ack *)msg_ptr;
		ctx_data =
			(struct cam_icp_hw_ctx_data *)ioconfig_ack->user_data1;
		if ((ctx_data->state == CAM_ICP_CTX_STATE_RELEASE) ||
			(ctx_data->state == CAM_ICP_CTX_STATE_IN_USE)) {

			if (!icp_hw_mgr.icp_pc_flag) {
				CAM_INFO(CAM_ICP, "disabling CPU");
				cam_hfi_disable_cpu(
					a5_dev->soc_info.
					reg_map[A5_SIERRA_BASE].mem_base);
				CAM_INFO(CAM_ICP, "done disabling CPU");
			}
			complete(&ctx_data->wait_complete);
		}

		break;
	default:
		CAM_ERR(CAM_ICP, "Invalid opcode : %u",
@@ -2124,7 +2097,6 @@ static int cam_icp_mgr_hw_close(void *hw_priv, void *hw_close_args)
{
	struct cam_icp_hw_mgr *hw_mgr = hw_priv;
	struct cam_hw_intf *a5_dev_intf = NULL;
	struct cam_hw_info *a5_dev = NULL;
	struct cam_icp_a5_set_irq_cb irq_cb;
	struct cam_icp_a5_set_fw_buf_info fw_buf_info;
	int rc = 0;
@@ -2144,8 +2116,6 @@ static int cam_icp_mgr_hw_close(void *hw_priv, void *hw_close_args)
		return -EINVAL;
	}

	a5_dev = (struct cam_hw_info *)a5_dev_intf->hw_priv;

	fw_buf_info.kva = 0;
	fw_buf_info.iova = 0;
	fw_buf_info.len = 0;
@@ -2157,7 +2127,7 @@ static int cam_icp_mgr_hw_close(void *hw_priv, void *hw_close_args)
	if (rc)
		CAM_ERR(CAM_ICP, "nullify the fw buf failed");

	cam_hfi_deinit(a5_dev->soc_info.reg_map[A5_SIERRA_BASE].mem_base);
	cam_hfi_deinit();

	irq_cb.icp_hw_mgr_cb = NULL;
	irq_cb.data = NULL;
@@ -2466,7 +2436,7 @@ static int cam_icp_mgr_hw_open(void *hw_mgr_priv, void *download_fw_args)
	return rc;

fw_init_failed:
	cam_hfi_deinit(a5_dev->soc_info.reg_map[A5_SIERRA_BASE].mem_base);
	cam_hfi_deinit();
hfi_init_failed:
	cam_hfi_disable_cpu(a5_dev->soc_info.reg_map[A5_SIERRA_BASE].mem_base);
fw_download_failed: