You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
5.5 KiB
163 lines
5.5 KiB
13 years ago
|
/* Copyright(c) 2011 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.
|
||
|
*
|
||
|
* Alternatively, Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
#ifndef _S5P_FIMC_H_
|
||
|
#define _S5P_FIMC_H_
|
||
|
|
||
|
#include <linux/videodev2.h>
|
||
|
#include "SecBuffer.h"
|
||
|
/*
|
||
|
* G E N E R A L S
|
||
|
*
|
||
|
*/
|
||
|
#define MIN(x, y) ((x < y) ? x : y)
|
||
|
|
||
|
/*
|
||
|
* P I X E L F O R M A T G U I D E
|
||
|
*
|
||
|
* The 'x' means 'DO NOT CARE'
|
||
|
* The '*' means 'FIMC SPECIFIC'
|
||
|
* For some fimc formats, we couldn't find equivalent format in the V4L2 FOURCC.
|
||
|
*
|
||
|
* FIMC TYPE PLANES ORDER V4L2_PIX_FMT
|
||
|
* ---------------------------------------------------------
|
||
|
* RGB565 x x V4L2_PIX_FMT_RGB565
|
||
|
* RGB888 x x V4L2_PIX_FMT_RGB24
|
||
|
* YUV420 2 LSB_CBCR V4L2_PIX_FMT_NV12
|
||
|
* YUV420 2 LSB_CRCB V4L2_PIX_FMT_NV21
|
||
|
* YUV420 2 MSB_CBCR V4L2_PIX_FMT_NV21X*
|
||
|
* YUV420 2 MSB_CRCB V4L2_PIX_FMT_NV12X*
|
||
|
* YUV420 3 x V4L2_PIX_FMT_YUV420
|
||
|
* YUV422 1 YCBYCR V4L2_PIX_FMT_YUYV
|
||
|
* YUV422 1 YCRYCB V4L2_PIX_FMT_YVYU
|
||
|
* YUV422 1 CBYCRY V4L2_PIX_FMT_UYVY
|
||
|
* YUV422 1 CRYCBY V4L2_PIX_FMT_VYUY*
|
||
|
* YUV422 2 LSB_CBCR V4L2_PIX_FMT_NV16*
|
||
|
* YUV422 2 LSB_CRCB V4L2_PIX_FMT_NV61*
|
||
|
* YUV422 2 MSB_CBCR V4L2_PIX_FMT_NV16X*
|
||
|
* YUV422 2 MSB_CRCB V4L2_PIX_FMT_NV61X*
|
||
|
* YUV422 3 x V4L2_PIX_FMT_YUV422P
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* V 4 L 2 F I M C E X T E N S I O N S
|
||
|
*
|
||
|
*/
|
||
|
#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
|
||
|
|
||
|
/* FOURCC for FIMC specific */
|
||
|
#define V4L2_PIX_FMT_NV12X v4l2_fourcc('N', '1', '2', 'X')
|
||
|
#define V4L2_PIX_FMT_NV21X v4l2_fourcc('N', '2', '1', 'X')
|
||
|
#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
|
||
|
#define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
|
||
|
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
|
||
|
#define V4L2_PIX_FMT_NV16X v4l2_fourcc('N', '1', '6', 'X')
|
||
|
#define V4L2_PIX_FMT_NV61X v4l2_fourcc('N', '6', '1', 'X')
|
||
|
|
||
|
#define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */
|
||
|
|
||
|
/* CID extensions */
|
||
|
#define V4L2_CID_ROTATION (V4L2_CID_PRIVATE_BASE + 0)
|
||
|
#define V4L2_CID_OVLY_MODE (V4L2_CID_PRIVATE_BASE + 9)
|
||
|
#define V4L2_CID_DST_INFO (V4L2_CID_PRIVATE_BASE + 10)
|
||
|
#define V4L2_CID_GET_PHY_SRC_YADDR (V4L2_CID_PRIVATE_BASE + 12)
|
||
|
#define V4L2_CID_GET_PHY_SRC_CADDR (V4L2_CID_PRIVATE_BASE + 13)
|
||
|
#define V4L2_CID_RESERVED_MEM_BASE_ADDR (V4L2_CID_PRIVATE_BASE + 20)
|
||
|
#define V4L2_CID_FIMC_VERSION (V4L2_CID_PRIVATE_BASE + 21)
|
||
|
|
||
|
/*
|
||
|
* U S E R D E F I N E D T Y P E S
|
||
|
*
|
||
|
*/
|
||
|
#define FIMC1_RESERVED_SIZE 32768
|
||
|
|
||
|
enum fimc_overlay_mode {
|
||
|
FIMC_OVLY_NOT_FIXED = 0x0, /* Overlay mode isn't fixed. */
|
||
|
FIMC_OVLY_FIFO = 0x1, /* Non-destructive Overlay with FIFO */
|
||
|
FIMC_OVLY_DMA_AUTO = 0x2, /* Non-destructive Overlay with DMA */
|
||
|
FIMC_OVLY_DMA_MANUAL = 0x3, /* Non-destructive Overlay with DMA */
|
||
|
FIMC_OVLY_NONE_SINGLE_BUF = 0x4, /* Destructive Overlay with DMA single destination buffer */
|
||
|
FIMC_OVLY_NONE_MULTI_BUF = 0x5, /* Destructive Overlay with DMA multiple dstination buffer */
|
||
|
};
|
||
|
|
||
|
typedef unsigned int dma_addr_t;
|
||
|
|
||
|
struct fimc_buf {
|
||
|
dma_addr_t base[3];
|
||
|
size_t length[3];
|
||
|
};
|
||
|
|
||
|
struct fimc_buffer {
|
||
|
void *virt_addr;
|
||
|
void *phys_addr;
|
||
|
size_t length;
|
||
|
};
|
||
|
|
||
|
struct yuv_fmt_list {
|
||
|
const char *name;
|
||
|
const char *desc;
|
||
|
unsigned int fmt;
|
||
|
int bpp;
|
||
|
int planes;
|
||
|
};
|
||
|
|
||
|
struct img_offset {
|
||
|
int y_h;
|
||
|
int y_v;
|
||
|
int cb_h;
|
||
|
int cb_v;
|
||
|
int cr_h;
|
||
|
int cr_v;
|
||
|
};
|
||
|
|
||
|
//------------ STRUCT ---------------------------------------------------------//
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
unsigned int full_width; // Source Image Full Width (Virtual screen size)
|
||
|
unsigned int full_height; // Source Image Full Height (Virtual screen size)
|
||
|
unsigned int start_x; // Source Image Start width offset
|
||
|
unsigned int start_y; // Source Image Start height offset
|
||
|
unsigned int width; // Source Image Width
|
||
|
unsigned int height; // Source Image Height
|
||
|
unsigned int buf_addr_phy_rgb_y; // Base Address of the Source Image (RGB or Y): Physical Address
|
||
|
unsigned int buf_addr_phy_cb; // Base Address of the Source Image (CB Component) : Physical Address
|
||
|
unsigned int buf_addr_phy_cr; // Base Address of the Source Image (CR Component) : Physical Address
|
||
|
unsigned int color_space; // Color Space of the Source Image
|
||
|
} s5p_fimc_img_info;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
s5p_fimc_img_info src;
|
||
|
s5p_fimc_img_info dst;
|
||
|
} s5p_fimc_params_t;
|
||
|
|
||
|
typedef struct _s5p_fimc_t {
|
||
|
int dev_fd;
|
||
|
struct fimc_buffer out_buf;
|
||
|
|
||
|
s5p_fimc_params_t params;
|
||
|
|
||
|
int use_ext_out_mem;
|
||
|
unsigned int hw_ver;
|
||
|
}s5p_fimc_t;
|
||
|
|
||
|
#endif
|