1*4882a593Smuzhiyun /* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT) 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright (C) 2019 Rockchip Electronics Co., Ltd. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef _UAPI_RKCIF_CONFIG_H 7*4882a593Smuzhiyun #define _UAPI_RKCIF_CONFIG_H 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <linux/types.h> 10*4882a593Smuzhiyun #include <linux/v4l2-controls.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define RKCIF_API_VERSION KERNEL_VERSION(0, 1, 0xa) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define RKCIF_CMD_GET_CSI_MEMORY_MODE \ 15*4882a593Smuzhiyun _IOR('V', BASE_VIDIOC_PRIVATE + 0, int) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define RKCIF_CMD_SET_CSI_MEMORY_MODE \ 18*4882a593Smuzhiyun _IOW('V', BASE_VIDIOC_PRIVATE + 1, int) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define RKCIF_CMD_GET_SCALE_BLC \ 21*4882a593Smuzhiyun _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct bayer_blc) 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define RKCIF_CMD_SET_SCALE_BLC \ 24*4882a593Smuzhiyun _IOW('V', BASE_VIDIOC_PRIVATE + 3, struct bayer_blc) 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #define RKCIF_CMD_SET_FPS \ 27*4882a593Smuzhiyun _IOW('V', BASE_VIDIOC_PRIVATE + 4, struct rkcif_fps) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* cif memory mode 30*4882a593Smuzhiyun * 0: raw12/raw10/raw8 8bit memory compact 31*4882a593Smuzhiyun * 1: raw12/raw10 16bit memory one pixel 32*4882a593Smuzhiyun * low align for rv1126/rv1109/rk356x 33*4882a593Smuzhiyun * |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| 34*4882a593Smuzhiyun * | -| -| -| -|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| 35*4882a593Smuzhiyun * 2: raw12/raw10 16bit memory one pixel 36*4882a593Smuzhiyun * high align for rv1126/rv1109/rk356x 37*4882a593Smuzhiyun * |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| 38*4882a593Smuzhiyun * |11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| -| -| -| -| 39*4882a593Smuzhiyun * 40*4882a593Smuzhiyun * note: rv1109/rv1126/rk356x dvp only support uncompact mode, 41*4882a593Smuzhiyun * and can be set low align or high align 42*4882a593Smuzhiyun */ 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun enum cif_csi_lvds_memory { 45*4882a593Smuzhiyun CSI_LVDS_MEM_COMPACT = 0, 46*4882a593Smuzhiyun CSI_LVDS_MEM_WORD_LOW_ALIGN = 1, 47*4882a593Smuzhiyun CSI_LVDS_MEM_WORD_HIGH_ALIGN = 2, 48*4882a593Smuzhiyun }; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* black level for scale image 51*4882a593Smuzhiyun * The sequence of pattern00~03 is the same as the output of sensor bayer 52*4882a593Smuzhiyun */ 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun struct bayer_blc { 55*4882a593Smuzhiyun u8 pattern00; 56*4882a593Smuzhiyun u8 pattern01; 57*4882a593Smuzhiyun u8 pattern02; 58*4882a593Smuzhiyun u8 pattern03; 59*4882a593Smuzhiyun }; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun struct rkcif_fps { 62*4882a593Smuzhiyun int ch_num; 63*4882a593Smuzhiyun int fps; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun #endif 67