drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h
Extension
.h
Size
1910 bytes
Lines
91
Domain
Driver Families
Bucket
drivers/staging
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_isp_buffer {
	struct vb2_v4l2_buffer	v4l2_buffer;
	struct list_head	list;
};

struct sun6i_isp_v4l2 {
	struct v4l2_device		v4l2_dev;
	struct media_device		media_dev;
};

struct sun6i_isp_table {
	void		*data;
	dma_addr_t	address;
	unsigned int	size;
};

struct sun6i_isp_tables {
	struct sun6i_isp_table	load;
	struct sun6i_isp_table	save;

	struct sun6i_isp_table	lut;
	struct sun6i_isp_table	drc;
	struct sun6i_isp_table	stats;
};

struct sun6i_isp_device {
	struct device			*dev;

	struct sun6i_isp_tables		tables;

	struct sun6i_isp_v4l2		v4l2;
	struct sun6i_isp_proc		proc;
	struct sun6i_isp_capture	capture;
	struct sun6i_isp_params		params;

	struct regmap			*regmap;
	struct clk			*clock_mod;
	struct clk			*clock_ram;
	struct reset_control		*reset;

	spinlock_t			state_lock; /* State helpers lock. */
};

struct sun6i_isp_variant {
	unsigned int	table_load_save_size;
	unsigned int	table_lut_size;
	unsigned int	table_drc_size;
	unsigned int	table_stats_size;
};

/* Helpers */

u32 sun6i_isp_load_read(struct sun6i_isp_device *isp_dev, u32 offset);
void sun6i_isp_load_write(struct sun6i_isp_device *isp_dev, u32 offset,
			  u32 value);
u32 sun6i_isp_address_value(dma_addr_t address);

/* State */

void sun6i_isp_state_update(struct sun6i_isp_device *isp_dev, bool ready_hold);

/* Tables */

void sun6i_isp_tables_configure(struct sun6i_isp_device *isp_dev);

#endif

Annotation

Implementation Notes