Loading drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.c +19 −21 Original line number Diff line number Diff line Loading @@ -190,8 +190,10 @@ 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]; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; 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; Loading Loading @@ -365,7 +367,7 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, req_idx = prepare->req_idx; cdm_ops = ctx_data->ope_cdm.cdm_ops; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx = bus_rd->bus_rd_ctx[ctx_id]; io_port_cdm_batch = &bus_rd_ctx->io_port_cdm_batch; rd_reg = ope_hw_info->bus_rd_reg; Loading Loading @@ -453,7 +455,7 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, req_idx, ope_request->request_id); CAM_DBG(CAM_OPE, "KMD buf and offset = %x %d", kmd_buf, prepare->kmd_buf_offset); bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx = bus_rd->bus_rd_ctx[ctx_id]; io_port_cdm_batch = &bus_rd_ctx->io_port_cdm_batch; memset(io_port_cdm_batch, 0, Loading Loading @@ -551,25 +553,15 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, static int cam_ope_bus_rd_release(struct ope_hw *ope_hw_info, int32_t ctx_id, void *data) { int rc = 0, i; struct ope_acquire_dev_info *in_acquire; struct ope_bus_rd_ctx *bus_rd_ctx; int rc = 0; if (ctx_id < 0) { if (ctx_id < 0 || ctx_id >= OPE_CTX_MAX) { CAM_ERR(CAM_OPE, "Invalid data: %d", ctx_id); return -EINVAL; } in_acquire = bus_rd->bus_rd_ctx[ctx_id].ope_acquire; bus_rd->bus_rd_ctx[ctx_id].ope_acquire = NULL; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx->num_in_ports = 0; for (i = 0; i < bus_rd_ctx->num_in_ports; i++) { bus_rd_ctx->io_port_info.input_port_id[i] = 0; bus_rd_ctx->io_port_info.input_format_type[i - 1] = 0; bus_rd_ctx->io_port_info.pixel_pattern[i - 1] = 0; } vfree(bus_rd->bus_rd_ctx[ctx_id]); bus_rd->bus_rd_ctx[ctx_id] = NULL; return rc; } Loading @@ -586,15 +578,21 @@ static int cam_ope_bus_rd_acquire(struct ope_hw *ope_hw_info, int in_port_idx; if (ctx_id < 0 || !data || !ope_hw_info) { if (ctx_id < 0 || !data || !ope_hw_info || ctx_id >= OPE_CTX_MAX) { CAM_ERR(CAM_OPE, "Invalid data: %d %x %x", ctx_id, data, ope_hw_info); return -EINVAL; } bus_rd->bus_rd_ctx[ctx_id].ope_acquire = data; bus_rd->bus_rd_ctx[ctx_id] = vzalloc(sizeof(struct ope_bus_rd_ctx)); if (!bus_rd->bus_rd_ctx[ctx_id]) { CAM_ERR(CAM_OPE, "Out of memory"); return -ENOMEM; } bus_rd->bus_rd_ctx[ctx_id]->ope_acquire = data; in_acquire = data; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx = bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx->num_in_ports = in_acquire->num_in_res; bus_rd_ctx->security_flag = in_acquire->secure_mode; bus_rd_reg_val = ope_hw_info->bus_rd_reg_val; Loading drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.h +2 −2 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2019, The Linux Foundation. All rights reserved. * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */ #ifndef OPE_BUS_RD_H Loading Loading @@ -132,7 +132,7 @@ struct ope_bus_rd_ctx { struct ope_bus_rd { struct ope_hw *ope_hw_info; struct ope_bus_in_port_to_rm in_port_to_rm[OPE_IN_RES_MAX]; struct ope_bus_rd_ctx bus_rd_ctx[OPE_CTX_MAX]; struct ope_bus_rd_ctx *bus_rd_ctx[OPE_CTX_MAX]; struct completion reset_complete; }; #endif /* OPE_BUS_RD_H */ Loading Loading
drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.c +19 −21 Original line number Diff line number Diff line Loading @@ -190,8 +190,10 @@ 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]; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; 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; Loading Loading @@ -365,7 +367,7 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, req_idx = prepare->req_idx; cdm_ops = ctx_data->ope_cdm.cdm_ops; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx = bus_rd->bus_rd_ctx[ctx_id]; io_port_cdm_batch = &bus_rd_ctx->io_port_cdm_batch; rd_reg = ope_hw_info->bus_rd_reg; Loading Loading @@ -453,7 +455,7 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, req_idx, ope_request->request_id); CAM_DBG(CAM_OPE, "KMD buf and offset = %x %d", kmd_buf, prepare->kmd_buf_offset); bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx = bus_rd->bus_rd_ctx[ctx_id]; io_port_cdm_batch = &bus_rd_ctx->io_port_cdm_batch; memset(io_port_cdm_batch, 0, Loading Loading @@ -551,25 +553,15 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, static int cam_ope_bus_rd_release(struct ope_hw *ope_hw_info, int32_t ctx_id, void *data) { int rc = 0, i; struct ope_acquire_dev_info *in_acquire; struct ope_bus_rd_ctx *bus_rd_ctx; int rc = 0; if (ctx_id < 0) { if (ctx_id < 0 || ctx_id >= OPE_CTX_MAX) { CAM_ERR(CAM_OPE, "Invalid data: %d", ctx_id); return -EINVAL; } in_acquire = bus_rd->bus_rd_ctx[ctx_id].ope_acquire; bus_rd->bus_rd_ctx[ctx_id].ope_acquire = NULL; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx->num_in_ports = 0; for (i = 0; i < bus_rd_ctx->num_in_ports; i++) { bus_rd_ctx->io_port_info.input_port_id[i] = 0; bus_rd_ctx->io_port_info.input_format_type[i - 1] = 0; bus_rd_ctx->io_port_info.pixel_pattern[i - 1] = 0; } vfree(bus_rd->bus_rd_ctx[ctx_id]); bus_rd->bus_rd_ctx[ctx_id] = NULL; return rc; } Loading @@ -586,15 +578,21 @@ static int cam_ope_bus_rd_acquire(struct ope_hw *ope_hw_info, int in_port_idx; if (ctx_id < 0 || !data || !ope_hw_info) { if (ctx_id < 0 || !data || !ope_hw_info || ctx_id >= OPE_CTX_MAX) { CAM_ERR(CAM_OPE, "Invalid data: %d %x %x", ctx_id, data, ope_hw_info); return -EINVAL; } bus_rd->bus_rd_ctx[ctx_id].ope_acquire = data; bus_rd->bus_rd_ctx[ctx_id] = vzalloc(sizeof(struct ope_bus_rd_ctx)); if (!bus_rd->bus_rd_ctx[ctx_id]) { CAM_ERR(CAM_OPE, "Out of memory"); return -ENOMEM; } bus_rd->bus_rd_ctx[ctx_id]->ope_acquire = data; in_acquire = data; bus_rd_ctx = &bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx = bus_rd->bus_rd_ctx[ctx_id]; bus_rd_ctx->num_in_ports = in_acquire->num_in_res; bus_rd_ctx->security_flag = in_acquire->secure_mode; bus_rd_reg_val = ope_hw_info->bus_rd_reg_val; Loading
drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.h +2 −2 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2019, The Linux Foundation. All rights reserved. * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */ #ifndef OPE_BUS_RD_H Loading Loading @@ -132,7 +132,7 @@ struct ope_bus_rd_ctx { struct ope_bus_rd { struct ope_hw *ope_hw_info; struct ope_bus_in_port_to_rm in_port_to_rm[OPE_IN_RES_MAX]; struct ope_bus_rd_ctx bus_rd_ctx[OPE_CTX_MAX]; struct ope_bus_rd_ctx *bus_rd_ctx[OPE_CTX_MAX]; struct completion reset_complete; }; #endif /* OPE_BUS_RD_H */ Loading