drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h
Extension
.h
Size
3943 bytes
Lines
132
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 rzv2h_ivc_format {
	u32 fourcc;
	/*
	 * The CRU packed pixel formats are bayer-order agnostic, so each could
	 * support any one of the 4 possible media bus formats.
	 */
	u32 mbus_codes[4];
	u8 dtype;
};

struct rzv2h_ivc {
	struct device *dev;
	void __iomem *base;
	struct clk_bulk_data clks[RZV2H_IVC_NUM_HW_RESOURCES];
	struct reset_control_bulk_data resets[RZV2H_IVC_NUM_HW_RESOURCES];
	int irqnum;
	u8 vvalid_ifp;

	struct {
		struct video_device dev;
		struct vb2_queue vb2q;
		struct media_pad pad;
	} vdev;

	struct {
		struct v4l2_subdev sd;
		struct media_pad pads[RZV2H_IVC_NUM_SUBDEV_PADS];
	} subdev;

	struct {
		/* Spinlock to guard buffer queue */
		spinlock_t lock;
		struct list_head queue;
		struct rzv2h_ivc_buf *curr;
		unsigned int sequence;
	} buffers;

	struct {
		struct v4l2_pix_format_mplane pix;
		const struct rzv2h_ivc_format *fmt;
	} format;

	/* Mutex to provide to vb2 */
	struct mutex lock;
	/* Lock to protect the interrupt counter */
	spinlock_t spinlock;
};

int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct v4l2_device *v4l2_dev);
void rzv2h_deinit_video_dev_and_queue(struct rzv2h_ivc *ivc);
void rzv2h_ivc_buffer_done(struct rzv2h_ivc *ivc);
int rzv2h_ivc_initialise_subdevice(struct rzv2h_ivc *ivc);
void rzv2h_ivc_deinit_subdevice(struct rzv2h_ivc *ivc);
void rzv2h_ivc_write(struct rzv2h_ivc *ivc, u32 addr, u32 val);
void rzv2h_ivc_update_bits(struct rzv2h_ivc *ivc, unsigned int addr,
			   u32 mask, u32 val);
void rzv2h_ivc_transfer_buffer(struct rzv2h_ivc *ivc);

Annotation

Implementation Notes