linux/drivers/staging/media/ipu3/ipu3-abi.h

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2018 Intel Corporation */

#ifndef __IPU3_ABI_H
#define __IPU3_ABI_H

#include "include/uapi/intel-ipu3.h"

/******************* IMGU Hardware information *******************/

imgu_addr_t;

#define IMGU_ISP_VMEM_ALIGN
#define IMGU_DVS_BLOCK_W
#define IMGU_DVS_BLOCK_H
#define IMGU_GDC_BUF_X
#define IMGU_GDC_BUF_Y
/* n = 0..1 */
#define IMGU_SP_PMEM_BASE(n)
#define IMGU_MAX_BQ_GRID_WIDTH
#define IMGU_MAX_BQ_GRID_HEIGHT
#define IMGU_OBGRID_TILE_SIZE
#define IMGU_PIXELS_PER_WORD
#define IMGU_BYTES_PER_WORD
#define IMGU_STRIPE_FIXED_HALF_OVERLAP
#define IMGU_SHD_SETS
#define IMGU_BDS_MIN_CLIP_VAL
#define IMGU_BDS_MAX_CLIP_VAL

#define IMGU_ABI_AWB_MAX_CELLS_PER_SET
#define IMGU_ABI_AF_MAX_CELLS_PER_SET
#define IMGU_ABI_AWB_FR_MAX_CELLS_PER_SET

#define IMGU_ABI_ACC_OP_IDLE
#define IMGU_ABI_ACC_OP_END_OF_ACK
#define IMGU_ABI_ACC_OP_END_OF_OPS
#define IMGU_ABI_ACC_OP_NO_OPS

#define IMGU_ABI_ACC_OPTYPE_PROCESS_LINES
#define IMGU_ABI_ACC_OPTYPE_TRANSFER_DATA

/* Register definitions */

/* PM_CTRL_0_5_0_IMGHMMADR */
#define IMGU_REG_PM_CTRL
#define IMGU_PM_CTRL_START
#define IMGU_PM_CTRL_CFG_DONE
#define IMGU_PM_CTRL_RACE_TO_HALT
#define IMGU_PM_CTRL_NACK_ALL
#define IMGU_PM_CTRL_CSS_PWRDN
#define IMGU_PM_CTRL_RST_AT_EOF
#define IMGU_PM_CTRL_FORCE_HALT
#define IMGU_PM_CTRL_FORCE_UNHALT
#define IMGU_PM_CTRL_FORCE_PWRDN
#define IMGU_PM_CTRL_FORCE_RESET

/* SYSTEM_REQ_0_5_0_IMGHMMADR */
#define IMGU_REG_SYSTEM_REQ
#define IMGU_SYSTEM_REQ_FREQ_MASK
#define IMGU_SYSTEM_REQ_FREQ_DIVIDER
#define IMGU_REG_INT_STATUS
#define IMGU_REG_INT_ENABLE
#define IMGU_REG_INT_CSS_IRQ
/* STATE_0_5_0_IMGHMMADR */
#define IMGU_REG_STATE
#define IMGU_STATE_HALT_STS
#define IMGU_STATE_IDLE_STS
#define IMGU_STATE_POWER_UP
#define IMGU_STATE_POWER_DOWN
#define IMGU_STATE_CSS_BUSY_MASK
#define IMGU_STATE_PM_FSM_MASK
#define IMGU_STATE_PWRDNM_FSM_MASK
/* PM_STS_0_5_0_IMGHMMADR */
#define IMGU_REG_PM_STS

#define IMGU_REG_BASE

#define IMGU_REG_ISP_CTRL
#define IMGU_CTRL_RST
#define IMGU_CTRL_START
#define IMGU_CTRL_BREAK
#define IMGU_CTRL_RUN
#define IMGU_CTRL_BROKEN
#define IMGU_CTRL_IDLE
#define IMGU_CTRL_SLEEPING
#define IMGU_CTRL_STALLING
#define IMGU_CTRL_IRQ_CLEAR
#define IMGU_CTRL_IRQ_READY
#define IMGU_CTRL_IRQ_SLEEPING
#define IMGU_CTRL_ICACHE_INV
#define IMGU_CTRL_IPREFETCH_EN
#define IMGU_REG_ISP_START_ADDR
#define IMGU_REG_ISP_ICACHE_ADDR
#define IMGU_REG_ISP_PC

