drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h
Extension
.h
Size
1629 bytes
Lines
70
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 sun6i_csi_bridge_format {
	u32	mbus_code;
	u8	input_format;
	u8	input_yuv_seq;
	u8	input_yuv_seq_invert;
};

struct sun6i_csi_bridge_source {
	struct v4l2_subdev		*subdev;
	struct v4l2_fwnode_endpoint	endpoint;
	bool				expected;
};

struct sun6i_csi_bridge_async_subdev {
	struct v4l2_async_connection	async_subdev;
	struct sun6i_csi_bridge_source	*source;
};

struct sun6i_csi_bridge {
	struct v4l2_subdev		subdev;
	struct v4l2_async_notifier	notifier;
	struct media_pad		pads[2];
	struct v4l2_mbus_framefmt	mbus_format;
	struct mutex			lock; /* Mbus format lock. */

	struct sun6i_csi_bridge_source	source_parallel;
	struct sun6i_csi_bridge_source	source_mipi_csi2;
};

/* Helpers */

void sun6i_csi_bridge_dimensions(struct sun6i_csi_device *csi_dev,
				 unsigned int *width, unsigned int *height);
void sun6i_csi_bridge_format(struct sun6i_csi_device *csi_dev,
			     u32 *mbus_code, u32 *field);

/* Format */

const struct sun6i_csi_bridge_format *
sun6i_csi_bridge_format_find(u32 mbus_code);

/* Bridge */

int sun6i_csi_bridge_setup(struct sun6i_csi_device *csi_dev);
void sun6i_csi_bridge_cleanup(struct sun6i_csi_device *csi_dev);

#endif

Annotation

Implementation Notes