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

Commit cb79ed06 authored by Mukund Madhusudan Atre's avatar Mukund Madhusudan Atre Committed by Gerrit - the friendly Code Review server
Browse files

msm: camera: Add uapi changes for axi bw voting v2



Adding uapi definitions for providing granular bw vote info
for camnoc, mnoc ab/ib and ddr paths.

Change-Id: I24a729dc3e76e1e3973131a73d0e07f52e464b1e
Signed-off-by: default avatarMukund Madhusudan Atre <matre@codeaurora.org>
parent c54bba55
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
@@ -6,6 +6,40 @@
#define CAM_FAMILY_CAMERA_SS     1
#define CAM_FAMILY_CPAS_SS       2

/* AXI BW Voting Version */
#define CAM_AXI_BW_VOTING_V2                2

/* AXI BW Voting Transaction Type */
#define CAM_AXI_TRANSACTION_READ            0
#define CAM_AXI_TRANSACTION_WRITE           1

/* AXI BW Voting Path Data Type */
#define CAM_AXI_PATH_DATA_IFE_START_OFFSET 0
#define CAM_AXI_PATH_DATA_IFE_LINEAR    (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 0)
#define CAM_AXI_PATH_DATA_IFE_VID       (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 1)
#define CAM_AXI_PATH_DATA_IFE_DISP      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 2)
#define CAM_AXI_PATH_DATA_IFE_STATS     (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 3)
#define CAM_AXI_PATH_DATA_IFE_RDI0      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 4)
#define CAM_AXI_PATH_DATA_IFE_RDI1      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 5)
#define CAM_AXI_PATH_DATA_IFE_RDI2      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 6)
#define CAM_AXI_PATH_DATA_IFE_RDI3      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 7)
#define CAM_AXI_PATH_DATA_IFE_PDAF      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 8)
#define CAM_AXI_PATH_DATA_IFE_PIXEL_RAW \
	(CAM_AXI_PATH_DATA_IFE_START_OFFSET + 9)
#define CAM_AXI_PATH_DATA_IFE_MAX_OFFSET \
	(CAM_AXI_PATH_DATA_IFE_START_OFFSET + 31)

#define CAM_AXI_PATH_DATA_IPE_START_OFFSET 32
#define CAM_AXI_PATH_DATA_IPE_RD_IN     (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 0)
#define CAM_AXI_PATH_DATA_IPE_RD_REF    (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 1)
#define CAM_AXI_PATH_DATA_IPE_WR_VID    (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 2)
#define CAM_AXI_PATH_DATA_IPE_WR_DISP   (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 3)
#define CAM_AXI_PATH_DATA_IPE_WR_REF    (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 4)
#define CAM_AXI_PATH_DATA_IPE_MAX_OFFSET \
	(CAM_AXI_PATH_DATA_IPE_START_OFFSET + 31)

#define CAM_AXI_PATH_DATA_ALL              256

/**
 * struct cam_cpas_query_cap - CPAS query device capability payload
 *
@@ -22,4 +56,29 @@ struct cam_cpas_query_cap {
	struct cam_hw_version    cpas_version;
};

/**
 * struct cam_axi_per_path_bw_vote - Per path bandwidth vote information
 *
 * @usage_data               client usage data (left/right/rdi)
 * @transac_type             Transaction type on the path (read/write)
 * @path_data_type           Path for which vote is given (video, display, rdi)
 * @reserved                 Reserved for alignment
 * @camnoc_bw                CAMNOC bw for this path
 * @mnoc_ab_bw               MNOC AB bw for this path
 * @mnoc_ib_bw               MNOC IB bw for this path
 * @ddr_ab_bw                DDR AB bw for this path
 * @ddr_ib_bw                DDR IB bw for this path
 */
