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

Commit 470ff8dd authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge c450d2e4 on remote branch

Change-Id: I216a09f1eaa0725f5c0ec1ca7362af1953e1b2d5
parents 945d7468 c450d2e4
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -4315,7 +4315,7 @@ static struct cam_isp_ctx_irq_ops
			__cam_isp_ctx_rdi_only_sof_in_top_state,
			__cam_isp_ctx_reg_upd_in_sof,
			NULL,
			NULL,
			__cam_isp_ctx_notify_eof_in_activated_state,
			NULL,
		},
	},
@@ -4326,7 +4326,7 @@ static struct cam_isp_ctx_irq_ops
			__cam_isp_ctx_rdi_only_sof_in_applied_state,
			NULL,
			NULL,
			NULL,
			__cam_isp_ctx_notify_eof_in_activated_state,
			__cam_isp_ctx_buf_done_in_applied,
		},
	},
@@ -4337,7 +4337,7 @@ static struct cam_isp_ctx_irq_ops
			__cam_isp_ctx_rdi_only_sof_in_top_state,
			NULL,
			NULL,
			NULL,
			__cam_isp_ctx_notify_eof_in_activated_state,
			__cam_isp_ctx_buf_done_in_epoch,
		},
	},
@@ -4348,7 +4348,7 @@ static struct cam_isp_ctx_irq_ops
			__cam_isp_ctx_rdi_only_sof_in_bubble_state,
			__cam_isp_ctx_rdi_only_reg_upd_in_bubble_state,
			NULL,
			NULL,
			__cam_isp_ctx_notify_eof_in_activated_state,
			__cam_isp_ctx_buf_done_in_bubble,
		},
	},
@@ -4359,7 +4359,7 @@ static struct cam_isp_ctx_irq_ops
			__cam_isp_ctx_rdi_only_sof_in_bubble_applied,
			__cam_isp_ctx_rdi_only_reg_upd_in_bubble_applied_state,
			NULL,
			NULL,
			__cam_isp_ctx_notify_eof_in_activated_state,
			__cam_isp_ctx_buf_done_in_bubble_applied,
		},
	},
+8 −0
Original line number Diff line number Diff line
@@ -7990,6 +7990,14 @@ static int cam_ife_hw_mgr_handle_hw_eof(
	case CAM_ISP_HW_VFE_IN_RDI1:
	case CAM_ISP_HW_VFE_IN_RDI2:
	case CAM_ISP_HW_VFE_IN_RDI3:
		if (!ife_hw_mgr_ctx->is_rdi_only_context)
			break;
		if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
			break;
		ife_hw_irq_eof_cb(ife_hw_mgr_ctx->common.cb_priv,
			CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data);
		break;

	case CAM_ISP_HW_VFE_IN_PDLIB:
	case CAM_ISP_HW_VFE_IN_LCR:
		break;
+6 −0
Original line number Diff line number Diff line
@@ -5649,6 +5649,12 @@ static int cam_tfe_hw_mgr_handle_hw_eof(
	case CAM_ISP_HW_TFE_IN_RDI0:
	case CAM_ISP_HW_TFE_IN_RDI1:
	case CAM_ISP_HW_TFE_IN_RDI2:
		if (!tfe_hw_mgr_ctx->is_rdi_only_context)
			break;
		if (atomic_read(&tfe_hw_mgr_ctx->overflow_pending))
			break;
		tfe_hw_irq_eof_cb(tfe_hw_mgr_ctx->common.cb_priv,
			CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data);
		break;

	default:
+11 −7
Original line number Diff line number Diff line
@@ -624,8 +624,8 @@ static bool cam_ope_check_req_delay(struct cam_ope_ctx *ctx_data,
		ts.tv_nsec);

	if (ts_ns - req_time <
		((OPE_REQUEST_TIMEOUT -
			OPE_REQUEST_TIMEOUT / 10) * 1000000)) {
		((ctx_data->req_timer_timeout -
			ctx_data->req_timer_timeout / 10) * 1000000)) {
		CAM_INFO(CAM_OPE, "ctx: %d, ts_ns : %llu",
		ctx_data->ctx_id, ts_ns);
		cam_ope_req_timer_reset(ctx_data);
@@ -848,7 +848,7 @@ static int cam_ope_start_req_timer(struct cam_ope_ctx *ctx_data)
	int rc = 0;

	rc = crm_timer_init(&ctx_data->req_watch_dog,
		OPE_REQUEST_TIMEOUT, ctx_data, &cam_ope_req_timer_cb);
		ctx_data->req_timer_timeout, ctx_data, &cam_ope_req_timer_cb);
	if (rc)
		CAM_ERR(CAM_OPE, "Failed to start timer");

@@ -2626,11 +2626,15 @@ static int cam_ope_mgr_acquire_hw(void *hw_priv, void *hw_acquire_args)
		goto end;
	}
	strlcpy(cdm_acquire->identifier, "ope", sizeof("ope"));
	if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_RT)
	if (ctx->ope_acquire.dev_type == OPE_DEV_TYPE_OPE_RT) {
		cdm_acquire->priority = CAM_CDM_BL_FIFO_3;
		ctx->req_timer_timeout = OPE_REQUEST_RT_TIMEOUT;
	}
	else if (ctx->ope_acquire.dev_type ==
		OPE_DEV_TYPE_OPE_NRT)
		OPE_DEV_TYPE_OPE_NRT) {
		cdm_acquire->priority = CAM_CDM_BL_FIFO_0;
		ctx->req_timer_timeout = OPE_REQUEST_NRT_TIMEOUT;
	}
	else
		goto free_cdm_acquire;

