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

Commit 9a1c939d authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: vfe: Add support for BUS RD"

parents 16f6b658 c25a6835
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 */

#ifndef _CAM_VFE175_130_H_
@@ -354,12 +354,11 @@ static struct cam_vfe_bus_rd_ver1_hw_info vfe175_130_bus_rd_hw_info = {
		{
			.cfg                      = 0x00005050,
			.image_addr               = 0x00005058,
			.buffer_width_cfg         = 0x0000505C,
			.unpacker_cfg             = 0x00005064,
			.buf_size                 = 0x0000505C,
			.stride                   = 0x00005060,
			.burst_limit              = 0x00005080,
			.unpacker_cfg             = 0x00005064,
			.latency_buf_allocation   = 0x00005078,
			.ubwc_regs                = NULL,
			.burst_limit              = 0x00005080,
		},
	},
	.num_bus_rd_resc = 1,
@@ -1093,7 +1092,7 @@ struct cam_vfe_hw_info cam_vfe175_130_hw_info = {
	.bus_version                   = CAM_VFE_BUS_VER_2_0,
	.bus_hw_info                   = &vfe175_130_bus_hw_info,

	.bus_rd_version                = CAM_VFE_BUS_VER_2_0,
	.bus_rd_version                = CAM_VFE_BUS_RD_VER_1_0,
	.bus_rd_hw_info                = &vfe175_130_bus_rd_hw_info,

	.top_version                   = CAM_VFE_TOP_VER_2_0,
+50 −0
Original line number Diff line number Diff line
@@ -980,12 +980,62 @@ static struct cam_vfe_bus_ver3_hw_info vfe480_bus_hw_info = {
	},
};

static struct cam_irq_register_set vfe480_bus_rd_irq_reg[1] = {
	{
		.mask_reg_offset   = 0x0000A810,
		.clear_reg_offset  = 0x0000A814,
		.status_reg_offset = 0x0000A81C,
	},
};

static struct cam_vfe_bus_rd_ver1_hw_info vfe480_bus_rd_hw_info = {
	.common_reg = {
		.hw_version                   = 0x0000A800,
		.hw_capability                = 0x0000A804,
		.sw_reset                     = 0x0000A808,
		.cgc_ovd                      = 0x0000A80C,
		.pwr_iso_cfg                  = 0x0000A834,
		.input_if_cmd                 = 0x0000A820,
		.test_bus_ctrl                = 0x0000A848,
		.irq_reg_info = {
			.num_registers        = 1,
			.irq_reg_set          = vfe480_bus_rd_irq_reg,
			.global_clear_offset  = 0x0000A818,
			.global_clear_bitmask = 0x00000001,
		},
	},
	.num_client = 1,
	.bus_client_reg = {
		/* BUS Client 0 */
		{
			.cfg                      = 0x0000A850,
			.image_addr               = 0x0000A858,
			.buf_size                 = 0x0000A85C,
			.stride                   = 0x0000A860,
			.unpacker_cfg             = 0x0000A864,
			.latency_buf_allocation   = 0x0000A878,
			.burst_limit              = 0x0000A880,
		},
	},
	.num_bus_rd_resc = 1,
	.vfe_bus_rd_hw_info = {
		{
			.vfe_bus_rd_type = CAM_VFE_BUS_RD_VER1_VFE_BUSRD_RDI0,
			.max_width     = -1,
			.max_height    = -1,
		},
	},
};

struct cam_vfe_hw_info cam_vfe480_hw_info = {
	.irq_reg_info                  = &vfe175_top_irq_reg_info,

	.bus_version                   = CAM_VFE_BUS_VER_3_0,
	.bus_hw_info                   = &vfe480_bus_hw_info,

	.bus_rd_version                = CAM_VFE_BUS_RD_VER_1_0,
	.bus_rd_hw_info                = &vfe480_bus_rd_hw_info,

	.top_version                   = CAM_VFE_TOP_VER_2_0,
	.top_hw_info                   = &vfe175_top_hw_info,

+13 −5
Original line number Diff line number Diff line
@@ -32,18 +32,26 @@ int cam_vfe_bus_init(uint32_t bus_version,
				bus_hw_info, vfe_irq_controller, vfe_bus);
			break;
		default:
			CAM_ERR(CAM_ISP, "Unsupported Bus Version %x",
			CAM_ERR(CAM_ISP, "Unsupported Bus WR Version 0x%x",
				bus_version);
			break;
		}
		break;
	case BUS_TYPE_RD:
		switch (bus_version) {
		case CAM_VFE_BUS_RD_VER_1_0:
			/* Call vfe bus rd init function */
			rc = cam_vfe_bus_rd_ver1_init(soc_info, hw_intf,
				bus_hw_info, vfe_irq_controller, vfe_bus);
			break;
		default:
		CAM_ERR(CAM_ISP, "Unsupported Bus type %x", bus_type);
			CAM_ERR(CAM_ISP, "Unsupported Bus RD Version 0x%x",
				bus_version);
			break;
		}
		break;
	default:
		CAM_ERR(CAM_ISP, "Unsupported Bus type %d", bus_type);
		break;
	}

+3 −4
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 */

#include <linux/ratelimit.h>
@@ -318,7 +318,7 @@ static int cam_vfe_bus_start_rm(struct cam_isp_resource_node *rm_res)
	CAM_DBG(CAM_ISP, "min_vbi: 0x%x", rm_data->min_vbi);

	/* Write All the values*/
	offset = rm_data->hw_regs->buffer_width_cfg;
	offset = rm_data->hw_regs->buf_size;
	buf_size = ((rm_data->width)&(0x0000FFFF)) |
		((rm_data->height<<16)&(0xFFFF0000));
	cam_io_w_mb(buf_size, common_data->mem_base + offset);
@@ -809,8 +809,7 @@ static int cam_vfe_bus_rd_update_rm(void *priv, void *cmd_args,
		CAM_DBG(CAM_ISP, "size offset 0x%x buf_size 0x%x",
			rm_data->hw_regs->buf_size, buf_size);
		CAM_VFE_ADD_REG_VAL_PAIR(reg_val_pair, j,
			rm_data->hw_regs->buffer_width_cfg,
			buf_size);
			rm_data->hw_regs->buf_size, buf_size);
		CAM_DBG(CAM_ISP, "RM %d image size 0x%x",
			rm_data->index, reg_val_pair[j-1]);

+4 −12
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 */

#ifndef _CAM_VFE_BUS_R_VER1_H_
@@ -50,21 +50,13 @@ struct cam_vfe_bus_rd_ver1_reg_offset_common {
 * @Brief:        Register offsets for BUS Clients
 */
struct cam_vfe_bus_rd_ver1_reg_offset_bus_client {
	uint32_t status0;
	uint32_t status1;
	uint32_t cfg;
	uint32_t header_addr;
	uint32_t header_cfg;
	uint32_t image_addr;
	uint32_t image_addr_offset;
	uint32_t buffer_width_cfg;
	uint32_t buffer_height_cfg;
	uint32_t unpacker_cfg;
	uint32_t buf_size;
	uint32_t stride;
	void    *ubwc_regs;
	uint32_t burst_limit;
	uint32_t unpacker_cfg;
	uint32_t latency_buf_allocation;
	uint32_t buf_size;
	uint32_t burst_limit;
};

/*
Loading