/* SP Registers, sp = 0:SP0; 1:SP1 */
#define IMGU_REG_SP_CTRL(sp)
	/* For bits in IMGU_REG_SP_CTRL, see IMGU_CTRL_* */
#define IMGU_REG_SP_START_ADDR(sp)
#define IMGU_REG_SP_ICACHE_ADDR(sp)
#define IMGU_REG_SP_CTRL_SINK(sp)
#define IMGU_REG_SP_PC(sp)

#define IMGU_REG_TLB_INVALIDATE
#define IMGU_TLB_INVALIDATE
#define IMGU_REG_L1_PHYS

#define IMGU_REG_CIO_GATE_BURST_STATE
#define IMGU_CIO_GATE_BURST_MASK

#define IMGU_REG_GP_BUSY
#define IMGU_REG_GP_STARVING
#define IMGU_REG_GP_WORKLOAD
#define IMGU_REG_GP_IRQ(n)
#define IMGU_REG_GP_SP1_STRMON_STAT
#define IMGU_REG_GP_SP2_STRMON_STAT
#define IMGU_REG_GP_ISP_STRMON_STAT
#define IMGU_REG_GP_MOD_STRMON_STAT

/* Port definitions for the streaming monitors. */
/* For each definition there is signal pair : valid [bit 0]- accept [bit 1] */
#define IMGU_GP_STRMON_STAT_SP1_PORT_SP12DMA
#define IMGU_GP_STRMON_STAT_SP1_PORT_DMA2SP1
#define IMGU_GP_STRMON_STAT_SP1_PORT_SP12SP2
#define IMGU_GP_STRMON_STAT_SP1_PORT_SP22SP1
#define IMGU_GP_STRMON_STAT_SP1_PORT_SP12ISP
#define IMGU_GP_STRMON_STAT_SP1_PORT_ISP2SP1

#define IMGU_GP_STRMON_STAT_SP2_PORT_SP22DMA
#define IMGU_GP_STRMON_STAT_SP2_PORT_DMA2SP2
#define IMGU_GP_STRMON_STAT_SP2_PORT_SP22SP1
#define IMGU_GP_STRMON_STAT_SP2_PORT_SP12SP2

#define IMGU_GP_STRMON_STAT_ISP_PORT_ISP2DMA
#define IMGU_GP_STRMON_STAT_ISP_PORT_DMA2ISP
#define IMGU_GP_STRMON_STAT_ISP_PORT_ISP2SP1
#define IMGU_GP_STRMON_STAT_ISP_PORT_SP12ISP

/* Between the devices and the fifo */
#define IMGU_GP_STRMON_STAT_MOD_PORT_SP12DMA
#define IMGU_GP_STRMON_STAT_MOD_PORT_DMA2SP1
#define IMGU_GP_STRMON_STAT_MOD_PORT_SP22DMA
#define IMGU_GP_STRMON_STAT_MOD_PORT_DMA2SP2
#define IMGU_GP_STRMON_STAT_MOD_PORT_ISP2DMA
#define IMGU_GP_STRMON_STAT_MOD_PORT_DMA2ISP
#define IMGU_GP_STRMON_STAT_MOD_PORT_CELLS2GDC
#define IMGU_GP_STRMON_STAT_MOD_PORT_GDC2CELLS
#define IMGU_GP_STRMON_STAT_MOD_PORT_CELLS2DECOMP
#define IMGU_GP_STRMON_STAT_MOD_PORT_DECOMP2CELLS
/* n = 1..6 */
#define IMGU_GP_STRMON_STAT_MOD_PORT_S2V(n)

/* n = 1..15 */
#define IMGU_GP_STRMON_STAT_ACCS_PORT_ACC(n)

/* After FIFO and demux before SP1, n = 1..15 */
#define IMGU_GP_STRMON_STAT_ACCS2SP1_MON_PORT_ACC(n)

/* After FIFO and demux before SP2, n = 1..15 */
#define IMGU_GP_STRMON_STAT_ACCS2SP2_MON_PORT_ACC(n)

#define IMGU_REG_GP_HALT

					/* n = 0..2 (main ctrl, SP0, SP1) */
#define IMGU_REG_IRQCTRL_BASE(n)
#define IMGU_IRQCTRL_MAIN
#define IMGU_IRQCTRL_SP0
#define IMGU_IRQCTRL_SP1
#define IMGU_IRQCTRL_NUM
#define IMGU_IRQCTRL_IRQ_SP1
#define IMGU_IRQCTRL_IRQ_SP2
#define IMGU_IRQCTRL_IRQ_ISP
#define IMGU_IRQCTRL_IRQ_SP1_STREAM_MON
#define IMGU_IRQCTRL_IRQ_SP2_STREAM_MON
#define IMGU_IRQCTRL_IRQ_ISP_STREAM_MON
#define IMGU_IRQCTRL_IRQ_MOD_STREAM_MON
#define IMGU_IRQCTRL_IRQ_MOD_ISP_STREAM_MON
#define IMGU_IRQCTRL_IRQ_ACCS_STREAM_MON
#define IMGU_IRQCTRL_IRQ_ACCS_SP1_STREAM_MON
#define IMGU_IRQCTRL_IRQ_ACCS_SP2_STREAM_MON
#define IMGU_IRQCTRL_IRQ_ISP_PMEM_ERROR
#define IMGU_IRQCTRL_IRQ_ISP_BAMEM_ERROR
#define IMGU_IRQCTRL_IRQ_ISP_VMEM_ERROR
#define IMGU_IRQCTRL_IRQ_ISP_DMEM_ERROR
#define IMGU_IRQCTRL_IRQ_SP1_ICACHE_MEM_ERROR
#define IMGU_IRQCTRL_IRQ_SP1_DMEM_ERROR
#define IMGU_IRQCTRL_IRQ_SP2_ICACHE_MEM_ERROR
#define IMGU_IRQCTRL_IRQ_SP2_DMEM_ERROR
#define IMGU_IRQCTRL_IRQ_ACCS_SCRATCH_MEM_ERROR
#define IMGU_IRQCTRL_IRQ_GP_TIMER(n)
#define IMGU_IRQCTRL_IRQ_DMA
#define IMGU_IRQCTRL_IRQ_SW_PIN(n)
#define IMGU_IRQCTRL_IRQ_ACC_SYS
#define IMGU_IRQCTRL_IRQ_OUT_FORM_IRQ_CTRL
#define IMGU_IRQCTRL_IRQ_SP1_IRQ_CTRL
#define IMGU_IRQCTRL_IRQ_SP2_IRQ_CTRL
#define IMGU_REG_IRQCTRL_EDGE(n)
#define IMGU_REG_IRQCTRL_MASK(n)
#define IMGU_REG_IRQCTRL_STATUS(n)
#define IMGU_REG_IRQCTRL_CLEAR(n)
#define IMGU_REG_IRQCTRL_ENABLE(n)
#define IMGU_REG_IRQCTRL_EDGE_NOT_PULSE(n)
#define IMGU_REG_IRQCTRL_STR_OUT_ENABLE(n)

#define IMGU_REG_GP_TIMER

#define IMGU_REG_SP_DMEM_BASE(n)
#define IMGU_REG_ISP_DMEM_BASE

#define IMGU_REG_GDC_BASE
#define IMGU_REG_GDC_LUT_BASE
#define IMGU_GDC_LUT_MASK

#define IMGU_SCALER_PHASES
#define IMGU_SCALER_COEFF_BITS
#define IMGU_SCALER_PHASE_COUNTER_PREC_REF
#define IMGU_SCALER_MAX_EXPONENT_SHIFT
#define IMGU_SCALER_FILTER_TAPS
#define IMGU_SCALER_TAPS_Y
#define IMGU_SCALER_TAPS_UV
#define IMGU_SCALER_FIR_PHASES

/******************* imgu_abi_acc_param *******************/

#define IMGU_ABI_SHD_MAX_PROCESS_LINES
#define IMGU_ABI_SHD_MAX_TRANSFERS
#define IMGU_ABI_SHD_MAX_OPERATIONS
#define IMGU_ABI_SHD_MAX_CELLS_PER_SET
/* largest grid is 73x56 */
#define IMGU_ABI_SHD_MAX_CFG_SETS

