drivers/media/platform/raspberrypi/rp1-cfe/pisp-fe.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/raspberrypi/rp1-cfe/pisp-fe.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/raspberrypi/rp1-cfe/pisp-fe.c- Extension
.c- Size
- 18280 bytes
- Lines
- 606
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitops.hlinux/delay.hlinux/moduleparam.hlinux/pm_runtime.hlinux/seq_file.hmedia/videobuf2-dma-contig.hcfe.hpisp-fe.hcfe-trace.h
Detected Declarations
struct pisp_fe_config_paramfunction pisp_fe_reg_readfunction pisp_fe_reg_writefunction pisp_fe_reg_write_relaxedfunction pisp_fe_regs_showfunction pisp_fe_config_writefunction pisp_fe_isrfunction pisp_fe_validate_outputfunction pisp_fe_validate_statsfunction pisp_fe_validate_configfunction memoryfunction pisp_fe_submit_jobfunction pisp_fe_startfunction pisp_fe_stopfunction pisp_fe_init_statefunction pisp_fe_pad_set_fmtfunction pisp_fe_link_validatefunction pisp_fe_initfunction pisp_fe_uninit
Annotated Snippet
struct pisp_fe_config_param {
u32 dirty_flags;
u32 dirty_flags_extra;
size_t offset;
size_t size;
};
static const struct pisp_fe_config_param pisp_fe_config_map[] = {
/* *_dirty_flag_extra types */
{ 0, PISP_FE_DIRTY_GLOBAL,
offsetof(struct pisp_fe_config, global),
sizeof(struct pisp_fe_global_config) },
{ 0, PISP_FE_DIRTY_FLOATING,
offsetof(struct pisp_fe_config, floating_stats),
sizeof(struct pisp_fe_floating_stats_config) },
{ 0, PISP_FE_DIRTY_OUTPUT_AXI,
offsetof(struct pisp_fe_config, output_axi),
sizeof(struct pisp_fe_output_axi_config) },
/* *_dirty_flag types */
{ PISP_FE_ENABLE_INPUT, 0,
offsetof(struct pisp_fe_config, input),
sizeof(struct pisp_fe_input_config) },
{ PISP_FE_ENABLE_DECOMPRESS, 0,
offsetof(struct pisp_fe_config, decompress),
sizeof(struct pisp_decompress_config) },
{ PISP_FE_ENABLE_DECOMPAND, 0,
offsetof(struct pisp_fe_config, decompand),
sizeof(struct pisp_fe_decompand_config) },
{ PISP_FE_ENABLE_BLA, 0,
offsetof(struct pisp_fe_config, bla),
sizeof(struct pisp_bla_config) },
{ PISP_FE_ENABLE_DPC, 0,
offsetof(struct pisp_fe_config, dpc),
sizeof(struct pisp_fe_dpc_config) },
{ PISP_FE_ENABLE_STATS_CROP, 0,
offsetof(struct pisp_fe_config, stats_crop),
sizeof(struct pisp_fe_crop_config) },
{ PISP_FE_ENABLE_BLC, 0,
offsetof(struct pisp_fe_config, blc),
sizeof(struct pisp_bla_config) },
{ PISP_FE_ENABLE_CDAF_STATS, 0,
offsetof(struct pisp_fe_config, cdaf_stats),
sizeof(struct pisp_fe_cdaf_stats_config) },
{ PISP_FE_ENABLE_AWB_STATS, 0,
offsetof(struct pisp_fe_config, awb_stats),
sizeof(struct pisp_fe_awb_stats_config) },
{ PISP_FE_ENABLE_RGBY, 0,
offsetof(struct pisp_fe_config, rgby),
sizeof(struct pisp_fe_rgby_config) },
{ PISP_FE_ENABLE_LSC, 0,
offsetof(struct pisp_fe_config, lsc),
sizeof(struct pisp_fe_lsc_config) },
{ PISP_FE_ENABLE_AGC_STATS, 0,
offsetof(struct pisp_fe_config, agc_stats),
sizeof(struct pisp_agc_statistics) },
{ PISP_FE_ENABLE_CROP0, 0,
offsetof(struct pisp_fe_config, ch[0].crop),
sizeof(struct pisp_fe_crop_config) },
{ PISP_FE_ENABLE_DOWNSCALE0, 0,
offsetof(struct pisp_fe_config, ch[0].downscale),
sizeof(struct pisp_fe_downscale_config) },
{ PISP_FE_ENABLE_COMPRESS0, 0,
offsetof(struct pisp_fe_config, ch[0].compress),
sizeof(struct pisp_compress_config) },
{ PISP_FE_ENABLE_OUTPUT0, 0,
offsetof(struct pisp_fe_config, ch[0].output),
sizeof(struct pisp_fe_output_config) },
{ PISP_FE_ENABLE_CROP1, 0,
offsetof(struct pisp_fe_config, ch[1].crop),
sizeof(struct pisp_fe_crop_config) },
{ PISP_FE_ENABLE_DOWNSCALE1, 0,
offsetof(struct pisp_fe_config, ch[1].downscale),
sizeof(struct pisp_fe_downscale_config) },
{ PISP_FE_ENABLE_COMPRESS1, 0,
offsetof(struct pisp_fe_config, ch[1].compress),
sizeof(struct pisp_compress_config) },
{ PISP_FE_ENABLE_OUTPUT1, 0,
offsetof(struct pisp_fe_config, ch[1].output),
sizeof(struct pisp_fe_output_config) },
};
#define pisp_fe_dbg(fe, fmt, arg...) dev_dbg((fe)->v4l2_dev->dev, fmt, ##arg)
#define pisp_fe_info(fe, fmt, arg...) dev_info((fe)->v4l2_dev->dev, fmt, ##arg)
#define pisp_fe_err(fe, fmt, arg...) dev_err((fe)->v4l2_dev->dev, fmt, ##arg)
static inline u32 pisp_fe_reg_read(struct pisp_fe_device *fe, u32 offset)
{
return readl(fe->base + offset);
}
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/delay.h`, `linux/moduleparam.h`, `linux/pm_runtime.h`, `linux/seq_file.h`, `media/videobuf2-dma-contig.h`, `cfe.h`, `pisp-fe.h`.
- Detected declarations: `struct pisp_fe_config_param`, `function pisp_fe_reg_read`, `function pisp_fe_reg_write`, `function pisp_fe_reg_write_relaxed`, `function pisp_fe_regs_show`, `function pisp_fe_config_write`, `function pisp_fe_isr`, `function pisp_fe_validate_output`, `function pisp_fe_validate_stats`, `function pisp_fe_validate_config`.
- Atlas domain: Driver Families / drivers/media.
- 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.