drivers/staging/media/ipu7/abi/ipu7_fw_msg_abi.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/ipu7/abi/ipu7_fw_msg_abi.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/ipu7/abi/ipu7_fw_msg_abi.h
Extension
.h
Size
12153 bytes
Lines
466
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 ipu7_msg_node_profile {
	struct ia_gofo_tlv_header tlv_header;
	ipu7_msg_teb_t teb;
};

struct ipu7_msg_cb_profile {
	struct ipu7_msg_node_profile profile_base;
	ipu7_msg_deb_t deb;
	ipu7_msg_rbm_t rbm;
	ipu7_msg_rbm_t reb;
};

#define IPU_MSG_NODE_MAX_PROFILES	(2U)
#define IPU_MSG_NODE_DEF_PROFILE_IDX	(0U)
#define IPU_MSG_NODE_RSRC_ID_EXT_IP	(0xff)

#define IPU_MSG_NODE_DONT_CARE_TEB_HI	(0xffffffff)
#define IPU_MSG_NODE_DONT_CARE_TEB_LO	(0xffffffff)
#define IPU_MSG_NODE_RSRC_ID_IS		(0xfe)

struct ipu7_msg_node {
	struct ia_gofo_tlv_header tlv_header;
	u8 node_rsrc_id;
	u8 node_ctx_id;
	u8 num_frags;
	u8 reserved[1];
	struct ia_gofo_tlv_list profiles_list;
	struct ia_gofo_tlv_list terms_list;
	struct ia_gofo_tlv_list node_options;
};

enum ipu7_msg_node_option_types {
	IPU_MSG_NODE_OPTION_TYPES_PADDING = 0,
	IPU_MSG_NODE_OPTION_TYPES_N
};

#pragma pack(pop)

#pragma pack(push, 1)

enum ipu7_msg_link_type {
	IPU_MSG_LINK_TYPE_PAD = 0,
	IPU_MSG_LINK_TYPE_GENERIC = 1,
	IPU_MSG_LINK_TYPE_N
};

enum ipu7_msg_link_option_types {
	IPU_MSG_LINK_OPTION_TYPES_PADDING = 0,
	IPU_MSG_LINK_OPTION_TYPES_CMPRS = 1,
	IPU_MSG_LINK_OPTION_TYPES_N
};

enum ipu7_msg_link_cmprs_option_bit_depth {
	IPU_MSG_LINK_CMPRS_OPTION_8BPP = 0,
	IPU_MSG_LINK_CMPRS_OPTION_10BPP = 1,
	IPU_MSG_LINK_CMPRS_OPTION_12BPP = 2,
};

#define IPU_MSG_LINK_CMPRS_SPACE_SAVING_DENOM		(128U)
#define IPU_MSG_LINK_CMPRS_LOSSY_CFG_PAYLOAD_SIZE	(5U)
#define IPU_MSG_LINK_CMPRS_SPACE_SAVING_NUM_MAX \
	(IPU_MSG_LINK_CMPRS_SPACE_SAVING_DENOM - 1U)

struct ipu7_msg_link_cmprs_plane_desc {
	u8 plane_enable;
	u8 cmprs_enable;
	u8 encoder_plane_id;
	u8 decoder_plane_id;
	u8 cmprs_is_lossy;
	u8 cmprs_is_footprint;
	u8 bit_depth;
	u8 space_saving_numerator;
	u32 pixels_offset;
	u32 ts_offset;
	u32 tile_row_to_tile_row_stride;
	u32 rows_of_tiles;
	u32 lossy_cfg[IPU_MSG_LINK_CMPRS_LOSSY_CFG_PAYLOAD_SIZE];
};

#define IPU_MSG_LINK_CMPRS_MAX_PLANES		(2U)
#define IPU_MSG_LINK_CMPRS_NO_ALIGN_INTERVAL	(0U)
#define IPU_MSG_LINK_CMPRS_MIN_ALIGN_INTERVAL	(16U)
#define IPU_MSG_LINK_CMPRS_MAX_ALIGN_INTERVAL	(1024U)
struct ipu7_msg_link_cmprs_option {
	struct ia_gofo_tlv_header header;
	u32 cmprs_buf_size;
	u16 align_interval;
	u8 reserved[2];
	struct ipu7_msg_link_cmprs_plane_desc plane_descs[2];
};

Annotation

Implementation Notes