msm: camera: isp: Buffer alignment support for TFE WM

This change is added to support buffer alignment for TFE
WM in x and y axis. This change is required in SHDR usecase to
align short exposure frame with long exposure frame.

CRs-Fixed: 3538642
Change-Id: I9a3d35d0884bfbd6f62034b207e5784fdf2f7430
Signed-off-by: Ayush Kumar <quic_ayushkr@quicinc.com>
This commit is contained in:
Ayush Kumar
2023-06-08 18:07:46 +05:30
committad av Alok Chauhan
förälder fe4bd2e6a1
incheckning bfbfc5d3d4
6 ändrade filer med 184 tillägg och 10 borttagningar

Visa fil

@@ -68,13 +68,14 @@
#define CAM_ISP_TFE_PACKET_META_REG_DUMP_ON_ERROR 8
/* ISP TFE Generic Cmd Buffer Blob types */
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_HFR_CONFIG 0
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_CLOCK_CONFIG 1
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_BW_CONFIG_V2 2
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_CSID_CLOCK_CONFIG 3
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_INIT_CONFIG 4
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_BW_LIMITER_CFG 16
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_DYNAMIC_MODE_SWITCH 15
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_HFR_CONFIG 0
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_CLOCK_CONFIG 1
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_BW_CONFIG_V2 2
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_CSID_CLOCK_CONFIG 3
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_INIT_CONFIG 4
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_DYNAMIC_MODE_SWITCH 15
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_BW_LIMITER_CFG 16
#define CAM_ISP_TFE_GENERIC_BLOB_TYPE_ALIGNMENT_OFFSET_INFO 17
/* DSP mode */
#define CAM_ISP_TFE_DSP_MODE_NONE 0
@@ -528,6 +529,39 @@ struct cam_isp_tfe_out_rsrc_bw_limiter_config {
struct cam_isp_tfe_wm_bw_limiter_config bw_limiter_config[1];
};
/**
* struct cam_isp_tfe_alignment_offset_config - ISP TFE buffer alignment config
*
* @resource_type: Resourse type
* @x_offset: Offset of the buffer from x-axies
* @y_offset: Offset of the buffer from y-axies
* @width: Width of out resource
* @height: Height of out resource
* @stride: Stride of out resource
*
*/
struct cam_isp_tfe_alignment_offset_config {
__u32 resource_type;
__u32 x_offset;
__u32 y_offset;
__u32 width;
__u32 height;
__u32 stride;
} __attribute__((packed));
/**
* struct cam_isp_tfe_alignment_resource_info - ISP TFE Resource Alignment
*
* @version: Alignment api version
* @num_ports: Number of ports
* @port_alignment_cfg: Buffer alignment for each IO port
*/
struct cam_isp_tfe_alignment_resource_info {
__u32 version;
__u32 num_ports;
struct cam_isp_tfe_alignment_offset_config port_alignment_cfg[1];
} __attribute__((packed));
#define CAM_TFE_ACQUIRE_COMMON_VER0 0x1000
#define CAM_TFE_ACQUIRE_COMMON_SIZE_VER0 0x0