drivers/media/platform/amphion/vpu_windsor.c

Source file repositories/reference/linux-study-clean/drivers/media/platform/amphion/vpu_windsor.c

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/amphion/vpu_windsor.c
Extension
.c
Size
30369 bytes
Lines
1181
Domain
Driver Families
Bucket
drivers/media
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 windsor_iface {
	u32 exec_base_addr;
	u32 exec_area_size;
	struct vpu_rpc_buffer_desc cmd_buffer_desc;
	struct vpu_rpc_buffer_desc msg_buffer_desc;
	u32 cmd_int_enable[VID_API_NUM_STREAMS];
	u32 fw_version;
	u32 mvd_fw_offset;
	u32 max_streams;
	u32 ctrl_iface[VID_API_NUM_STREAMS];
	struct vpu_rpc_system_config system_config;
	u32 api_version;
	struct vpu_rpc_buffer_desc log_buffer_desc;
};

struct windsor_ctrl_iface {
	u32 enc_yuv_buffer_desc;
	u32 enc_stream_buffer_desc;
	u32 enc_expert_mode_param;
	u32 enc_param;
	u32 enc_mem_pool;
	u32 enc_encoding_status;
	u32 enc_dsa_status;
};

struct vpu_enc_yuv_desc {
	u32 frame_id;
	u32 luma_base;
	u32 chroma_base;
	u32 param_idx;
	u32 key_frame;
};

struct vpu_enc_calib_params {
	u32 use_ame;

	u32 cme_mvx_max;
	u32 cme_mvy_max;
	u32 ame_prefresh_y0;
	u32 ame_prefresh_y1;
	u32 fme_min_sad;
	u32 cme_min_sad;

	u32 fme_pred_int_weight;
	u32 fme_pred_hp_weight;
	u32 fme_pred_qp_weight;
	u32 fme_cost_weight;
	u32 fme_act_thold;
	u32 fme_sad_thold;
	u32 fme_zero_sad_thold;

	u32 fme_lrg_mvx_lmt;
	u32 fme_lrg_mvy_lmt;
	u32 fme_force_mode;
	u32 fme_force4mvcost;
	u32 fme_force2mvcost;

	u32 h264_inter_thrd;

	u32 i16x16_mode_cost;
	u32 i4x4_mode_lambda;
	u32 i8x8_mode_lambda;

	u32 inter_mod_mult;
	u32 inter_sel_mult;
	u32 inter_bid_cost;
	u32 inter_bwd_cost;
	u32 inter_4mv_cost;
	s32 one_mv_i16_cost;
	s32 one_mv_i4x4_cost;
	s32 one_mv_i8x8_cost;
	s32 two_mv_i16_cost;
	s32 two_mv_i4x4_cost;
	s32 two_mv_i8x8_cost;
	s32 four_mv_i16_cost;
	s32 four_mv_i4x4_cost;
	s32 four_mv_i8x8_cost;

	u32 intra_pred_enab;
	u32 intra_chr_pred;
	u32 intra16_pred;
	u32 intra4x4_pred;
	u32 intra8x8_pred;

	u32 cb_base;
	u32 cb_size;
	u32 cb_head_room;

	u32 mem_page_width;
	u32 mem_page_height;

Annotation

Implementation Notes