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.
284 lines
11 KiB
284 lines
11 KiB
/* |
|
* iav_vin_ioctl.h |
|
* |
|
* History: |
|
* 2013/09/04 - [Cao Rongrong] Created file |
|
* |
|
* Copyright (c) 2016 Ambarella, Inc. |
|
* |
|
* This file and its contents ("Software") are protected by intellectual |
|
* property rights including, without limitation, U.S. and/or foreign |
|
* copyrights. This Software is also the confidential and proprietary |
|
* information of Ambarella, Inc. and its licensors. You may not use, reproduce, |
|
* disclose, distribute, modify, or otherwise prepare derivative works of this |
|
* Software or any portion thereof except pursuant to a signed license agreement |
|
* or nondisclosure agreement with Ambarella, Inc. or its authorized affiliates. |
|
* In the absence of such an agreement, you agree to promptly notify and return |
|
* this Software to Ambarella, Inc. |
|
* |
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, |
|
* MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
|
* IN NO EVENT SHALL AMBARELLA, INC. OR ITS AFFILIATES BE LIABLE FOR ANY DIRECT, |
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|
* LOSS OF USE, DATA, OR PROFITS; COMPUTER FAILURE OR MALFUNCTION; OR BUSINESS |
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
* POSSIBILITY OF SUCH DAMAGE. |
|
* |
|
*/ |
|
|
|
#ifndef __IAV_VIN_IOCTL_H__ |
|
#define __IAV_VIN_IOCTL_H__ |
|
|
|
/*! @file iav_vin_ioctl.h |
|
* @brief This file defines IAV Video Input Configuration IOCTL api. |
|
*/ |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/* ==========================================================================*/ |
|
#include <linux/ioctl.h> |
|
#include"iav_vin_common.h" |
|
|
|
/*! @addtogroup iav-ioctl-vin-helper |
|
* @{ |
|
*/ |
|
|
|
/* ==========================================================================*/ |
|
#define VINIOC_MAGIC 's' |
|
#define VIN_IO(nr) _IO(VINIOC_MAGIC, nr) |
|
#define VIN_IOR(nr, size) _IOR(VINIOC_MAGIC, nr, size) |
|
#define VIN_IOW(nr, size) _IOW(VINIOC_MAGIC, nr, size) |
|
#define VIN_IOWR(nr, size) _IOWR(VINIOC_MAGIC, nr, size) |
|
|
|
enum { |
|
IOC_VIN_DEVINFO = 0x01, /*!< 0x01 */ |
|
IOC_VIN_MODE = 0x03, /*!< 0x03 */ |
|
IOC_VIN_FPS = 0x04, /*!< 0x04 */ |
|
IOC_VIN_VIDEOINFO = 0x05, /*!< 0x05 */ |
|
IOC_VIN_SHUTTER = 0x06, /*!< 0x06 */ |
|
IOC_VIN_AGC = 0x07, /*!< 0x07 */ |
|
IOC_VIN_AGC_SHUTTER = 0x08, /*!< 0x08 */ |
|
IOC_VIN_DGAIN_RATIO = 0x09, /*!< 0x09 */ |
|
IOC_VIN_MIRROR = 0x0A, /*!< 0x0A */ |
|
IOC_VIN_EISINFO = 0x0B, /*!< 0x0B */ |
|
IOC_VIN_REG = 0x0C, /*!< 0x0C */ |
|
IOC_VIN_SHUTTER2ROW = 0x0D, /*!< 0x0D */ |
|
IOC_VIN_WDR_AGAIN_INDEX = 0x0E, /*!< 0x0E */ |
|
IOC_VIN_WDR_AGAIN_INDEX_GP = 0x0F, /*!< 0x0F */ |
|
IOC_VIN_WDR_DGAIN_INDEX_GP = 0x10, /*!< 0x10 */ |
|
IOC_VIN_WDR_SHUTTER_ROW_GP = 0x11, /*!< 0x11 */ |
|
IOC_VIN_WDR_SHUTTER2ROW = 0x12, /*!< 0x12 */ |
|
IOC_VIN_AAAINFO = 0x13, /*!< 0x13 */ |
|
IOC_VIN_CHIP_STATUS = 0x14, /*!< 0x14 */ |
|
IOC_VIN_WDR_ROW_GP = 0x15, /*!< 0x15 */ |
|
IOC_VIN_SET_AE_CHECK = 0x16, /*!< 0x16 */ |
|
IOC_VIN_PENDING_SHT_AGC = 0x17, /*!< 0x17 */ |
|
IOC_VIN_PENDING_SHT_AGC_SEQ = 0x18, /*!< 0x18 */ |
|
IOC_VIN_AAA_COMPENSATION = 0x19, /*!< 0x19 */ |
|
IOC_VIN_SET_STREAM_MODE = 0x1A, /*!< 0x1A */ |
|
IOC_VIN_SET_LOW_LIGHT_MODE = 0x1B, /*!< 0x1B */ |
|
IOC_VIN_SWITCH_VSRC_CTX = 0x1C, /*!< 0x1C */ |
|
IOC_VIN_LOCK_VSRC_CTX_FRAME_CNT = 0x1D, /*!< 0x1D */ |
|
}; |
|
/*! @} */ /* End of iav-ioctl-vin-helper */ |
|
|
|
/*! @addtogroup iav-ioctl-vin-api |
|
* @{ |
|
*/ |
|
/* ==========================================================================*/ |
|
/*! |
|
* This API can be used to retrieve the current active source identifier, the source type (sensor or YUV input), and the name of the source. |
|
*/ |
|
#define IAV_IOC_VIN_GET_DEVINFO VIN_IOR(IOC_VIN_DEVINFO, struct vindev_devinfo *) |
|
|
|
/*! |
|
* This API can be used to set the current active source mode. |
|
* For video mode, @b AMBA_VIDEO_MODE_AUTO will detect the input format, and will select the default video mode for the sensor. |
|
* Please refer to @link iav_common.h iav_common.h @endlink for more video modes. |
|
*/ |
|
#define IAV_IOC_VIN_SET_MODE VIN_IOW(IOC_VIN_MODE, struct vindev_mode *) |
|
|
|
/*! |
|
* This API can be used to get the current active source mode. |
|
* For video mode, @b AMBA_VIDEO_MODE_AUTO will detect the input format, and will select the default video mode for the sensor. |
|
* Please refer to @link iav_common.h iav_common.h @endlink for more video modes. |
|
*/ |
|
#define IAV_IOC_VIN_GET_MODE VIN_IOR(IOC_VIN_MODE, struct vindev_mode *) |
|
|
|
/*! |
|
* This API can be used to set the current active source video frame rate. This API is valid only when the source is RGB sensor input. |
|
* The frame rate (frame length) can be directly compared with shutter time. |
|
* Please refer to @link iav_common.h iav_common.h @endlink for more frame rate macro definitions. |
|
*/ |
|
#define IAV_IOC_VIN_SET_FPS VIN_IOW(IOC_VIN_FPS, struct vindev_fps *) |
|
|
|
/*! |
|
* This API can be used to get the current active source video frame rate. This API is valid only when the source is RGB sensor input. |
|
* The frame rate (frame length) can be directly compared with shutter time. |
|
* The parameter fps is expressed as frame length, or frame interval, in Q9 format, which is 512000000*time_in_sec. For example, |
|
* 30 fps can be expressed as 512000000 * 1/30 = 17066667 = 0x1046aab. |
|
* Please refer to @link iav_common.h iav_common.h @endlink for more frame rate macro definitions. |
|
*/ |
|
#define IAV_IOC_VIN_GET_FPS VIN_IOR(IOC_VIN_FPS, struct vindev_fps *) |
|
|
|
/*! |
|
* This API can be used to retrieve the current active source video information |
|
*/ |
|
#define IAV_IOC_VIN_GET_VIDEOINFO VIN_IOR(IOC_VIN_VIDEOINFO, struct vindev_video_info *) |
|
|
|
/*! |
|
* This API can be used to configure the current active sensor shutter time in Q9 format. |
|
* The shutter time can be directly compared with the frame rate (frame length). |
|
*/ |
|
#define IAV_IOC_VIN_SET_SHUTTER VIN_IOW(IOC_VIN_SHUTTER, struct vindev_shutter *) |
|
|
|
/*! |
|
* This API can be used to get the current active sensor shutter time in Q9 format. |
|
* The shutter time can be directly compared with the frame rate (frame length). |
|
*/ |
|
#define IAV_IOC_VIN_GET_SHUTTER VIN_IOR(IOC_VIN_SHUTTER, struct vindev_shutter *) |
|
|
|
/*! |
|
* This API can be used to configure the current active sensor AGC information. |
|
*/ |
|
#define IAV_IOC_VIN_SET_AGC VIN_IOW(IOC_VIN_AGC, struct vindev_agc *) |
|
|
|
/*! |
|
* This API can be used to get the current active sensor AGC information. |
|
*/ |
|
#define IAV_IOC_VIN_GET_AGC VIN_IOR(IOC_VIN_AGC, struct vindev_agc *) |
|
|
|
/*! |
|
* This API can be used to configure the readout mode of the sensor. The mirror pattern decides whether to |
|
* read the pixels from the default order or to reverse the order in row style or column style or both. |
|
* The need for sensor mirroring has been diminished somewhat by the CV22's encoding rotation capability. |
|
* Please refer to the @link IAV_IOC_SET_STREAM_CONFIG IAV_IOC_SET_STREAM_CONFIG(IAV_STMCFG_FORMAT) @endlink API |
|
*/ |
|
#define IAV_IOC_VIN_SET_MIRROR VIN_IOW(IOC_VIN_MIRROR, struct vindev_mirror *) |
|
|
|
/*! |
|
* This API can be used to get the read-out mode of the sensor. The mirror pattern decides whether to read |
|
* the pixels from the default order or to reverse the order in a row or column style or both. |
|
*/ |
|
#define IAV_IOC_VIN_GET_MIRROR VIN_IOR(IOC_VIN_MIRROR, struct vindev_mirror *) |
|
|
|
/*! |
|
* This API can be used to get the 3A algorithm required information from the sensor driver. |
|
*/ |
|
#define IAV_IOC_VIN_GET_AAAINFO VIN_IOR(IOC_VIN_AAAINFO, struct vindev_aaa_info *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor AGC index to the AGC Table. |
|
*/ |
|
#define IAV_IOC_VIN_SET_AGC_SHUTTER VIN_IOW(IOC_VIN_AGC_SHUTTER, struct vindev_agc_shutter *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor Dgain. |
|
*/ |
|
#define IAV_IOC_VIN_SET_DGAIN_RATIO VIN_IOW(IOC_VIN_DGAIN_RATIO, struct vindev_dgain_ratio *) |
|
|
|
/*! |
|
* This API can be used to get the current active sensor Dgain. |
|
*/ |
|
#define IAV_IOC_VIN_GET_DGAIN_RATIO VIN_IOR(IOC_VIN_DGAIN_RATIO, struct vindev_dgain_ratio *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor EIS information. |
|
*/ |
|
#define IAV_IOC_VIN_GET_EISINFO VIN_IOR(IOC_VIN_EISINFO, struct vindev_eisinfo *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor register. |
|
*/ |
|
#define IAV_IOC_VIN_SET_REG VIN_IOW(IOC_VIN_REG, struct vindev_reg *) |
|
|
|
/*! |
|
* This API can be used to get the current active sensor register. |
|
*/ |
|
#define IAV_IOC_VIN_GET_REG VIN_IOR(IOC_VIN_REG, struct vindev_reg *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor chip status. |
|
*/ |
|
#define IAV_IOC_VIN_GET_CHIP_STATUS VIN_IOR(IOC_VIN_CHIP_STATUS, struct vindev_chip_status *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor AE check flag. |
|
*/ |
|
#define IAV_IOC_VIN_SET_AE_CHECK VIN_IOW(IOC_VIN_SET_AE_CHECK, struct vindev_ae_check *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor shutter row. |
|
*/ |
|
#define IAV_IOC_VIN_SHUTTER2ROW VIN_IOWR(IOC_VIN_SHUTTER2ROW, struct vindev_shutter_row *) |
|
|
|
/*! |
|
* This API can be used to get the current active WDR sensor shutter row. |
|
*/ |
|
#define IAV_IOC_VIN_GET_WDR_SHUTTER_ROW_GP VIN_IOR(IOC_VIN_WDR_SHUTTER_ROW_GP, struct vindev_wdr_gp_s *) |
|
|
|
/*! |
|
* This API can be used to get the current active WDR sensor AGC index. |
|
*/ |
|
#define IAV_IOC_VIN_GET_WDR_AGAIN_INDEX_GP VIN_IOR(IOC_VIN_WDR_AGAIN_INDEX_GP, struct vindev_wdr_gp_s *) |
|
|
|
/*! |
|
* This API can be used to get the current active WDR sensor Dgain. |
|
*/ |
|
#define IAV_IOC_VIN_GET_WDR_DGAIN_INDEX_GP VIN_IOR(IOC_VIN_WDR_DGAIN_INDEX_GP, struct vindev_wdr_gp_s *) |
|
|
|
/*! |
|
* This API can be used to set the current active WDR sensor shutter row. |
|
*/ |
|
#define IAV_IOC_VIN_WDR_SHUTTER2ROW VIN_IOWR(IOC_VIN_WDR_SHUTTER2ROW, struct vindev_wdr_gp_s *) |
|
|
|
/*! |
|
* This API can be used to set the current active WDR sensor parameters. |
|
*/ |
|
#define IAV_IOC_VIN_SET_WDR_GP VIN_IOW(IOC_VIN_WDR_ROW_GP, struct vindev_wdr_gp_info *) |
|
|
|
|
|
#define IAV_IOC_VIN_SET_PENDING_SHT_AGC VIN_IOW(IOC_VIN_PENDING_SHT_AGC, struct vindev_wdr_gp_info *) |
|
#define IAV_IOC_VIN_SET_PENDING_SHT_AGC_SEQ VIN_IOW(IOC_VIN_PENDING_SHT_AGC_SEQ, struct vindev_sht_agc_seq *) |
|
|
|
/*! |
|
* This API can be used to set the current active AAA compensation. |
|
*/ |
|
#define IAV_IOC_VIN_AAA_COMPENSATION VIN_IOWR(IOC_VIN_AAA_COMPENSATION, struct vindev_wdr_gp_info *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor into test stream mode. |
|
*/ |
|
#define IAV_IOC_VIN_SET_STREAM_MODE VIN_IOW(IOC_VIN_SET_STREAM_MODE, struct vindev_stream_mode *) |
|
|
|
/*! |
|
* This API can be used to set the current active sensor low light mode. |
|
*/ |
|
#define IAV_IOC_VIN_SET_LOW_LIGHT_MODE VIN_IOW(IOC_VIN_SET_LOW_LIGHT_MODE, struct vindev_low_light_info *) |
|
|
|
/*! |
|
* This API can be used to switch contexts for sensors with dual contexts supported like AR0230. |
|
*/ |
|
#define IAV_IOC_VIN_SWITCH_VSRC_CTX VIN_IOW(IOC_VIN_SWITCH_VSRC_CTX, struct vindev_switch_vsrc_ctx *) |
|
|
|
/*! |
|
* This API can be used to bind internal frame count to each vsrc context for sensors with dual contexts supported like AR0230. |
|
*/ |
|
#define IAV_IOC_VIN_LOCK_VSRC_CTX_FRAME_CNT VIN_IOW(IOC_VIN_LOCK_VSRC_CTX_FRAME_CNT, struct vindev_lock_vsrc_ctx_frame_cnt *) |
|
|
|
/* ==========================================================================*/ |
|
/*! @} */ /* End of iav-ioctl-vin-api */ |
|
|
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif //__IAV_VIN_IOCTL_H__ |
|
|
|
|