Loading drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +43 −30 Original line number Diff line number Diff line Loading @@ -1791,15 +1791,14 @@ static void cam_ope_mgr_print_stripe_info(uint32_t batch, { CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d: E", batch, io_buf, plane, stripe); CAM_DBG(CAM_OPE, "width: %d s_w: %u s_h: %u s_s: %u", stripe_info->width, stripe_info->width, stripe_info->height, stripe_info->stride); CAM_DBG(CAM_OPE, "width: %d s_h: %u s_s: %u", stripe_info->width, stripe_info->height, stripe_info->stride); CAM_DBG(CAM_OPE, "s_xinit = %u iova = %x s_loc = %u", stripe_info->s_location, stripe_info->x_init, iova_addr); CAM_DBG(CAM_OPE, "s_off = %u s_format = %u s_len = %u", stripe_info->x_init, iova_addr, stripe_info->s_location); CAM_DBG(CAM_OPE, "s_off = %u s_format = %u s_len = %u d_bus %d", stripe_info->offset, stripe_info->format, stripe_info->len); stripe_info->len, stripe_info->disable_bus); CAM_DBG(CAM_OPE, "s_align = %u s_pack = %u s_unpack = %u", stripe_info->alignment, stripe_info->pack_format, stripe_info->unpack_format); Loading Loading @@ -1839,35 +1838,15 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, in_frame_set = &in_frame_process->frame_set[i]; for (j = 0; j < in_frame_set->num_io_bufs; j++) { in_io_buf = &in_frame_set->io_buf[j]; CAM_DBG(CAM_OPE, "i:%d j:%d dir: %x rsc: %u plane: %d", i, j, in_io_buf->direction, in_io_buf->resource_type, in_io_buf->num_planes); for (k = 0; k < in_io_buf->num_planes; k++) { CAM_DBG(CAM_OPE, "i:%d j:%d k:%d numstripe: %d", i, j, k, in_io_buf->num_stripes[k]); CAM_DBG(CAM_OPE, "m_hdl: %d len: %d", in_io_buf->mem_handle[k], in_io_buf->length[k]); if (!in_io_buf->num_stripes[k]) { CAM_ERR(CAM_OPE, "Null num_stripes"); return -EINVAL; } for (l = 0; l < in_io_buf->num_stripes[k]; l++) { in_stripe_info = &in_io_buf->stripe_info[k][l]; CAM_DBG(CAM_OPE, "i:%d j:%d k:%d l:%d", i, j, k, l); CAM_DBG(CAM_OPE, "%d s_loc:%d w:%d", in_stripe_info->x_init, in_stripe_info->stripe_location, in_stripe_info->width); CAM_DBG(CAM_OPE, "s_off: %d d_bus: %d", in_stripe_info->offset, in_stripe_info->disable_bus); } } } Loading Loading @@ -1925,9 +1904,6 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, unpack_format = 0; } CAM_DBG(CAM_OPE, "i:%d j:%d dir:%d rsc type:%d fmt:%d", i, j, io_buf->direction, io_buf->resource_type, io_buf->format); for (k = 0; k < in_io_buf->num_planes; k++) { io_buf->num_stripes[k] = in_io_buf->num_stripes[k]; Loading @@ -1954,6 +1930,11 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, return -EINVAL; } iova_addr += in_io_buf->plane_offset[k]; CAM_DBG(CAM_OPE, "E rsc %d stripes %d dir %d plane %d", in_io_buf->resource_type, in_io_buf->direction, in_io_buf->num_stripes[k], k); for (l = 0; l < in_io_buf->num_stripes[k]; l++) { in_stripe_info = Loading Loading @@ -1984,6 +1965,11 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, cam_ope_mgr_print_stripe_info(i, j, k, l, stripe_info, iova_addr); } CAM_DBG(CAM_OPE, "X rsc %d stripes %d dir %d plane %d", in_io_buf->resource_type, in_io_buf->direction, in_io_buf->num_stripes[k], k); } } } Loading Loading @@ -3755,6 +3741,31 @@ static int cam_ope_mgr_create_wq(void) return rc; } static int cam_ope_create_debug_fs(void) { ope_hw_mgr->dentry = debugfs_create_dir("camera_ope", NULL); if (!ope_hw_mgr->dentry) { CAM_ERR(CAM_OPE, "failed to create dentry"); return -ENOMEM; } if (!debugfs_create_bool("frame_dump_enable", 0644, ope_hw_mgr->dentry, &ope_hw_mgr->frame_dump_enable)) { CAM_ERR(CAM_OPE, "failed to create dump_enable_debug"); goto err; } return 0; err: debugfs_remove_recursive(ope_hw_mgr->dentry); return -ENOMEM; } int cam_ope_hw_mgr_init(struct device_node *of_node, uint64_t *hw_mgr_hdl, int *iommu_hdl) Loading Loading @@ -3860,6 +3871,8 @@ int cam_ope_hw_mgr_init(struct device_node *of_node, uint64_t *hw_mgr_hdl, if (rc) goto ope_wq_create_failed; cam_ope_create_debug_fs(); if (iommu_hdl) *iommu_hdl = ope_hw_mgr->iommu_hdl; Loading drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.h +2 −0 Original line number Diff line number Diff line Loading @@ -529,6 +529,8 @@ struct cam_ope_hw_mgr { struct cam_hw_intf *ope_dev_intf[OPE_DEV_MAX]; struct cam_soc_reg_map *cdm_reg_map[OPE_DEV_MAX][OPE_BASE_MAX]; struct cam_ope_clk_info clk_info; struct dentry *dentry; bool frame_dump_enable; }; /** Loading drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.c +20 −31 Original line number Diff line number Diff line Loading @@ -190,16 +190,18 @@ static uint32_t *cam_ope_bus_rd_update(struct ope_hw *ope_hw_info, cdm_ops = ctx_data->ope_cdm.cdm_ops; ope_request = ctx_data->req_list[req_idx]; CAM_DBG(CAM_OPE, "req_idx = %d req_id = %lld KMDbuf %x offset %d", req_idx, ope_request->request_id, kmd_buf, prepare->kmd_buf_offset); bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; io_port_info = &bus_rd_ctx->io_port_info; rd_reg = ope_hw_info->bus_rd_reg; rd_reg_val = ope_hw_info->bus_rd_reg_val; io_buf = ope_request->io_buf[batch_idx][io_idx]; CAM_DBG(CAM_OPE, "req_idx = %d req_id = %lld KMDbuf 0x%x offset %d rsc %d", req_idx, ope_request->request_id, kmd_buf, prepare->kmd_buf_offset, io_buf->resource_type); CAM_DBG(CAM_OPE, "batch:%d iobuf:%d direction:%d", batch_idx, io_idx, io_buf->direction); io_port_cdm = Loading Loading @@ -307,20 +309,15 @@ static uint32_t *cam_ope_bus_rd_update(struct ope_hw *ope_hw_info, sizeof(temp)); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); for (m = 0; m < count; m++) CAM_DBG(CAM_OPE, "%d:temp:%x", m, temp_reg[m]); for (m = 0; m < count; m += 2) CAM_DBG(CAM_OPE, "%d: off: 0x%x val: 0x%x", m, temp_reg[m], temp_reg[m+1]); CAM_DBG(CAM_OPE, "kmd_buf:%x offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "%x count: %d size:%d", temp_reg, count, header_size); CAM_DBG(CAM_OPE, "RD cmdbufs:%d off:%d", CAM_DBG(CAM_OPE, "RD cmdbufs:%d off:%d len %d", io_port_cdm->num_s_cmd_bufs[l], io_port_cdm->s_cdm_info[l][idx].offset); CAM_DBG(CAM_OPE, "len:%d", io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); count = 0; } } Loading Loading @@ -372,8 +369,9 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, io_port_cdm_batch = &bus_rd_ctx->io_port_cdm_batch; rd_reg = ope_hw_info->bus_rd_reg; CAM_DBG(CAM_OPE, "kmd_buf = %x req_idx = %d offset = %d", kmd_buf, req_idx, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "kmd_buf = 0x%x req_idx = %d offset = %d rd_idx %d b %d", kmd_buf, req_idx, prepare->kmd_buf_offset, rm_idx, batch_idx); io_port_cdm = &bus_rd_ctx->io_port_cdm_batch.io_port_cdm[batch_idx]; Loading Loading @@ -402,20 +400,11 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, prepare->kmd_buf_offset += ((count + header_size) * sizeof(temp)); CAM_DBG(CAM_OPE, "b:%d s:%d", batch_idx, l); CAM_DBG(CAM_OPE, "kmdbuf:%x, offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "count:%d temp_reg:%x", count, temp_reg, header_size); CAM_DBG(CAM_OPE, "header_size:%d", header_size); CAM_DBG(CAM_OPE, "RD cmd bufs = %d", io_port_cdm->num_s_cmd_bufs[l]); CAM_DBG(CAM_OPE, "off:%d len:%d", io_port_cdm->s_cdm_info[l][idx].offset, CAM_DBG(CAM_OPE, "stripe %d off:%d len:%d", l, io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d s:%d", batch_idx, l); count = 0; } Loading drivers/cam_ope/ope_hw_mgr/ope_hw/bus_wr/ope_bus_wr.c +13 −28 Original line number Diff line number Diff line Loading @@ -169,7 +169,7 @@ static uint32_t *cam_ope_bus_wr_update(struct ope_hw *ope_hw_info, int batch_idx, int io_idx, uint32_t *kmd_buf, uint32_t *num_stripes) { int k, l, out_port_idx; int k, l, m, out_port_idx; uint32_t idx; uint32_t num_wm_ports; uint32_t comb_idx; Loading Loading @@ -226,8 +226,8 @@ static uint32_t *cam_ope_bus_wr_update(struct ope_hw *ope_hw_info, prepare->kmd_buf_offset); io_buf = ope_request->io_buf[batch_idx][io_idx]; CAM_DBG(CAM_OPE, "batch = %d io buf num = %d dir = %d", batch_idx, io_idx, io_buf->direction); CAM_DBG(CAM_OPE, "batch = %d io buf num = %d dir = %d rsc %d", batch_idx, io_idx, io_buf->direction, io_buf->resource_type); io_port_cdm = &bus_wr_ctx->io_port_cdm_batch.io_port_cdm[batch_idx]; Loading Loading @@ -335,19 +335,15 @@ static uint32_t *cam_ope_bus_wr_update(struct ope_hw *ope_hw_info, CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); for (m = 0; m < count; m += 2) CAM_DBG(CAM_OPE, "%d: off: 0x%x val: 0x%x", m, temp_reg[m], temp_reg[m+1]); CAM_DBG(CAM_OPE, "kmdbuf:%x, offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "count:%d temp_reg:%x", count, temp_reg, header_size); CAM_DBG(CAM_OPE, "header_size:%d", header_size); CAM_DBG(CAM_OPE, "WR cmd bufs = %d", io_port_cdm->num_s_cmd_bufs[l]); CAM_DBG(CAM_OPE, "off:%d len:%d", CAM_DBG(CAM_OPE, "WR cmd bufs = %d off:%d len:%d", io_port_cdm->num_s_cmd_bufs[l], io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); count = 0; } } Loading Loading @@ -398,8 +394,9 @@ static uint32_t *cam_ope_bus_wm_disable(struct ope_hw *ope_hw_info, io_port_cdm_batch = &bus_wr_ctx->io_port_cdm_batch; wr_reg = ope_hw_info->bus_wr_reg; CAM_DBG(CAM_OPE, "kmd_buf = %x req_idx = %d offset = %d", kmd_buf, req_idx, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "kmd_buf = %x req_idx = %d offset = %d out_idx %d b %d", kmd_buf, req_idx, prepare->kmd_buf_offset, io_idx, batch_idx); io_port_cdm = &bus_wr_ctx->io_port_cdm_batch.io_port_cdm[batch_idx]; Loading @@ -409,8 +406,6 @@ static uint32_t *cam_ope_bus_wm_disable(struct ope_hw *ope_hw_info, for (k = 0; k < num_wm_ports; k++) { for (l = 0; l < num_stripes; l++) { CAM_DBG(CAM_OPE, "comb_idx = %d p_idx = %d s_idx = %d", comb_idx, k, l); /* frame level info */ /* stripe level info */ wm_port_id = out_port_to_wm->wm_port_id[comb_idx][k]; Loading @@ -436,21 +431,11 @@ static uint32_t *cam_ope_bus_wm_disable(struct ope_hw *ope_hw_info, prepare->kmd_buf_offset += ((count + header_size) * sizeof(temp)); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); CAM_DBG(CAM_OPE, "kmdbuf:%x, offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "count:%d temp_reg:%x", count, temp_reg, header_size); CAM_DBG(CAM_OPE, "header_size:%d", header_size); CAM_DBG(CAM_OPE, "WR cmd bufs = %d", io_port_cdm->num_s_cmd_bufs[l]); CAM_DBG(CAM_OPE, "off:%d len:%d", io_port_cdm->s_cdm_info[l][idx].offset, CAM_DBG(CAM_OPE, "s:%d off:%d len:%d", l, io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); count = 0; } } Loading drivers/cam_ope/ope_hw_mgr/ope_hw/ope_core.c +30 −25 Original line number Diff line number Diff line Loading @@ -427,7 +427,7 @@ static int dump_dmi_cmd(uint32_t print_idx, return 0; } static int dump_frame_direct(uint32_t print_idx, static int dump_direct_cmd(uint32_t print_idx, uint32_t *print_ptr, struct ope_frame_process *frm_proc, int batch_idx, int cmd_buf_idx) Loading Loading @@ -569,7 +569,7 @@ static uint32_t *ope_create_frame_cmd_batch(struct cam_ope_hw_mgr *hw_mgr, iova_addr, frm_proc->cmd_buf[i][j].length); print_ptr = (uint32_t *)cpu_addr; dump_frame_direct(print_idx, print_ptr, dump_direct_cmd(print_idx, print_ptr, frm_proc, i, j); } else { num_dmi = frm_proc->cmd_buf[i][j].length / Loading @@ -591,6 +591,7 @@ static uint32_t *ope_create_frame_cmd_batch(struct cam_ope_hw_mgr *hw_mgr, 0, dmi_cmd->DMIAddr, dmi_cmd->DMISel, dmi_cmd->addr, dmi_cmd->length); if (hw_mgr->frame_dump_enable) dump_dmi_cmd(print_idx, print_ptr, dmi_cmd, temp); print_ptr += Loading @@ -599,6 +600,7 @@ static uint32_t *ope_create_frame_cmd_batch(struct cam_ope_hw_mgr *hw_mgr, } CAM_DBG(CAM_OPE, "Frame DB : In direct: X"); } if (hw_mgr->frame_dump_enable) dump_frame_cmd(frm_proc, i, j, iova_addr, kmd_buf, buf_len); } Loading Loading @@ -724,7 +726,8 @@ static uint32_t *ope_create_frame_cmd(struct cam_ope_hw_mgr *hw_mgr, iova_addr, frm_proc->cmd_buf[i][j].length); print_ptr = (uint32_t *)cpu_addr; dump_frame_direct(print_idx, print_ptr, if (hw_mgr->frame_dump_enable) dump_direct_cmd(print_idx, print_ptr, frm_proc, i, j); } else { num_dmi = frm_proc->cmd_buf[i][j].length / Loading @@ -747,14 +750,17 @@ static uint32_t *ope_create_frame_cmd(struct cam_ope_hw_mgr *hw_mgr, 0, dmi_cmd->DMIAddr, dmi_cmd->DMISel, dmi_cmd->addr, dmi_cmd->length); if (hw_mgr->frame_dump_enable) dump_dmi_cmd(print_idx, print_ptr, dmi_cmd, temp); print_ptr, dmi_cmd, temp); print_ptr += sizeof(struct cdm_dmi_cmd) / sizeof(uint32_t); } CAM_DBG(CAM_OPE, "Frame DB : In direct: X"); } if (hw_mgr->frame_dump_enable) dump_frame_cmd(frm_proc, i, j, iova_addr, kmd_buf, buf_len); } Loading Loading @@ -831,12 +837,9 @@ static uint32_t *ope_create_stripe_cmd(struct cam_ope_hw_mgr *hw_mgr, print_ptr = (uint32_t *)cpu_addr; CAM_DBG(CAM_OPE, "Stripe:%d direct:E", stripe_idx); for (print_idx = 0; print_idx < frm_proc->cmd_buf[i][k].length / 4; print_idx++) { CAM_DBG(CAM_OPE, "%d: %x", print_idx, print_ptr[print_idx]); } if (hw_mgr->frame_dump_enable) dump_direct_cmd(print_idx, print_ptr, frm_proc, i, k); CAM_DBG(CAM_OPE, "Stripe:%d direct:X", stripe_idx); } else if (frm_proc->cmd_buf[i][k].type == OPE_CMD_BUF_TYPE_INDIRECT) { Loading @@ -856,6 +859,7 @@ static uint32_t *ope_create_stripe_cmd(struct cam_ope_hw_mgr *hw_mgr, kmd_buf = cdm_ops->cdm_write_dmi(kmd_buf, 0, dmi_cmd->DMIAddr, dmi_cmd->DMISel, dmi_cmd->addr, dmi_cmd->length); if (hw_mgr->frame_dump_enable) dump_dmi_cmd(print_idx, print_ptr, dmi_cmd, temp); print_ptr += sizeof(struct cdm_dmi_cmd) / Loading @@ -863,6 +867,7 @@ static uint32_t *ope_create_stripe_cmd(struct cam_ope_hw_mgr *hw_mgr, } CAM_DBG(CAM_OPE, "Stripe:%d Indirect:X", stripe_idx); } if (hw_mgr->frame_dump_enable) dump_stripe_cmd(frm_proc, stripe_idx, i, k, iova_addr, kmd_buf, buf_len); } Loading Loading
drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +43 −30 Original line number Diff line number Diff line Loading @@ -1791,15 +1791,14 @@ static void cam_ope_mgr_print_stripe_info(uint32_t batch, { CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d: E", batch, io_buf, plane, stripe); CAM_DBG(CAM_OPE, "width: %d s_w: %u s_h: %u s_s: %u", stripe_info->width, stripe_info->width, stripe_info->height, stripe_info->stride); CAM_DBG(CAM_OPE, "width: %d s_h: %u s_s: %u", stripe_info->width, stripe_info->height, stripe_info->stride); CAM_DBG(CAM_OPE, "s_xinit = %u iova = %x s_loc = %u", stripe_info->s_location, stripe_info->x_init, iova_addr); CAM_DBG(CAM_OPE, "s_off = %u s_format = %u s_len = %u", stripe_info->x_init, iova_addr, stripe_info->s_location); CAM_DBG(CAM_OPE, "s_off = %u s_format = %u s_len = %u d_bus %d", stripe_info->offset, stripe_info->format, stripe_info->len); stripe_info->len, stripe_info->disable_bus); CAM_DBG(CAM_OPE, "s_align = %u s_pack = %u s_unpack = %u", stripe_info->alignment, stripe_info->pack_format, stripe_info->unpack_format); Loading Loading @@ -1839,35 +1838,15 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, in_frame_set = &in_frame_process->frame_set[i]; for (j = 0; j < in_frame_set->num_io_bufs; j++) { in_io_buf = &in_frame_set->io_buf[j]; CAM_DBG(CAM_OPE, "i:%d j:%d dir: %x rsc: %u plane: %d", i, j, in_io_buf->direction, in_io_buf->resource_type, in_io_buf->num_planes); for (k = 0; k < in_io_buf->num_planes; k++) { CAM_DBG(CAM_OPE, "i:%d j:%d k:%d numstripe: %d", i, j, k, in_io_buf->num_stripes[k]); CAM_DBG(CAM_OPE, "m_hdl: %d len: %d", in_io_buf->mem_handle[k], in_io_buf->length[k]); if (!in_io_buf->num_stripes[k]) { CAM_ERR(CAM_OPE, "Null num_stripes"); return -EINVAL; } for (l = 0; l < in_io_buf->num_stripes[k]; l++) { in_stripe_info = &in_io_buf->stripe_info[k][l]; CAM_DBG(CAM_OPE, "i:%d j:%d k:%d l:%d", i, j, k, l); CAM_DBG(CAM_OPE, "%d s_loc:%d w:%d", in_stripe_info->x_init, in_stripe_info->stripe_location, in_stripe_info->width); CAM_DBG(CAM_OPE, "s_off: %d d_bus: %d", in_stripe_info->offset, in_stripe_info->disable_bus); } } } Loading Loading @@ -1925,9 +1904,6 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, unpack_format = 0; } CAM_DBG(CAM_OPE, "i:%d j:%d dir:%d rsc type:%d fmt:%d", i, j, io_buf->direction, io_buf->resource_type, io_buf->format); for (k = 0; k < in_io_buf->num_planes; k++) { io_buf->num_stripes[k] = in_io_buf->num_stripes[k]; Loading @@ -1954,6 +1930,11 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, return -EINVAL; } iova_addr += in_io_buf->plane_offset[k]; CAM_DBG(CAM_OPE, "E rsc %d stripes %d dir %d plane %d", in_io_buf->resource_type, in_io_buf->direction, in_io_buf->num_stripes[k], k); for (l = 0; l < in_io_buf->num_stripes[k]; l++) { in_stripe_info = Loading Loading @@ -1984,6 +1965,11 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr, cam_ope_mgr_print_stripe_info(i, j, k, l, stripe_info, iova_addr); } CAM_DBG(CAM_OPE, "X rsc %d stripes %d dir %d plane %d", in_io_buf->resource_type, in_io_buf->direction, in_io_buf->num_stripes[k], k); } } } Loading Loading @@ -3755,6 +3741,31 @@ static int cam_ope_mgr_create_wq(void) return rc; } static int cam_ope_create_debug_fs(void) { ope_hw_mgr->dentry = debugfs_create_dir("camera_ope", NULL); if (!ope_hw_mgr->dentry) { CAM_ERR(CAM_OPE, "failed to create dentry"); return -ENOMEM; } if (!debugfs_create_bool("frame_dump_enable", 0644, ope_hw_mgr->dentry, &ope_hw_mgr->frame_dump_enable)) { CAM_ERR(CAM_OPE, "failed to create dump_enable_debug"); goto err; } return 0; err: debugfs_remove_recursive(ope_hw_mgr->dentry); return -ENOMEM; } int cam_ope_hw_mgr_init(struct device_node *of_node, uint64_t *hw_mgr_hdl, int *iommu_hdl) Loading Loading @@ -3860,6 +3871,8 @@ int cam_ope_hw_mgr_init(struct device_node *of_node, uint64_t *hw_mgr_hdl, if (rc) goto ope_wq_create_failed; cam_ope_create_debug_fs(); if (iommu_hdl) *iommu_hdl = ope_hw_mgr->iommu_hdl; Loading
drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.h +2 −0 Original line number Diff line number Diff line Loading @@ -529,6 +529,8 @@ struct cam_ope_hw_mgr { struct cam_hw_intf *ope_dev_intf[OPE_DEV_MAX]; struct cam_soc_reg_map *cdm_reg_map[OPE_DEV_MAX][OPE_BASE_MAX]; struct cam_ope_clk_info clk_info; struct dentry *dentry; bool frame_dump_enable; }; /** Loading
drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.c +20 −31 Original line number Diff line number Diff line Loading @@ -190,16 +190,18 @@ static uint32_t *cam_ope_bus_rd_update(struct ope_hw *ope_hw_info, cdm_ops = ctx_data->ope_cdm.cdm_ops; ope_request = ctx_data->req_list[req_idx]; CAM_DBG(CAM_OPE, "req_idx = %d req_id = %lld KMDbuf %x offset %d", req_idx, ope_request->request_id, kmd_buf, prepare->kmd_buf_offset); bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; io_port_info = &bus_rd_ctx->io_port_info; rd_reg = ope_hw_info->bus_rd_reg; rd_reg_val = ope_hw_info->bus_rd_reg_val; io_buf = ope_request->io_buf[batch_idx][io_idx]; CAM_DBG(CAM_OPE, "req_idx = %d req_id = %lld KMDbuf 0x%x offset %d rsc %d", req_idx, ope_request->request_id, kmd_buf, prepare->kmd_buf_offset, io_buf->resource_type); CAM_DBG(CAM_OPE, "batch:%d iobuf:%d direction:%d", batch_idx, io_idx, io_buf->direction); io_port_cdm = Loading Loading @@ -307,20 +309,15 @@ static uint32_t *cam_ope_bus_rd_update(struct ope_hw *ope_hw_info, sizeof(temp)); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); for (m = 0; m < count; m++) CAM_DBG(CAM_OPE, "%d:temp:%x", m, temp_reg[m]); for (m = 0; m < count; m += 2) CAM_DBG(CAM_OPE, "%d: off: 0x%x val: 0x%x", m, temp_reg[m], temp_reg[m+1]); CAM_DBG(CAM_OPE, "kmd_buf:%x offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "%x count: %d size:%d", temp_reg, count, header_size); CAM_DBG(CAM_OPE, "RD cmdbufs:%d off:%d", CAM_DBG(CAM_OPE, "RD cmdbufs:%d off:%d len %d", io_port_cdm->num_s_cmd_bufs[l], io_port_cdm->s_cdm_info[l][idx].offset); CAM_DBG(CAM_OPE, "len:%d", io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); count = 0; } } Loading Loading @@ -372,8 +369,9 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, io_port_cdm_batch = &bus_rd_ctx->io_port_cdm_batch; rd_reg = ope_hw_info->bus_rd_reg; CAM_DBG(CAM_OPE, "kmd_buf = %x req_idx = %d offset = %d", kmd_buf, req_idx, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "kmd_buf = 0x%x req_idx = %d offset = %d rd_idx %d b %d", kmd_buf, req_idx, prepare->kmd_buf_offset, rm_idx, batch_idx); io_port_cdm = &bus_rd_ctx->io_port_cdm_batch.io_port_cdm[batch_idx]; Loading Loading @@ -402,20 +400,11 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, prepare->kmd_buf_offset += ((count + header_size) * sizeof(temp)); CAM_DBG(CAM_OPE, "b:%d s:%d", batch_idx, l); CAM_DBG(CAM_OPE, "kmdbuf:%x, offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "count:%d temp_reg:%x", count, temp_reg, header_size); CAM_DBG(CAM_OPE, "header_size:%d", header_size); CAM_DBG(CAM_OPE, "RD cmd bufs = %d", io_port_cdm->num_s_cmd_bufs[l]); CAM_DBG(CAM_OPE, "off:%d len:%d", io_port_cdm->s_cdm_info[l][idx].offset, CAM_DBG(CAM_OPE, "stripe %d off:%d len:%d", l, io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d s:%d", batch_idx, l); count = 0; } Loading
drivers/cam_ope/ope_hw_mgr/ope_hw/bus_wr/ope_bus_wr.c +13 −28 Original line number Diff line number Diff line Loading @@ -169,7 +169,7 @@ static uint32_t *cam_ope_bus_wr_update(struct ope_hw *ope_hw_info, int batch_idx, int io_idx, uint32_t *kmd_buf, uint32_t *num_stripes) { int k, l, out_port_idx; int k, l, m, out_port_idx; uint32_t idx; uint32_t num_wm_ports; uint32_t comb_idx; Loading Loading @@ -226,8 +226,8 @@ static uint32_t *cam_ope_bus_wr_update(struct ope_hw *ope_hw_info, prepare->kmd_buf_offset); io_buf = ope_request->io_buf[batch_idx][io_idx]; CAM_DBG(CAM_OPE, "batch = %d io buf num = %d dir = %d", batch_idx, io_idx, io_buf->direction); CAM_DBG(CAM_OPE, "batch = %d io buf num = %d dir = %d rsc %d", batch_idx, io_idx, io_buf->direction, io_buf->resource_type); io_port_cdm = &bus_wr_ctx->io_port_cdm_batch.io_port_cdm[batch_idx]; Loading Loading @@ -335,19 +335,15 @@ static uint32_t *cam_ope_bus_wr_update(struct ope_hw *ope_hw_info, CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); for (m = 0; m < count; m += 2) CAM_DBG(CAM_OPE, "%d: off: 0x%x val: 0x%x", m, temp_reg[m], temp_reg[m+1]); CAM_DBG(CAM_OPE, "kmdbuf:%x, offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "count:%d temp_reg:%x", count, temp_reg, header_size); CAM_DBG(CAM_OPE, "header_size:%d", header_size); CAM_DBG(CAM_OPE, "WR cmd bufs = %d", io_port_cdm->num_s_cmd_bufs[l]); CAM_DBG(CAM_OPE, "off:%d len:%d", CAM_DBG(CAM_OPE, "WR cmd bufs = %d off:%d len:%d", io_port_cdm->num_s_cmd_bufs[l], io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); count = 0; } } Loading Loading @@ -398,8 +394,9 @@ static uint32_t *cam_ope_bus_wm_disable(struct ope_hw *ope_hw_info, io_port_cdm_batch = &bus_wr_ctx->io_port_cdm_batch; wr_reg = ope_hw_info->bus_wr_reg; CAM_DBG(CAM_OPE, "kmd_buf = %x req_idx = %d offset = %d", kmd_buf, req_idx, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "kmd_buf = %x req_idx = %d offset = %d out_idx %d b %d", kmd_buf, req_idx, prepare->kmd_buf_offset, io_idx, batch_idx); io_port_cdm = &bus_wr_ctx->io_port_cdm_batch.io_port_cdm[batch_idx]; Loading @@ -409,8 +406,6 @@ static uint32_t *cam_ope_bus_wm_disable(struct ope_hw *ope_hw_info, for (k = 0; k < num_wm_ports; k++) { for (l = 0; l < num_stripes; l++) { CAM_DBG(CAM_OPE, "comb_idx = %d p_idx = %d s_idx = %d", comb_idx, k, l); /* frame level info */ /* stripe level info */ wm_port_id = out_port_to_wm->wm_port_id[comb_idx][k]; Loading @@ -436,21 +431,11 @@ static uint32_t *cam_ope_bus_wm_disable(struct ope_hw *ope_hw_info, prepare->kmd_buf_offset += ((count + header_size) * sizeof(temp)); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); CAM_DBG(CAM_OPE, "kmdbuf:%x, offset:%d", kmd_buf, prepare->kmd_buf_offset); CAM_DBG(CAM_OPE, "count:%d temp_reg:%x", count, temp_reg, header_size); CAM_DBG(CAM_OPE, "header_size:%d", header_size); CAM_DBG(CAM_OPE, "WR cmd bufs = %d", io_port_cdm->num_s_cmd_bufs[l]); CAM_DBG(CAM_OPE, "off:%d len:%d", io_port_cdm->s_cdm_info[l][idx].offset, CAM_DBG(CAM_OPE, "s:%d off:%d len:%d", l, io_port_cdm->s_cdm_info[l][idx].offset, io_port_cdm->s_cdm_info[l][idx].len); CAM_DBG(CAM_OPE, "b:%d io:%d p:%d s:%d", batch_idx, io_idx, k, l); count = 0; } } Loading
drivers/cam_ope/ope_hw_mgr/ope_hw/ope_core.c +30 −25 Original line number Diff line number Diff line Loading @@ -427,7 +427,7 @@ static int dump_dmi_cmd(uint32_t print_idx, return 0; } static int dump_frame_direct(uint32_t print_idx, static int dump_direct_cmd(uint32_t print_idx, uint32_t *print_ptr, struct ope_frame_process *frm_proc, int batch_idx, int cmd_buf_idx) Loading Loading @@ -569,7 +569,7 @@ static uint32_t *ope_create_frame_cmd_batch(struct cam_ope_hw_mgr *hw_mgr, iova_addr, frm_proc->cmd_buf[i][j].length); print_ptr = (uint32_t *)cpu_addr; dump_frame_direct(print_idx, print_ptr, dump_direct_cmd(print_idx, print_ptr, frm_proc, i, j); } else { num_dmi = frm_proc->cmd_buf[i][j].length / Loading @@ -591,6 +591,7 @@ static uint32_t *ope_create_frame_cmd_batch(struct cam_ope_hw_mgr *hw_mgr, 0, dmi_cmd->DMIAddr, dmi_cmd->DMISel, dmi_cmd->addr, dmi_cmd->length); if (hw_mgr->frame_dump_enable) dump_dmi_cmd(print_idx, print_ptr, dmi_cmd, temp); print_ptr += Loading @@ -599,6 +600,7 @@ static uint32_t *ope_create_frame_cmd_batch(struct cam_ope_hw_mgr *hw_mgr, } CAM_DBG(CAM_OPE, "Frame DB : In direct: X"); } if (hw_mgr->frame_dump_enable) dump_frame_cmd(frm_proc, i, j, iova_addr, kmd_buf, buf_len); } Loading Loading @@ -724,7 +726,8 @@ static uint32_t *ope_create_frame_cmd(struct cam_ope_hw_mgr *hw_mgr, iova_addr, frm_proc->cmd_buf[i][j].length); print_ptr = (uint32_t *)cpu_addr; dump_frame_direct(print_idx, print_ptr, if (hw_mgr->frame_dump_enable) dump_direct_cmd(print_idx, print_ptr, frm_proc, i, j); } else { num_dmi = frm_proc->cmd_buf[i][j].length / Loading @@ -747,14 +750,17 @@ static uint32_t *ope_create_frame_cmd(struct cam_ope_hw_mgr *hw_mgr, 0, dmi_cmd->DMIAddr, dmi_cmd->DMISel, dmi_cmd->addr, dmi_cmd->length); if (hw_mgr->frame_dump_enable) dump_dmi_cmd(print_idx, print_ptr, dmi_cmd, temp); print_ptr, dmi_cmd, temp); print_ptr += sizeof(struct cdm_dmi_cmd) / sizeof(uint32_t); } CAM_DBG(CAM_OPE, "Frame DB : In direct: X"); } if (hw_mgr->frame_dump_enable) dump_frame_cmd(frm_proc, i, j, iova_addr, kmd_buf, buf_len); } Loading Loading @@ -831,12 +837,9 @@ static uint32_t *ope_create_stripe_cmd(struct cam_ope_hw_mgr *hw_mgr, print_ptr = (uint32_t *)cpu_addr; CAM_DBG(CAM_OPE, "Stripe:%d direct:E", stripe_idx); for (print_idx = 0; print_idx < frm_proc->cmd_buf[i][k].length / 4; print_idx++) { CAM_DBG(CAM_OPE, "%d: %x", print_idx, print_ptr[print_idx]); } if (hw_mgr->frame_dump_enable) dump_direct_cmd(print_idx, print_ptr, frm_proc, i, k); CAM_DBG(CAM_OPE, "Stripe:%d direct:X", stripe_idx); } else if (frm_proc->cmd_buf[i][k].type == OPE_CMD_BUF_TYPE_INDIRECT) { Loading @@ -856,6 +859,7 @@ static uint32_t *ope_create_stripe_cmd(struct cam_ope_hw_mgr *hw_mgr, kmd_buf = cdm_ops->cdm_write_dmi(kmd_buf, 0, dmi_cmd->DMIAddr, dmi_cmd->DMISel, dmi_cmd->addr, dmi_cmd->length); if (hw_mgr->frame_dump_enable) dump_dmi_cmd(print_idx, print_ptr, dmi_cmd, temp); print_ptr += sizeof(struct cdm_dmi_cmd) / Loading @@ -863,6 +867,7 @@ static uint32_t *ope_create_stripe_cmd(struct cam_ope_hw_mgr *hw_mgr, } CAM_DBG(CAM_OPE, "Stripe:%d Indirect:X", stripe_idx); } if (hw_mgr->frame_dump_enable) dump_stripe_cmd(frm_proc, stripe_idx, i, k, iova_addr, kmd_buf, buf_len); } Loading