cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

g2d.h (1892B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Samsung S5P G2D - 2D Graphics Accelerator Driver
      4 *
      5 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
      6 * Kamil Debski, <k.debski@samsung.com>
      7 */
      8
      9#include <linux/platform_device.h>
     10#include <media/v4l2-device.h>
     11#include <media/v4l2-ctrls.h>
     12
     13#define G2D_NAME "s5p-g2d"
     14#define TYPE_G2D_3X 3
     15#define TYPE_G2D_4X 4
     16
     17struct g2d_dev {
     18	struct v4l2_device	v4l2_dev;
     19	struct v4l2_m2m_dev	*m2m_dev;
     20	struct video_device	*vfd;
     21	struct mutex		mutex;
     22	spinlock_t		ctrl_lock;
     23	atomic_t		num_inst;
     24	void __iomem		*regs;
     25	struct clk		*clk;
     26	struct clk		*gate;
     27	struct g2d_ctx		*curr;
     28	struct g2d_variant	*variant;
     29	int irq;
     30};
     31
     32struct g2d_frame {
     33	/* Original dimensions */
     34	u32	width;
     35	u32	height;
     36	/* Crop size */
     37	u32	c_width;
     38	u32	c_height;
     39	/* Offset */
     40	u32	o_width;
     41	u32	o_height;
     42	/* Image format */
     43	struct g2d_fmt *fmt;
     44	/* Variables that can calculated once and reused */
     45	u32	stride;
     46	u32	bottom;
     47	u32	right;
     48	u32	size;
     49};
     50
     51struct g2d_ctx {
     52	struct v4l2_fh fh;
     53	struct g2d_dev		*dev;
     54	struct g2d_frame	in;
     55	struct g2d_frame	out;
     56	struct v4l2_ctrl	*ctrl_hflip;
     57	struct v4l2_ctrl	*ctrl_vflip;
     58	struct v4l2_ctrl_handler ctrl_handler;
     59	u32 rop;
     60	u32 flip;
     61};
     62
     63struct g2d_fmt {
     64	u32	fourcc;
     65	int	depth;
     66	u32	hw;
     67};
     68
     69struct g2d_variant {
     70	unsigned short hw_rev;
     71};
     72
     73void g2d_reset(struct g2d_dev *d);
     74void g2d_set_src_size(struct g2d_dev *d, struct g2d_frame *f);
     75void g2d_set_src_addr(struct g2d_dev *d, dma_addr_t a);
     76void g2d_set_dst_size(struct g2d_dev *d, struct g2d_frame *f);
     77void g2d_set_dst_addr(struct g2d_dev *d, dma_addr_t a);
     78void g2d_start(struct g2d_dev *d);
     79void g2d_clear_int(struct g2d_dev *d);
     80void g2d_set_rop4(struct g2d_dev *d, u32 r);
     81void g2d_set_flip(struct g2d_dev *d, u32 r);
     82void g2d_set_v41_stretch(struct g2d_dev *d,
     83			struct g2d_frame *src, struct g2d_frame *dst);
     84void g2d_set_cmd(struct g2d_dev *d, u32 c);