159 lines
3.8 KiB
C
Executable File
159 lines
3.8 KiB
C
Executable File
/*
|
|
* Samsung Exynos SoC series VIPx driver
|
|
*
|
|
* Copyright (c) 2018 Samsung Electronics Co., Ltd
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __TEMP_VISION_FOR_LINUX_H__
|
|
#define __TEMP_VISION_FOR_LINUX_H__
|
|
|
|
#define MAX_NUM_OF_USER_PARAMS (180)
|
|
|
|
enum vs4l_graph_flag {
|
|
VS4L_GRAPH_FLAG_FIXED,
|
|
VS4L_GRAPH_FLAG_SHARED_AMONG_SUBCHAINS,
|
|
VS4L_GRAPH_FLAG_SHARING_AMONG_SUBCHAINS_PREFERRED,
|
|
VS4L_GRAPH_FLAG_SHARED_AMONG_TASKS,
|
|
VS4L_GRAPH_FLAG_SHARING_AMONG_TASKS_PREFERRED,
|
|
VS4L_GRAPH_FLAG_DSBL_LATENCY_BALANCING,
|
|
VS4L_STATIC_ALLOC_LARGE_MPRB_INSTEAD_SMALL_FLAG,
|
|
VS4L_STATIC_ALLOC_PU_INSTANCE_LSB,
|
|
VS4L_GRAPH_FLAG_PRIMITIVE,
|
|
VS4L_GRAPH_FLAG_EXCLUSIVE,
|
|
VS4L_GRAPH_FLAG_PERIODIC,
|
|
VS4L_GRAPH_FLAG_ROUTING,
|
|
VS4L_GRAPH_FLAG_BYPASS,
|
|
VS4L_GRAPH_FLAG_END
|
|
};
|
|
|
|
struct vs4l_graph {
|
|
__u32 id;
|
|
__u32 priority;
|
|
__u32 time; /* in millisecond */
|
|
__u32 flags;
|
|
__u32 size;
|
|
unsigned long addr;
|
|
};
|
|
|
|
struct vs4l_format {
|
|
__u32 target;
|
|
__u32 format;
|
|
__u32 plane;
|
|
__u32 width;
|
|
__u32 height;
|
|
};
|
|
|
|
struct vs4l_format_list {
|
|
__u32 direction;
|
|
__u32 count;
|
|
struct vs4l_format *formats;
|
|
};
|
|
|
|
struct vs4l_param {
|
|
__u32 target;
|
|
unsigned long addr;
|
|
__u32 offset;
|
|
__u32 size;
|
|
};
|
|
|
|
struct vs4l_param_list {
|
|
__u32 count;
|
|
struct vs4l_param *params;
|
|
};
|
|
|
|
struct vs4l_ctrl {
|
|
__u32 ctrl;
|
|
__u32 value;
|
|
};
|
|
|
|
struct vs4l_roi {
|
|
__u32 x;
|
|
__u32 y;
|
|
__u32 w;
|
|
__u32 h;
|
|
};
|
|
|
|
struct vs4l_buffer {
|
|
struct vs4l_roi roi;
|
|
union {
|
|
unsigned long userptr;
|
|
__s32 fd;
|
|
} m;
|
|
unsigned long reserved;
|
|
};
|
|
|
|
enum vs4l_buffer_type {
|
|
VS4L_BUFFER_LIST,
|
|
VS4L_BUFFER_ROI,
|
|
VS4L_BUFFER_PYRAMID
|
|
};
|
|
|
|
enum vs4l_memory {
|
|
VS4L_MEMORY_USERPTR = 1,
|
|
VS4L_MEMORY_VIRTPTR,
|
|
VS4L_MEMORY_DMABUF
|
|
};
|
|
|
|
struct vs4l_container {
|
|
__u32 type;
|
|
__u32 target;
|
|
__u32 memory;
|
|
__u32 reserved[4];
|
|
__u32 count;
|
|
struct vs4l_buffer *buffers;
|
|
};
|
|
|
|
enum vs4l_direction {
|
|
VS4L_DIRECTION_IN = 1,
|
|
VS4L_DIRECTION_OT
|
|
};
|
|
|
|
enum vs4l_cl_flag {
|
|
VS4L_CL_FLAG_TIMESTAMP,
|
|
VS4L_CL_FLAG_PREPARE = 8,
|
|
VS4L_CL_FLAG_INVALID,
|
|
VS4L_CL_FLAG_DONE
|
|
};
|
|
|
|
struct vs4l_container_list {
|
|
__u32 direction;
|
|
__u32 id;
|
|
__u32 index;
|
|
__u32 flags;
|
|
struct timeval timestamp[6];
|
|
__u32 count;
|
|
__u32 user_params[MAX_NUM_OF_USER_PARAMS];
|
|
struct vs4l_container *containers;
|
|
};
|
|
|
|
#define VS4L_DF_IMAGE(a, b, c, d) ((a) | (b << 8) | (c << 16) | (d << 24))
|
|
#define VS4L_DF_IMAGE_RGB VS4L_DF_IMAGE('R', 'G', 'B', '2')
|
|
#define VS4L_DF_IMAGE_RGBX VS4L_DF_IMAGE('R', 'G', 'B', 'A')
|
|
#define VS4L_DF_IMAGE_NV12 VS4L_DF_IMAGE('N', 'V', '1', '2')
|
|
#define VS4L_DF_IMAGE_NV21 VS4L_DF_IMAGE('N', 'V', '2', '1')
|
|
#define VS4L_DF_IMAGE_YV12 VS4L_DF_IMAGE('Y', 'V', '1', '2')
|
|
#define VS4L_DF_IMAGE_I420 VS4L_DF_IMAGE('I', '4', '2', '0')
|
|
#define VS4L_DF_IMAGE_I422 VS4L_DF_IMAGE('I', '4', '2', '2')
|
|
#define VS4L_DF_IMAGE_YUYV VS4L_DF_IMAGE('Y', 'U', 'Y', 'V')
|
|
#define VS4L_DF_IMAGE_YUV4 VS4L_DF_IMAGE('Y', 'U', 'V', '4')
|
|
#define VS4L_DF_IMAGE_U8 VS4L_DF_IMAGE('U', '0', '0', '8')
|
|
#define VS4L_DF_IMAGE_U16 VS4L_DF_IMAGE('U', '0', '1', '6')
|
|
#define VS4L_DF_IMAGE_U32 VS4L_DF_IMAGE('U', '0', '3', '2')
|
|
#define VS4L_DF_IMAGE_S16 VS4L_DF_IMAGE('S', '0', '1', '6')
|
|
#define VS4L_DF_IMAGE_S32 VS4L_DF_IMAGE('S', '0', '3', '2')
|
|
|
|
#define VS4L_VERTEXIOC_S_GRAPH _IOW('V', 0, struct vs4l_graph)
|
|
#define VS4L_VERTEXIOC_S_FORMAT _IOW('V', 1, struct vs4l_format_list)
|
|
#define VS4L_VERTEXIOC_S_PARAM _IOW('V', 2, struct vs4l_param_list)
|
|
#define VS4L_VERTEXIOC_S_CTRL _IOW('V', 3, struct vs4l_ctrl)
|
|
#define VS4L_VERTEXIOC_STREAM_ON _IO('V', 4)
|
|
#define VS4L_VERTEXIOC_STREAM_OFF _IO('V', 5)
|
|
#define VS4L_VERTEXIOC_QBUF _IOW('V', 6, struct vs4l_container_list)
|
|
#define VS4L_VERTEXIOC_DQBUF _IOW('V', 7, struct vs4l_container_list)
|
|
|
|
#endif
|