mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 06:09:23 -04:00
Merge "msm: camera: isp: Get packet opcode from hw manager" into camera-kernel.lnx.4.0
This commit is contained in:
commit
0894c95dda
3 changed files with 37 additions and 1 deletions
|
|
@ -3065,6 +3065,9 @@ static int __cam_isp_ctx_config_dev_in_top_state(
|
|||
struct cam_req_mgr_add_request add_req;
|
||||
struct cam_isp_context *ctx_isp =
|
||||
(struct cam_isp_context *) ctx->ctx_priv;
|
||||
struct cam_hw_cmd_args hw_cmd_args;
|
||||
struct cam_isp_hw_cmd_args isp_hw_cmd_args;
|
||||
uint32_t packet_opcode = 0;
|
||||
|
||||
CAM_DBG(CAM_ISP, "get free request object......");
|
||||
|
||||
|
|
@ -3113,7 +3116,23 @@ static int __cam_isp_ctx_config_dev_in_top_state(
|
|||
CAM_DBG(CAM_ISP, "Packet size 0x%x", packet->header.size);
|
||||
CAM_DBG(CAM_ISP, "packet op %d", packet->header.op_code);
|
||||
|
||||
if ((((packet->header.op_code + 1) & 0xF) == CAM_ISP_PACKET_UPDATE_DEV)
|
||||
/* Query the packet opcode */
|
||||
hw_cmd_args.ctxt_to_hw_map = ctx_isp->hw_ctx;
|
||||
hw_cmd_args.cmd_type = CAM_HW_MGR_CMD_INTERNAL;
|
||||
isp_hw_cmd_args.cmd_type = CAM_ISP_HW_MGR_GET_PACKET_OPCODE;
|
||||
isp_hw_cmd_args.cmd_data = (void *)packet;
|
||||
hw_cmd_args.u.internal_args = (void *)&isp_hw_cmd_args;
|
||||
rc = ctx->hw_mgr_intf->hw_cmd(ctx->hw_mgr_intf->hw_mgr_priv,
|
||||
&hw_cmd_args);
|
||||
if (rc) {
|
||||
CAM_ERR(CAM_ISP, "HW command failed");
|
||||
goto free_req;
|
||||
}
|
||||
|
||||
packet_opcode = isp_hw_cmd_args.u.packet_op_code;
|
||||
CAM_DBG(CAM_ISP, "packet op %d", packet_opcode);
|
||||
|
||||
if ((packet_opcode == CAM_ISP_PACKET_UPDATE_DEV)
|
||||
&& (packet->header.request_id <= ctx->last_flush_req)) {
|
||||
CAM_INFO(CAM_ISP,
|
||||
"request %lld has been flushed, reject packet",
|
||||
|
|
|
|||
|
|
@ -5852,6 +5852,7 @@ static int cam_ife_mgr_cmd(void *hw_mgr_priv, void *cmd_args)
|
|||
struct cam_ife_hw_mgr_ctx *ctx = (struct cam_ife_hw_mgr_ctx *)
|
||||
hw_cmd_args->ctxt_to_hw_map;
|
||||
struct cam_isp_hw_cmd_args *isp_hw_cmd_args = NULL;
|
||||
struct cam_packet *packet;
|
||||
|
||||
if (!hw_mgr_priv || !cmd_args) {
|
||||
CAM_ERR(CAM_ISP, "Invalid arguments");
|
||||
|
|
@ -5892,6 +5893,17 @@ static int cam_ife_mgr_cmd(void *hw_mgr_priv, void *cmd_args)
|
|||
else
|
||||
isp_hw_cmd_args->u.ctx_type = CAM_ISP_CTX_PIX;
|
||||
break;
|
||||
case CAM_ISP_HW_MGR_GET_PACKET_OPCODE:
|
||||
packet = (struct cam_packet *)
|
||||
isp_hw_cmd_args->cmd_data;
|
||||
if (((packet->header.op_code + 1) & 0xF) ==
|
||||
CAM_ISP_PACKET_INIT_DEV)
|
||||
isp_hw_cmd_args->u.packet_op_code =
|
||||
CAM_ISP_PACKET_INIT_DEV;
|
||||
else
|
||||
isp_hw_cmd_args->u.packet_op_code =
|
||||
CAM_ISP_PACKET_UPDATE_DEV;
|
||||
break;
|
||||
default:
|
||||
CAM_ERR(CAM_ISP, "Invalid HW mgr command:0x%x",
|
||||
hw_cmd_args->cmd_type);
|
||||
|
|
|
|||
|
|
@ -224,6 +224,7 @@ enum cam_isp_hw_mgr_command {
|
|||
CAM_ISP_HW_MGR_CMD_RESUME_HW,
|
||||
CAM_ISP_HW_MGR_CMD_SOF_DEBUG,
|
||||
CAM_ISP_HW_MGR_CMD_CTX_TYPE,
|
||||
CAM_ISP_HW_MGR_GET_PACKET_OPCODE,
|
||||
CAM_ISP_HW_MGR_CMD_MAX,
|
||||
};
|
||||
|
||||
|
|
@ -237,14 +238,18 @@ enum cam_isp_ctx_type {
|
|||
* struct cam_isp_hw_cmd_args - Payload for hw manager command
|
||||
*
|
||||
* @cmd_type HW command type
|
||||
* @cmd_data command data
|
||||
* @sof_irq_enable To debug if SOF irq is enabled
|
||||
* @ctx_type RDI_ONLY, PIX and RDI, or FS2
|
||||
* @packet_op_code packet opcode
|
||||
*/
|
||||
struct cam_isp_hw_cmd_args {
|
||||
uint32_t cmd_type;
|
||||
void *cmd_data;
|
||||
union {
|
||||
uint32_t sof_irq_enable;
|
||||
uint32_t ctx_type;
|
||||
uint32_t packet_op_code;
|
||||
} u;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue