drivers/staging/media/atomisp/pci/sh_css_internal.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/sh_css_internal.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/atomisp/pci/sh_css_internal.h
Extension
.h
Size
29270 bytes
Lines
957
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct sh_css_ddr_address_map {
	ia_css_ptr isp_param;
	ia_css_ptr isp_mem_param[SH_CSS_MAX_STAGES][IA_CSS_NUM_MEMORIES];
	ia_css_ptr macc_tbl;
	ia_css_ptr fpn_tbl;
	ia_css_ptr sc_tbl;
	ia_css_ptr tetra_r_x;
	ia_css_ptr tetra_r_y;
	ia_css_ptr tetra_gr_x;
	ia_css_ptr tetra_gr_y;
	ia_css_ptr tetra_gb_x;
	ia_css_ptr tetra_gb_y;
	ia_css_ptr tetra_b_x;
	ia_css_ptr tetra_b_y;
	ia_css_ptr tetra_ratb_x;
	ia_css_ptr tetra_ratb_y;
	ia_css_ptr tetra_batr_x;
	ia_css_ptr tetra_batr_y;
	ia_css_ptr dvs_6axis_params_y;
};

#define SIZE_OF_SH_CSS_DDR_ADDRESS_MAP_STRUCT					\
	(SIZE_OF_HRT_VADDRESS +							\
	(SH_CSS_MAX_STAGES * IA_CSS_NUM_MEMORIES * SIZE_OF_HRT_VADDRESS) +	\
	(16 * SIZE_OF_HRT_VADDRESS))

static_assert(sizeof(struct sh_css_ddr_address_map) == SIZE_OF_SH_CSS_DDR_ADDRESS_MAP_STRUCT);

/* xmem address map allocation per pipeline */
struct sh_css_ddr_address_map_size {
	size_t isp_param;
	size_t isp_mem_param[SH_CSS_MAX_STAGES][IA_CSS_NUM_MEMORIES];
	size_t macc_tbl;
	size_t fpn_tbl;
	size_t sc_tbl;
	size_t tetra_r_x;
	size_t tetra_r_y;
	size_t tetra_gr_x;
	size_t tetra_gr_y;
	size_t tetra_gb_x;
	size_t tetra_gb_y;
	size_t tetra_b_x;
	size_t tetra_b_y;
	size_t tetra_ratb_x;
	size_t tetra_ratb_y;
	size_t tetra_batr_x;
	size_t tetra_batr_y;
	size_t dvs_6axis_params_y;
};

struct sh_css_ddr_address_map_compound {
	struct sh_css_ddr_address_map		map;
	struct sh_css_ddr_address_map_size	size;
};

struct ia_css_isp_parameter_set_info {
	struct sh_css_ddr_address_map
		mem_map;/** pointers to Parameters in ISP format IMPT:
						    This should be first member of this struct */
	u32
	isp_parameters_id;/** Unique ID to track which config was actually applied to a particular frame */
	ia_css_ptr
	output_frame_ptr;/** Output frame to which this config has to be applied (optional) */
};

/* this struct contains all arguments that can be passed to
   a binary. It depends on the binary which ones are used. */
struct sh_css_binary_args {
	struct ia_css_frame *in_frame;	     /* input frame */
	const struct ia_css_frame
		*delay_frames[MAX_NUM_VIDEO_DELAY_FRAMES];   /* reference input frame */
	const struct ia_css_frame *tnr_frames[NUM_VIDEO_TNR_FRAMES];   /* tnr frames */
	struct ia_css_frame
		*out_frame[IA_CSS_BINARY_MAX_OUTPUT_PORTS];      /* output frame */
	struct ia_css_frame *out_vf_frame;   /* viewfinder output frame */
	bool                 copy_vf;
	bool                 copy_output;
	unsigned int vf_downscale_log2;
};

#if SP_DEBUG == SP_DEBUG_DUMP

#define SH_CSS_NUM_SP_DEBUG 48

struct sh_css_sp_debug_state {
	unsigned int error;
	unsigned int debug[SH_CSS_NUM_SP_DEBUG];
};

#elif SP_DEBUG == SP_DEBUG_COPY

Annotation

Implementation Notes