#define IMGU_ABI_DVS_STAT_MAX_OPERATIONS
#define IMGU_ABI_DVS_STAT_MAX_PROCESS_LINES
#define IMGU_ABI_DVS_STAT_MAX_TRANSFERS

#define IMGU_ABI_BDS_SAMPLE_PATTERN_ARRAY_SIZE
#define IMGU_ABI_BDS_PHASE_COEFFS_ARRAY_SIZE

#define IMGU_ABI_AWB_FR_MAX_TRANSFERS
#define IMGU_ABI_AWB_FR_MAX_PROCESS_LINES
#define IMGU_ABI_AWB_FR_MAX_OPERATIONS

#define IMGU_ABI_AF_MAX_TRANSFERS
#define IMGU_ABI_AF_MAX_PROCESS_LINES
#define IMGU_ABI_AF_MAX_OPERATIONS

#define IMGU_ABI_AWB_MAX_PROCESS_LINES
#define IMGU_ABI_AWB_MAX_TRANSFERS
#define IMGU_ABI_AWB_MAX_OPERATIONS

#define IMGU_ABI_OSYS_PIN_VF
#define IMGU_ABI_OSYS_PIN_OUT
#define IMGU_ABI_OSYS_PINS

#define IMGU_ABI_DVS_STAT_LEVELS
#define IMGU_ABI_YUVP2_YTM_LUT_ENTRIES
#define IMGU_ABI_GDC_FRAC_BITS
#define IMGU_ABI_BINARY_MAX_OUTPUT_PORTS
#define IMGU_ABI_MAX_BINARY_NAME
#define IMGU_ABI_ISP_DDR_WORD_BITS
#define IMGU_ABI_ISP_DDR_WORD_BYTES
#define IMGU_ABI_MAX_STAGES
#define IMGU_ABI_MAX_IF_CONFIGS
#define IMGU_ABI_PIPE_CONFIG_ACQUIRE_ISP
#define IMGU_ABI_PORT_CONFIG_TYPE_INPUT_HOST
#define IMGU_ABI_PORT_CONFIG_TYPE_OUTPUT_HOST
#define IMGU_ABI_MAX_SP_THREADS
#define IMGU_ABI_FRAMES_REF
#define IMGU_ABI_FRAMES_TNR
#define IMGU_ABI_BUF_SETS_TNR

#define IMGU_ABI_EVENT_BUFFER_ENQUEUED(thread, queue)
#define IMGU_ABI_EVENT_BUFFER_DEQUEUED(queue)
#define IMGU_ABI_EVENT_EVENT_DEQUEUED
#define IMGU_ABI_EVENT_START_STREAM
#define IMGU_ABI_EVENT_STOP_STREAM
#define IMGU_ABI_EVENT_MIPI_BUFFERS_READY
#define IMGU_ABI_EVENT_UNLOCK_RAW_BUFFER
#define IMGU_ABI_EVENT_STAGE_ENABLE_DISABLE

#define IMGU_ABI_HOST2SP_BUFQ_SIZE
#define IMGU_ABI_SP2HOST_BUFQ_SIZE
#define IMGU_ABI_HOST2SP_EVTQ_SIZE
#define IMGU_ABI_SP2HOST_EVTQ_SIZE

#define IMGU_ABI_EVTTYPE_EVENT_SHIFT
#define IMGU_ABI_EVTTYPE_EVENT_MASK
#define IMGU_ABI_EVTTYPE_PIPE_SHIFT
#define IMGU_ABI_EVTTYPE_PIPE_MASK
#define IMGU_ABI_EVTTYPE_PIPEID_SHIFT
#define IMGU_ABI_EVTTYPE_PIPEID_MASK
#define IMGU_ABI_EVTTYPE_MODULEID_SHIFT
#define IMGU_ABI_EVTTYPE_MODULEID_MASK
#define IMGU_ABI_EVTTYPE_LINENO_SHIFT
#define IMGU_ABI_EVTTYPE_LINENO_MASK

