drivers/gpu/drm/omapdrm/dss/venc.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/omapdrm/dss/venc.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/omapdrm/dss/venc.c- Extension
.c- Size
- 23138 bytes
- Lines
- 917
- Domain
- Driver Families
- Bucket
- drivers/gpu
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/module.hlinux/clk.hlinux/err.hlinux/io.hlinux/completion.hlinux/delay.hlinux/string.hlinux/seq_file.hlinux/platform_device.hlinux/regulator/consumer.hlinux/pm_runtime.hlinux/of.hlinux/of_graph.hlinux/component.hlinux/sys_soc.hdrm/drm_bridge.homapdss.hdss.h
Detected Declarations
struct venc_configstruct venc_deviceenum venc_videomodefunction venc_write_regfunction venc_read_regfunction venc_write_configfunction venc_resetfunction venc_runtime_getfunction venc_runtime_putfunction venc_power_onfunction venc_power_offfunction venc_get_videomodefunction venc_dump_regsfunction venc_get_clocksfunction venc_bridge_attachfunction venc_bridge_mode_validfunction venc_bridge_mode_fixupfunction venc_bridge_mode_setfunction venc_bridge_enablefunction venc_bridge_disablefunction venc_bridge_get_modesfunction venc_bridge_initfunction venc_bridge_cleanupfunction venc_bindfunction venc_unbindfunction venc_init_outputfunction venc_uninit_outputfunction venc_probe_offunction venc_probefunction venc_removefunction venc_runtime_suspendfunction venc_runtime_resume
Annotated Snippet
struct venc_config {
u32 f_control;
u32 vidout_ctrl;
u32 sync_ctrl;
u32 llen;
u32 flens;
u32 hfltr_ctrl;
u32 cc_carr_wss_carr;
u32 c_phase;
u32 gain_u;
u32 gain_v;
u32 gain_y;
u32 black_level;
u32 blank_level;
u32 x_color;
u32 m_control;
u32 bstamp_wss_data;
u32 s_carr;
u32 line21;
u32 ln_sel;
u32 l21__wc_ctl;
u32 htrigger_vtrigger;
u32 savid__eavid;
u32 flen__fal;
u32 lal__phase_reset;
u32 hs_int_start_stop_x;
u32 hs_ext_start_stop_x;
u32 vs_int_start_x;
u32 vs_int_stop_x__vs_int_start_y;
u32 vs_int_stop_y__vs_ext_start_x;
u32 vs_ext_stop_x__vs_ext_start_y;
u32 vs_ext_stop_y;
u32 avid_start_stop_x;
u32 avid_start_stop_y;
u32 fid_int_start_x__fid_int_start_y;
u32 fid_int_offset_y__fid_ext_start_x;
u32 fid_ext_start_y__fid_ext_offset_y;
u32 tvdetgp_int_start_stop_x;
u32 tvdetgp_int_start_stop_y;
u32 gen_ctrl;
};
/* from TRM */
static const struct venc_config venc_config_pal_trm = {
.f_control = 0,
.vidout_ctrl = 1,
.sync_ctrl = 0x40,
.llen = 0x35F, /* 863 */
.flens = 0x270, /* 624 */
.hfltr_ctrl = 0,
.cc_carr_wss_carr = 0x2F7225ED,
.c_phase = 0,
.gain_u = 0x111,
.gain_v = 0x181,
.gain_y = 0x140,
.black_level = 0x3B,
.blank_level = 0x3B,
.x_color = 0x7,
.m_control = 0x2,
.bstamp_wss_data = 0x3F,
.s_carr = 0x2A098ACB,
.line21 = 0,
.ln_sel = 0x01290015,
.l21__wc_ctl = 0x0000F603,
.htrigger_vtrigger = 0,
.savid__eavid = 0x06A70108,
.flen__fal = 0x00180270,
.lal__phase_reset = 0x00040135,
.hs_int_start_stop_x = 0x00880358,
.hs_ext_start_stop_x = 0x000F035F,
.vs_int_start_x = 0x01A70000,
.vs_int_stop_x__vs_int_start_y = 0x000001A7,
.vs_int_stop_y__vs_ext_start_x = 0x01AF0000,
.vs_ext_stop_x__vs_ext_start_y = 0x000101AF,
.vs_ext_stop_y = 0x00000025,
.avid_start_stop_x = 0x03530083,
.avid_start_stop_y = 0x026C002E,
.fid_int_start_x__fid_int_start_y = 0x0001008A,
.fid_int_offset_y__fid_ext_start_x = 0x002E0138,
.fid_ext_start_y__fid_ext_offset_y = 0x01380001,
.tvdetgp_int_start_stop_x = 0x00140001,
.tvdetgp_int_start_stop_y = 0x00010001,
.gen_ctrl = 0x00FF0000,
};
/* from TRM */
static const struct venc_config venc_config_ntsc_trm = {
.f_control = 0,
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/module.h`, `linux/clk.h`, `linux/err.h`, `linux/io.h`, `linux/completion.h`, `linux/delay.h`, `linux/string.h`.
- Detected declarations: `struct venc_config`, `struct venc_device`, `enum venc_videomode`, `function venc_write_reg`, `function venc_read_reg`, `function venc_write_config`, `function venc_reset`, `function venc_runtime_get`, `function venc_runtime_put`, `function venc_power_on`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
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.