15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Copyright (c) 2009-2012, 2014-2015 The Linux Foundation. All rights reserved. 25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is free software; you can redistribute it and/or modify 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * it under the terms of the GNU General Public License version 2 and 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * only version 2 as published by the Free Software Foundation. 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is distributed in the hope that it will be useful, 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * but WITHOUT ANY WARRANTY; without even the implied warranty of 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * GNU General Public License for more details. 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef __UAPI_MSM_CAMERA_H 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define __UAPI_MSM_CAMERA_H 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifdef MSM_CAMERA_BIONIC 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <sys/types.h> 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/videodev2.h> 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h> 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/ioctl.h> 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifdef MSM_CAMERA_GCC 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <time.h> 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#else 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/time.h> 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/msm_ion.h> 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define BIT(nr) (1UL << (nr)) 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_MAGIC 'm' 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_SERVER_PAYLOAD_LENGTH 8192 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_SENSOR_INFO \ 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 1, struct msm_camsensor_info *) 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_REGISTER_PMEM \ 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 2, struct msm_pmem_info *) 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_UNREGISTER_PMEM \ 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 3, unsigned) 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CTRL_COMMAND \ 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 4, struct msm_ctrl_cmd *) 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CONFIG_VFE \ 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 5, struct msm_camera_vfe_cfg_cmd *) 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_STATS \ 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 6, struct msm_camera_stats_event_ctrl *) 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GETFRAME \ 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 7, struct msm_camera_get_frame *) 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_ENABLE_VFE \ 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 8, struct camera_enable_cmd *) 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CTRL_CMD_DONE \ 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 9, struct camera_cmd *) 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CONFIG_CMD \ 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 10, struct camera_cmd *) 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_DISABLE_VFE \ 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 11, struct camera_enable_cmd *) 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_PAD_REG_RESET2 \ 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 12, struct camera_enable_cmd *) 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_VFE_APPS_RESET \ 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 13, struct camera_enable_cmd *) 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_RELEASE_FRAME_BUFFER \ 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 14, struct camera_enable_cmd *) 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_RELEASE_STATS_BUFFER \ 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 15, struct msm_stats_buf *) 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_AXI_CONFIG \ 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 16, struct msm_camera_vfe_cfg_cmd *) 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_PICTURE \ 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 17, struct msm_frame *) 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SET_CROP \ 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 18, struct crop_info *) 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_PICT_PP \ 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *) 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_PICT_PP_DONE \ 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *) 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SENSOR_IO_CFG \ 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 21, struct sensor_cfg_data *) 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_FLASH_LED_CFG \ 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 22, unsigned *) 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_UNBLOCK_POLL_FRAME \ 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO(MSM_CAM_IOCTL_MAGIC, 23) 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CTRL_COMMAND_2 \ 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 24, struct msm_ctrl_cmd *) 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_AF_CTRL \ 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 25, struct msm_ctrl_cmt_t *) 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_AF_CTRL_DONE \ 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *) 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CONFIG_VPE \ 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_camera_vpe_cfg_cmd *) 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_AXI_VPE_CONFIG \ 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 28, struct msm_camera_vpe_cfg_cmd *) 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STROBE_FLASH_CFG \ 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 29, uint32_t *) 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STROBE_FLASH_CHARGE \ 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 30, uint32_t *) 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STROBE_FLASH_RELEASE \ 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO(MSM_CAM_IOCTL_MAGIC, 31) 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_FLASH_CTRL \ 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 32, struct flash_ctrl_data *) 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_ERROR_CONFIG \ 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 33, uint32_t *) 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_ABORT_CAPTURE \ 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO(MSM_CAM_IOCTL_MAGIC, 34) 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SET_FD_ROI \ 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 35, struct fd_roi_info *) 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_CAMERA_INFO \ 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 36, struct msm_camera_info *) 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_UNBLOCK_POLL_PIC_FRAME \ 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO(MSM_CAM_IOCTL_MAGIC, 37) 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_RELEASE_PIC_BUFFER \ 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 38, struct camera_enable_cmd *) 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_PUT_ST_FRAME \ 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 39, struct msm_camera_st_frame *) 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_V4L2_EVT_NOTIFY \ 1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 40, struct v4l2_event_and_payload) 1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SET_MEM_MAP_INFO \ 1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 41, struct msm_mem_map_info *) 1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_ACTUATOR_IO_CFG \ 1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 42, struct msm_actuator_cfg_data *) 1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_MCTL_POST_PROC \ 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 43, struct msm_mctl_post_proc_cmd *) 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_RESERVE_FREE_FRAME \ 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 44, struct msm_cam_evt_divert_frame *) 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_RELEASE_FREE_FRAME \ 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 45, struct msm_cam_evt_divert_frame *) 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_PICT_PP_DIVERT_DONE \ 1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 46, struct msm_pp_frame *) 1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SENSOR_V4l2_S_CTRL \ 1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 47, struct v4l2_control) 1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SENSOR_V4l2_QUERY_CTRL \ 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 48, struct v4l2_queryctrl) 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_KERNEL_SYSTEM_TIME \ 1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 49, struct timeval *) 1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SET_VFE_OUTPUT_TYPE \ 1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 50, uint32_t *) 1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_MCTL_DIVERT_DONE \ 1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 51, struct msm_cam_evt_divert_frame *) 1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_ACTUATOR_INFO \ 1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 52, struct msm_actuator_cfg_data *) 1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_EEPROM_IO_CFG \ 1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 53, struct msm_eeprom_cfg_data *) 1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_ISPIF_IO_CFG \ 1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 54, struct ispif_cfg_data *) 1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STATS_REQBUF \ 1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 55, struct msm_stats_reqbuf *) 2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STATS_ENQUEUEBUF \ 2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 56, struct msm_stats_buf_info *) 2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STATS_FLUSH_BUFQ \ 2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 57, struct msm_stats_flush_bufq *) 2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SET_MCTL_SDEV \ 2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 58, struct msm_mctl_set_sdev_data *) 2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_UNSET_MCTL_SDEV \ 2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 59, struct msm_mctl_set_sdev_data *) 2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_GET_INST_HANDLE \ 2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 60, uint32_t *) 2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_STATS_UNREG_BUF \ 2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 61, struct msm_stats_flush_bufq *) 2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CSIC_IO_CFG \ 2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(MSM_CAM_IOCTL_MAGIC, 62, struct csic_cfg_data *) 2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CSID_IO_CFG \ 2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(MSM_CAM_IOCTL_MAGIC, 63, struct csid_cfg_data *) 2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_CSIPHY_IO_CFG \ 2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(MSM_CAM_IOCTL_MAGIC, 64, struct csiphy_cfg_data *) 2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_OEM \ 2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(MSM_CAM_IOCTL_MAGIC, 65, struct sensor_cfg_data *) 2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_AXI_INIT \ 2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(MSM_CAM_IOCTL_MAGIC, 66, uint8_t *) 2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_AXI_RELEASE \ 2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO(MSM_CAM_IOCTL_MAGIC, 67) 2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_and_payload { 2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct v4l2_event evt; 2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t payload_length; 2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t transaction_id; 2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *payload; 2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_stats_reqbuf { 2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int num_buf; /* how many buffers requested */ 2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stats_type; /* stats type */ 2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_stats_flush_bufq { 2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stats_type; /* enum msm_stats_enum_type */ 2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_pp_cmd { 2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t id; 2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t length; 2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *value; 2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_post_proc_cmd { 2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t type; 2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_mctl_pp_cmd cmd; 2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_LED_OFF 0 2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_LED_LOW 1 2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_LED_HIGH 2 2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_LED_INIT 3 2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_LED_RELEASE 4 2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_STROBE_FLASH_NONE 0 2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_STROBE_FLASH_XENON 1 2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MAX_CAMERA_SENSORS 5 2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_SENSOR_NAME 32 2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_CAM_NAME_SIZE 32 2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACT_MOD_NAME_SIZE 32 2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACT_NAME_SIZE 32 2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define NUM_ACTUATOR_DIR 2 2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_SCENARIO 8 2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_REGION 5 2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_INIT_SET 12 2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_TYPE_SIZE 32 2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_REG_TBL_SIZE 8 2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MAX_CAMERA_CONFIGS 2 2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PP_SNAP 0x01 2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PP_RAW_SNAP ((0x01)<<1) 2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PP_PREV ((0x01)<<2) 2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PP_THUMB ((0x01)<<3) 2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV|PP_THUMB) 2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_CTRL_CMD_DONE 0 2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_SENSOR_VFE_CMD 1 2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Should be same as VIDEO_MAX_PLANES in videodev2.h */ 2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_PLANES 8 2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/***************************************************** 3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * structure 3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *****************************************************/ 3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* define five type of structures for userspace <==> kernel 3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * space communication: 3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * command 1 - 2 are from userspace ==> kernel 3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * command 3 - 4 are from kernel ==> userspace 3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1. control command: control command(from control thread), 3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * control status (from config thread); 3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_ctrl_cmd { 3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t type; 3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t length; 3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *value; 3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t status; 3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t timeout_ms; 3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int resp_fd; /* FIXME: to be used by the kernel, pass-through for now */ 3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int vnode_id; /* video dev id. Can we overload resp_fd? */ 3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int queue_idx; 3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t evt_id; 3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_type; /* used to pass value to qcamera server */ 3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int config_ident; /*used as identifier for config node*/ 3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cam_evt_msg { 3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short type; /* 1 == event (RPC), 0 == message (adsp) */ 3285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short msg_id; 3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int len; /* size in, number of bytes out */ 3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *data; 3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec timestamp; 3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_pp_frame_sp { 3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* phy addr of the buffer */ 3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long phy_addr; 3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t y_off; 3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cbcr_off; 3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* buffer length */ 3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t length; 3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t fd; 3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t addr_offset; 3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mapped addr */ 3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long vaddr; 3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_pp_frame_mp { 3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* phy addr of the plane */ 3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long phy_addr; 3515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* offset of plane data */ 3525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t data_offset; 3535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* plane length */ 3545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t length; 3555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t fd; 3565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t addr_offset; 3575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* mapped addr */ 3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long vaddr; 3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_pp_frame { 3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t handle; /* stores vb cookie */ 3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short buf_idx; 3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int path; 3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short image_type; 3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short num_planes; /* 1 for sp */ 3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timeval timestamp; 3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_pp_frame_sp sp; 3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_pp_frame_mp mp[MAX_PLANES]; 3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin }; 3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int node_type; 3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t inst_handle; 3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_pp_crop { 3785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t src_x; 3795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t src_y; 3805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t src_w; 3815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t src_h; 3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dst_x; 3835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dst_y; 3845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dst_w; 3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dst_h; 3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t update_flag; 3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_pp_frame_cmd { 3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cookie; 3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t vpe_output_action; 3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_pp_frame src_frame; 3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_pp_frame dest_frame; 3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_pp_crop crop; 3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int path; 3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cam_evt_divert_frame { 3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short image_mode; 4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short op_mode; 4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short inst_idx; 4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short node_idx; 4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_pp_frame frame; 4045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int do_pp; 4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_pp_cmd_ack_event { 4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cmd; /* VPE_CMD_ZOOM? */ 4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int status; /* 0 done, < 0 err */ 4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cookie; /* daemon's cookie */ 4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_pp_event_info { 4145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t event; 4155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 4165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_mctl_pp_cmd_ack_event ack; 4175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin }; 4185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_event_ctrl { 4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short resptype; 4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_cam_evt_msg isp_msg; 4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_ctrl_cmd ctrl; 4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_cam_evt_divert_frame div_frame; 4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_mctl_pp_event_info pp_event_info; 4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } isp_data; 4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_CTRL 0 4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_STAT_EVT_MSG 1 4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_STEREO_OP_1 2 4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_STEREO_OP_2 3 4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_V4L2 4 4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_DIV_FRAME_EVT_MSG 5 4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_DONE_EVENT 6 4375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_MCTL_PP_EVENT 7 4385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_RESP_MAX 8 4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_APP_NOTIFY_EVENT 0 4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_APP_NOTIFY_ERROR_EVENT 1 4425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* this one is used to send ctrl/status up to config thread */ 4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_stats_event_ctrl { 4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* 0 - ctrl_cmd from control thread, 4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1 - stats/event kernel, 4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 2 - V4L control or read request */ 4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int resptype; 4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int timeout_ms; 4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_ctrl_cmd ctrl_cmd; 4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* struct vfe_event_t stats_event; */ 4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_cam_evt_msg stats_event; 4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 2. config command: config command(from config thread); */ 4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_cfg_cmd { 4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* what to config: 4595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1 - sensor config, 2 - vfe config */ 4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t cfg_type; 4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* sensor config type */ 4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t cmd_type; 4645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t queue; 4655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t length; 4665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *value; 4675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_GENERAL 0 4705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_OUT1 1 4715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SNAP_O1_AND_O2 2 4725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_OUT2 3 4735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_PICT_T_AXI_CFG 4 4745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_PICT_M_AXI_CFG 5 4755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_RAW_PICT_AXI_CFG 6 4765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_FRAME_BUF_RELEASE 7 4785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_PREV_BUF_CFG 8 4795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_SNAP_BUF_RELEASE 9 4805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_SNAP_BUF_CFG 10 4815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_DISABLE 11 4825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AEC_AWB_ENABLE 12 4835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AF_ENABLE 13 4845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AEC_ENABLE 14 4855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AWB_ENABLE 15 4865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_ENABLE 16 4875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AXI_CFG 17 4895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AEC_AXI_CFG 18 4905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AF_AXI_CFG 19 4915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AWB_AXI_CFG 20 4925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_RS_AXI_CFG 21 4935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_CS_AXI_CFG 22 4945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_IHIST_AXI_CFG 23 4955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_SKIN_AXI_CFG 24 4965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BUF_RELEASE 25 4985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AEC_BUF_RELEASE 26 4995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AF_BUF_RELEASE 27 5005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_AWB_BUF_RELEASE 28 5015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_RS_BUF_RELEASE 29 5025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_CS_BUF_RELEASE 30 5035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_IHIST_BUF_RELEASE 31 5045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_SKIN_BUF_RELEASE 32 5055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define UPDATE_STATS_INVALID 33 5075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SNAP_GEMINI 34 5085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SNAP 35 5095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_PREVIEW 36 5105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_VIDEO 37 5115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_IHIST_ENABLE 38 5135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_RS_ENABLE 39 5145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_CS_ENABLE 40 5155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_VPE 41 5165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_VPE 42 5175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_ZSL 43 5185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SNAP_VPE 44 5195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SNAP_THUMB_VPE 45 5205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_CONFIG_PING_ADDR 46 5225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_CONFIG_PONG_ADDR 47 5235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_CONFIG_FREE_BUF_ADDR 48 5245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_ZSL_ALL_CHNLS 49 5255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_VIDEO_ALL_CHNLS 50 5265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_VFE_BUFFER_RELEASE 51 5275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_VFE_PROCESS_IRQ 52 5285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BG_ENABLE 53 5295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BF_ENABLE 54 5305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BHIST_ENABLE 55 5315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BG_BUF_RELEASE 56 5325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BF_BUF_RELEASE 57 5335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BHIST_BUF_RELEASE 58 5345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_VFE_PIX_SOF_COUNT_UPDATE 59 5355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_VFE_COUNT_PIX_SOF_ENABLE 60 5365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BE_ENABLE 61 5375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_STATS_BE_BUF_RELEASE 62 5385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_PRIM BIT(8) 5405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_PRIM_ALL_CHNLS BIT(9) 5415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SEC BIT(10) 5425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_SEC_ALL_CHNLS BIT(11) 5435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_TERT1 BIT(12) 5445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_CFG_TERT2 BIT(13) 5455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_START 0xE1 5475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_STOP 0xE2 5485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_RESET 0xE3 5495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CMD_AXI_ABORT 0xE4 5505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AXI_CMD_PREVIEW BIT(0) 5545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AXI_CMD_CAPTURE BIT(1) 5555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AXI_CMD_RECORD BIT(2) 5565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AXI_CMD_ZSL BIT(3) 5575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AXI_CMD_RAW_CAPTURE BIT(4) 5585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AXI_CMD_LIVESHOT BIT(5) 5595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* vfe config command: config command(from config thread)*/ 5615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd { 5625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cmd_type; 5635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t length; 5645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *value; 5655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vpe_cfg_cmd { 5685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cmd_type; 5695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t length; 5705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *value; 5715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_CAMERA_ENABLE_NAME_LEN 32 5745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct camera_enable_cmd { 5755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin char name[MAX_CAMERA_ENABLE_NAME_LEN]; 5765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_OUTPUT1 0 5795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_OUTPUT2 1 5805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_OUTPUT1_OUTPUT2 2 5815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_THUMBNAIL 3 5825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_MAINIMG 4 5835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_RAW_MAINIMG 5 5845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_AEC_AWB 6 5855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_AF 7 5865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_AEC 8 5875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_AWB 9 5885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_RS 10 5895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_CS 11 5905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_IHIST 12 5915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_SKIN 13 5925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_VIDEO 14 5935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_PREVIEW 15 5945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_VIDEO_VPE 16 5955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_C2D 17 5965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_MAINIMG_VPE 18 5975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_THUMBNAIL_VPE 19 5985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_BAYER_GRID 20 5995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_BAYER_FOCUS 21 6005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_BAYER_HIST 22 6015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_BAYER_EXPOSURE 23 6025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PMEM_MAX 24 6035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_AEAW 0 6055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_AEC 1 6065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_AF 2 6075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_AWB 3 6085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_RS 4 6095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_CS 5 6105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_IHIST 6 6115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_SKIN 7 6125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_BG 8 6135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_BF 9 6145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_BE 10 6155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_BHIST 11 6165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define STAT_MAX 12 6175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FRAME_PREVIEW_OUTPUT1 0 6195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FRAME_PREVIEW_OUTPUT2 1 6205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FRAME_SNAPSHOT 2 6215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FRAME_THUMBNAIL 3 6225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FRAME_RAW_SNAPSHOT 4 6235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FRAME_MAX 5 6245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_stats_enum_type { 6265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_AEC, /* legacy based AEC */ 6275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_AF, /* legacy based AF */ 6285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_AWB, /* legacy based AWB */ 6295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_RS, /* legacy based RS */ 6305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_CS, /* legacy based CS */ 6315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_IHIST, /* legacy based HIST */ 6325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_SKIN, /* legacy based SKIN */ 6335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_BG, /* Bayer Grids */ 6345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_BF, /* Bayer Focus */ 6355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_BE, /* Bayer Exposure*/ 6365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_BHIST, /* Bayer Hist */ 6375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_AE_AW, /* legacy stats for vfe 2.x*/ 6385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_COMP, /* Composite stats */ 6395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_STATS_TYPE_MAX /* MAX */ 6405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_stats_buf_info { 6435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int type; /* msm_stats_enum_type */ 6445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 6455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *vaddr; 6465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t offset; 6475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t len; 6485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t y_off; 6495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cbcr_off; 6505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar0_off; 6515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar1_off; 6525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar2_off; 6535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t active; 6545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int buf_idx; 6555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_pmem_info { 6585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int type; 6595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 6605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *vaddr; 6615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t offset; 6625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t len; 6635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t y_off; 6645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cbcr_off; 6655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar0_off; 6665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar1_off; 6675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar2_off; 6685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t active; 6695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct outputCfg { 6725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t height; 6735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t width; 6745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t window_height_firstline; 6765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t window_height_lastline; 6775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDEO_NODE 0 6805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MCTL_NODE 1 6815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_1 0 6835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_2 1 6845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_1_AND_2 2 /* snapshot only */ 6855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_1_AND_3 3 /* video */ 6865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMIF_TO_AXI_VIA_OUTPUT_2 4 6875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 5 6885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 6 6895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_1_2_AND_3 7 6905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_ALL_CHNLS 8 6915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_VIDEO_ALL_CHNLS 9 6925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_ZSL_ALL_CHNLS 10 6935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_ZSL_ALL_CHNLS 6945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_PRIM BIT(8) 6965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_PRIM_ALL_CHNLS BIT(9) 6975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_SEC BIT(10) 6985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_SEC_ALL_CHNLS BIT(11) 6995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TERT1 BIT(12) 7005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TERT2 BIT(13) 7015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_FRAME_PREV_1 0 7055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_FRAME_PREV_2 1 7065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_FRAME_ENC 2 7075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_P BIT(0) 7095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_T BIT(1) 7105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_S BIT(2) 7115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_V BIT(3) 7125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_L BIT(4) 7135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_ST_L BIT(5) 7145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_ST_R BIT(6) 7155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_ST_D BIT(7) 7165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_R BIT(8) 7175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_R1 BIT(9) 7185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_SAEC BIT(10) 7195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_SAFC BIT(11) 7205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_SAWB BIT(12) 7215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_IHST BIT(13) 7225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define OUTPUT_TYPE_CSTA BIT(14) 7235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct fd_roi_info { 7255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *info; 7265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int info_len; 7275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mem_map_info { 7305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cookie; 7315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t length; 7325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t mem_type; 7335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MEM_MMAP 0 7365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MEM_USERPTR 1 7375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PLANE_MAX 8 7385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PLANE_Y 0 7395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_PLANE_UV 1 7405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_frame { 7425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec ts; 7435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int path; 7445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int type; 7455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long buffer; 7465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t phy_offset; 7475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t y_off; 7485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cbcr_off; 7495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar0_off; 7505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar1_off; 7515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t planar2_off; 7525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 7535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *cropinfo; 7555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int croplen; 7565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t error_code; 7575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct fd_roi_info roi_info; 7585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 7595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stcam_quality_ind; 7605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stcam_conv_value; 7615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct ion_allocation_data ion_alloc; 7635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct ion_fd_data fd_data; 7645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int ion_dev_fd; 7655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_st_frame_packing { 7685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SIDE_BY_SIDE_HALF, 7695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SIDE_BY_SIDE_FULL, 7705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin TOP_DOWN_HALF, 7715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin TOP_DOWN_FULL, 7725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_st_crop { 7755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t in_w; 7765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t in_h; 7775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t out_w; 7785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t out_h; 7795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_st_half { 7825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_p0_off; 7835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_p1_off; 7845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_p0_stride; 7855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_p1_stride; 7865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pix_x_off; 7875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pix_y_off; 7885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_st_crop stCropInfo; 7895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_st_frame { 7925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_frame buf_info; 7935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int type; 7945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_st_frame_packing packing; 7955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_st_half L; 7965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_st_half R; 7975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int frame_id; 7985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_ERR_MASK (0xFFFFFFFF & 1) 8015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct stats_buff { 8035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long buff; 8045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 8055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 8065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_stats_buf { 8085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t awb_ymin; 8095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff aec; 8105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff awb; 8115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff af; 8125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff be; 8135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff ihist; 8145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff rs; 8155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff cs; 8165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stats_buff skin; 8175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int type; 8185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t status_bits; 8195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long buffer; 8205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 8215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int length; 8225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct ion_handle *handle; 8235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_id; 8245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int buf_idx; 8255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 8265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT 0 8275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* video capture mode in VIDIOC_S_PARM */ 8285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_PREVIEW \ 8295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+1) 8305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* extendedmode for video recording in VIDIOC_S_PARM */ 8315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_VIDEO \ 8325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+2) 8335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* extendedmode for the full size main image in VIDIOC_S_PARM */ 8345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_MAIN (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+3) 8355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* extendedmode for the thumb nail image in VIDIOC_S_PARM */ 8365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_THUMBNAIL \ 8375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+4) 8385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* ISP_PIX_OUTPUT1: no pp, directly send output1 buf to user */ 8395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_ISP_PIX_OUTPUT1 \ 8405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+5) 8415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* ISP_PIX_OUTPUT2: no pp, directly send output2 buf to user */ 8425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_ISP_PIX_OUTPUT2 \ 8435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+6) 8445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* raw image type */ 8455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_RAW \ 8465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+7) 8475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* RDI dump */ 8485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_RDI \ 8495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+8) 8505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* RDI dump 1 */ 8515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_RDI1 \ 8525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+9) 8535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* RDI dump 2 */ 8545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_RDI2 \ 8555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+10) 8565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_AEC \ 8575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+11) 8585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_AWB \ 8595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+12) 8605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_AF \ 8615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+13) 8625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_IHIST \ 8635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+14) 8645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_CS \ 8655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+15) 8665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_RS \ 8675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+16) 8685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_CSTA \ 8695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+17) 8705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_V2X_LIVESHOT \ 8715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+18) 8725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EXT_CAPTURE_MODE_MAX (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+19) 8735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_MOTION_ISO V4L2_CID_PRIVATE_BASE 8765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_EFFECT (V4L2_CID_PRIVATE_BASE+1) 8775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_HJR (V4L2_CID_PRIVATE_BASE+2) 8785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_LED_MODE (V4L2_CID_PRIVATE_BASE+3) 8795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_PREP_SNAPSHOT (V4L2_CID_PRIVATE_BASE+4) 8805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_EXP_METERING (V4L2_CID_PRIVATE_BASE+5) 8815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_ISO (V4L2_CID_PRIVATE_BASE+6) 8825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_CAM_MODE (V4L2_CID_PRIVATE_BASE+7) 8835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_LUMA_ADAPTATION (V4L2_CID_PRIVATE_BASE+8) 8845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_BEST_SHOT (V4L2_CID_PRIVATE_BASE+9) 8855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_FOCUS_MODE (V4L2_CID_PRIVATE_BASE+10) 8865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_BL_DETECTION (V4L2_CID_PRIVATE_BASE+11) 8875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_SNOW_DETECTION (V4L2_CID_PRIVATE_BASE+12) 8885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_CTRL_CMD (V4L2_CID_PRIVATE_BASE+13) 8895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_EVT_SUB_INFO (V4L2_CID_PRIVATE_BASE+14) 8905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_STROBE_FLASH (V4L2_CID_PRIVATE_BASE+15) 8915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_INST_HANDLE (V4L2_CID_PRIVATE_BASE+16) 8925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_MMAP_INST (V4L2_CID_PRIVATE_BASE+17) 8935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_PP_PLANE_INFO (V4L2_CID_PRIVATE_BASE+18) 8945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PID_MAX MSM_V4L2_PID_PP_PLANE_INFO 8955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for video recording - two frame output queues */ 8975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_DEFAULT 0 8985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for video recording - two frame output queues */ 8995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_PREVIEW (MSM_V4L2_CAM_OP_DEFAULT+1) 9005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for video recording - two frame output queues */ 9015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_VIDEO (MSM_V4L2_CAM_OP_DEFAULT+2) 9025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for standard shapshot - two frame output queues */ 9035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_CAPTURE (MSM_V4L2_CAM_OP_DEFAULT+3) 9045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for zsl shapshot - three output queues */ 9055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_ZSL (MSM_V4L2_CAM_OP_DEFAULT+4) 9065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for raw snapshot - one frame output queue */ 9075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_RAW (MSM_V4L2_CAM_OP_DEFAULT+5) 9085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* camera operation mode for jpeg snapshot - one frame output queue */ 9095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CAM_OP_JPEG_CAPTURE (MSM_V4L2_CAM_OP_DEFAULT+6) 9105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_VID_CAP_TYPE 0 9135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_STREAM_ON 1 9145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_STREAM_OFF 2 9155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_SNAPSHOT 3 9165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_QUERY_CTRL 4 9175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_GET_CTRL 5 9185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_SET_CTRL 6 9195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_QUERY 7 9205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_GET_CROP 8 9215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_SET_CROP 9 9225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_OPEN 10 9235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_CLOSE 11 9245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_SET_CTRL_CMD 12 9255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_EVT_SUB_MASK 13 9265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PRIVATE_CMD 14 9275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_MAX 15 9285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAMERA_EXIT 43 9295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct crop_info { 9315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *info; 9325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int len; 9335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_postproc { 9365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int ftnum; 9375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_frame fthumnail; 9385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fmnum; 9395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_frame fmain; 9405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_snapshot_pp_status { 9435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *status; 9445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_MODE 0 9475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_EFFECT 1 9485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_START 2 9495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_PWR_UP 3 9505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_PWR_DOWN 4 9515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_WRITE_EXPOSURE_GAIN 5 9525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_DEFAULT_FOCUS 6 9535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_MOVE_FOCUS 7 9545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_REGISTER_TO_REAL_GAIN 8 9555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_REAL_TO_REGISTER_GAIN 9 9565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_FPS 10 9575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_PICT_FPS 11 9585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_BRIGHTNESS 12 9595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_CONTRAST 13 9605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_ZOOM 14 9615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_EXPOSURE_MODE 15 9625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_WB 16 9635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_ANTIBANDING 17 9645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_EXP_GAIN 18 9655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_PICT_EXP_GAIN 19 9665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_LENS_SHADING 20 9675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_PICT_FPS 21 9685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_PREV_L_PF 22 9695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_PREV_P_PL 23 9705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_PICT_L_PF 24 9715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_PICT_P_PL 25 9725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_AF_MAX_STEPS 26 9735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_PICT_MAX_EXP_LC 27 9745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SEND_WB_INFO 28 9755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SENSOR_INIT 29 9765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_3D_CALI_DATA 30 9775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_CALIB_DATA 31 9785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_OUTPUT_INFO 32 9795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_EEPROM_INFO 33 9805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_EEPROM_DATA 34 9815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_ACTUATOR_INFO 35 9825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_ACTUATOR_INFO 36 9835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* TBD: QRD */ 9845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_SATURATION 37 9855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_SHARPNESS 38 9865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_TOUCHAEC 39 9875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_AUTO_FOCUS 40 9885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_AUTOFLASH 41 9895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_EXPOSURE_COMPENSATION 42 9905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_SET_ISO 43 9915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_START_STREAM 44 9925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_STOP_STREAM 45 9935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GET_CSI_PARAMS 46 9945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_POWER_UP 47 9955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_POWER_DOWN 48 9965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_WRITE_I2C_ARRAY 49 9975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_READ_I2C_ARRAY 50 9985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_PCLK_CHANGE 51 9995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_CONFIG_VREG_ARRAY 52 10005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_CONFIG_CLK_ARRAY 53 10015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_GPIO_OP 54 10025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CFG_MAX 55 10035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MOVE_NEAR 0 10065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MOVE_FAR 1 10075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_PREVIEW_MODE 0 10095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_SNAPSHOT_MODE 1 10105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_RAW_SNAPSHOT_MODE 2 10115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_HFR_60FPS_MODE 3 10125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_HFR_90FPS_MODE 4 10135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_HFR_120FPS_MODE 5 10145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_QTR_SIZE 0 10165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_FULL_SIZE 1 10175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_QVGA_SIZE 2 10185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SENSOR_INVALID_SIZE 3 10195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_OFF 0 10215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_MONO 1 10225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_NEGATIVE 2 10235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_SOLARIZE 3 10245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_SEPIA 4 10255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_POSTERIZE 5 10265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_WHITEBOARD 6 10275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_BLACKBOARD 7 10285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_AQUA 8 10295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_EMBOSS 9 10305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_SKETCH 10 10315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_NEON 11 10325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_FADED 12 10335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_VINTAGECOOL 13 10345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_VINTAGEWARM 14 10355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_ACCENT_BLUE 15 10365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_ACCENT_GREEN 16 10375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_ACCENT_ORANGE 17 10385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_MAX 18 10395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* QRD */ 10415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_BW 10 10425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_BLUISH 12 10435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_REDDISH 13 10445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EFFECT_GREENISH 14 10455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* QRD */ 10475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ANTIBANDING_OFF 0 10485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ANTIBANDING_50HZ 2 10495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ANTIBANDING_60HZ 1 10505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ANTIBANDING_AUTO 3 10515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV0 0 10535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV1 1 10545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV2 2 10555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV3 3 10565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV4 4 10575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV5 5 10585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV6 6 10595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV7 7 10605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV8 8 10615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_CONTRAST_LV9 9 10625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV0 0 10645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV1 1 10655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV2 2 10665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV3 3 10675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV4 4 10685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV5 5 10695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV6 6 10705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV7 7 10715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_BRIGHTNESS_LV8 8 10725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV0 0 10755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV1 1 10765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV2 2 10775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV3 3 10785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV4 4 10795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV5 5 10805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV6 6 10815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV7 7 10825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SATURATION_LV8 8 10835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV0 0 10855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV1 3 10865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV2 6 10875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV3 9 10885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV4 12 10895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV5 15 10905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV6 18 10915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV7 21 10925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV8 24 10935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV9 27 10945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SHARPNESS_LV10 30 10955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SETAE_AVERAGE 0 10975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_SETAE_CENWEIGHT 1 10985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 10995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_AUTO 1 /* This list must match aeecamera.h */ 11005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_CUSTOM 2 11015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_INCANDESCENT 3 11025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_FLUORESCENT 4 11035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_DAYLIGHT 5 11045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_CLOUDY_DAYLIGHT 6 11055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_TWILIGHT 7 11065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_WB_SHADE 8 11075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EXPOSURE_COMPENSATION_LV0 12 11095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EXPOSURE_COMPENSATION_LV1 6 11105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EXPOSURE_COMPENSATION_LV2 0 11115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EXPOSURE_COMPENSATION_LV3 -6 11125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_EXPOSURE_COMPENSATION_LV4 -12 11135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_saturation_level { 11155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L0, 11165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L1, 11175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L2, 11185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L3, 11195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L4, 11205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L5, 11215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L6, 11225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L7, 11235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L8, 11245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L9, 11255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SATURATION_L10, 11265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_contrast_level { 11295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L0, 11305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L1, 11315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L2, 11325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L3, 11335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L4, 11345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L5, 11355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L6, 11365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L7, 11375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L8, 11385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L9, 11395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_CONTRAST_L10, 11405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_exposure_level { 11445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXPOSURE_N2, 11455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXPOSURE_N1, 11465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXPOSURE_D, 11475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXPOSURE_P1, 11485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXPOSURE_P2, 11495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_sharpness_level { 11525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L0, 11535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L1, 11545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L2, 11555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L3, 11565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L4, 11575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L5, 11585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_SHARPNESS_L6, 11595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_expo_metering_mode { 11625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXP_FRAME_AVERAGE, 11635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXP_CENTER_WEIGHTED, 11645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EXP_SPOT_METERING, 11655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_iso_mode { 11685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_AUTO = 0, 11695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_DEBLUR, 11705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_100, 11715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_200, 11725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_400, 11735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_800, 11745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_ISO_1600, 11755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_wb_mode { 11785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_OFF, 11795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_AUTO , 11805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_CUSTOM, 11815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_INCANDESCENT, 11825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_FLUORESCENT, 11835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_DAYLIGHT, 11845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_WB_CLOUDY_DAYLIGHT, 11855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 11865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 11875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_special_effect { 11885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_OFF, 11895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_MONO, 11905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_NEGATIVE, 11915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_SOLARIZE, 11925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_SEPIA, 11935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_POSTERAIZE, 11945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_WHITEBOARD, 11955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_BLACKBOARD, 11965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_AQUA, 11975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_EMBOSS, 11985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_SKETCH, 11995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_NEON, 12005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_EFFECT_MAX, 12015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_v4l2_power_line_frequency { 12045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_POWER_LINE_OFF, 12055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_POWER_LINE_60HZ, 12065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_POWER_LINE_50HZ, 12075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_V4L2_POWER_LINE_AUTO, 12085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ISO_TYPE_AUTO 0 12115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMEAR_ISO_TYPE_HJR 1 12125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMEAR_ISO_TYPE_100 2 12135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ISO_TYPE_200 3 12145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ISO_TYPE_400 4 12155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMEAR_ISO_TYPE_800 5 12165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAMERA_ISO_TYPE_1600 6 12175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_pict_fps { 12195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t prevfps; 12205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t pictfps; 12215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct exp_gain_cfg { 12245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gain; 12255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t line; 12265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct focus_cfg { 12295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t steps; 12305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int dir; 12315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct fps_cfg { 12345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t f_mult; 12355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t fps_div; 12365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pict_fps_div; 12375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct wb_info_cfg { 12395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t red_gain; 12405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t green_gain; 12415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t blue_gain; 12425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_3d_exp_cfg { 12445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gain; 12455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t line; 12465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t r_gain; 12475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t b_gain; 12485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gr_gain; 12495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gb_gain; 12505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gain_adjust; 12515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_3d_cali_data_t{ 12535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char left_p_matrix[3][4][8]; 12545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char right_p_matrix[3][4][8]; 12555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char square_len[8]; 12565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char focal_len[8]; 12575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char pixel_pitch[8]; 12585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_r; 12595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_b; 12605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_gb; 12615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_af_far; 12625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_af_mid; 12635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_af_short; 12645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_af_5um; 12655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_af_50up; 12665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t left_af_50down; 12675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_r; 12685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_b; 12695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_gb; 12705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_af_far; 12715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_af_mid; 12725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_af_short; 12735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_af_5um; 12745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_af_50up; 12755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t right_af_50down; 12765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_init_cfg { 12785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t prev_res; 12795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t pict_res; 12805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_calib_data { 12835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Color Related Measurements */ 12845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t r_over_g; 12855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t b_over_g; 12865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gr_over_gb; 12875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Lens Related Measurements */ 12895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t macro_2_inf; 12905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t inf_2_macro; 12915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t stroke_amt; 12925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t af_pos_1m; 12935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t af_pos_inf; 12945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 12955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 12965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_sensor_resolution_t { 12975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_FULL, 12985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_QTR, 12995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_2, 13005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_3, 13015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_4, 13025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_5, 13035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_6, 13045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_RES_7, 13055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_SENSOR_INVALID_RES, 13065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_output_info_t { 13095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t x_output; 13105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t y_output; 13115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t line_length_pclk; 13125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t frame_length_lines; 13135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t vt_pixel_clk; 13145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t op_pixel_clk; 13155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t binning_factor; 13165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_output_info_t { 13195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_sensor_output_info_t *output_info; 13205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t num_info; 13215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_exp_gain_info_t { 13245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t coarse_int_time_addr; 13255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t global_gain_addr; 13265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t vert_offset; 13275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_output_reg_addr_t { 13305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t x_output; 13315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t y_output; 13325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t line_length_pclk; 13335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t frame_length_lines; 13345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_driver_params_type { 13375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_setting *init_settings; 13385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t init_settings_size; 13395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_setting *mode_settings; 13405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t mode_settings_size; 13415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_sensor_output_reg_addr_t *sensor_output_reg_addr; 13425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_setting *start_settings; 13435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_setting *stop_settings; 13445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_setting *groupon_settings; 13455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_setting *groupoff_settings; 13465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_sensor_exp_gain_info_t *sensor_exp_gain_info; 13475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_sensor_output_info_t *output_info; 13485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct mirror_flip { 13515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t x_mirror; 13525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t y_flip; 13535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct cord { 13565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t x; 13575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t y; 13585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_eeprom_data_t { 13615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *eeprom_data; 13625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t index; 13635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_vc_cfg { 13665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t cid; 13675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t dt; 13685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t decode_format; 13695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct csi_lane_params_t { 13725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t csi_lane_assign; 13735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csi_lane_mask; 13745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csi_if; 13755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csid_core[2]; 13765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csi_phy_sel; 13775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_lut_params { 13805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_cid; 13815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csid_vc_cfg *vc_cfg; 13825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_params { 13855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t lane_cnt; 13865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t lane_assign; 13875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t phy_sel; 13885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csid_lut_params lut_params; 13895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csiphy_params { 13925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t lane_cnt; 13935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t settle_cnt; 13945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t lane_mask; 13955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t combo_mode; 13965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csid_core; 13975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 13985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 13995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csi2_params { 14005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csid_params csid_params; 14015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csiphy_params csiphy_params; 14025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_csi_data_format { 14055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSI_8BIT, 14065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSI_10BIT, 14075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSI_12BIT, 14085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csi_params { 14115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_camera_csi_data_format data_format; 14125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t lane_cnt; 14135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t lane_assign; 14145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t settle_cnt; 14155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t dpcm_scheme; 14165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum csic_cfg_type_t { 14195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSIC_INIT, 14205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSIC_CFG, 14215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct csic_cfg_data { 14245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum csic_cfg_type_t cfgtype; 14255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csi_params *csic_params; 14265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum csid_cfg_type_t { 14295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSID_INIT, 14305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSID_CFG, 14315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct csid_cfg_data { 14345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum csid_cfg_type_t cfgtype; 14355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 14365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t csid_version; 14375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csid_params *csid_params; 14385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } cfg; 14395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum csiphy_cfg_type_t { 14425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSIPHY_INIT, 14435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSIPHY_CFG, 14445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct csiphy_cfg_data { 14475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum csiphy_cfg_type_t cfgtype; 14485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_csiphy_params *csiphy_params; 14495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_EMBED_DATA 0x12 14525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RESERVED_DATA_0 0x13 14535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_YUV422_8 0x1E 14545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RAW8 0x2A 14555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RAW10 0x2B 14565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RAW12 0x2C 14575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_6BIT 0 14595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_8BIT 1 14605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_10BIT 2 14615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_DPCM_10_8_10 5 14625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISPIF_STREAM(intf, action, vfe) (((intf)<<ISPIF_S_STREAM_SHIFT)+\ 14645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (action)+((vfe)<<ISPIF_VFE_INTF_SHIFT)) 14655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISPIF_ON_FRAME_BOUNDARY (0x01 << 0) 14665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISPIF_OFF_FRAME_BOUNDARY (0x01 << 1) 14675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISPIF_OFF_IMMEDIATELY (0x01 << 2) 14685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISPIF_S_STREAM_SHIFT 4 14695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISPIF_VFE_INTF_SHIFT 12 14705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PIX_0 (0x01 << 0) 14725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define RDI_0 (0x01 << 1) 14735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define PIX_1 (0x01 << 2) 14745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define RDI_1 (0x01 << 3) 14755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define RDI_2 (0x01 << 4) 14765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_ispif_vfe_intf { 14785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE0, 14795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE1, 14805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_MAX, 14815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_ispif_intftype { 14845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PIX0, 14855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin RDI0, 14865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PIX1, 14875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin RDI1, 14885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin RDI2, 14895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin INTF_MAX, 14905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_ispif_vc { 14935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VC0, 14945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VC1, 14955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VC2, 14965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VC3, 14975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 14985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 14995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_ispif_cid { 15005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID0, 15015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID1, 15025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID2, 15035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID3, 15045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID4, 15055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID5, 15065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID6, 15075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID7, 15085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID8, 15095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID9, 15105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID10, 15115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID11, 15125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID12, 15135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID13, 15145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID14, 15155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CID15, 15165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_ispif_params { 15195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t intftype; 15205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t cid_mask; 15215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t csid; 15225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t vfe_intf; 15235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_ispif_params_list { 15265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t len; 15275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_ispif_params params[4]; 15285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum ispif_cfg_type_t { 15315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_INIT, 15325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_SET_CFG, 15335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_SET_ON_FRAME_BOUNDARY, 15345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_SET_OFF_FRAME_BOUNDARY, 15355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_SET_OFF_IMMEDIATELY, 15365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_RELEASE, 15375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct ispif_cfg_data { 15405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum ispif_cfg_type_t cfgtype; 15415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 15425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t csid_version; 15435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cmd; 15445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_ispif_params_list ispif_params; 15455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } cfg; 15465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_i2c_reg_addr_type { 15495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_BYTE_ADDR = 1, 15505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_WORD_ADDR, 15515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_3B_ADDR, 15525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_reg_array { 15555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_addr; 15565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_data; 15575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_i2c_data_type { 15605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_BYTE_DATA = 1, 15615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_WORD_DATA, 15625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_SET_BYTE_MASK, 15635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_UNSET_BYTE_MASK, 15645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_SET_WORD_MASK, 15655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_UNSET_WORD_MASK, 15665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA, 15675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_reg_setting { 15705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_i2c_reg_array *reg_setting; 15715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t size; 15725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_camera_i2c_reg_addr_type addr_type; 15735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_camera_i2c_data_type data_type; 15745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t delay; 15755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum oem_setting_type { 15785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin I2C_READ = 1, 15795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin I2C_WRITE, 15805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_OP, 15815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EEPROM_READ, 15825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VREG_SET, 15835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CLK_SET, 15845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_oem_setting { 15875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum oem_setting_type type; 15885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *data; 15895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum camera_vreg_type { 15925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin REG_LDO, 15935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin REG_VS, 15945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin REG_GPIO, 15955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 15965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 15975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_vreg_name_t { 15985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAM_VDIG, 15995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAM_VIO, 16005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAM_VANA, 16015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAM_VAF, 16025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAM_VREG_MAX, 16035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csi_lane_params { 16065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t csi_lane_assign; 16075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t csi_lane_mask; 16085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct camera_vreg_t { 16115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin const char *reg_name; 16125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int min_voltage; 16135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int max_voltage; 16145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int op_mode; 16155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t delay; 16165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_vreg_setting { 16195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct camera_vreg_t *cam_vreg; 16205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t num_vreg; 16215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t enable; 16225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cam_clk_info { 16255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin const char *clk_name; 16265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long clk_rate; 16275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t delay; 16285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cam_clk_setting { 16315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_cam_clk_info *clk_info; 16325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t num_clk_info; 16335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t enable; 16345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_cfg_data { 16375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cfgtype; 16385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int mode; 16395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int rs; 16405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t max_steps; 16415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 16435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t effect; 16445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t lens_shading; 16455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t prevl_pf; 16465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t prevp_pl; 16475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t pictl_pf; 16485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t pictp_pl; 16495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pict_max_exp_lc; 16505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t p_fps; 16515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t iso_type; 16525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct sensor_init_cfg init_info; 16535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct sensor_pict_fps gfps; 16545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct exp_gain_cfg exp_gain; 16555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct focus_cfg focus; 16565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct fps_cfg fps; 16575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct wb_info_cfg wb_info; 16585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct sensor_3d_exp_cfg sensor_3d_exp; 16595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct sensor_calib_data calib_info; 16605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct sensor_output_info_t output_info; 16615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_data_t eeprom_data; 16625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct csi_lane_params_t csi_lane_params; 16635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* QRD */ 16645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t antibanding; 16655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t contrast; 16665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t saturation; 16675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t sharpness; 16685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t brightness; 16695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int ae_mode; 16705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t wb_val; 16715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t exp_compensation; 16725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pclk; 16735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct cord aec_cord; 16745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int is_autoflash; 16755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct mirror_flip mirror_flip; 16765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *setting; 16775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } cfg; 16785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum gpio_operation_type { 16815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_REQUEST, 16825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_FREE, 16835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_SET_DIRECTION_OUTPUT, 16845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_SET_DIRECTION_INPUT, 16855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_GET_VALUE, 16865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GPIO_SET_VALUE, 16875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cam_gpio_operation { 16905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum gpio_operation_type op_type; 16915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned address; 16925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int value; 16935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin const char *tag; 16945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 16955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 16965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct damping_params_t { 16975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t damping_step; 16985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t damping_delay; 16995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t hw_params; 17005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum actuator_type { 17035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_VCM, 17045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_PIEZO, 17055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_HVCM, 17065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_BIVCM, 17075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_data_type { 17105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_BYTE_DATA = 1, 17115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_WORD_DATA, 17125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_addr_type { 17155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_BYTE_ADDR = 1, 17165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_WORD_ADDR, 17175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_write_type { 17205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_WRITE_HW_DAMP, 17215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_WRITE_DAC, 17225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_WRITE, 17235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_WRITE_DIR_REG, 17245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_POLL, 17255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_ACTUATOR_READ_WRITE, 17265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_reg_params_t { 17295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_actuator_write_type reg_write_type; 17305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t hw_mask; 17315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_addr; 17325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t hw_shift; 17335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t data_type; 17345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t addr_type; 17355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_data; 17365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t delay; 17375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct reg_settings_t { 17405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_addr; 17415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t reg_data; 17425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct region_params_t { 17455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* [0] = ForwardDirection Macro boundary 17465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin [1] = ReverseDirection Inf boundary 17475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 17485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t step_bound[2]; 17495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t code_per_step; 17505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_move_params_t { 17535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t dir; 17545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t sign_dir; 17555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int16_t dest_step_pos; 17565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t num_steps; 17575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct damping_params_t *ringing_params; 17585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_tuning_params_t { 17615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int16_t initial_code; 17625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t pwd_step; 17635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t region_size; 17645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t total_steps; 17655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct region_params_t *region_params; 17665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_params_t { 17695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum actuator_type act_type; 17705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t reg_tbl_size; 17715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t data_size; 17725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t init_setting_size; 17735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t i2c_addr; 17745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_actuator_addr_type i2c_addr_type; 17755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_actuator_data_type i2c_data_type; 17765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_actuator_reg_params_t *reg_tbl_params; 17775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct reg_settings_t *init_settings; 17785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_set_info_t { 17815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_actuator_params_t actuator_params; 17825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_actuator_tuning_params_t af_tuning_params; 17835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_get_info_t { 17865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t focal_length_num; 17875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t focal_length_den; 17885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t f_number_num; 17895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t f_number_den; 17905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t f_pix_num; 17915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t f_pix_den; 17925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t total_f_dist_num; 17935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t total_f_dist_den; 17945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t hor_view_angle_num; 17955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t hor_view_angle_den; 17965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t ver_view_angle_num; 17975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t ver_view_angle_den; 17985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 17995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum af_camera_name { 18015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_MAIN_CAM_0, 18025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_MAIN_CAM_1, 18035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_MAIN_CAM_2, 18045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_MAIN_CAM_3, 18055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_MAIN_CAM_4, 18065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_MAIN_CAM_5, 18075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_WEB_CAM_0, 18085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_WEB_CAM_1, 18095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_WEB_CAM_2, 18105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_cfg_data { 18135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cfgtype; 18145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t is_af_supported; 18155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 18165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_actuator_move_params_t move; 18175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_actuator_set_info_t set_info; 18185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_actuator_get_info_t get_info; 18195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum af_camera_name cam_name; 18205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } cfg; 18215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_eeprom_support { 18245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t is_supported; 18255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t size; 18265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t index; 18275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t qvalue; 18285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_calib_wb { 18315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t r_over_g; 18325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t b_over_g; 18335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gr_over_gb; 18345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_calib_af { 18375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t macro_dac; 18385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t inf_dac; 18395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t start_dac; 18405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_calib_lsc { 18435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t r_gain[221]; 18445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t b_gain[221]; 18455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gr_gain[221]; 18465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t gb_gain[221]; 18475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct pixel_t { 18505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int x; 18515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int y; 18525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_calib_dpc { 18555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t validcount; 18565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct pixel_t snapshot_coord[128]; 18575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct pixel_t preview_coord[128]; 18585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct pixel_t video_coord[128]; 18595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_calib_raw { 18625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t *data; 18635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t size; 18645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_eeprom_info_t { 18675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_support af; 18685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_support wb; 18695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_support lsc; 18705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_support dpc; 18715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_support raw; 18725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_eeprom_cfg_data { 18755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cfgtype; 18765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t is_eeprom_supported; 18775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 18785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_eeprom_data_t get_data; 18795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_camera_eeprom_info_t get_info; 18805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } cfg; 18815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct sensor_large_data { 18845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cfgtype; 18855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 18865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct sensor_3d_cali_data_t sensor_3d_cali_data; 18875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } data; 18885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum sensor_type_t { 18915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin BAYER, 18925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin YUV, 18935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin JPEG_SOC, 18945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 18955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 18965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum flash_type { 18975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin LED_FLASH, 18985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STROBE_FLASH, 18995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum strobe_flash_ctrl_type { 19025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STROBE_FLASH_CTRL_INIT, 19035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STROBE_FLASH_CTRL_CHARGE, 19045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin STROBE_FLASH_CTRL_RELEASE 19055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct strobe_flash_ctrl_data { 19085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum strobe_flash_ctrl_type type; 19095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int charge_en; 19105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_info { 19135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int num_cameras; 19145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t has_3d_support[MSM_MAX_CAMERA_SENSORS]; 19155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t is_internal_cam[MSM_MAX_CAMERA_SENSORS]; 19165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t s_mount_angle[MSM_MAX_CAMERA_SENSORS]; 19175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin const char *video_dev_name[MSM_MAX_CAMERA_SENSORS]; 19185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum sensor_type_t sensor_type[MSM_MAX_CAMERA_SENSORS]; 19195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cam_config_dev_info { 19225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int num_config_nodes; 19235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin const char *config_dev_name[MSM_MAX_CAMERA_CONFIGS]; 19245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int config_dev_id[MSM_MAX_CAMERA_CONFIGS]; 19255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_node_info { 19285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int num_mctl_nodes; 19295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin const char *mctl_node_name[MSM_MAX_CAMERA_SENSORS]; 19305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct flash_ctrl_data { 19335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int flashtype; 19345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 19355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int led_state; 19365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct strobe_flash_ctrl_data strobe_ctrl; 19375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } ctrl_data; 19385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_NAME 0 19415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_PREVIEW_LINE_PER_FRAME 1 19425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_PREVIEW_PIXELS_PER_LINE 2 19435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_SNAPSHOT_LINE_PER_FRAME 3 19445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_SNAPSHOT_PIXELS_PER_LINE 4 19455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_SNAPSHOT_FPS 5 19465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_SNAPSHOT_MAX_EP_LINE_CNT 6 19475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camsensor_info { 19495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin char name[MAX_SENSOR_NAME]; 19505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t flash_enabled; 19515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t strobe_flash_enabled; 19525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t actuator_enabled; 19535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t ispif_supported; 19545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int8_t total_steps; 19555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t support_3d; 19565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum flash_type flashtype; 19575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum sensor_type_t sensor_type; 19585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pxlcode; /* enum v4l2_mbus_pixelcode */ 19595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t camera_type; /* msm_camera_type */ 19605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int mount_angle; 19615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t max_width; 19625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t max_height; 19635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SINGLE_PLANE 0 19665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MULTI_PLANE_Y 0 19675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MULTI_PLANE_CBCR 1 19685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MULTI_PLANE_CB 1 19695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MULTI_PLANE_CR 2 19705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct plane_data { 19725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int plane_id; 19735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t offset; 19745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long size; 19755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct img_plane_info { 19785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t width; 19795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t height; 19805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pixelformat; 19815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t buffer_type; /*Single/Multi planar*/ 19825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t output_port; 19835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t ext_mode; 19845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_planes; 19855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct plane_data plane[MAX_PLANES]; 19865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sp_y_offset; 19875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t inst_handle; 19885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 19895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCAMERA_NAME "qcamera" 19915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCAMERA_SERVER_NAME "qcamera_server" 19925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCAMERA_DEVICE_GROUP_ID 1 19935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCAMERA_VNODE_GROUP_ID 2 19945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 19955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_cam_subdev_type { 19965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSIPHY_DEV, 19975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSID_DEV, 19985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CSIC_DEV, 19995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ISPIF_DEV, 20005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VFE_DEV, 20015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin AXI_DEV, 20025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VPE_DEV, 20035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SENSOR_DEV, 20045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ACTUATOR_DEV, 20055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin EEPROM_DEV, 20065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin GESTURE_DEV, 20075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin IRQ_ROUTER_DEV, 20085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CPP_DEV, 20095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CCI_DEV, 20105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin FLASH_DEV, 20115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 20125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mctl_set_sdev_data { 20145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t revision; 20155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_cam_subdev_type sdev_type; 20165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 20175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_GET_CAMERA_INFO \ 20195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct msm_camera_v4l2_ioctl_t) 20205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_GET_CONFIG_INFO \ 20225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct msm_camera_v4l2_ioctl_t) 20235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_GET_MCTL_INFO \ 20255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct msm_camera_v4l2_ioctl_t) 20265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_CTRL_CMD_DONE \ 20285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct msm_camera_v4l2_ioctl_t) 20295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_GET_EVENT_PAYLOAD \ 20315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct msm_camera_v4l2_ioctl_t) 20325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_IOCTL_SEND_EVENT \ 20345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct v4l2_event) 20355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_CFG_VPE \ 20375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 7, struct msm_vpe_cfg_cmd) 20385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_PRIVATE_S_CTRL \ 20405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_camera_v4l2_ioctl_t) 20415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_PRIVATE_G_CTRL \ 20435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 9, struct msm_camera_v4l2_ioctl_t) 20445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_PRIVATE_GENERAL \ 20465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW('V', BASE_VIDIOC_PRIVATE + 10, struct msm_camera_v4l2_ioctl_t) 20475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VPE_INIT \ 20495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO('V', BASE_VIDIOC_PRIVATE + 15) 20505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VPE_RELEASE \ 20525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO('V', BASE_VIDIOC_PRIVATE + 16) 20535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VPE_CFG \ 20555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 17, struct msm_mctl_pp_params *) 20565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_AXI_INIT \ 20585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 18, uint8_t *) 20595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_AXI_RELEASE \ 20615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO('V', BASE_VIDIOC_PRIVATE + 19) 20625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_AXI_CFG \ 20645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 20, void *) 20655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_AXI_IRQ \ 20675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 21, void *) 20685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_AXI_BUF_CFG \ 20705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 22, void *) 20715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_AXI_RDI_COUNT_UPDATE \ 20735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 23, struct rdi_count_msg) 20745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VFE_INIT \ 20765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO('V', BASE_VIDIOC_PRIVATE + 24) 20775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VFE_RELEASE \ 20795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IO('V', BASE_VIDIOC_PRIVATE + 25) 20805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_v4l2_ioctl_t { 20825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t id; 20835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t len; 20845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t trans_code; 2085d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin void __user *ioctl_ptr; 20865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 20875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_vfe_params_t { 20895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t operation_mode; 20905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t capture_count; 20915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t skip_reset; 20925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t stop_immediately; 20935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t port_info; 20945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t inst_handle; 20955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t cmd_type; 20965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 20975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 20985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camss_irq_idx { 20995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_0, 21005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_1, 21015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_2, 21025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_3, 21035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_4, 21045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_5, 21055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_6, 21065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_7, 21075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_8, 21085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_9, 21095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_10, 21105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_11, 21115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_12, 21125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAMERA_SS_IRQ_MAX 21135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 21145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_cam_hw_idx { 21165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_MICRO, 21175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_CCI, 21185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_CSI0, 21195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_CSI1, 21205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_CSI2, 21215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_CSI3, 21225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_ISPIF, 21235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_CPP, 21245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_VFE0, 21255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_VFE1, 21265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_JPEG0, 21275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_JPEG1, 21285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_JPEG2, 21295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CAM_HW_MAX 21305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 21315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_irq_cfg { 21335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Bit mask of all the camera hardwares that needs to 21345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * be composited into a single IRQ to the MSM. 21355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Current usage: (may be updated based on hw changes) 21365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Bits 31:13 - Reserved. 21375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Bits 12:0 21385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 12 - MSM_CAM_HW_JPEG2 21395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 11 - MSM_CAM_HW_JPEG1 21405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 10 - MSM_CAM_HW_JPEG0 21415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 9 - MSM_CAM_HW_VFE1 21425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 8 - MSM_CAM_HW_VFE0 21435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 7 - MSM_CAM_HW_CPP 21445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 6 - MSM_CAM_HW_ISPIF 21455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 5 - MSM_CAM_HW_CSI3 21465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 4 - MSM_CAM_HW_CSI2 21475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 3 - MSM_CAM_HW_CSI1 21485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 2 - MSM_CAM_HW_CSI0 21495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1 - MSM_CAM_HW_CCI 21505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 0 - MSM_CAM_HW_MICRO 21515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 21525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t cam_hw_mask; 21535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t irq_idx; 21545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint8_t num_hwcore; 21555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 21565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_IRQROUTER_CFG_COMPIRQ \ 2158d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE, void __user *) 21595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_NUM_CPP_STRIPS 8 21615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_cpp_frame_type { 21635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CPP_OFFLINE_FRAME, 21645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin MSM_CPP_REALTIME_FRAME, 21655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 21665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cpp_frame_info_t { 21685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int32_t frame_id; 21695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t inst_id; 21705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t client_id; 21715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum msm_cpp_frame_type frame_type; 21725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t num_strips; 21735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 21745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_ver_num_info { 21765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t main; 21775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t minor; 21785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t rev; 21795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 21805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_CPP_CFG \ 21825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_camera_v4l2_ioctl_t) 21835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_CPP_GET_EVENTPAYLOAD \ 21855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct msm_camera_v4l2_ioctl_t) 21865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_CPP_GET_INST_INFO \ 21885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct msm_camera_v4l2_ioctl_t) 21895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_CPP_FRAME_DONE (V4L2_EVENT_PRIVATE_START + 0) 21915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 21925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Instance Handle - inst_handle 21935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Data bundle containing the information about where 21945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * to get a buffer for a particular camera instance. 21955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This is a bitmask containing the following data: 21965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Buffer Handle Bitmask: 21975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * ------------------------------------ 21985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Bits : Purpose 21995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * ------------------------------------ 22005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 31 : is Dev ID valid? 22015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 30 - 24 : Dev ID. 22025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 23 : is Image mode valid? 22035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 22 - 16 : Image mode. 22045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 15 : is MCTL PP inst idx valid? 22055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 14 - 8 : MCTL PP inst idx. 22065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 7 : is Video inst idx valid? 22075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 6 - 0 : Video inst idx. 22085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 22095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CLR_DEVID_MODE(handle) (handle &= 0x00FFFFFF) 22105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SET_DEVID_MODE(handle, data) \ 22115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (handle |= ((0x1 << 31) | ((data & 0x7F) << 24))) 22125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_DEVID_MODE(handle) \ 22135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ((handle & 0x80000000) ? ((handle & 0x7F000000) >> 24) : 0xFF) 22145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 22155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CLR_IMG_MODE(handle) (handle &= 0xFF00FFFF) 22165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SET_IMG_MODE(handle, data) \ 22175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (handle |= ((0x1 << 23) | ((data & 0x7F) << 16))) 22185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_IMG_MODE(handle) \ 22195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ((handle & 0x800000) ? ((handle & 0x7F0000) >> 16) : 0xFF) 22205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 22215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CLR_MCTLPP_INST_IDX(handle) (handle &= 0xFFFF00FF) 22225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SET_MCTLPP_INST_IDX(handle, data) \ 22235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (handle |= ((0x1 << 15) | ((data & 0x7F) << 8))) 22245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_MCTLPP_INST_IDX(handle) \ 22255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ((handle & 0x8000) ? ((handle & 0x7F00) >> 8) : 0xFF) 22265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 22275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CLR_VIDEO_INST_IDX(handle) (handle &= 0xFFFFFF00) 22285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GET_VIDEO_INST_IDX(handle) \ 22295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ((handle & 0x80) ? (handle & 0x7F) : 0xFF) 22305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SET_VIDEO_INST_IDX(handle, data) \ 22315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (handle |= (0x1 << 7) | (data & 0x7F)) 22325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 22335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif /* __UAPI_MSM_CAMERA_H */ 2234