/* Output frame ready */
#define IMGU_ABI_EVTTYPE_OUT_FRAME_DONE
/* Second output frame ready */
#define IMGU_ABI_EVTTYPE_2ND_OUT_FRAME_DONE
/* Viewfinder Output frame ready */
#define IMGU_ABI_EVTTYPE_VF_OUT_FRAME_DONE
/* Second viewfinder Output frame ready */
#define IMGU_ABI_EVTTYPE_2ND_VF_OUT_FRAME_DONE
/* Indication that 3A statistics are available */
#define IMGU_ABI_EVTTYPE_3A_STATS_DONE
/* Indication that DIS statistics are available */
#define IMGU_ABI_EVTTYPE_DIS_STATS_DONE
/* Pipeline Done event, sent after last pipeline stage */
#define IMGU_ABI_EVTTYPE_PIPELINE_DONE
/* Frame tagged */
#define IMGU_ABI_EVTTYPE_FRAME_TAGGED
/* Input frame ready */
#define IMGU_ABI_EVTTYPE_INPUT_FRAME_DONE
/* Metadata ready */
#define IMGU_ABI_EVTTYPE_METADATA_DONE
/* Indication that LACE statistics are available */
#define IMGU_ABI_EVTTYPE_LACE_STATS_DONE
/* Extension stage executed */
#define IMGU_ABI_EVTTYPE_ACC_STAGE_COMPLETE
/* Timing measurement data */
#define IMGU_ABI_EVTTYPE_TIMER
/* End Of Frame event, sent when in buffered sensor mode */
#define IMGU_ABI_EVTTYPE_PORT_EOF
/* Performance warning encountered by FW */
#define IMGU_ABI_EVTTYPE_FW_WARNING
/* Assertion hit by FW */
#define IMGU_ABI_EVTTYPE_FW_ASSERT

#define IMGU_ABI_NUM_CONTINUOUS_FRAMES
#define IMGU_ABI_SP_COMM_COMMAND

/*
 * The host2sp_cmd_ready command is the only command written by the SP
 * It acknowledges that is previous command has been received.
 * (this does not mean that the command has been executed)
 * It also indicates that a new command can be send (it is a queue
 * with depth 1).
 */
#define IMGU_ABI_SP_COMM_COMMAND_READY
/* Command written by the Host */
#define IMGU_ABI_SP_COMM_COMMAND_DUMMY
#define IMGU_ABI_SP_COMM_COMMAND_START_FLASH
#define IMGU_ABI_SP_COMM_COMMAND_TERMINATE

/* n = 0..IPU3_CSS_PIPE_ID_NUM-1 */
#define IMGU_ABI_SP_COMM_EVENT_IRQ_MASK(n)
#define IMGU_ABI_SP_COMM_EVENT_IRQ_MASK_OR_SHIFT
#define IMGU_ABI_SP_COMM_EVENT_IRQ_MASK_AND_SHIFT

#define IMGU_ABI_BL_DMACMD_TYPE_SP_PMEM

/***** For parameter computation *****/

#define IMGU_HIVE_OF_SYS_SCALER_TO_FA_OFFSET
#define IMGU_HIVE_OF_SYS_OF_TO_FA_OFFSET
#define IMGU_HIVE_OF_SYS_OF_SYSTEM_NWAYS

#define IMGU_SCALER_ELEMS_PER_VEC
#define IMGU_SCALER_FILTER_TAPS_Y
#define IMGU_SCALER_OUT_BPP

#define IMGU_SCALER_MS_TO_OUTFORMACC_SL_ADDR
#define IMGU_SCALER_TO_OF_ACK_FA_ADDR
#define IMGU_OF_TO_ACK_FA_ADDR
#define IMGU_OUTFORMACC_MS_TO_SCALER_SL_ADDR
#define IMGU_SCALER_INTR_BPP

#define IMGU_PS_SNR_PRESERVE_BITS
#define IMGU_CNTX_BPP
#define IMGU_SCALER_FILTER_TAPS_UV

#define IMGU_VMEM2_ELEMS_PER_VEC
#define IMGU_STRIDE_Y
#define IMGU_MAX_FRAME_WIDTH
#define IMGU_VMEM3_ELEMS_PER_VEC

#define IMGU_VER_CNTX_WORDS
#define IMGU_MAX_INPUT_BLOCK_HEIGHT
#define IMGU_HOR_CNTX_WORDS
#define IMGU_MAX_OUTPUT_BLOCK_WIDTH
#define IMGU_CNTX_STRIDE_UV

#define IMGU_OSYS_DMA_CROP_W_LIMIT
#define IMGU_OSYS_DMA_CROP_H_LIMIT
#define IMGU_OSYS_BLOCK_WIDTH
#define IMGU_OSYS_BLOCK_HEIGHT
#define IMGU_OSYS_PHASES
#define IMGU_OSYS_FILTER_TAPS
#define IMGU_OSYS_PHASE_COUNTER_PREC_REF
#define IMGU_OSYS_NUM_INPUT_BUFFERS
#define IMGU_OSYS_FIR_PHASES
#define IMGU_OSYS_TAPS_UV
#define IMGU_OSYS_TAPS_Y
#define IMGU_OSYS_NUM_INTERM_BUFFERS

#define IMGU_VMEM1_Y_SIZE
#define IMGU_VMEM1_UV_SIZE
#define IMGU_VMEM1_OUT_BUF_ADDR
#define IMGU_OSYS_NUM_OUTPUT_BUFFERS

/* transpose of input height */
#define IMGU_VMEM2_VECS_PER_LINE
/* size in words (vectors)  */
#define IMGU_VMEM2_BUF_SIZE
#define IMGU_VMEM3_VER_Y_SIZE
#define IMGU_VMEM3_HOR_Y_SIZE
#define IMGU_VMEM3_VER_Y_EXTRA
#define IMGU_VMEM3_VER_U_SIZE
#define IMGU_VMEM3_HOR_U_SIZE
#define IMGU_VMEM3_VER_U_EXTRA
#define IMGU_VMEM3_VER_V_SIZE

#define IMGU_ISP_VEC_NELEMS
#define IMGU_LUMA_TO_CHROMA_RATIO
#define IMGU_INPUT_BLOCK_WIDTH
#define IMGU_FIFO_ADDR_SCALER_TO_FMT
#define IMGU_FIFO_ADDR_SCALER_TO_SP
#define IMGU_VMEM1_INP_BUF_ADDR
#define IMGU_VMEM1_Y_STRIDE
#define IMGU_VMEM1_BUF_SIZE

#define IMGU_VMEM1_U_OFFSET
#define IMGU_VMEM1_V_OFFSET
#define IMGU_VMEM1_UV_STRIDE
#define IMGU_VMEM1_INT_BUF_ADDR

#define IMGU_VMEM1_ELEMS_PER_VEC
#define IMGU_VMEM2_BUF_Y_ADDR
#define IMGU_VMEM2_BUF_Y_STRIDE
#define IMGU_VMEM2_BUF_U_ADDR
#define IMGU_VMEM2_BUF_V_ADDR
#define IMGU_VMEM2_BUF_UV_STRIDE
/* 1.5 x depth of intermediate buffer */
#define IMGU_VMEM2_LINES_PER_BLOCK
#define IMGU_VMEM3_HOR_Y_ADDR
#define IMGU_VMEM3_HOR_U_ADDR
#define IMGU_VMEM3_HOR_V_ADDR
#define IMGU_VMEM3_VER_Y_ADDR
#define IMGU_VMEM3_VER_U_ADDR
#define IMGU_VMEM3_VER_V_ADDR
#define IMGU_FIFO_ADDR_FMT_TO_SP
#define IMGU_FIFO_ADDR_FMT_TO_SCALER
#define IMGU_VMEM1_HST_BUF_ADDR
#define IMGU_VMEM1_HST_BUF_STRIDE
#define IMGU_VMEM1_HST_BUF_NLINES

enum imgu_abi_frame_format {};

enum imgu_abi_bayer_order {};

enum imgu_abi_osys_format {};

enum imgu_abi_osys_tiling {};

enum imgu_abi_osys_procmode {};

enum imgu_abi_queue_id {};

enum imgu_abi_buffer_type {};

enum imgu_abi_raw_type {};

enum imgu_abi_memories {};

enum imgu_abi_param_class {};

enum imgu_abi_bin_input_src {};

enum imgu_abi_sp_swstate {};

enum imgu_abi_bl_swstate {};

/* The type of pipe stage */
enum imgu_abi_stage_type {};

struct imgu_abi_acc_operation {} __packed;

struct imgu_abi_acc_process_lines_cmd_data {} __packed;

/* Bayer shading definitions */

struct imgu_abi_shd_transfer_luts_set_data {} __packed;

struct imgu_abi_shd_grid_config {} __packed;

struct imgu_abi_shd_general_config {} __packed;

struct imgu_abi_shd_black_level_config {} __packed;

struct imgu_abi_shd_intra_frame_operations_data {} __packed;

struct imgu_abi_shd_config {} __packed;

struct imgu_abi_stripe_input_frame_resolution {} __packed;

/* Stripe-based processing */

struct imgu_abi_stripes {} __packed;

struct imgu_abi_stripe_data {} __packed;

/* Input feeder related structs */

struct imgu_abi_input_feeder_data {} __packed;

struct imgu_abi_input_feeder_data_aligned {} __packed;

struct imgu_abi_input_feeder_data_per_stripe {} __packed;

struct imgu_abi_input_feeder_config {} __packed;

/* DVS related definitions */

struct imgu_abi_dvs_stat_grd_config {} __packed;

struct imgu_abi_dvs_stat_cfg {} __packed;

struct imgu_abi_dvs_stat_transfer_op_data {} __packed;

struct imgu_abi_dvs_stat_intra_frame_operations_data {} __packed;

struct imgu_abi_dvs_stat_config {} __packed;

/* Y-tone Mapping */

struct imgu_abi_yuvp2_y_tm_lut_static_config {} __packed;

/* Output formatter related structs */

struct imgu_abi_osys_formatter_params {} __packed;

struct imgu_abi_osys_formatter {} __packed;

struct imgu_abi_osys_scaler_params {} __packed;

struct imgu_abi_osys_scaler {} __packed;

struct imgu_abi_osys_frame_params {} __packed;

struct imgu_abi_osys_frame {} __packed;

struct imgu_abi_osys_stripe {} __packed;

struct imgu_abi_osys_config {} __packed;

/* BDS */

struct imgu_abi_bds_hor_ctrl0 {} __packed;

struct imgu_abi_bds_ptrn_arr {} __packed;

struct imgu_abi_bds_phase_entry {} __packed;

struct imgu_abi_bds_phase_arr {} __packed;

struct imgu_abi_bds_hor_ctrl1 {} __packed;

struct imgu_abi_bds_hor_ctrl2 {} __packed;

struct imgu_abi_bds_hor {} __packed;

struct imgu_abi_bds_ver_ctrl0 {} __packed;

struct imgu_abi_bds_ver_ctrl1 {} __packed;

struct imgu_abi_bds_ver {} __packed;

struct imgu_abi_bds_per_stripe_data {} __packed;

struct imgu_abi_bds_per_stripe_data_aligned {} __packed;

struct imgu_abi_bds_per_stripe {} __packed;

struct imgu_abi_bds_config {} __packed;

/* ANR */

struct imgu_abi_anr_search_config {} __packed;

struct imgu_abi_anr_stitch_config {} __packed;

struct imgu_abi_anr_tile2strm_config {} __packed;

struct imgu_abi_anr_config {} __packed;

/* AF */

struct imgu_abi_af_frame_size {} __packed;

struct imgu_abi_af_config_s {} __packed;

struct imgu_abi_af_intra_frame_operations_data {} __packed;

struct imgu_abi_af_stripe_config {} __packed;

struct imgu_abi_af_config {} __packed;

/* AE */

struct imgu_abi_ae_config {} __packed;

/* AWB_FR */

struct imgu_abi_awb_fr_intra_frame_operations_data {} __packed;

struct imgu_abi_awb_fr_config {} __packed;

struct imgu_abi_acc_transfer_op_data {} __packed;

struct imgu_abi_awb_intra_frame_operations_data {} __aligned() __packed;

struct imgu_abi_awb_config {} __packed;

struct imgu_abi_acc_param {} __packed;

/***** Morphing table entry *****/

struct imgu_abi_gdc_warp_param {} __packed;

/******************* Firmware ABI definitions *******************/