@@ -3300,7 +3304,7 @@ static int cam_ope_mgr_prepare_hw_update(void *hw_priv,
	CAM_DBG(CAM_REQ, "req_id= %llu ctx_id= %d lrt=%llu",
		packet->header.request_id, ctx_data->ctx_id,
		ctx_data->last_req_time);
	cam_ope_req_timer_modify(ctx_data, OPE_REQUEST_TIMEOUT);
	cam_ope_req_timer_modify(ctx_data, ctx_data->req_timer_timeout);
	set_bit(request_idx, ctx_data->bitmap);
	mutex_unlock(&ctx_data->ctx_mutex);

@@ -3620,7 +3624,7 @@ static int cam_ope_mgr_hw_dump(void *hw_priv, void *hw_dump_args)
	cur_ts = ktime_to_timespec64(cur_time);
	req_ts = ktime_to_timespec64(ctx_data->req_list[idx]->submit_timestamp);

	if (diff < (OPE_REQUEST_TIMEOUT * 1000)) {
	if (diff < (ctx_data->req_timer_timeout * 1000)) {
		CAM_INFO(CAM_OPE, "No Error req %llu %ld:%06ld %ld:%06ld",
			dump_args->request_id,
			req_ts.tv_sec,
+5 −2
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@
#define OPE_CMDS                  OPE_MAX_CMD_BUFS
#define CAM_MAX_IN_RES            8

#define OPE_MAX_CDM_BLS           24
#define OPE_MAX_CDM_BLS           32

#define CAM_OPE_MAX_PER_PATH_VOTES 6
#define CAM_OPE_BW_CONFIG_UNKNOWN  0
@@ -60,7 +60,8 @@
#define CLK_HW_MAX                 0x1

#define OPE_DEVICE_IDLE_TIMEOUT    400
#define OPE_REQUEST_TIMEOUT        200
#define OPE_REQUEST_RT_TIMEOUT        200
#define OPE_REQUEST_NRT_TIMEOUT        400

/**
 * struct cam_ope_clk_bw_request_v2
@@ -447,6 +448,7 @@ struct cam_ope_cdm {
 * @clk_watch_dog:   Clock watchdog
 * @clk_watch_dog_reset_counter: Reset counter
 * @last_flush_req: last flush req for this ctx
 * @req_timer_timeout: req timer timeout value
 */
struct cam_ope_ctx {
	void *context_priv;
@@ -470,6 +472,7 @@ struct cam_ope_ctx {
	uint32_t clk_watch_dog_reset_counter;
	uint64_t last_flush_req;
	bool pf_mid_found;
	uint64_t req_timer_timeout;
};

/**
Loading