drivers/media/platform/samsung/exynos4-is/fimc-isp.h
Source file repositories/reference/linux-study-clean/drivers/media/platform/samsung/exynos4-is/fimc-isp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/samsung/exynos4-is/fimc-isp.h- Extension
.h- Size
- 5601 bytes
- Lines
- 198
- 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/io.hlinux/platform_device.hlinux/sched.hlinux/spinlock.hlinux/types.hlinux/videodev2.hmedia/media-entity.hmedia/videobuf2-v4l2.hmedia/v4l2-device.hmedia/v4l2-mediabus.hmedia/drv-intf/exynos-fimc.h
Detected Declarations
struct fimc_isp_framestruct fimc_isp_ctrlsstruct isp_video_bufstruct fimc_is_videostruct fimc_ispstruct fimc_is
Annotated Snippet
struct fimc_isp_frame {
u16 width;
u16 height;
struct v4l2_rect rect;
};
struct fimc_isp_ctrls {
struct v4l2_ctrl_handler handler;
/* Auto white balance */
struct v4l2_ctrl *auto_wb;
/* Auto ISO control cluster */
struct {
struct v4l2_ctrl *auto_iso;
struct v4l2_ctrl *iso;
};
/* Adjust - contrast */
struct v4l2_ctrl *contrast;
/* Adjust - saturation */
struct v4l2_ctrl *saturation;
/* Adjust - sharpness */
struct v4l2_ctrl *sharpness;
/* Adjust - brightness */
struct v4l2_ctrl *brightness;
/* Adjust - hue */
struct v4l2_ctrl *hue;
/* Auto/manual exposure */
struct v4l2_ctrl *auto_exp;
/* Manual exposure value */
struct v4l2_ctrl *exposure;
/* AE/AWB lock/unlock */
struct v4l2_ctrl *aewb_lock;
/* Exposure metering mode */
struct v4l2_ctrl *exp_metering;
/* AFC */
struct v4l2_ctrl *afc;
/* ISP image effect */
struct v4l2_ctrl *colorfx;
};
struct isp_video_buf {
struct vb2_v4l2_buffer vb;
dma_addr_t dma_addr[FIMC_ISP_MAX_PLANES];
unsigned int index;
};
#define to_isp_video_buf(_b) container_of(_b, struct isp_video_buf, vb)
#define FIMC_ISP_MAX_BUFS 4
/**
* struct fimc_is_video - fimc-is video device structure
* @ve: video_device structure and media pipeline
* @type: video device type (CAPTURE/OUTPUT)
* @pad: video device media (sink) pad
* @pending_buf_q: pending buffers queue head
* @active_buf_q: a queue head of buffers scheduled in hardware
* @vb_queue: vb2 buffer queue
* @reqbufs_count: the number of buffers requested in REQBUFS ioctl
* @buf_count: number of video buffers scheduled in hardware
* @buf_mask: bitmask of the queued video buffer indices
* @frame_count: counter of frames dequeued to user space
* @streaming: is streaming in progress?
* @buffers: buffer info
* @format: current fimc pixel format
* @pixfmt: current pixel format
*/
struct fimc_is_video {
struct exynos_video_entity ve;
enum v4l2_buf_type type;
struct media_pad pad;
struct list_head pending_buf_q;
struct list_head active_buf_q;
struct vb2_queue vb_queue;
unsigned int reqbufs_count;
unsigned int buf_count;
unsigned int buf_mask;
unsigned int frame_count;
int streaming;
struct isp_video_buf *buffers[FIMC_ISP_MAX_BUFS];
const struct fimc_fmt *format;
struct v4l2_pix_format_mplane pixfmt;
};
/* struct fimc_isp:state bit definitions */
#define ST_ISP_VID_CAP_BUF_PREP 0
#define ST_ISP_VID_CAP_STREAMING 1
/**
Annotation
- Immediate include surface: `linux/io.h`, `linux/platform_device.h`, `linux/sched.h`, `linux/spinlock.h`, `linux/types.h`, `linux/videodev2.h`, `media/media-entity.h`, `media/videobuf2-v4l2.h`.
- Detected declarations: `struct fimc_isp_frame`, `struct fimc_isp_ctrls`, `struct isp_video_buf`, `struct fimc_is_video`, `struct fimc_isp`, `struct fimc_is`.
- 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.