/***** struct imgu_abi_sp_stage *****/

struct imgu_abi_crop_pos {} __packed;

struct imgu_abi_sp_resolution {} __packed;

/*
 * Frame info struct. This describes the contents of an image frame buffer.
 */
struct imgu_abi_frame_sp_info {} __packed;

struct imgu_abi_buffer_sp {} __packed;

struct imgu_abi_frame_sp_plane {} __packed;

struct imgu_abi_frame_sp_rgb_planes {} __packed;

struct imgu_abi_frame_sp_yuv_planes {} __packed;

struct imgu_abi_frame_sp_nv_planes {} __packed;

struct imgu_abi_frame_sp_plane6 {} __packed;

struct imgu_abi_frame_sp_binary_plane {} __packed;

struct imgu_abi_frame_sp {} __packed;

struct imgu_abi_resolution {} __packed;

struct imgu_abi_frames_sp {} __packed;

struct imgu_abi_uds_info {} __packed;

/* Information for a single pipeline stage */
struct imgu_abi_sp_stage {} __packed;

/***** struct imgu_abi_isp_stage *****/

struct imgu_abi_isp_param_memory_offsets {} __packed;

/*
 * Blob descriptor.
 * This structure describes an SP or ISP blob.
 * It describes the test, data and bss sections as well as position in a
 * firmware file.
 * For convenience, it contains dynamic data after loading.
 */
struct imgu_abi_blob_info {} __packed;

struct imgu_abi_binary_pipeline_info {} __packed;

struct imgu_abi_binary_input_info {} __packed;

struct imgu_abi_binary_output_info {} __packed;

struct imgu_abi_binary_internal_info {} __packed;

struct imgu_abi_binary_bds_info {} __packed;

struct imgu_abi_binary_dvs_info {} __packed;

struct imgu_abi_binary_vf_dec_info {} __packed;

struct imgu_abi_binary_s3a_info {} __packed;

struct imgu_abi_binary_dpc_info {} __packed;

struct imgu_abi_binary_iterator_info {} __packed;

struct imgu_abi_binary_address_info {} __packed;

struct imgu_abi_binary_uds_info {} __packed;

struct imgu_abi_binary_block_info {} __packed;

struct imgu_abi_isp_data {} __packed;

struct imgu_abi_isp_param_segments {} __packed;

struct imgu_abi_binary_info {} __packed;

struct imgu_abi_isp_stage {} __packed;

/***** struct imgu_abi_ddr_address_map and parameter set *****/

/* xmem address map allocation */
struct imgu_abi_ddr_address_map {} __packed;

struct imgu_abi_parameter_set_info {} __packed;

/***** struct imgu_abi_sp_group *****/

/* SP configuration information */
struct imgu_abi_sp_config {} __packed;

/* Information for a pipeline */
struct imgu_abi_sp_pipeline {} __packed;

struct imgu_abi_sp_debug_command {} __packed;

/*
 * Group all host initialized SP variables into this struct.
 * This is initialized every stage through dma.
 * The stage part itself is transferred through imgu_abi_sp_stage.
 */
struct imgu_abi_sp_group {} __packed;

/***** parameter and state class binary configurations *****/

struct imgu_abi_isp_iterator_config {} __packed;

struct imgu_abi_dma_port_config {} __packed;

struct imgu_abi_isp_ref_config {} __packed;

struct imgu_abi_isp_ref_dmem_state {} __packed;

struct imgu_abi_isp_dvs_config {} __packed;

struct imgu_abi_isp_tnr3_config {} __packed;

struct imgu_abi_isp_tnr3_dmem_state {} __packed;

/***** Queues *****/

struct imgu_abi_queue_info {} __packed;

struct imgu_abi_queues {} __packed;

/***** Buffer descriptor *****/

struct imgu_abi_metadata_info {} __packed;

struct imgu_abi_isp_3a_statistics {} __packed;

struct imgu_abi_metadata {} __packed;

struct imgu_abi_time_meas {} __packed;

struct imgu_abi_buffer {} __packed;

struct imgu_abi_bl_dma_cmd_entry {} __packed;

struct imgu_abi_sp_init_dmem_cfg {} __packed;

#endif