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

vpif_capture.h (2911B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Copyright (C) 2009 Texas Instruments Inc
      4 */
      5
      6#ifndef VPIF_CAPTURE_H
      7#define VPIF_CAPTURE_H
      8
      9/* Header files */
     10#include <media/videobuf2-dma-contig.h>
     11#include <media/v4l2-device.h>
     12
     13#include "vpif.h"
     14
     15/* Macros */
     16#define VPIF_CAPTURE_VERSION		"0.0.2"
     17
     18#define VPIF_VALID_FIELD(field)		(((V4L2_FIELD_ANY == field) || \
     19	(V4L2_FIELD_NONE == field)) || \
     20	(((V4L2_FIELD_INTERLACED == field) || \
     21	(V4L2_FIELD_SEQ_TB == field)) || \
     22	(V4L2_FIELD_SEQ_BT == field)))
     23
     24#define VPIF_CAPTURE_MAX_DEVICES	2
     25#define VPIF_VIDEO_INDEX		0
     26#define VPIF_NUMBER_OF_OBJECTS		1
     27
     28/* Enumerated data type to give id to each device per channel */
     29enum vpif_channel_id {
     30	VPIF_CHANNEL0_VIDEO = 0,
     31	VPIF_CHANNEL1_VIDEO,
     32};
     33
     34struct video_obj {
     35	enum v4l2_field buf_field;
     36	/* Currently selected or default standard */
     37	v4l2_std_id stdid;
     38	struct v4l2_dv_timings dv_timings;
     39};
     40
     41struct vpif_cap_buffer {
     42	struct vb2_v4l2_buffer vb;
     43	struct list_head list;
     44};
     45
     46struct common_obj {
     47	/* Pointer pointing to current v4l2_buffer */
     48	struct vpif_cap_buffer *cur_frm;
     49	/* Pointer pointing to current v4l2_buffer */
     50	struct vpif_cap_buffer *next_frm;
     51	/* Used to store pixel format */
     52	struct v4l2_format fmt;
     53	/* Buffer queue used in video-buf */
     54	struct vb2_queue buffer_queue;
     55	/* Queue of filled frames */
     56	struct list_head dma_queue;
     57	/* Protects the dma_queue field */
     58	spinlock_t irqlock;
     59	/* lock used to access this structure */
     60	struct mutex lock;
     61	/* Function pointer to set the addresses */
     62	void (*set_addr) (unsigned long, unsigned long, unsigned long,
     63			  unsigned long);
     64	/* offset where Y top starts from the starting of the buffer */
     65	u32 ytop_off;
     66	/* offset where Y bottom starts from the starting of the buffer */
     67	u32 ybtm_off;
     68	/* offset where C top starts from the starting of the buffer */
     69	u32 ctop_off;
     70	/* offset where C bottom starts from the starting of the buffer */
     71	u32 cbtm_off;
     72	/* Indicates width of the image data */
     73	u32 width;
     74	/* Indicates height of the image data */
     75	u32 height;
     76};
     77
     78struct channel_obj {
     79	/* Identifies video device for this channel */
     80	struct video_device video_dev;
     81	/* Indicates id of the field which is being displayed */
     82	u32 field_id;
     83	/* flag to indicate whether decoder is initialized */
     84	u8 initialized;
     85	/* Identifies channel */
     86	enum vpif_channel_id channel_id;
     87	/* Current input */
     88	u32 input_idx;
     89	/* subdev corresponding to the current input, may be NULL */
     90	struct v4l2_subdev *sd;
     91	/* vpif configuration params */
     92	struct vpif_params vpifparams;
     93	/* common object array */
     94	struct common_obj common[VPIF_NUMBER_OF_OBJECTS];
     95	/* video object */
     96	struct video_obj video;
     97};
     98
     99struct vpif_device {
    100	struct v4l2_device v4l2_dev;
    101	struct channel_obj *dev[VPIF_CAPTURE_NUM_CHANNELS];
    102	struct v4l2_subdev **sd;
    103	struct v4l2_async_notifier notifier;
    104	struct vpif_capture_config *config;
    105};
    106
    107#endif				/* VPIF_CAPTURE_H */