drivers/media/platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c- Extension
.c- Size
- 22630 bytes
- Lines
- 640
- 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.
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
media/v4l2-mem2mem.hrkvdec.hrkvdec-cabac.hrkvdec-rcb.hrkvdec-hevc-common.hrkvdec-vdpu381-regs.h
Detected Declarations
struct rkvdec_hevc_spsstruct rkvdec_hevc_ppsstruct rkvdec_hevc_tilestruct rkvdec_sps_pps_packetstruct rkvdec_hevc_priv_tblstruct rkvdec_hevc_ctxfunction assemble_hw_ppsfunction set_ref_validfunction rkvdec_write_regsfunction config_registersfunction rkvdec_hevc_validate_spsfunction rkvdec_hevc_startfunction rkvdec_hevc_stopfunction rkvdec_hevc_runfunction rkvdec_hevc_try_ctrl
Annotated Snippet
struct rkvdec_hevc_sps {
u16 video_parameters_set_id : 4;
u16 seq_parameters_set_id_sps : 4;
u16 chroma_format_idc : 2;
u16 width : 16;
u16 height : 16;
u16 bit_depth_luma : 4;
u16 bit_depth_chroma : 4;
u16 max_pic_order_count_lsb : 5;
u16 diff_max_min_luma_coding_block_size : 2;
u16 min_luma_coding_block_size : 3;
u16 min_transform_block_size : 3;
u16 diff_max_min_transform_block_size : 2;
u16 max_transform_hierarchy_depth_inter : 3;
u16 max_transform_hierarchy_depth_intra : 3;
u16 scaling_list_enabled_flag : 1;
u16 amp_enabled_flag : 1;
u16 sample_adaptive_offset_enabled_flag : 1;
u16 pcm_enabled_flag : 1;
u16 pcm_sample_bit_depth_luma : 4;
u16 pcm_sample_bit_depth_chroma : 4;
u16 pcm_loop_filter_disabled_flag : 1;
u16 diff_max_min_pcm_luma_coding_block_size : 3;
u16 min_pcm_luma_coding_block_size : 3;
u16 num_short_term_ref_pic_sets : 7;
u16 long_term_ref_pics_present_flag : 1;
u16 num_long_term_ref_pics_sps : 6;
u16 sps_temporal_mvp_enabled_flag : 1;
u16 strong_intra_smoothing_enabled_flag : 1;
u16 reserved_0 : 7;
u16 sps_max_dec_pic_buffering_minus1 : 4;
u16 reserved_0_2 : 3;
u16 reserved_f : 8;
} __packed;
//PPS
struct rkvdec_hevc_pps {
u16 picture_parameters_set_id : 6;
u16 seq_parameters_set_id_pps : 4;
u16 dependent_slice_segments_enabled_flag : 1;
u16 output_flag_present_flag : 1;
u16 num_extra_slice_header_bits : 13;
u16 sign_data_hiding_enabled_flag : 1;
u16 cabac_init_present_flag : 1;
u16 num_ref_idx_l0_default_active : 4;
u16 num_ref_idx_l1_default_active : 4;
u16 init_qp_minus26 : 7;
u16 constrained_intra_pred_flag : 1;
u16 transform_skip_enabled_flag : 1;
u16 cu_qp_delta_enabled_flag : 1;
u16 log2_min_cb_size : 3;
u16 pps_cb_qp_offset : 5;
u16 pps_cr_qp_offset : 5;
u16 pps_slice_chroma_qp_offsets_present_flag : 1;
u16 weighted_pred_flag : 1;
u16 weighted_bipred_flag : 1;
u16 transquant_bypass_enabled_flag : 1;
u16 tiles_enabled_flag : 1;
u16 entropy_coding_sync_enabled_flag : 1;
u16 pps_loop_filter_across_slices_enabled_flag : 1;
u16 loop_filter_across_tiles_enabled_flag : 1;
u16 deblocking_filter_override_enabled_flag : 1;
u16 pps_deblocking_filter_disabled_flag : 1;
u16 pps_beta_offset_div2 : 4;
u16 pps_tc_offset_div2 : 4;
u16 lists_modification_present_flag : 1;
u16 log2_parallel_merge_level : 3;
u16 slice_segment_header_extension_present_flag : 1;
u16 zeroes : 3;
u16 num_tile_columns : 5;
u16 num_tile_rows : 5;
u16 sps_pps_mode : 4;
u16 reserved_bits : 14;
u16 reserved;
} __packed;
struct rkvdec_hevc_tile {
u16 value0 : 12;
u16 value1 : 12;
} __packed;
struct rkvdec_sps_pps_packet {
struct rkvdec_hevc_sps sps;
struct rkvdec_hevc_pps pps;
struct rkvdec_hevc_tile column_width[10];
struct rkvdec_hevc_tile row_height[11];
u32 zeroes[3];
u32 zeroes_bits : 6;
u32 padding_bits : 2;
u32 padding;
Annotation
- Immediate include surface: `media/v4l2-mem2mem.h`, `rkvdec.h`, `rkvdec-cabac.h`, `rkvdec-rcb.h`, `rkvdec-hevc-common.h`, `rkvdec-vdpu381-regs.h`.
- Detected declarations: `struct rkvdec_hevc_sps`, `struct rkvdec_hevc_pps`, `struct rkvdec_hevc_tile`, `struct rkvdec_sps_pps_packet`, `struct rkvdec_hevc_priv_tbl`, `struct rkvdec_hevc_ctx`, `function assemble_hw_pps`, `function set_ref_valid`, `function rkvdec_write_regs`, `function config_registers`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.