drivers/media/platform/rockchip/rga/rga.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/rockchip/rga/rga.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/rockchip/rga/rga.h
Extension
.h
Size
3678 bytes
Lines
175
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 rga_frame {
	/* Crop */
	struct v4l2_rect crop;

	/* Image format */
	void *fmt;
	struct v4l2_pix_format_mplane pix;
};

struct rga_dma_desc {
	u32 addr;
};

struct rockchip_rga_version {
	u32 major;
	u32 minor;
};

struct rga_ctx {
	struct v4l2_fh fh;
	struct rockchip_rga *rga;
	struct rga_frame in;
	struct rga_frame out;
	struct v4l2_ctrl_handler ctrl_handler;

	void *cmdbuf_virt;
	dma_addr_t cmdbuf_phy;
	bool cmdbuf_dirty;

	int osequence;
	int csequence;

	/* Control values */
	u32 op;
	u32 hflip;
	u32 vflip;
	u32 rotate;
	u32 fill_color;
};

static inline struct rga_ctx *file_to_rga_ctx(struct file *filp)
{
	return container_of(file_to_v4l2_fh(filp), struct rga_ctx, fh);
}

struct rga_hw;

struct rockchip_rga {
	struct v4l2_device v4l2_dev;
	struct v4l2_m2m_dev *m2m_dev;
	struct video_device *vfd;

	struct device *dev;
	struct regmap *grf;
	void __iomem *regs;
	struct clk_bulk_data *clks;
	int num_clks;
	struct rockchip_rga_version version;

	/* vfd lock */
	struct mutex mutex;
	/* ctrl parm lock */
	spinlock_t ctrl_lock;

	struct rga_ctx *curr;

	const struct rga_hw *hw;
};

struct rga_addrs {
	dma_addr_t y_addr;
	dma_addr_t u_addr;
	dma_addr_t v_addr;
};

struct rga_vb_buffer {
	struct vb2_v4l2_buffer vb_buf;
	struct list_head queue;

	/* RGA MMU mapping for this buffer */
	struct rga_dma_desc *dma_desc;
	dma_addr_t dma_desc_pa;
	size_t n_desc;

	/* Plane DMA addresses after the MMU mapping of the buffer */
	struct rga_addrs dma_addrs;
};

static inline struct rga_vb_buffer *vb_to_rga(struct vb2_v4l2_buffer *vb)
{

Annotation

Implementation Notes