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

Commit 894b9357 authored by Camera Software Integration's avatar Camera Software Integration Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: ope: Reduce OPE BUS memory" into camera-kernel.lnx.3.1

parents 869f98d1 2f76876e
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -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,
@@ -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;
}
@@ -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;
+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
@@ -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 */