drivers/media/platform/chips-media/coda/coda-common.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/chips-media/coda/coda-common.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/chips-media/coda/coda-common.c- Extension
.c- Size
- 92793 bytes
- Lines
- 3361
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- 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
linux/clk.hlinux/debugfs.hlinux/delay.hlinux/firmware.hlinux/gcd.hlinux/genalloc.hlinux/idr.hlinux/interrupt.hlinux/io.hlinux/irq.hlinux/kfifo.hlinux/module.hlinux/of.hlinux/of_platform.hlinux/platform_device.hlinux/pm_runtime.hlinux/slab.hlinux/videodev2.hlinux/ratelimit.hlinux/reset.hmedia/v4l2-ctrls.hmedia/v4l2-device.hmedia/v4l2-event.hmedia/v4l2-ioctl.hmedia/v4l2-mem2mem.hmedia/videobuf2-v4l2.hmedia/videobuf2-dma-contig.hmedia/videobuf2-vmalloc.hcoda.himx-vdoa.h
Detected Declarations
struct coda_video_deviceenum coda_platformfunction Copyrightfunction coda_writefunction coda_readfunction coda_write_basefunction coda_format_normalize_yuvfunction coda_get_max_dimensionsfunction ioctlfunction coda_enum_fmtfunction coda_g_fmtfunction coda_try_pixelformatfunction coda_try_fmt_vdoafunction coda_estimate_sizeimagefunction coda_try_fmtfunction coda_try_fmt_vid_capfunction coda_set_default_colorspacefunction coda_try_fmt_vid_outfunction coda_s_fmtfunction coda_s_fmt_vid_capfunction coda_s_fmt_vid_outfunction coda_reqbufsfunction coda_qbuffunction coda_dqbuffunction coda_m2m_buf_donefunction coda_g_selectionfunction coda_s_selectionfunction coda_wake_up_capture_queuefunction coda_encoder_cmdfunction coda_mark_last_metafunction coda_mark_last_dst_buffunction coda_decoder_cmdfunction coda_enum_framesizesfunction coda_enum_frameintervalsfunction coda_g_parmfunction coda_approximate_timeperframefunction coda_timeperframe_to_fratefunction coda_s_parmfunction coda_subscribe_eventfunction coda_device_runfunction coda_pic_run_workfunction coda_job_readyfunction coda_job_abortfunction set_default_paramsfunction coda_queue_setupfunction coda_buf_preparefunction coda_update_menu_ctrlfunction coda_update_profile_level_ctrls
Annotated Snippet
struct coda_video_device {
const char *name;
enum coda_inst_type type;
const struct coda_context_ops *ops;
bool direct;
u32 src_formats[CODA_MAX_FORMATS];
u32 dst_formats[CODA_MAX_FORMATS];
};
static const struct coda_video_device coda_bit_encoder = {
.name = "coda-video-encoder",
.type = CODA_INST_ENCODER,
.ops = &coda_bit_encode_ops,
.src_formats = {
V4L2_PIX_FMT_NV12,
V4L2_PIX_FMT_YUV420,
V4L2_PIX_FMT_YVU420,
},
.dst_formats = {
V4L2_PIX_FMT_H264,
V4L2_PIX_FMT_MPEG4,
},
};
static const struct coda_video_device coda_bit_jpeg_encoder = {
.name = "coda-jpeg-encoder",
.type = CODA_INST_ENCODER,
.ops = &coda_bit_encode_ops,
.src_formats = {
V4L2_PIX_FMT_NV12,
V4L2_PIX_FMT_YUV420,
V4L2_PIX_FMT_YVU420,
V4L2_PIX_FMT_YUV422P,
},
.dst_formats = {
V4L2_PIX_FMT_JPEG,
},
};
static const struct coda_video_device coda_bit_decoder = {
.name = "coda-video-decoder",
.type = CODA_INST_DECODER,
.ops = &coda_bit_decode_ops,
.src_formats = {
V4L2_PIX_FMT_H264,
V4L2_PIX_FMT_MPEG2,
V4L2_PIX_FMT_MPEG4,
},
.dst_formats = {
V4L2_PIX_FMT_NV12,
V4L2_PIX_FMT_YUV420,
V4L2_PIX_FMT_YVU420,
/*
* If V4L2_PIX_FMT_YUYV should be default,
* set_default_params() must be adjusted.
*/
V4L2_PIX_FMT_YUYV,
},
};
static const struct coda_video_device coda_bit_jpeg_decoder = {
.name = "coda-jpeg-decoder",
.type = CODA_INST_DECODER,
.ops = &coda_bit_decode_ops,
.src_formats = {
V4L2_PIX_FMT_JPEG,
},
.dst_formats = {
V4L2_PIX_FMT_NV12,
V4L2_PIX_FMT_YUV420,
V4L2_PIX_FMT_YVU420,
V4L2_PIX_FMT_YUV422P,
},
};
static const struct coda_video_device coda9_jpeg_encoder = {
.name = "coda-jpeg-encoder",
.type = CODA_INST_ENCODER,
.ops = &coda9_jpeg_encode_ops,
.direct = true,
.src_formats = {
V4L2_PIX_FMT_NV12,
V4L2_PIX_FMT_YUV420,
V4L2_PIX_FMT_YVU420,
V4L2_PIX_FMT_YUV422P,
V4L2_PIX_FMT_GREY,
},
.dst_formats = {
V4L2_PIX_FMT_JPEG,
},
Annotation
- Immediate include surface: `linux/clk.h`, `linux/debugfs.h`, `linux/delay.h`, `linux/firmware.h`, `linux/gcd.h`, `linux/genalloc.h`, `linux/idr.h`, `linux/interrupt.h`.
- Detected declarations: `struct coda_video_device`, `enum coda_platform`, `function Copyright`, `function coda_write`, `function coda_read`, `function coda_write_base`, `function coda_format_normalize_yuv`, `function coda_get_max_dimensions`, `function ioctl`, `function coda_enum_fmt`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- 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.