drivers/media/platform/ti/omap3isp/isppreview.c

Source file repositories/reference/linux-study-clean/drivers/media/platform/ti/omap3isp/isppreview.c

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/ti/omap3isp/isppreview.c
Extension
.c
Size
69889 bytes
Lines
2358
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct preview_update {
	void (*config)(struct isp_prev_device *, const struct prev_params *);
	void (*enable)(struct isp_prev_device *, bool);
	unsigned int param_offset;
	unsigned int param_size;
	unsigned int config_offset;
	bool skip;
};

/* Keep the array indexed by the OMAP3ISP_PREV_* bit number. */
static const struct preview_update update_attrs[] = {
	/* OMAP3ISP_PREV_LUMAENH */ {
		preview_config_luma_enhancement,
		preview_enable_luma_enhancement,
		offsetof(struct prev_params, luma),
		sizeof_field(struct prev_params, luma),
		offsetof(struct omap3isp_prev_update_config, luma),
	}, /* OMAP3ISP_PREV_INVALAW */ {
		NULL,
		preview_enable_invalaw,
	}, /* OMAP3ISP_PREV_HRZ_MED */ {
		preview_config_hmed,
		preview_enable_hmed,
		offsetof(struct prev_params, hmed),
		sizeof_field(struct prev_params, hmed),
		offsetof(struct omap3isp_prev_update_config, hmed),
	}, /* OMAP3ISP_PREV_CFA */ {
		preview_config_cfa,
		NULL,
		offsetof(struct prev_params, cfa),
		sizeof_field(struct prev_params, cfa),
		offsetof(struct omap3isp_prev_update_config, cfa),
	}, /* OMAP3ISP_PREV_CHROMA_SUPP */ {
		preview_config_chroma_suppression,
		preview_enable_chroma_suppression,
		offsetof(struct prev_params, csup),
		sizeof_field(struct prev_params, csup),
		offsetof(struct omap3isp_prev_update_config, csup),
	}, /* OMAP3ISP_PREV_WB */ {
		preview_config_whitebalance,
		NULL,
		offsetof(struct prev_params, wbal),
		sizeof_field(struct prev_params, wbal),
		offsetof(struct omap3isp_prev_update_config, wbal),
	}, /* OMAP3ISP_PREV_BLKADJ */ {
		preview_config_blkadj,
		NULL,
		offsetof(struct prev_params, blkadj),
		sizeof_field(struct prev_params, blkadj),
		offsetof(struct omap3isp_prev_update_config, blkadj),
	}, /* OMAP3ISP_PREV_RGB2RGB */ {
		preview_config_rgb_blending,
		NULL,
		offsetof(struct prev_params, rgb2rgb),
		sizeof_field(struct prev_params, rgb2rgb),
		offsetof(struct omap3isp_prev_update_config, rgb2rgb),
	}, /* OMAP3ISP_PREV_COLOR_CONV */ {
		preview_config_csc,
		NULL,
		offsetof(struct prev_params, csc),
		sizeof_field(struct prev_params, csc),
		offsetof(struct omap3isp_prev_update_config, csc),
	}, /* OMAP3ISP_PREV_YC_LIMIT */ {
		preview_config_yc_range,
		NULL,
		offsetof(struct prev_params, yclimit),
		sizeof_field(struct prev_params, yclimit),
		offsetof(struct omap3isp_prev_update_config, yclimit),
	}, /* OMAP3ISP_PREV_DEFECT_COR */ {
		preview_config_dcor,
		preview_enable_dcor,
		offsetof(struct prev_params, dcor),
		sizeof_field(struct prev_params, dcor),
		offsetof(struct omap3isp_prev_update_config, dcor),
	}, /* Previously OMAP3ISP_PREV_GAMMABYPASS, not used anymore */ {
		NULL,
		NULL,
	}, /* OMAP3ISP_PREV_DRK_FRM_CAPTURE */ {
		NULL,
		preview_enable_drkframe_capture,
	}, /* OMAP3ISP_PREV_DRK_FRM_SUBTRACT */ {
		NULL,
		preview_enable_drkframe,
	}, /* OMAP3ISP_PREV_LENS_SHADING */ {
		NULL,
		preview_enable_drkframe,
	}, /* OMAP3ISP_PREV_NF */ {
		preview_config_noisefilter,
		preview_enable_noisefilter,
		offsetof(struct prev_params, nf),

Annotation

Implementation Notes