mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 20:33:58 -04:00
Merge eac3f0b664 on remote branch
Change-Id: I65eaf0c1ca7d8dac9ecd52d9ce1f8c7c01c99375
This commit is contained in:
commit
1d988caf4a
7 changed files with 39 additions and 17 deletions
|
|
@ -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,
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2022, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
|
|
@ -19,6 +19,7 @@
|
|||
#include <media/cam_defs.h>
|
||||
#include <media/cam_ope.h>
|
||||
#include <media/cam_cpas.h>
|
||||
#include <linux/math64.h>
|
||||
|
||||
#include "cam_sync_api.h"
|
||||
#include "cam_packet_util.h"
|
||||
|
|
@ -624,8 +625,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 -
|
||||
div_u64(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 +849,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 +2627,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 +3305,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 +3625,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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -4542,7 +4542,7 @@ int cam_req_mgr_dump_request(struct cam_dump_req_cmd *dump_req)
|
|||
|
||||
link = (struct cam_req_mgr_core_link *)
|
||||
cam_get_device_priv(dump_req->link_hdl);
|
||||
if (!link) {
|
||||
if (!link || link->link_hdl != dump_req->link_hdl) {
|
||||
CAM_DBG(CAM_CRM, "link ptr NULL %x", dump_req->link_hdl);
|
||||
rc = -EINVAL;
|
||||
goto end;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@
|
|||
#define OPE_MAX_IO_BUFS (OPE_OUT_RES_MAX + OPE_IN_RES_MAX)
|
||||
#define OPE_MAX_PASS 1
|
||||
#define OPE_MAX_PLANES 2
|
||||
#define OPE_MAX_STRIPES 48
|
||||
#define OPE_MAX_STRIPES 64
|
||||
#define OPE_MAX_BATCH_SIZE 16
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue