14e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#ifndef __UAPI_MSMB_ISP__ 24e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define __UAPI_MSMB_ISP__ 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/videodev2.h> 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_PLANES_PER_STREAM 3 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_NUM_STREAM 7 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_47 47 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_46 46 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_44 44 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_40 40 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_32 32 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_NATIVE_BUF_BIT (0x10000 << 0) 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP0_BIT (0x10000 << 1) 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP1_BIT (0x10000 << 2) 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_META_CHANNEL_BIT (0x10000 << 3) 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_SCRATCH_BUF_BIT (0x10000 << 4) 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_OFFLINE_STATS_BIT (0x10000 << 5) 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_STATS_STREAM_BIT 0x80000000 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd_list; 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum ISP_START_PIXEL_PATTERN { 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_BAYER_RGRGRG, 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_BAYER_GRGRGR, 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_BAYER_BGBGBG, 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_BAYER_GBGBGB, 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_YUV_YCbYCr, 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_YUV_YCrYCb, 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_YUV_CbYCrY, 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_YUV_CrYCbY, 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_PIX_PATTERN_MAX 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_plane_fmt { 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin Y_PLANE, 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CB_PLANE, 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CR_PLANE, 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CRCB_PLANE, 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CBCR_PLANE, 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_PLANE_FMT_MAX 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_input_src { 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_PIX_0, 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_RAW_0, 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_RAW_1, 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_RAW_2, 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_SRC_MAX, 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_axi_stream_src { 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PIX_ENCODER, 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PIX_VIEWFINDER, 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PIX_VIDEO, 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMIF_RAW, 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin IDEAL_RAW, 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin RDI_INTF_0, 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin RDI_INTF_1, 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin RDI_INTF_2, 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_AXI_SRC_MAX 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_frame_skip_pattern { 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin NO_SKIP, 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_2FRAME, 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_3FRAME, 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_4FRAME, 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_5FRAME, 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_6FRAME, 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_7FRAME, 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_8FRAME, 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_16FRAME, 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EVERY_32FRAME, 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SKIP_ALL, 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SKIP_RANGE, 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MAX_SKIP, 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Define an unused period. When this period is set it means that the stream is 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * stopped(i.e the pattern is 0). We don't track the current pattern, just the 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * period defines what the pattern is, if period is this then pattern is 0 else 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * pattern is 1 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_VFE_STREAM_STOP_PERIOD 15 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_stats_type { 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_AEC, /* legacy based AEC */ 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_AF, /* legacy based AF */ 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_AWB, /* legacy based AWB */ 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_RS, /* legacy based RS */ 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_CS, /* legacy based CS */ 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_IHIST, /* legacy based HIST */ 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_SKIN, /* legacy based SKIN */ 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_BG, /* Bayer Grids */ 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_BF, /* Bayer Focus */ 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_BE, /* Bayer Exposure*/ 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_BHIST, /* Bayer Hist */ 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_BF_SCALE, /* Bayer Focus scale */ 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_HDR_BE, /* HDR Bayer Exposure */ 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_HDR_BHIST, /* HDR Bayer Hist */ 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_AEC_BG, /* AEC BG */ 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ISP_STATS_MAX /* MAX */ 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @stats_type_mask: Stats type mask (enum msm_isp_stats_type). 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @stream_src_mask: Stream src mask (enum msm_vfe_axi_stream_src) 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @skip_mode: skip pattern, if skip mode is range only then min/max is used 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_frame_id: minimum frame id (valid only if skip_mode = RANGE) 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_frame_id: maximum frame id (valid only if skip_mode = RANGE) 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin*/ 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_sw_framskip { 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stats_type_mask; 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_src_mask; 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_frame_skip_pattern skip_mode; 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t min_frame_id; 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t max_frame_id; 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_testgen_color_pattern { 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin COLOR_BAR_8_COLOR, 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_WHITE, 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_YELLOW, 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_CYAN, 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_GREEN, 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_MAGENTA, 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_RED, 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_BLUE, 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UNICOLOR_BLACK, 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MAX_COLOR, 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_camif_input { 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMIF_DISABLED, 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMIF_PAD_REG_INPUT, 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMIF_MIDDI_INPUT, 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMIF_MIPI_INPUT, 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_fetch_engine_cfg { 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t input_format; 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_width; 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_height; 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t fetch_width; 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t fetch_height; 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t x_offset; 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t y_offset; 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_stride; 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 154d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinenum msm_vfe_camif_output_format { 155d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin CAMIF_QCOM_RAW, 156d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin CAMIF_MIPI_RAW, 157d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin CAMIF_PLAIN_8, 158d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin CAMIF_PLAIN_16, 159d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin CAMIF_MAX_FORMAT, 160d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin}; 161d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Camif output general configuration 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_camif_subsample_cfg { 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t irq_subsample_period; 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t irq_subsample_pattern; 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sof_counter_step; 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pixel_skip; 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t line_skip; 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t first_line; 1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t last_line; 1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t first_pixel; 1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t last_pixel; 175d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin enum msm_vfe_camif_output_format output_format; 1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Camif frame and window configuration 1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_camif_cfg { 1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t lines_per_frame; 1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pixels_per_line; 1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t first_pixel; 1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t last_pixel; 1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t first_line; 1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t last_line; 1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t epoch_line0; 1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t epoch_line1; 1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t is_split; 1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_camif_input camif_input; 1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_camif_subsample_cfg subsample_cfg; 1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_testgen_cfg { 1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t lines_per_frame; 1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pixels_per_line; 1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t v_blank; 1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t h_blank; 2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum ISP_START_PIXEL_PATTERN pixel_bayer_pattern; 2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t rotate_period; 2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_testgen_color_pattern color_bar_pattern; 2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t burst_num_frame; 2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_inputmux { 2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMIF, 2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin TESTGEN, 2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EXTERNAL_READ, 2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_stats_composite_group { 2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STATS_COMPOSITE_GRP_NONE, 2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STATS_COMPOSITE_GRP_1, 2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STATS_COMPOSITE_GRP_2, 2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STATS_COMPOSITE_GRP_MAX, 2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_hvx_streaming_cmd { 2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin HVX_DISABLE, 2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin HVX_ONE_WAY, 2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin HVX_ROUND_TRIP 2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_pix_cfg { 2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_camif_cfg camif_cfg; 2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_testgen_cfg testgen_cfg; 2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_fetch_engine_cfg fetch_engine_cfg; 2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_inputmux input_mux; 2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum ISP_START_PIXEL_PATTERN pixel_pattern; 2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t input_format; 2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_hvx_streaming_cmd hvx_cmd; 2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t is_split; 2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_rdi_cfg { 2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t cid; 2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t frame_based; 2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_input_cfg { 2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_pix_cfg pix_cfg; 2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_rdi_cfg rdi_cfg; 2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } d; 2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_input_src input_src; 2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t input_pix_clk; 2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_fetch_eng_start { 2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_idx; 2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t offline_mode; 2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t fd; 2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_addr; 2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_plane_cfg { 2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_width; /*Include padding*/ 2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_height; 2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_stride; 2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_scan_lines; 2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_plane_format; /*Y/Cb/Cr/CbCr*/ 2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t plane_addr_offset; 2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csid_src; /*RDI 0-2*/ 2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t rdi_cid;/*CID 1-16*/ 2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_stream_memory_input_t { 2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MEMORY_INPUT_DISABLED, 2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MEMORY_INPUT_ENABLED 2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_request_cmd { 2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t vt_enable; 2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_format;/*Planar/RAW/Misc*/ 2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_axi_stream_src stream_src; /*CAMIF/IDEAL/RDIs*/ 2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_axi_plane_cfg plane_cfg[MAX_PLANES_PER_STREAM]; 2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t burst_count; 2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t hfr_mode; 2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t frame_base; 2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t init_frame_drop; /*MAX 31 Frames*/ 2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_frame_skip_pattern frame_skip_pattern; 2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t buf_divert; /* if TRUE no vb2 buf done. */ 2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /*Return values*/ 2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t axi_stream_handle; 2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t controllable_output; 2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t burst_len; 2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Flag indicating memory input stream */ 2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_stream_memory_input_t memory_input; 2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_release_cmd { 3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_handle; 3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_axi_stream_cmd { 3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STOP_STREAM, 3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin START_STREAM, 3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STOP_IMMEDIATELY, 3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_cfg_cmd { 3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_streams; 3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_handle[VFE_AXI_SRC_MAX]; 3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_axi_stream_cmd cmd; 3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t sync_frame_id_src; 3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_axi_stream_update_type { 3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ENABLE_STREAM_BUF_DIVERT, 3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin DISABLE_STREAM_BUF_DIVERT, 3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_FRAMEDROP_PATTERN, 3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_STATS_FRAMEDROP_PATTERN, 3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_AXI_CONFIG, 3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_REQUEST_FRAMES, 3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_ADD_BUFQ, 3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_REMOVE_BUFQ, 3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin UPDATE_STREAM_SW_FRAME_DROP, 32600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He UPDATE_STREAM_REQUEST_FRAMES_VER2, 3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 32800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He#define UPDATE_STREAM_REQUEST_FRAMES_VER2 UPDATE_STREAM_REQUEST_FRAMES_VER2 3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_iommu_type { 3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin IOMMU_ATTACH, 3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin IOMMU_DETACH, 3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_buff_queue_id { 3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_BUF_QUEUE_DEFAULT, 3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_BUF_QUEUE_SHARED, 3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_BUF_QUEUE_MAX, 3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_cfg_update_info { 3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_handle; 3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_format; 3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t user_stream_id; 3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_frame_skip_pattern skip_pattern; 3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_axi_plane_cfg plane_cfg[MAX_PLANES_PER_STREAM]; 3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_sw_framskip sw_skip_info; 3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 35100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun Hestruct msm_vfe_axi_stream_cfg_update_info_req_frm { 35200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He uint32_t stream_handle; 35300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He uint32_t user_stream_id; 35400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He uint32_t frame_id; 35500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He uint32_t buf_index; 35600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He}; 35700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He 3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_halt_cmd { 3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stop_camif; 3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t overflow_detected; 3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t blocking_halt; 3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_reset_cmd { 3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t blocking; 3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_restart_cmd { 3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t enable_camif; 3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_update_cmd { 3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t num_streams; 3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_axi_stream_update_type update_type; 37600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He /* 37700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He * For backward compatibility, ensure 1st member of any struct 37800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He * in union below is uint32_t stream_handle. 37900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He */ 38000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He union { 38100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_cfg_update_info 3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin update_info[MSM_ISP_STATS_MAX]; 38300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_cfg_update_info_req_frm req_frm_ver2; 38400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He }; 3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_smmu_attach_cmd { 3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t security_mode; 3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t iommu_attach_mode; 3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_stats_stream_request_cmd { 3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_isp_stats_type stats_type; 3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t composite_flag; 3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t framedrop_pattern; 3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t init_frame_drop; /*MAX 31 Frames*/ 3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t irq_subsample_pattern; 4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_offset; 4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_handle; 4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_stats_stream_release_cmd { 4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_handle; 4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_stats_stream_cfg_cmd { 4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_streams; 4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_handle[MSM_ISP_STATS_MAX]; 4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t enable; 4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stats_burst_len; 4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_reg_cfg_type { 4155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_WRITE, 4165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_WRITE_MB, 4175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_READ, 4185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_CFG_MASK, 4195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_WRITE_DMI_16BIT, 4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_WRITE_DMI_32BIT, 4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_WRITE_DMI_64BIT, 4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_READ_DMI_16BIT, 4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_READ_DMI_32BIT, 4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_READ_DMI_64BIT, 4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GET_MAX_CLK_RATE, 4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GET_CLK_RATES, 4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GET_ISP_ID, 4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_HW_UPDATE_LOCK, 4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_HW_UPDATE_UNLOCK, 4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SET_WM_UB_SIZE, 4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SET_UB_POLICY, 4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd2 { 4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t num_cfg; 4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t cmd_len; 437d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin void __user *cfg_data; 438d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin void __user *cfg_cmd; 4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd_list { 4425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_cfg_cmd2 cfg_cmd; 4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_cfg_cmd_list *next; 4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t next_size; 4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_rw_info { 4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t reg_offset; 4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cmd_data_offset; 4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t len; 4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_mask_info { 4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t reg_offset; 4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t mask; 4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t val; 4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_dmi_info { 4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t hi_tbl_offset; /*Optional*/ 4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t lo_tbl_offset; /*Required*/ 4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t len; 4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_cfg_cmd { 4665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 4675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_reg_rw_info rw_info; 4685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_reg_mask_info mask_info; 4695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vfe_reg_dmi_info dmi_info; 4705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } u; 4715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_reg_cfg_type cmd_type; 4735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum vfe_sd_type { 4765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_SD_0 = 0, 4775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_SD_1, 4785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_SD_COMMON, 4795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_SD_MAX, 4805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* When you change the value below, check for the sof event_data size. 4835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * V4l2 limits payload to 64 bytes */ 4845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MS_NUM_SLAVE_MAX 1 4855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Usecases when 2 HW need to be related or synced */ 4875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_dual_hw_type { 4885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin DUAL_NONE = 0, 4895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin DUAL_HW_VFE_SPLIT = 1, 4905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin DUAL_HW_MASTER_SLAVE = 2, 4915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Type for 2 INTF when used in Master-Slave mode */ 4945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_dual_hw_ms_type { 4955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MS_TYPE_NONE, 4965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MS_TYPE_MASTER, 4975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MS_TYPE_SLAVE, 4985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_set_dual_hw_ms_cmd { 5015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_src; 5025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Each session can be only one type but multiple intf if YUV cam */ 5035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_dual_hw_ms_type dual_hw_ms_type; 5045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Primary intf is mostly associated with preview. 5055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This primary intf SOF frame_id and timestamp is tracked 5065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * and used to calculate delta */ 5075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_input_src primary_intf; 5085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* input_src array indicates other input INTF that may be Master/Slave. 5095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * For these additional intf, frame_id and timestamp are not saved. 5105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * However, if these are slaves then they will still get their 5115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * frame_id from Master */ 5125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_input_src input_src[VFE_SRC_MAX]; 5135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sof_delta_threshold; /* In milliseconds. Sent for Master */ 5145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_buf_type { 5175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_PRIVATE_BUF, 5185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_SHARE_BUF, 5195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MAX_ISP_BUF_TYPE, 5205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_unmap_buf_req { 5235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t fd; 5245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_buf_request { 5275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 5285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 5295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_buf; 5305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t handle; 5315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_isp_buf_type buf_type; 5325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_qbuf_plane { 5355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t addr; 5365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t offset; 5375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t length; 5385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_qbuf_buffer { 5415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_qbuf_plane planes[MAX_PLANES_PER_STREAM]; 5425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t num_planes; 5435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_qbuf_info { 5465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t handle; 5475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t buf_idx; 5485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /*Only used for prepare buffer*/ 5495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_qbuf_buffer buffer; 5505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /*Only used for diverted buffer*/ 5515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dirty_buf; 5525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_clk_rates { 5555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t svs_rate; 5565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t nominal_rate; 5575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t high_rate; 5585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_src_state { 5615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_input_src input_src; 5625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t src_active; 5635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t src_frame_id; 5645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_event_mask_index { 5675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_STATS_NOTIFY = 0, 5685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_ERROR = 1, 5695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_IOMMU_P_FAULT = 2, 5705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_STREAM_UPDATE_DONE = 3, 5715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_REG_UPDATE = 4, 5725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_SOF = 5, 5735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_BUF_DIVERT = 6, 5745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_COMP_STATS_NOTIFY = 7, 5755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EVENT_MASK_INDEX_MASK_FE_READ_DONE = 8, 576d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin ISP_EVENT_MASK_INDEX_BUF_DONE = 9, 577d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin ISP_EVENT_MASK_INDEX_REG_UPDATE_MISSING = 10, 578d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin ISP_EVENT_MASK_INDEX_PING_PONG_MISMATCH = 11, 579d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin ISP_EVENT_MASK_INDEX_BUF_FATAL_ERROR = 12, 5805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_NONE 0 5845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_STATS_NOTIFY \ 5865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_STATS_NOTIFY) 5875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_ERROR \ 5895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_ERROR) 5905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_IOMMU_P_FAULT \ 5925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_IOMMU_P_FAULT) 5935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_STREAM_UPDATE_DONE \ 5955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_STREAM_UPDATE_DONE) 5965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_REG_UPDATE \ 5985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_REG_UPDATE) 5995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_SOF \ 6015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_SOF) 6025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_BUF_DIVERT \ 6045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_BUF_DIVERT) 6055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_COMP_STATS_NOTIFY \ 6075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_COMP_STATS_NOTIFY) 6085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_FE_READ_DONE \ 6105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_MASK_FE_READ_DONE) 6115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_BUF_DONE \ 6135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_BUF_DONE) 6145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 615d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_SUBS_MASK_REG_UPDATE_MISSING \ 616d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_REG_UPDATE_MISSING) 617d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin 618d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_SUBS_MASK_PING_PONG_MISMATCH \ 619d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_PING_PONG_MISMATCH) 620d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin 621d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_SUBS_MASK_BUF_FATAL_ERROR \ 622d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin (1 << ISP_EVENT_MASK_INDEX_BUF_FATAL_ERROR) 623d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin 6245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_event_idx { 6255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_REG_UPDATE = 0, 6265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EPOCH_0 = 1, 6275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_EPOCH_1 = 2, 6285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_START_ACK = 3, 6295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_STOP_ACK = 4, 6305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_IRQ_VIOLATION = 5, 6315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_STATS_OVERFLOW = 6, 6325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_BUF_DONE = 7, 6335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_FE_RD_DONE = 8, 6345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_IOMMU_P_FAULT = 9, 6355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR = 10, 6365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_HW_FATAL_ERROR = 11, 6375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_PING_PONG_MISMATCH = 12, 6385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_REG_UPDATE_MISSING = 13, 639d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin ISP_BUF_FATAL_ERROR = 14, 640d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin ISP_EVENT_MAX = 15 6415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_OFFSET 8 6445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_BASE (V4L2_EVENT_PRIVATE_START) 6455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_BUF_EVENT_BASE (ISP_EVENT_BASE + (1 << ISP_EVENT_OFFSET)) 6465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_STATS_EVENT_BASE (ISP_EVENT_BASE + (2 << ISP_EVENT_OFFSET)) 6475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_CAMIF_EVENT_BASE (ISP_EVENT_BASE + (3 << ISP_EVENT_OFFSET)) 6485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_STREAM_EVENT_BASE (ISP_EVENT_BASE + (4 << ISP_EVENT_OFFSET)) 6495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_REG_UPDATE (ISP_EVENT_BASE + ISP_REG_UPDATE) 6505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_EPOCH_0 (ISP_EVENT_BASE + ISP_EPOCH_0) 6515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_EPOCH_1 (ISP_EVENT_BASE + ISP_EPOCH_1) 6525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_START_ACK (ISP_EVENT_BASE + ISP_START_ACK) 6535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STOP_ACK (ISP_EVENT_BASE + ISP_STOP_ACK) 6545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_IRQ_VIOLATION (ISP_EVENT_BASE + ISP_IRQ_VIOLATION) 6555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STATS_OVERFLOW (ISP_EVENT_BASE + ISP_STATS_OVERFLOW) 6565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_ERROR (ISP_EVENT_BASE + ISP_ERROR) 6575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SOF (ISP_CAMIF_EVENT_BASE) 6585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_EOF (ISP_CAMIF_EVENT_BASE + 1) 6595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_BUF_DONE (ISP_EVENT_BASE + ISP_BUF_DONE) 6605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_BUF_DIVERT (ISP_BUF_EVENT_BASE) 6615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STATS_NOTIFY (ISP_STATS_EVENT_BASE) 6625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_COMP_STATS_NOTIFY (ISP_EVENT_STATS_NOTIFY + MSM_ISP_STATS_MAX) 6635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_FE_READ_DONE (ISP_EVENT_BASE + ISP_FE_RD_DONE) 6645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_IOMMU_P_FAULT (ISP_EVENT_BASE + ISP_IOMMU_P_FAULT) 6655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_HW_FATAL_ERROR (ISP_EVENT_BASE + ISP_HW_FATAL_ERROR) 6665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_PING_PONG_MISMATCH (ISP_EVENT_BASE + ISP_PING_PONG_MISMATCH) 6675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_REG_UPDATE_MISSING (ISP_EVENT_BASE + ISP_REG_UPDATE_MISSING) 668d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_BUF_FATAL_ERROR (ISP_EVENT_BASE + ISP_BUF_FATAL_ERROR) 6695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STREAM_UPDATE_DONE (ISP_STREAM_EVENT_BASE) 6705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The msm_v4l2_event_data structure should match the 6725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * v4l2_event.u.data field. 6735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * should not exceed 64 bytes */ 6745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_buf_event { 6765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 6775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 6785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t handle; 6795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t output_format; 6805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t buf_idx; 6815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_fetch_eng_event { 6835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 6845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 6855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t handle; 6865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t fd; 6875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t buf_idx; 6885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t offline_mode; 6895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_stats_event { 6915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stats_mask; /* 4 bytes */ 6925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t stats_buf_idxs[MSM_ISP_STATS_MAX]; /* 11 bytes */ 6935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_stream_ack { 6965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 6975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 6985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t handle; 6995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_error_type { 7025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR_NONE, 7035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR_CAMIF, 7045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR_BUS_OVERFLOW, 7055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR_RETURN_EMPTY_BUFFER, 7065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR_FRAME_ID_MISMATCH, 7075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISP_ERROR_MAX, 7085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_error_info { 7115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_vfe_error_type err_type; 7125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t session_id; 7135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 714d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin uint32_t stream_id_mask; 7155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* This structure reports delta between master and slave */ 7185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_ms_delta_info { 7195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_delta_info; 7205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t delta[MS_NUM_SLAVE_MAX]; 7215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* This is sent in EPOCH irq */ 7245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_output_info { 7255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t regs_not_updated; 7265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mask with bufq_handle for regs not updated or return empty */ 7275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t output_err_mask; 7285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mask with stream_idx for get_buf failed */ 7295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t stream_framedrop_mask; 7305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mask with stats stream_idx for get_buf failed */ 7315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t stats_framedrop_mask; 7325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* delta between master and slave */ 7335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* This structure is piggybacked with SOF event */ 7365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_sof_info { 7375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t regs_not_updated; 7385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mask with AXI_SRC for regs not updated */ 7395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_update_fail_mask; 7405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mask with bufq_handle for get_buf failed */ 7415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_get_buf_fail_mask; 7425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mask with stats stream_idx for get_buf failed */ 7435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t stats_get_buf_fail_mask; 7445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* delta between master and slave */ 7455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_ms_delta_info ms_delta_info; 7465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_event_data { 7495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /*Wall clock except for buffer divert events 7505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *which use monotonic clock 7515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 7525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timeval timestamp; 7535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Monotonic timestamp since bootup */ 7545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timeval mono_timestamp; 7555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 7565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 7575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Sent for Stats_Done event */ 7585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_stats_event stats; 7595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Sent for Buf_Divert event */ 7605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_buf_event buf_done; 7615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Sent for offline fetch done event */ 7625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_fetch_eng_event fetch_done; 7635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Sent for Error_Event */ 7645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_error_info error_info; 7655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 7665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This struct needs to be removed once 7675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * userspace switches to sof_info 7685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 7695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_output_info output_info; 7705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Sent for SOF event */ 7715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_isp_sof_info sof_info; 7725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } u; /* union can have max 52 bytes */ 7735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR8 v4l2_fourcc('Q', 'B', 'G', '8') 7765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG8 v4l2_fourcc('Q', 'G', 'B', '8') 7775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG8 v4l2_fourcc('Q', 'G', 'R', '8') 7785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB8 v4l2_fourcc('Q', 'R', 'G', '8') 7795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR10 v4l2_fourcc('Q', 'B', 'G', '0') 7805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG10 v4l2_fourcc('Q', 'G', 'B', '0') 7815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG10 v4l2_fourcc('Q', 'G', 'R', '0') 7825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB10 v4l2_fourcc('Q', 'R', 'G', '0') 7835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR12 v4l2_fourcc('Q', 'B', 'G', '2') 7845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG12 v4l2_fourcc('Q', 'G', 'B', '2') 7855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG12 v4l2_fourcc('Q', 'G', 'R', '2') 7865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB12 v4l2_fourcc('Q', 'R', 'G', '2') 7875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR14 v4l2_fourcc('Q', 'B', 'G', '4') 7885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG14 v4l2_fourcc('Q', 'G', 'B', '4') 7895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG14 v4l2_fourcc('Q', 'G', 'R', '4') 7905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB14 v4l2_fourcc('Q', 'R', 'G', '4') 7915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16BGGR10 v4l2_fourcc('P', 'B', 'G', '0') 7925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16GBRG10 v4l2_fourcc('P', 'G', 'B', '0') 7935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16GRBG10 v4l2_fourcc('P', 'G', 'R', '0') 7945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16RGGB10 v4l2_fourcc('P', 'R', 'G', '0') 7955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV14 v4l2_fourcc('N', 'V', '1', '4') 7965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV41 v4l2_fourcc('N', 'V', '4', '1') 7975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_META v4l2_fourcc('Q', 'M', 'E', 'T') 7985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14 BGBG.GRGR.*/ 7995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') /* 14 GBGB.RGRG.*/ 8005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4') /* 14 GRGR.BGBG.*/ 8015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') /* 14 RGRG.GBGB.*/ 8025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 80300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun Heenum msm_isp_ioctl_cmd_code { 80400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_VFE_REG_CFG = BASE_VIDIOC_PRIVATE, 80500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_REQUEST_BUF, 80600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_ENQUEUE_BUF, 80700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_RELEASE_BUF, 80800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_REQUEST_STREAM, 80900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_CFG_STREAM, 81000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_RELEASE_STREAM, 81100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_INPUT_CFG, 81200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_SET_SRC_STATE, 81300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_REQUEST_STATS_STREAM, 81400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_CFG_STATS_STREAM, 81500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_RELEASE_STATS_STREAM, 81600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_REG_UPDATE_CMD, 81700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_UPDATE_STREAM, 81800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_VFE_REG_LIST_CFG, 81900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_SMMU_ATTACH, 82000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_UPDATE_STATS_STREAM, 82100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_AXI_HALT, 82200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_AXI_RESET, 82300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_AXI_RESTART, 82400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_FETCH_ENG_START, 82500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_DEQUEUE_BUF, 82600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_SET_DUAL_HW_MASTER_SLAVE, 82700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_MAP_BUF_START_FE, 82800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He MSM_ISP_UNMAP_BUF, 82900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He}; 83000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He 8315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VFE_REG_CFG \ 83200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_VFE_REG_CFG, \ 83300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_cfg_cmd2) 8345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REQUEST_BUF \ 83600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_REQUEST_BUF, \ 83700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_isp_buf_request) 8385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_ENQUEUE_BUF \ 84000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_ENQUEUE_BUF, \ 84100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_isp_qbuf_info) 8425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_RELEASE_BUF \ 84400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_RELEASE_BUF, \ 84500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_isp_buf_request) 8465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REQUEST_STREAM \ 84800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_REQUEST_STREAM, \ 84900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_request_cmd) 8505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_CFG_STREAM \ 85200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_CFG_STREAM, \ 85300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_cfg_cmd) 8545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_RELEASE_STREAM \ 85600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_RELEASE_STREAM, \ 85700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_release_cmd) 8585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_INPUT_CFG \ 86000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_INPUT_CFG, \ 86100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_input_cfg) 8625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_SET_SRC_STATE \ 86400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_SET_SRC_STATE, \ 86500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_src_state) 8665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REQUEST_STATS_STREAM \ 86800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_REQUEST_STATS_STREAM, \ 86900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_stats_stream_request_cmd) 8705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_CFG_STATS_STREAM \ 87200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_CFG_STATS_STREAM, \ 87300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_stats_stream_cfg_cmd) 8745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_RELEASE_STATS_STREAM \ 87600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_RELEASE_STATS_STREAM, \ 87700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_stats_stream_release_cmd) 8785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REG_UPDATE_CMD \ 88000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_REG_UPDATE_CMD, \ 88100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He enum msm_vfe_input_src) 8825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_UPDATE_STREAM \ 88400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_UPDATE_STREAM, \ 88500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_update_cmd) 8865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VFE_REG_LIST_CFG \ 88800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_VFE_REG_LIST_CFG, \ 88900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_cfg_cmd_list) 8905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_SMMU_ATTACH \ 89200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_SMMU_ATTACH, \ 89300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_smmu_attach_cmd) 8945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_UPDATE_STATS_STREAM \ 89600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_UPDATE_STATS_STREAM, \ 89700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_stream_update_cmd) 8985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_AXI_HALT \ 90000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_AXI_HALT, \ 90100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_halt_cmd) 9025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_AXI_RESET \ 90400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_AXI_RESET, \ 90500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_reset_cmd) 9065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_AXI_RESTART \ 90800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_AXI_RESTART, \ 90900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_axi_restart_cmd) 9105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_FETCH_ENG_START \ 91200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_FETCH_ENG_START, \ 91300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_fetch_eng_start) 9145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_DEQUEUE_BUF \ 91600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_DEQUEUE_BUF, \ 91700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_isp_qbuf_info) 9185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_SET_DUAL_HW_MASTER_SLAVE \ 92000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_SET_DUAL_HW_MASTER_SLAVE, \ 92100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_isp_set_dual_hw_ms_cmd) 9225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_MAP_BUF_START_FE \ 92400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_MAP_BUF_START_FE, \ 92500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_vfe_fetch_eng_start) 9265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_UNMAP_BUF \ 92800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He _IOWR('V', MSM_ISP_UNMAP_BUF, \ 92900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He struct msm_isp_unmap_buf_req) 9305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif /* __MSMB_ISP__ */ 932