Release 4.15 drivers/media/platform/rockchip/rga/rga.h
  
  
  
/*
 * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
 * Author: Jacob Chen <jacob-chen@iotwrt.com>
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */
#ifndef __RGA_H__
#define __RGA_H__
#include <linux/platform_device.h>
#include <media/videobuf2-v4l2.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#define RGA_NAME "rockchip-rga"
struct rga_fmt {
	
u32 fourcc;
	
int depth;
	
u8 uv_factor;
	
u8 y_div;
	
u8 x_div;
	
u8 color_swap;
	
u8 hw_format;
};
struct rga_frame {
	/* Original dimensions */
	
u32 width;
	
u32 height;
	
u32 colorspace;
	/* Crop */
	
struct v4l2_rect crop;
	/* Image format */
	
struct rga_fmt *fmt;
	/* Variables that can calculated once and reused */
	
u32 stride;
	
u32 size;
};
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;
	/* Control values */
	
u32 op;
	
u32 hflip;
	
u32 vflip;
	
u32 rotate;
	
u32 fill_color;
};
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 *sclk;
	
struct clk *aclk;
	
struct clk *hclk;
	
struct rockchip_rga_version version;
	/* vfd lock */
	
struct mutex mutex;
	/* ctrl parm lock */
	
spinlock_t ctrl_lock;
	
wait_queue_head_t irq_queue;
	
struct rga_ctx *curr;
	
dma_addr_t cmdbuf_phy;
	
void *cmdbuf_virt;
	
unsigned int *src_mmu_pages;
	
unsigned int *dst_mmu_pages;
};
struct rga_frame *rga_get_frame(struct rga_ctx *ctx, enum v4l2_buf_type type);
/* RGA Buffers Manage */
extern const struct vb2_ops rga_qops;
void rga_buf_map(struct vb2_buffer *vb);
/* RGA Hardware */
static inline void rga_write(struct rockchip_rga *rga, u32 reg, u32 value)
{
	writel(value, rga->regs + reg);
}Contributors
| Person | Tokens | Prop | Commits | CommitProp | 
| Jacob Chen | 29 | 100.00% | 1 | 100.00% | 
| Total | 29 | 100.00% | 1 | 100.00% | 
;
static inline u32 rga_read(struct rockchip_rga *rga, u32 reg)
{
	return readl(rga->regs + reg);
}Contributors
| Person | Tokens | Prop | Commits | CommitProp | 
| Jacob Chen | 25 | 100.00% | 1 | 100.00% | 
| Total | 25 | 100.00% | 1 | 100.00% | 
;
static inline void rga_mod(struct rockchip_rga *rga, u32 reg, u32 val, u32 mask)
{
	u32 temp = rga_read(rga, reg) & ~(mask);
	temp |= val & mask;
	rga_write(rga, reg, temp);
}Contributors
| Person | Tokens | Prop | Commits | CommitProp | 
| Jacob Chen | 51 | 100.00% | 1 | 100.00% | 
| Total | 51 | 100.00% | 1 | 100.00% | 
;
void rga_hw_start(struct rockchip_rga *rga);
#endif
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp | 
| Jacob Chen | 373 | 100.00% | 1 | 100.00% | 
| Total | 373 | 100.00% | 1 | 100.00% | 
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.