drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h
Source file repositories/reference/linux-study-clean/drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h- Extension
.h- Size
- 3659 bytes
- Lines
- 163
- 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
media/media-device.hmedia/v4l2-async.hmedia/v4l2-dev.hmedia/v4l2-device.hmedia/v4l2-fwnode.hmedia/videobuf2-core.h
Detected Declarations
struct sun4i_csi_formatstruct sun4i_csienum csi_inputenum csi_output_rawenum csi_output_yuvenum csi_yuv_data_seqenum csi_subdev_pads
Annotated Snippet
struct sun4i_csi_format {
u32 mbus;
u32 fourcc;
enum csi_input input;
u32 output;
unsigned int num_planes;
u8 bpp[3];
unsigned int hsub;
unsigned int vsub;
};
const struct sun4i_csi_format *sun4i_csi_find_format(const u32 *fourcc,
const u32 *mbus);
struct sun4i_csi {
/* Device resources */
struct device *dev;
const struct sun4i_csi_traits *traits;
void __iomem *regs;
struct clk *bus_clk;
struct clk *isp_clk;
struct clk *ram_clk;
struct reset_control *rst;
struct vb2_v4l2_buffer *current_buf[CSI_MAX_BUFFER];
struct {
size_t size;
void *vaddr;
dma_addr_t paddr;
} scratch;
struct v4l2_mbus_config_parallel bus;
/* Main Device */
struct v4l2_device v4l;
struct media_device mdev;
struct video_device vdev;
struct media_pad vdev_pad;
struct v4l2_pix_format_mplane fmt;
/* Local subdev */
struct v4l2_subdev subdev;
struct media_pad subdev_pads[CSI_SUBDEV_PADS];
struct v4l2_mbus_framefmt subdev_fmt;
/* V4L2 Async variables */
struct v4l2_async_notifier notifier;
struct v4l2_subdev *src_subdev;
int src_pad;
/* V4L2 variables */
struct mutex lock;
/* Videobuf2 */
struct vb2_queue queue;
struct list_head buf_list;
spinlock_t qlock;
unsigned int sequence;
};
int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq);
void sun4i_csi_dma_unregister(struct sun4i_csi *csi);
int sun4i_csi_v4l2_register(struct sun4i_csi *csi);
#endif /* _SUN4I_CSI_H_ */
Annotation
- Immediate include surface: `media/media-device.h`, `media/v4l2-async.h`, `media/v4l2-dev.h`, `media/v4l2-device.h`, `media/v4l2-fwnode.h`, `media/videobuf2-core.h`.
- Detected declarations: `struct sun4i_csi_format`, `struct sun4i_csi`, `enum csi_input`, `enum csi_output_raw`, `enum csi_output_yuv`, `enum csi_yuv_data_seq`, `enum csi_subdev_pads`.
- 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.