struct cam_axi_per_path_bw_vote {
	uint32_t                      usage_data;
	uint32_t                      transac_type;
	uint32_t                      path_data_type;
	uint32_t                      reserved;
	uint64_t                      camnoc_bw;
	uint64_t                      mnoc_ab_bw;
	uint64_t                      mnoc_ib_bw;
	uint64_t                      ddr_ab_bw;
	uint64_t                      ddr_ib_bw;
};

#endif /* __UAPI_CAM_CPAS_H__ */
+21 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
#define __UAPI_CAM_ICP_H__

#include "cam_defs.h"
#include "cam_cpas.h"

/* icp, ipe, bps, cdm(ipe/bps) are used in querycap */
#define CAM_ICP_DEV_TYPE_A5      1
@@ -67,6 +68,26 @@
#define CAM_ICP_CMD_GENERIC_BLOB_CFG_IO         0x2
#define CAM_ICP_CMD_GENERIC_BLOB_FW_MEM_MAP     0x3
#define CAM_ICP_CMD_GENERIC_BLOB_FW_MEM_UNMAP   0x4
#define CAM_ICP_CMD_GENERIC_BLOB_CLK_V2         0x5

/**
 * struct cam_icp_clk_bw_request_v2
 *
 * @budget_ns: Time required to process frame
 * @frame_cycles: Frame cycles needed to process the frame
 * @rt_flag: Flag to indicate real time stream
 * @reserved: For memory alignment
 * @num_paths: Number of axi paths in bw request
 * @axi_path: Per path vote info for IPE/BPS
 */
struct cam_icp_clk_bw_request_v2 {
	uint64_t                          budget_ns;
	uint32_t                          frame_cycles;
	uint32_t                          rt_flag;
	uint32_t                          reserved;
	uint32_t                          num_paths;
	struct cam_axi_per_path_bw_vote   axi_path[1];
};

/**
 * struct cam_icp_clk_bw_request
+20 −3
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
#include "cam_defs.h"
#include "cam_isp_vfe.h"
#include "cam_isp_ife.h"

#include "cam_cpas.h"

/* ISP driver name */
#define CAM_ISP_DEV_NAME                        "cam-isp"
@@ -92,6 +92,12 @@
#define CAM_ISP_GENERIC_BLOB_TYPE_FE_CONFIG           5
#define CAM_ISP_GENERIC_BLOB_TYPE_BW_CONFIG_V2        6

/* Per Path Usage Data */
#define CAM_ISP_USAGE_INVALID     0
#define CAM_ISP_USAGE_LEFT_PX     1
#define CAM_ISP_USAGE_RIGHT_PX    2
#define CAM_ISP_USAGE_RDI         3

/* Query devices */
/**
 * struct cam_isp_dev_cap_info - A cap info for particular hw type
@@ -362,7 +368,6 @@ struct cam_isp_csid_clock_config {
 * @cam_bw_bps:                 Bandwidth vote for CAMNOC
 * @ext_bw_bps:                 Bandwidth vote for path-to-DDR after CAMNOC
 */

struct cam_isp_bw_vote {
	uint32_t                       resource_id;
	uint32_t                       reserved;
@@ -379,7 +384,6 @@ struct cam_isp_bw_vote {
 * @right_pix_vote:             Bandwidth vote for right ISP
 * @rdi_vote:                   RDI bandwidth requirements
 */

struct cam_isp_bw_config {
	uint32_t                       usage_type;
	uint32_t                       num_rdi;
@@ -407,6 +411,19 @@ struct cam_isp_bw_config_ab {
	uint64_t    rdi_vote_ab[1];
} __attribute__((packed));

/**
 * struct cam_isp_bw_config_v2 - Bandwidth configuration
 *
 * @usage_type:                 Usage type (Single/Dual)
 * @num_paths:                  Number of axi data paths
 * @axi_path                    Per path vote info
 */
struct cam_isp_bw_config_v2 {
	uint32_t                             usage_type;
	uint32_t                             num_paths;
	struct cam_axi_per_path_bw_vote      axi_path[1];
} __attribute__((packed));

/**
 * struct cam_fe_config - Fetch Engine configuration
 *