1f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* Copyright (c) 2009-2013, The Linux Foundation. All rights reserved. 2d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 3d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * This program is free software; you can redistribute it and/or modify 4d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * it under the terms of the GNU General Public License version 2 and 5d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * only version 2 as published by the Free Software Foundation. 6d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 7d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * This program is distributed in the hope that it will be useful, 8d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * but WITHOUT ANY WARRANTY; without even the implied warranty of 9d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * GNU General Public License for more details. 11d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 12d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */ 13d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifndef __LINUX_MSM_CAMERA_H 14d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define __LINUX_MSM_CAMERA_H 15d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 16d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifdef MSM_CAMERA_BIONIC 17d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <sys/types.h> 18d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif 19f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#include <linux/videodev2.h> 20d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/types.h> 21d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/ioctl.h> 22d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifdef __KERNEL__ 23d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/cdev.h> 24d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif 25d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifdef MSM_CAMERA_GCC 26d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <time.h> 27d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#else 28d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/time.h> 29d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif 30d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 31d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/msm_ion.h> 32d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 33d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define BIT(nr) (1UL << (nr)) 34d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 35d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_MAGIC 'm' 36d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 37f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MAX_SERVER_PAYLOAD_LENGTH 8192 38f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 39d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_SENSOR_INFO \ 40d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 1, struct msm_camsensor_info *) 41d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 42d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_REGISTER_PMEM \ 43d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 2, struct msm_pmem_info *) 44d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 45d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNREGISTER_PMEM \ 46d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 3, unsigned) 47d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 48d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CTRL_COMMAND \ 49d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 4, struct msm_ctrl_cmd *) 50d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 51d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CONFIG_VFE \ 52d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 5, struct msm_camera_vfe_cfg_cmd *) 53d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 54d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_STATS \ 55d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 6, struct msm_camera_stats_event_ctrl *) 56d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 57d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GETFRAME \ 58d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 7, struct msm_camera_get_frame *) 59d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 60d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ENABLE_VFE \ 61d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 8, struct camera_enable_cmd *) 62d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 63d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CTRL_CMD_DONE \ 64d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 9, struct camera_cmd *) 65d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 66d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CONFIG_CMD \ 67d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 10, struct camera_cmd *) 68d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 69d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_DISABLE_VFE \ 70d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 11, struct camera_enable_cmd *) 71d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 72d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PAD_REG_RESET2 \ 73d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 12, struct camera_enable_cmd *) 74d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 75d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_VFE_APPS_RESET \ 76d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 13, struct camera_enable_cmd *) 77d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 78d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_FRAME_BUFFER \ 79d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 14, struct camera_enable_cmd *) 80d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 81d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_STATS_BUFFER \ 82d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 15, struct msm_stats_buf *) 83d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 84d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AXI_CONFIG \ 85d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 16, struct msm_camera_vfe_cfg_cmd *) 86d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 87d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_PICTURE \ 88d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 17, struct msm_frame *) 89d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 90d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_CROP \ 91d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 18, struct crop_info *) 92d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 93d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PICT_PP \ 94d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *) 95d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 96d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PICT_PP_DONE \ 97d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *) 98d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 99d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SENSOR_IO_CFG \ 100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 21, struct sensor_cfg_data *) 101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 102d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_FLASH_LED_CFG \ 103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 22, unsigned *) 104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNBLOCK_POLL_FRAME \ 106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO(MSM_CAM_IOCTL_MAGIC, 23) 107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CTRL_COMMAND_2 \ 109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 24, struct msm_ctrl_cmd *) 110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AF_CTRL \ 112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 25, struct msm_ctrl_cmt_t *) 113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AF_CTRL_DONE \ 115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *) 116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CONFIG_VPE \ 118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_camera_vpe_cfg_cmd *) 119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AXI_VPE_CONFIG \ 121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 28, struct msm_camera_vpe_cfg_cmd *) 122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STROBE_FLASH_CFG \ 124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 29, uint32_t *) 125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STROBE_FLASH_CHARGE \ 127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 30, uint32_t *) 128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STROBE_FLASH_RELEASE \ 130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO(MSM_CAM_IOCTL_MAGIC, 31) 131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_FLASH_CTRL \ 133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 32, struct flash_ctrl_data *) 134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ERROR_CONFIG \ 136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 33, uint32_t *) 137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ABORT_CAPTURE \ 139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO(MSM_CAM_IOCTL_MAGIC, 34) 140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_FD_ROI \ 142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 35, struct fd_roi_info *) 143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_CAMERA_INFO \ 145d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 36, struct msm_camera_info *) 146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNBLOCK_POLL_PIC_FRAME \ 148d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO(MSM_CAM_IOCTL_MAGIC, 37) 149d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_PIC_BUFFER \ 151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 38, struct camera_enable_cmd *) 152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PUT_ST_FRAME \ 154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 39, struct msm_camera_st_frame *) 155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_V4L2_EVT_NOTIFY \ 157f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOW(MSM_CAM_IOCTL_MAGIC, 40, struct v4l2_event_and_payload) 158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_MEM_MAP_INFO \ 160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 41, struct msm_mem_map_info *) 161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ACTUATOR_IO_CFG \ 163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 42, struct msm_actuator_cfg_data *) 164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_MCTL_POST_PROC \ 166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 43, struct msm_mctl_post_proc_cmd *) 167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RESERVE_FREE_FRAME \ 169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 44, struct msm_cam_evt_divert_frame *) 170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_FREE_FRAME \ 172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 45, struct msm_cam_evt_divert_frame *) 173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PICT_PP_DIVERT_DONE \ 175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 46, struct msm_pp_frame *) 176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SENSOR_V4l2_S_CTRL \ 178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 47, struct v4l2_control) 179d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SENSOR_V4l2_QUERY_CTRL \ 181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 48, struct v4l2_queryctrl) 182d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_KERNEL_SYSTEM_TIME \ 184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 49, struct timeval *) 185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_VFE_OUTPUT_TYPE \ 187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 50, uint32_t *) 188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_MCTL_DIVERT_DONE \ 190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 51, struct msm_cam_evt_divert_frame *) 191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_ACTUATOR_INFO \ 193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 52, struct msm_actuator_cfg_data *) 194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_EEPROM_IO_CFG \ 196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 53, struct msm_eeprom_cfg_data *) 197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ISPIF_IO_CFG \ 199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 54, struct ispif_cfg_data *) 200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_REQBUF \ 202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 55, struct msm_stats_reqbuf *) 203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_ENQUEUEBUF \ 205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 56, struct msm_stats_buf_info *) 206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_FLUSH_BUFQ \ 208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 57, struct msm_stats_flush_bufq *) 209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_MCTL_SDEV \ 211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 58, struct msm_mctl_set_sdev_data *) 212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNSET_MCTL_SDEV \ 214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(MSM_CAM_IOCTL_MAGIC, 59, struct msm_mctl_set_sdev_data *) 215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_INST_HANDLE \ 217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 60, uint32_t *) 218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_UNREG_BUF \ 220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(MSM_CAM_IOCTL_MAGIC, 61, struct msm_stats_flush_bufq *) 221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 222f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_CSIC_IO_CFG \ 223f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOWR(MSM_CAM_IOCTL_MAGIC, 62, struct csic_cfg_data *) 224f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 225f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_CSID_IO_CFG \ 226f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOWR(MSM_CAM_IOCTL_MAGIC, 63, struct csid_cfg_data *) 227f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 228f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_CSIPHY_IO_CFG \ 229f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOR(MSM_CAM_IOCTL_MAGIC, 64, struct csiphy_cfg_data *) 230f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 231f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_OEM \ 232f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOW(MSM_CAM_IOCTL_MAGIC, 65, struct sensor_cfg_data *) 233f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 234f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_AXI_INIT \ 235f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOWR(MSM_CAM_IOCTL_MAGIC, 66, uint8_t *) 236f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 237f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_AXI_RELEASE \ 238f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IO(MSM_CAM_IOCTL_MAGIC, 67) 239f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 240f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct v4l2_event_and_payload { 241f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct v4l2_event evt; 242f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t payload_length; 243f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t transaction_id; 244f2be60f5864338ca33d569f0086dac301b7066afDevin Kim void *payload; 245f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 246f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_reqbuf { 248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int num_buf; /* how many buffers requested */ 249f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int stats_type; /* stats type */ 250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 251d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 252d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_flush_bufq { 253f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int stats_type; /* enum msm_stats_enum_type */ 254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 255d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_pp_cmd { 257f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int32_t id; 258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t length; 259f2be60f5864338ca33d569f0086dac301b7066afDevin Kim void *value; 260d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 261d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 262d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_post_proc_cmd { 263d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int32_t type; 264d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_mctl_pp_cmd cmd; 265d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_OFF 0 268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_LOW 1 269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_HIGH 2 270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_INIT 3 271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_RELEASE 4 272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_STROBE_FLASH_NONE 0 274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_STROBE_FLASH_XENON 1 275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MAX_CAMERA_SENSORS 5 277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_SENSOR_NAME 32 278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_CAM_NAME_SIZE 32 279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACT_MOD_NAME_SIZE 32 280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACT_NAME_SIZE 32 281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define NUM_ACTUATOR_DIR 2 282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_SCENARIO 8 283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_REGION 5 284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_INIT_SET 12 285d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_TYPE_SIZE 32 286d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_REG_TBL_SIZE 8 287d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 288f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 289d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MAX_CAMERA_CONFIGS 2 290d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 291d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_SNAP 0x01 292d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_RAW_SNAP ((0x01)<<1) 293d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_PREV ((0x01)<<2) 294d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_THUMB ((0x01)<<3) 295d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV|PP_THUMB) 296d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 297d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_CTRL_CMD_DONE 0 298d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_SENSOR_VFE_CMD 1 299d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 300d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Should be same as VIDEO_MAX_PLANES in videodev2.h */ 301d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_PLANES 8 302d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 303d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/***************************************************** 304d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * structure 305d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *****************************************************/ 306d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 307d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* define five type of structures for userspace <==> kernel 308d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * space communication: 309d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * command 1 - 2 are from userspace ==> kernel 310d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * command 3 - 4 are from kernel ==> userspace 311d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 312d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 1. control command: control command(from control thread), 313d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * control status (from config thread); 314d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */ 315d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ctrl_cmd { 316d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t type; 317d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t length; 318d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *value; 319d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t status; 320d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t timeout_ms; 321f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int resp_fd; /* FIXME: to be used by the kernel, pass-through for now */ 322f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int vnode_id; /* video dev id. Can we overload resp_fd? */ 323d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int queue_idx; 324d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t evt_id; 325f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t stream_type; /* used to pass value to qcamera server */ 326f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int config_ident; /*used as identifier for config node*/ 327d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 328d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 329d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cam_evt_msg { 330d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short type; /* 1 == event (RPC), 0 == message (adsp) */ 331d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short msg_id; 332d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int len; /* size in, number of bytes out */ 333d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t frame_id; 334d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *data; 335d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct timespec timestamp; 336d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 337d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 338d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pp_frame_sp { 339d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* phy addr of the buffer */ 340f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned long phy_addr; 341f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t y_off; 342f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t cbcr_off; 343d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* buffer length */ 344f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t length; 345f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int32_t fd; 346f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t addr_offset; 347d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* mapped addr */ 348f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned long vaddr; 349d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 350d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 351d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pp_frame_mp { 352d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* phy addr of the plane */ 353f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned long phy_addr; 354d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* offset of plane data */ 355f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t data_offset; 356d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* plane length */ 357f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t length; 358f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int32_t fd; 359f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t addr_offset; 360d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* mapped addr */ 361f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned long vaddr; 362d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 363d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 364d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pp_frame { 365f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t handle; /* stores vb cookie */ 366f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t frame_id; 367d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short buf_idx; 368f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int path; 369d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short image_type; 370f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned short num_planes; /* 1 for sp */ 371d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct timeval timestamp; 372d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 373d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_pp_frame_sp sp; 374d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_pp_frame_mp mp[MAX_PLANES]; 375d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi }; 376d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int node_type; 377d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t inst_handle; 378d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 379d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 380f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_pp_crop { 381f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t src_x; 382f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t src_y; 383f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t src_w; 384f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t src_h; 385f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t dst_x; 386f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t dst_y; 387f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t dst_w; 388f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t dst_h; 389f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t update_flag; 390f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 391f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 392f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_mctl_pp_frame_cmd { 393f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t cookie; 394f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t vpe_output_action; 395f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_pp_frame src_frame; 396f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_pp_frame dest_frame; 397f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_pp_crop crop; 398f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int path; 399f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 400f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 401d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cam_evt_divert_frame { 402d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short image_mode; 403d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short op_mode; 404d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short inst_idx; 405d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short node_idx; 406d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_pp_frame frame; 407f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int do_pp; 408d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 409d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 410d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_pp_cmd_ack_event { 411f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t cmd; /* VPE_CMD_ZOOM? */ 412f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int status; /* 0 done, < 0 err */ 413f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t cookie; /* daemon's cookie */ 414d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 415d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 416d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_pp_event_info { 417f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int32_t event; 418d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 419d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_mctl_pp_cmd_ack_event ack; 420d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi }; 421d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 422d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 423d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_isp_event_ctrl { 424d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned short resptype; 425d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 426d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_cam_evt_msg isp_msg; 427d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_ctrl_cmd ctrl; 428d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_cam_evt_divert_frame div_frame; 429d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_mctl_pp_event_info pp_event_info; 430d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } isp_data; 431d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 432d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 433d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_CTRL 0 434d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_STAT_EVT_MSG 1 435d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_STEREO_OP_1 2 436d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_STEREO_OP_2 3 437d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_V4L2 4 438d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_DIV_FRAME_EVT_MSG 5 439d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_DONE_EVENT 6 440d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_MCTL_PP_EVENT 7 441d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_MAX 8 442d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 443d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_APP_NOTIFY_EVENT 0 444d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_APP_NOTIFY_ERROR_EVENT 1 445d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 446d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* this one is used to send ctrl/status up to config thread */ 447d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 448d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_event_ctrl { 449d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* 0 - ctrl_cmd from control thread, 450d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 1 - stats/event kernel, 451d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 2 - V4L control or read request */ 452d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int resptype; 453d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int timeout_ms; 454d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_ctrl_cmd ctrl_cmd; 455d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* struct vfe_event_t stats_event; */ 456d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_cam_evt_msg stats_event; 457d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 458d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 459d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* 2. config command: config command(from config thread); */ 460d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_cfg_cmd { 461d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* what to config: 462d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 1 - sensor config, 2 - vfe config */ 463d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t cfg_type; 464d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 465d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* sensor config type */ 466d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t cmd_type; 467d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t queue; 468d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t length; 469d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *value; 470d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 471d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 472d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_GENERAL 0 473d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_OUT1 1 474d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_O1_AND_O2 2 475d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_OUT2 3 476d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_PICT_T_AXI_CFG 4 477d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_PICT_M_AXI_CFG 5 478d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_RAW_PICT_AXI_CFG 6 479d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 480d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_FRAME_BUF_RELEASE 7 481d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_PREV_BUF_CFG 8 482d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_SNAP_BUF_RELEASE 9 483d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_SNAP_BUF_CFG 10 484d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_DISABLE 11 485d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_AWB_ENABLE 12 486d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AF_ENABLE 13 487d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_ENABLE 14 488d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AWB_ENABLE 15 489d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_ENABLE 16 490d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 491d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AXI_CFG 17 492d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_AXI_CFG 18 493d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AF_AXI_CFG 19 494d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AWB_AXI_CFG 20 495d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_RS_AXI_CFG 21 496d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_CS_AXI_CFG 22 497d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_IHIST_AXI_CFG 23 498d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_SKIN_AXI_CFG 24 499d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 500d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BUF_RELEASE 25 501d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_BUF_RELEASE 26 502d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AF_BUF_RELEASE 27 503d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AWB_BUF_RELEASE 28 504d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_RS_BUF_RELEASE 29 505d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_CS_BUF_RELEASE 30 506d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_IHIST_BUF_RELEASE 31 507d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_SKIN_BUF_RELEASE 32 508d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 509d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define UPDATE_STATS_INVALID 33 510d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_GEMINI 34 511d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP 35 512d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_PREVIEW 36 513d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_VIDEO 37 514d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 515d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_IHIST_ENABLE 38 516d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_RS_ENABLE 39 517d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_CS_ENABLE 40 518d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_VPE 41 519d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_VPE 42 520d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_ZSL 43 521d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_VPE 44 522d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_THUMB_VPE 45 523d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 524d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_CONFIG_PING_ADDR 46 525d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_CONFIG_PONG_ADDR 47 526d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_CONFIG_FREE_BUF_ADDR 48 527d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_ZSL_ALL_CHNLS 49 528d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_VIDEO_ALL_CHNLS 50 529d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_VFE_BUFFER_RELEASE 51 530d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_VFE_PROCESS_IRQ 52 531d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BG_ENABLE 53 532d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BF_ENABLE 54 533d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BHIST_ENABLE 55 534d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BG_BUF_RELEASE 56 535d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BF_BUF_RELEASE 57 536d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BHIST_BUF_RELEASE 58 537f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_VFE_PIX_SOF_COUNT_UPDATE 59 538f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_VFE_COUNT_PIX_SOF_ENABLE 60 539f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_STATS_BE_ENABLE 61 540f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_STATS_BE_BUF_RELEASE 62 541d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 542d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_PRIM BIT(8) 543d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_PRIM_ALL_CHNLS BIT(9) 544d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SEC BIT(10) 545d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SEC_ALL_CHNLS BIT(11) 546d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_TERT1 BIT(12) 547d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_TERT2 BIT(13) 548d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 549d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_START 0xE1 550d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_STOP 0xE2 551d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_RESET 0xE3 552f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_AXI_ABORT 0xE4 553f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 554f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 555d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 556d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_PREVIEW BIT(0) 557d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_CAPTURE BIT(1) 558d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_RECORD BIT(2) 559d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_ZSL BIT(3) 560d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_RAW_CAPTURE BIT(4) 561d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_LIVESHOT BIT(5) 562d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 563d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* vfe config command: config command(from config thread)*/ 564d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_vfe_cfg_cmd { 565d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cmd_type; 566d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t length; 567d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *value; 568d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 569d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 570d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_vpe_cfg_cmd { 571d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cmd_type; 572d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t length; 573d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *value; 574d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 575d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 576d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_CAMERA_ENABLE_NAME_LEN 32 577d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct camera_enable_cmd { 578d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi char name[MAX_CAMERA_ENABLE_NAME_LEN]; 579d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 580d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 581d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_OUTPUT1 0 582d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_OUTPUT2 1 583d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_OUTPUT1_OUTPUT2 2 584d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_THUMBNAIL 3 585d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_MAINIMG 4 586d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_RAW_MAINIMG 5 587d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AEC_AWB 6 588d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AF 7 589d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AEC 8 590d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AWB 9 591d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_RS 10 592d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_CS 11 593d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_IHIST 12 594d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_SKIN 13 595d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_VIDEO 14 596d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_PREVIEW 15 597d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_VIDEO_VPE 16 598d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_C2D 17 599d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_MAINIMG_VPE 18 600d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_THUMBNAIL_VPE 19 601d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_BAYER_GRID 20 602d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_BAYER_FOCUS 21 603d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_BAYER_HIST 22 604f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_PMEM_BAYER_EXPOSURE 23 605f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_PMEM_MAX 24 606d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 607d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AEAW 0 608d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AEC 1 609d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AF 2 610d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AWB 3 611d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_RS 4 612d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_CS 5 613d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_IHIST 6 614d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_SKIN 7 615d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_BG 8 616d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_BF 9 617f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define STAT_BE 10 618f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define STAT_BHIST 11 619f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define STAT_MAX 12 620d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 621d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_PREVIEW_OUTPUT1 0 622d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_PREVIEW_OUTPUT2 1 623d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_SNAPSHOT 2 624d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_THUMBNAIL 3 625d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_RAW_SNAPSHOT 4 626d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_MAX 5 627d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 628d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_stats_enum_type { 629f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_AEC, /* legacy based AEC */ 630f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_AF, /* legacy based AF */ 631f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_AWB, /* legacy based AWB */ 632f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_RS, /* legacy based RS */ 633f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_CS, /* legacy based CS */ 634f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_IHIST, /* legacy based HIST */ 635f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_SKIN, /* legacy based SKIN */ 636f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_BG, /* Bayer Grids */ 637f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_BF, /* Bayer Focus */ 638f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_BE, /* Bayer Exposure*/ 639f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_BHIST, /* Bayer Hist */ 640f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_AE_AW, /* legacy stats for vfe 2.x*/ 641f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_COMP, /* Composite stats */ 642f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_STATS_TYPE_MAX /* MAX */ 643d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 644d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 645d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_buf_info { 646f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int type; /* msm_stats_enum_type */ 647d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fd; 648d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *vaddr; 649d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t offset; 650d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t len; 651d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t y_off; 652d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t cbcr_off; 653d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar0_off; 654d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar1_off; 655d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar2_off; 656d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t active; 657d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int buf_idx; 658d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 659d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 660d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pmem_info { 661d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int type; 662d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fd; 663d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *vaddr; 664d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t offset; 665d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t len; 666d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t y_off; 667d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t cbcr_off; 668d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar0_off; 669d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar1_off; 670d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar2_off; 671d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t active; 672d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 673d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 674d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct outputCfg { 675d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t height; 676d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t width; 677d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 678d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t window_height_firstline; 679d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t window_height_lastline; 680d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 681d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 682d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDEO_NODE 0 683d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MCTL_NODE 1 684d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 685d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_1 0 686d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_2 1 687f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_1_AND_2 2 /* snapshot only */ 688f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_1_AND_3 3 /* video */ 689d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMIF_TO_AXI_VIA_OUTPUT_2 4 690d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 5 691d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 6 692d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_1_2_AND_3 7 693d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_ALL_CHNLS 8 694d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_VIDEO_ALL_CHNLS 9 695d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_ZSL_ALL_CHNLS 10 696d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_ZSL_ALL_CHNLS 697d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 698d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_PRIM BIT(8) 699d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_PRIM_ALL_CHNLS BIT(9) 700d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_SEC BIT(10) 701d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_SEC_ALL_CHNLS BIT(11) 702d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TERT1 BIT(12) 703d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TERT2 BIT(13) 704d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 705f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 706f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 707d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_FRAME_PREV_1 0 708d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_FRAME_PREV_2 1 709d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_FRAME_ENC 2 710d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 711d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_P BIT(0) 712d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_T BIT(1) 713d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_S BIT(2) 714d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_V BIT(3) 715d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_L BIT(4) 716d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_ST_L BIT(5) 717d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_ST_R BIT(6) 718d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_ST_D BIT(7) 719d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_R BIT(8) 720d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_R1 BIT(9) 721f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_SAEC BIT(10) 722f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_SAFC BIT(11) 723f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_SAWB BIT(12) 724f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_IHST BIT(13) 725f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_CSTA BIT(14) 726d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 727d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct fd_roi_info { 728d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *info; 729d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int info_len; 730d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 731d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 732d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mem_map_info { 733d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t cookie; 734d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t length; 735d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t mem_type; 736d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 737d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 738d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MEM_MMAP 0 739d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MEM_USERPTR 1 740d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PLANE_MAX 8 741d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PLANE_Y 0 742d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PLANE_UV 1 743d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 744d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_frame { 745d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct timespec ts; 746d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int path; 747d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int type; 748d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long buffer; 749d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t phy_offset; 750d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t y_off; 751d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t cbcr_off; 752d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar0_off; 753d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar1_off; 754d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t planar2_off; 755d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fd; 756d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 757d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *cropinfo; 758d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int croplen; 759d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t error_code; 760d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct fd_roi_info roi_info; 761d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t frame_id; 762d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int stcam_quality_ind; 763d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t stcam_conv_value; 764d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 765d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct ion_allocation_data ion_alloc; 766d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct ion_fd_data fd_data; 767d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int ion_dev_fd; 768d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 769d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 770d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_st_frame_packing { 771d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi SIDE_BY_SIDE_HALF, 772d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi SIDE_BY_SIDE_FULL, 773d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi TOP_DOWN_HALF, 774d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi TOP_DOWN_FULL, 775d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 776d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 777d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_st_crop { 778d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t in_w; 779d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t in_h; 780d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t out_w; 781d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t out_h; 782d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 783d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 784d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_st_half { 785d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t buf_p0_off; 786d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t buf_p1_off; 787d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t buf_p0_stride; 788d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t buf_p1_stride; 789d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t pix_x_off; 790d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t pix_y_off; 791d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_st_crop stCropInfo; 792d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 793d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 794d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_st_frame { 795d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_frame buf_info; 796d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int type; 797d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum msm_st_frame_packing packing; 798d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_st_half L; 799d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_st_half R; 800d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int frame_id; 801d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 802d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 803d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_ERR_MASK (0xFFFFFFFF & 1) 804d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 805d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct stats_buff { 806d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long buff; 807d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fd; 808d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 809d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 810d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_buf { 811d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t awb_ymin; 812d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff aec; 813d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff awb; 814d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff af; 815f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct stats_buff be; 816d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff ihist; 817d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff rs; 818d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff cs; 819d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct stats_buff skin; 820d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int type; 821d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t status_bits; 822d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long buffer; 823d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fd; 824d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int length; 825d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct ion_handle *handle; 826d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t frame_id; 827d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int buf_idx; 828d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 829d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT 0 830d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* video capture mode in VIDIOC_S_PARM */ 831d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_PREVIEW \ 832d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+1) 833d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* extendedmode for video recording in VIDIOC_S_PARM */ 834d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_VIDEO \ 835d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+2) 836d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* extendedmode for the full size main image in VIDIOC_S_PARM */ 837d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_MAIN (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+3) 838d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* extendedmode for the thumb nail image in VIDIOC_S_PARM */ 839d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_THUMBNAIL \ 840d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+4) 841f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* ISP_PIX_OUTPUT1: no pp, directly send output1 buf to user */ 842f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_ISP_PIX_OUTPUT1 \ 843d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+5) 844f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* ISP_PIX_OUTPUT2: no pp, directly send output2 buf to user */ 845f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_ISP_PIX_OUTPUT2 \ 846d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+6) 847f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* raw image type */ 848f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RAW \ 849d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+7) 850f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* RDI dump */ 851f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RDI \ 852d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+8) 853f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* RDI dump 1 */ 854f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RDI1 \ 855d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+9) 856f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* RDI dump 2 */ 857f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RDI2 \ 858d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+10) 859f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_AEC \ 860d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+11) 861f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_AWB \ 862d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+12) 863f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_AF \ 864d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+13) 865f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_IHIST \ 866d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+14) 867f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_CS \ 868f2be60f5864338ca33d569f0086dac301b7066afDevin Kim (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+15) 869f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RS \ 870f2be60f5864338ca33d569f0086dac301b7066afDevin Kim (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+16) 871f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_CSTA \ 872f2be60f5864338ca33d569f0086dac301b7066afDevin Kim (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+17) 873f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_V2X_LIVESHOT \ 874f2be60f5864338ca33d569f0086dac301b7066afDevin Kim (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+18) 875f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_MAX (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+19) 876f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 877d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 878d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_MOTION_ISO V4L2_CID_PRIVATE_BASE 879d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_EFFECT (V4L2_CID_PRIVATE_BASE+1) 880d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_HJR (V4L2_CID_PRIVATE_BASE+2) 881d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_LED_MODE (V4L2_CID_PRIVATE_BASE+3) 882d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_PREP_SNAPSHOT (V4L2_CID_PRIVATE_BASE+4) 883d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_EXP_METERING (V4L2_CID_PRIVATE_BASE+5) 884d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_ISO (V4L2_CID_PRIVATE_BASE+6) 885d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_CAM_MODE (V4L2_CID_PRIVATE_BASE+7) 886d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_LUMA_ADAPTATION (V4L2_CID_PRIVATE_BASE+8) 887d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_BEST_SHOT (V4L2_CID_PRIVATE_BASE+9) 888d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_FOCUS_MODE (V4L2_CID_PRIVATE_BASE+10) 889d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_BL_DETECTION (V4L2_CID_PRIVATE_BASE+11) 890d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_SNOW_DETECTION (V4L2_CID_PRIVATE_BASE+12) 891d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_CTRL_CMD (V4L2_CID_PRIVATE_BASE+13) 892d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_EVT_SUB_INFO (V4L2_CID_PRIVATE_BASE+14) 893d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_STROBE_FLASH (V4L2_CID_PRIVATE_BASE+15) 894d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_INST_HANDLE (V4L2_CID_PRIVATE_BASE+16) 895d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_MMAP_INST (V4L2_CID_PRIVATE_BASE+17) 896d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_PP_PLANE_INFO (V4L2_CID_PRIVATE_BASE+18) 897d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_MAX MSM_V4L2_PID_PP_PLANE_INFO 898d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 899d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for video recording - two frame output queues */ 900d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_DEFAULT 0 901d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for video recording - two frame output queues */ 902d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_PREVIEW (MSM_V4L2_CAM_OP_DEFAULT+1) 903d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for video recording - two frame output queues */ 904d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_VIDEO (MSM_V4L2_CAM_OP_DEFAULT+2) 905d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for standard shapshot - two frame output queues */ 906d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_CAPTURE (MSM_V4L2_CAM_OP_DEFAULT+3) 907d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for zsl shapshot - three output queues */ 908d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_ZSL (MSM_V4L2_CAM_OP_DEFAULT+4) 909d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for raw snapshot - one frame output queue */ 910d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_RAW (MSM_V4L2_CAM_OP_DEFAULT+5) 911d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for jpeg snapshot - one frame output queue */ 912d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_JPEG_CAPTURE (MSM_V4L2_CAM_OP_DEFAULT+6) 913d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 914f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 915d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_VID_CAP_TYPE 0 916d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_STREAM_ON 1 917d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_STREAM_OFF 2 918d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SNAPSHOT 3 919d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_QUERY_CTRL 4 920d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_GET_CTRL 5 921d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SET_CTRL 6 922d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_QUERY 7 923d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_GET_CROP 8 924d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SET_CROP 9 925d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_OPEN 10 926d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CLOSE 11 927d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SET_CTRL_CMD 12 928d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EVT_SUB_MASK 13 929f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_PRIVATE_CMD 14 930f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_MAX 15 931d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_CAMERA_EXIT 43 932d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 933d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct crop_info { 934d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *info; 935d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int len; 936d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 937d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 938d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_postproc { 939d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int ftnum; 940d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_frame fthumnail; 941d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fmnum; 942d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_frame fmain; 943d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 944d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 945d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_snapshot_pp_status { 946d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *status; 947d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 948d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 949d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_MODE 0 950d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EFFECT 1 951d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_START 2 952d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_PWR_UP 3 953d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_PWR_DOWN 4 954d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_WRITE_EXPOSURE_GAIN 5 955d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_DEFAULT_FOCUS 6 956d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_MOVE_FOCUS 7 957d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_REGISTER_TO_REAL_GAIN 8 958d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_REAL_TO_REGISTER_GAIN 9 959d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_FPS 10 960d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_PICT_FPS 11 961d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_BRIGHTNESS 12 962d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_CONTRAST 13 963d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ZOOM 14 964d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EXPOSURE_MODE 15 965d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_WB 16 966d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ANTIBANDING 17 967d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EXP_GAIN 18 968d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_PICT_EXP_GAIN 19 969d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_LENS_SHADING 20 970d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_FPS 21 971d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PREV_L_PF 22 972d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PREV_P_PL 23 973d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_L_PF 24 974d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_P_PL 25 975d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_AF_MAX_STEPS 26 976d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_MAX_EXP_LC 27 977d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SEND_WB_INFO 28 978d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SENSOR_INIT 29 979d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_3D_CALI_DATA 30 980d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_CALIB_DATA 31 981d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_OUTPUT_INFO 32 982d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_EEPROM_INFO 33 983d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_EEPROM_DATA 34 984d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ACTUATOR_INFO 35 985d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_ACTUATOR_INFO 36 986d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* TBD: QRD */ 987d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_SATURATION 37 988d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_SHARPNESS 38 989d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_TOUCHAEC 39 990d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_AUTO_FOCUS 40 991d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_AUTOFLASH 41 992d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EXPOSURE_COMPENSATION 42 993d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ISO 43 994d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_START_STREAM 44 995d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_STOP_STREAM 45 996d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_CSI_PARAMS 46 997f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_POWER_UP 47 998f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_POWER_DOWN 48 999f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_WRITE_I2C_ARRAY 49 1000f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_READ_I2C_ARRAY 50 1001f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_PCLK_CHANGE 51 1002f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_CONFIG_VREG_ARRAY 52 1003f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_CONFIG_CLK_ARRAY 53 1004f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_GPIO_OP 54 1005f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_MAX 55 1006f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1007d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1008d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MOVE_NEAR 0 1009d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MOVE_FAR 1 1010d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1011d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_PREVIEW_MODE 0 1012d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_SNAPSHOT_MODE 1 1013d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_RAW_SNAPSHOT_MODE 2 1014d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_HFR_60FPS_MODE 3 1015d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_HFR_90FPS_MODE 4 1016d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_HFR_120FPS_MODE 5 1017d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1018d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_QTR_SIZE 0 1019d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_FULL_SIZE 1 1020d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_QVGA_SIZE 2 1021d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_INVALID_SIZE 3 1022d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1023d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_OFF 0 1024d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_MONO 1 1025d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_NEGATIVE 2 1026d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_SOLARIZE 3 1027d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_SEPIA 4 1028d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_POSTERIZE 5 1029d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_WHITEBOARD 6 1030d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_BLACKBOARD 7 1031d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_AQUA 8 1032d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_EMBOSS 9 1033d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_SKETCH 10 1034d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_NEON 11 1035f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_FADED 12 1036f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_VINTAGECOOL 13 1037f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_VINTAGEWARM 14 1038f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_ACCENT_BLUE 15 1039f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_ACCENT_GREEN 16 1040f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_ACCENT_ORANGE 17 1041f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_MAX 18 1042d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1043d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* QRD */ 1044d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_BW 10 1045d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_BLUISH 12 1046d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_REDDISH 13 1047d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_GREENISH 14 1048d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1049d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* QRD */ 1050d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_OFF 0 1051d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_50HZ 2 1052d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_60HZ 1 1053d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_AUTO 3 1054d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1055d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV0 0 1056d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV1 1 1057d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV2 2 1058d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV3 3 1059d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV4 4 1060d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV5 5 1061d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV6 6 1062d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV7 7 1063d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV8 8 1064d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV9 9 1065d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1066d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV0 0 1067d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV1 1 1068d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV2 2 1069d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV3 3 1070d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV4 4 1071d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV5 5 1072d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV6 6 1073d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV7 7 1074d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV8 8 1075d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1076f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1077d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV0 0 1078d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV1 1 1079d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV2 2 1080d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV3 3 1081d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV4 4 1082d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV5 5 1083d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV6 6 1084d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV7 7 1085d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV8 8 1086d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1087d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV0 0 1088d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV1 3 1089d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV2 6 1090d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV3 9 1091d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV4 12 1092d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV5 15 1093d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV6 18 1094d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV7 21 1095d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV8 24 1096d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV9 27 1097d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV10 30 1098d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1099d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SETAE_AVERAGE 0 1100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SETAE_CENWEIGHT 1 1101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1102f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_WB_AUTO 1 /* This list must match aeecamera.h */ 1103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_CUSTOM 2 1104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_INCANDESCENT 3 1105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_FLUORESCENT 4 1106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_DAYLIGHT 5 1107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_CLOUDY_DAYLIGHT 6 1108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_TWILIGHT 7 1109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_WB_SHADE 8 1110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV0 12 1112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV1 6 1113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV2 0 1114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV3 -6 1115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV4 -12 1116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_saturation_level { 1118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L0, 1119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L1, 1120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L2, 1121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L3, 1122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L4, 1123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L5, 1124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L6, 1125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L7, 1126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L8, 1127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L9, 1128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SATURATION_L10, 1129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_contrast_level { 1132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L0, 1133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L1, 1134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L2, 1135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L3, 1136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L4, 1137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L5, 1138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L6, 1139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L7, 1140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L8, 1141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L9, 1142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_CONTRAST_L10, 1143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1145f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_exposure_level { 1147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXPOSURE_N2, 1148d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXPOSURE_N1, 1149d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXPOSURE_D, 1150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXPOSURE_P1, 1151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXPOSURE_P2, 1152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_sharpness_level { 1155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L0, 1156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L1, 1157d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L2, 1158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L3, 1159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L4, 1160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L5, 1161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_SHARPNESS_L6, 1162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_expo_metering_mode { 1165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXP_FRAME_AVERAGE, 1166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXP_CENTER_WEIGHTED, 1167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EXP_SPOT_METERING, 1168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_iso_mode { 1171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_AUTO = 0, 1172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_DEBLUR, 1173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_100, 1174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_200, 1175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_400, 1176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_800, 1177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_ISO_1600, 1178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1179d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_wb_mode { 1181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_WB_OFF, 1182f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_V4L2_WB_AUTO , 1183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_WB_CUSTOM, 1184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_WB_INCANDESCENT, 1185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_WB_FLUORESCENT, 1186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_WB_DAYLIGHT, 1187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_WB_CLOUDY_DAYLIGHT, 1188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_special_effect { 1191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_OFF, 1192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_MONO, 1193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_NEGATIVE, 1194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_SOLARIZE, 1195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_SEPIA, 1196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_POSTERAIZE, 1197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_WHITEBOARD, 1198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_BLACKBOARD, 1199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_AQUA, 1200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_EMBOSS, 1201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_SKETCH, 1202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_NEON, 1203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_EFFECT_MAX, 1204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_power_line_frequency { 1207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_POWER_LINE_OFF, 1208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_POWER_LINE_60HZ, 1209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_POWER_LINE_50HZ, 1210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_V4L2_POWER_LINE_AUTO, 1211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_AUTO 0 1214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMEAR_ISO_TYPE_HJR 1 1215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMEAR_ISO_TYPE_100 2 1216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_200 3 1217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_400 4 1218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMEAR_ISO_TYPE_800 5 1219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_1600 6 1220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_pict_fps { 1222d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t prevfps; 1223d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t pictfps; 1224d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1225d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1226d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct exp_gain_cfg { 1227d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gain; 1228d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t line; 1229d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1230d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1231d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct focus_cfg { 1232d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int32_t steps; 1233d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int dir; 1234d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1235d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1236d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct fps_cfg { 1237d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t f_mult; 1238d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t fps_div; 1239d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t pict_fps_div; 1240d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1241d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct wb_info_cfg { 1242d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t red_gain; 1243d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t green_gain; 1244d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t blue_gain; 1245d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1246d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_3d_exp_cfg { 1247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gain; 1248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t line; 1249d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t r_gain; 1250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t b_gain; 1251d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gr_gain; 1252d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gb_gain; 1253d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gain_adjust; 1254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1255f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct sensor_3d_cali_data_t{ 1256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char left_p_matrix[3][4][8]; 1257d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char right_p_matrix[3][4][8]; 1258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char square_len[8]; 1259d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char focal_len[8]; 1260d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char pixel_pitch[8]; 1261d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_r; 1262d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_b; 1263d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_gb; 1264d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_af_far; 1265d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_af_mid; 1266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_af_short; 1267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_af_5um; 1268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_af_50up; 1269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t left_af_50down; 1270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_r; 1271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_b; 1272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_gb; 1273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_af_far; 1274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_af_mid; 1275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_af_short; 1276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_af_5um; 1277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_af_50up; 1278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t right_af_50down; 1279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_init_cfg { 1281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t prev_res; 1282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t pict_res; 1283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1285d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_calib_data { 1286d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* Color Related Measurements */ 1287d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t r_over_g; 1288d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t b_over_g; 1289d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gr_over_gb; 1290d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1291d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* Lens Related Measurements */ 1292d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t macro_2_inf; 1293d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t inf_2_macro; 1294d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t stroke_amt; 1295d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t af_pos_1m; 1296d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t af_pos_inf; 1297d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1298d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1299d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_sensor_resolution_t { 1300d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_FULL, 1301d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_QTR, 1302d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_2, 1303d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_3, 1304d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_4, 1305d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_5, 1306d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_6, 1307d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_RES_7, 1308d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_SENSOR_INVALID_RES, 1309d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1310d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1311d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_sensor_output_info_t { 1312d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t x_output; 1313d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t y_output; 1314d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t line_length_pclk; 1315d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t frame_length_lines; 1316d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t vt_pixel_clk; 1317d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t op_pixel_clk; 1318d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t binning_factor; 1319d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1320d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1321d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_output_info_t { 1322d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_sensor_output_info_t *output_info; 1323d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t num_info; 1324d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1325d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1326f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_sensor_exp_gain_info_t { 1327f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t coarse_int_time_addr; 1328f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t global_gain_addr; 1329f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t vert_offset; 1330f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1331f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1332f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_sensor_output_reg_addr_t { 1333f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t x_output; 1334f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t y_output; 1335f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t line_length_pclk; 1336f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t frame_length_lines; 1337f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1338f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1339f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct sensor_driver_params_type { 1340f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_setting *init_settings; 1341f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t init_settings_size; 1342f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_setting *mode_settings; 1343f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t mode_settings_size; 1344f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_sensor_output_reg_addr_t *sensor_output_reg_addr; 1345f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_setting *start_settings; 1346f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_setting *stop_settings; 1347f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_setting *groupon_settings; 1348f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_setting *groupoff_settings; 1349f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_sensor_exp_gain_info_t *sensor_exp_gain_info; 1350f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_sensor_output_info_t *output_info; 1351f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1352f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1353d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct mirror_flip { 1354d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int32_t x_mirror; 1355d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int32_t y_flip; 1356d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1357d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1358d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct cord { 1359d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t x; 1360d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t y; 1361d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1362d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1363d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_eeprom_data_t { 1364d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *eeprom_data; 1365d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t index; 1366d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1367d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1368d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_csid_vc_cfg { 1369d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t cid; 1370d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t dt; 1371d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t decode_format; 1372d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1373d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1374d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct csi_lane_params_t { 1375f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t csi_lane_assign; 1376d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t csi_lane_mask; 1377d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t csi_if; 1378f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t csid_core[2]; 1379f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t csi_phy_sel; 1380f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1381f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1382f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csid_lut_params { 1383f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t num_cid; 1384f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csid_vc_cfg *vc_cfg; 1385f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1386f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1387f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csid_params { 1388f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t lane_cnt; 1389f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t lane_assign; 1390f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t phy_sel; 1391f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csid_lut_params lut_params; 1392f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1393f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1394f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csiphy_params { 1395f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t lane_cnt; 1396f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t settle_cnt; 1397f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t lane_mask; 1398f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t combo_mode; 1399d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t csid_core; 1400f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1401f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1402f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csi2_params { 1403f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csid_params csid_params; 1404f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csiphy_params csiphy_params; 1405f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1406f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1407f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_csi_data_format { 1408f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSI_8BIT, 1409f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSI_10BIT, 1410f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSI_12BIT, 1411f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1412f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1413f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csi_params { 1414f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum msm_camera_csi_data_format data_format; 1415f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t lane_cnt; 1416f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t lane_assign; 1417f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t settle_cnt; 1418f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t dpcm_scheme; 1419f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1420f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1421f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum csic_cfg_type_t { 1422f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSIC_INIT, 1423f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSIC_CFG, 1424f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1425f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1426f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct csic_cfg_data { 1427f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum csic_cfg_type_t cfgtype; 1428f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csi_params *csic_params; 1429f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1430f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1431f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum csid_cfg_type_t { 1432f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSID_INIT, 1433f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSID_CFG, 1434f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1435f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1436f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct csid_cfg_data { 1437f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum csid_cfg_type_t cfgtype; 1438f2be60f5864338ca33d569f0086dac301b7066afDevin Kim union { 1439f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t csid_version; 1440f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csid_params *csid_params; 1441f2be60f5864338ca33d569f0086dac301b7066afDevin Kim } cfg; 1442f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1443f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1444f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum csiphy_cfg_type_t { 1445f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSIPHY_INIT, 1446f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CSIPHY_CFG, 1447f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1448f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1449f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct csiphy_cfg_data { 1450f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum csiphy_cfg_type_t cfgtype; 1451f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_csiphy_params *csiphy_params; 1452d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1453d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1454d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_EMBED_DATA 0x12 1455d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RESERVED_DATA_0 0x13 1456d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_YUV422_8 0x1E 1457d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RAW8 0x2A 1458d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RAW10 0x2B 1459d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RAW12 0x2C 1460d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1461d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_6BIT 0 1462d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_8BIT 1 1463d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_10BIT 2 1464d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_DPCM_10_8_10 5 1465d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1466d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_STREAM(intf, action, vfe) (((intf)<<ISPIF_S_STREAM_SHIFT)+\ 1467d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (action)+((vfe)<<ISPIF_VFE_INTF_SHIFT)) 1468d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_ON_FRAME_BOUNDARY (0x01 << 0) 1469d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_OFF_FRAME_BOUNDARY (0x01 << 1) 1470d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_OFF_IMMEDIATELY (0x01 << 2) 1471d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_S_STREAM_SHIFT 4 1472d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_VFE_INTF_SHIFT 12 1473d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1474d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PIX_0 (0x01 << 0) 1475d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define RDI_0 (0x01 << 1) 1476d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PIX_1 (0x01 << 2) 1477d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define RDI_1 (0x01 << 3) 1478d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define RDI_2 (0x01 << 4) 1479d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1480d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_vfe_intf { 1481d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VFE0, 1482d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VFE1, 1483d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VFE_MAX, 1484d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1485d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1486d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_intftype { 1487d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi PIX0, 1488d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi RDI0, 1489d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi PIX1, 1490d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi RDI1, 1491d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi RDI2, 1492d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi INTF_MAX, 1493d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1494d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1495d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_vc { 1496d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VC0, 1497d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VC1, 1498d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VC2, 1499d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VC3, 1500d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1501d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1502d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_cid { 1503d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID0, 1504d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID1, 1505d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID2, 1506d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID3, 1507d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID4, 1508d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID5, 1509d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID6, 1510d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID7, 1511d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID8, 1512d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID9, 1513d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID10, 1514d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID11, 1515d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID12, 1516d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID13, 1517d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID14, 1518d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CID15, 1519d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1520d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1521d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ispif_params { 1522d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t intftype; 1523d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t cid_mask; 1524d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t csid; 1525d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t vfe_intf; 1526d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1527d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1528d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ispif_params_list { 1529d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t len; 1530d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_ispif_params params[4]; 1531d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1532d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1533d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum ispif_cfg_type_t { 1534d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_INIT, 1535d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_SET_CFG, 1536d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_SET_ON_FRAME_BOUNDARY, 1537d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_SET_OFF_FRAME_BOUNDARY, 1538d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_SET_OFF_IMMEDIATELY, 1539d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_RELEASE, 1540d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1541d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1542d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct ispif_cfg_data { 1543d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum ispif_cfg_type_t cfgtype; 1544d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 1545d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t csid_version; 1546d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cmd; 1547d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_ispif_params_list ispif_params; 1548d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } cfg; 1549d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1550d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1551f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_i2c_reg_addr_type { 1552f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_BYTE_ADDR = 1, 1553f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_WORD_ADDR, 1554f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_3B_ADDR, 1555f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1556f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1557f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_i2c_reg_array { 1558f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t reg_addr; 1559f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t reg_data; 1560f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1561f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1562f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_i2c_data_type { 1563f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_BYTE_DATA = 1, 1564f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_WORD_DATA, 1565f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_SET_BYTE_MASK, 1566f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_UNSET_BYTE_MASK, 1567f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_SET_WORD_MASK, 1568f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_UNSET_WORD_MASK, 1569f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA, 1570f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1571f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1572f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_i2c_reg_setting { 1573f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_camera_i2c_reg_array *reg_setting; 1574f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t size; 1575f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum msm_camera_i2c_reg_addr_type addr_type; 1576f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum msm_camera_i2c_data_type data_type; 1577f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t delay; 1578f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1579f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1580f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum oem_setting_type { 1581f2be60f5864338ca33d569f0086dac301b7066afDevin Kim I2C_READ = 1, 1582f2be60f5864338ca33d569f0086dac301b7066afDevin Kim I2C_WRITE, 1583f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_OP, 1584f2be60f5864338ca33d569f0086dac301b7066afDevin Kim EEPROM_READ, 1585f2be60f5864338ca33d569f0086dac301b7066afDevin Kim VREG_SET, 1586f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CLK_SET, 1587f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1588f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1589f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct sensor_oem_setting { 1590f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum oem_setting_type type; 1591f2be60f5864338ca33d569f0086dac301b7066afDevin Kim void *data; 1592f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1593f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1594f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum camera_vreg_type { 1595f2be60f5864338ca33d569f0086dac301b7066afDevin Kim REG_LDO, 1596f2be60f5864338ca33d569f0086dac301b7066afDevin Kim REG_VS, 1597f2be60f5864338ca33d569f0086dac301b7066afDevin Kim REG_GPIO, 1598f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1599f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1600f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_vreg_name_t { 1601f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CAM_VDIG, 1602f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CAM_VIO, 1603f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CAM_VANA, 1604f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CAM_VAF, 1605f2be60f5864338ca33d569f0086dac301b7066afDevin Kim CAM_VREG_MAX, 1606f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1607f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1608f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csi_lane_params { 1609f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t csi_lane_assign; 1610f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t csi_lane_mask; 1611f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1612f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1613f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct camera_vreg_t { 1614f2be60f5864338ca33d569f0086dac301b7066afDevin Kim const char *reg_name; 1615f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum camera_vreg_type type; 1616f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int min_voltage; 1617f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int max_voltage; 1618f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int op_mode; 1619f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t delay; 1620f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1621f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1622f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_vreg_setting { 1623f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct camera_vreg_t *cam_vreg; 1624f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t num_vreg; 1625f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t enable; 1626f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1627f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1628f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_cam_clk_info { 1629f2be60f5864338ca33d569f0086dac301b7066afDevin Kim const char *clk_name; 1630f2be60f5864338ca33d569f0086dac301b7066afDevin Kim long clk_rate; 1631f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t delay; 1632f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1633f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1634f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_cam_clk_setting { 1635f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_cam_clk_info *clk_info; 1636f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t num_clk_info; 1637f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t enable; 1638f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1639f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1640d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_cfg_data { 1641d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cfgtype; 1642d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int mode; 1643d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int rs; 1644d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t max_steps; 1645d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1646d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 1647d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int8_t effect; 1648d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t lens_shading; 1649d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t prevl_pf; 1650d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t prevp_pl; 1651d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t pictl_pf; 1652d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t pictp_pl; 1653d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t pict_max_exp_lc; 1654d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t p_fps; 1655d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t iso_type; 1656d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct sensor_init_cfg init_info; 1657d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct sensor_pict_fps gfps; 1658d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct exp_gain_cfg exp_gain; 1659d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct focus_cfg focus; 1660d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct fps_cfg fps; 1661d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct wb_info_cfg wb_info; 1662d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct sensor_3d_exp_cfg sensor_3d_exp; 1663d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct sensor_calib_data calib_info; 1664d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct sensor_output_info_t output_info; 1665d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_eeprom_data_t eeprom_data; 1666d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct csi_lane_params_t csi_lane_params; 1667d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* QRD */ 1668d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t antibanding; 1669d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t contrast; 1670d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t saturation; 1671d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t sharpness; 1672d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int8_t brightness; 1673d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int ae_mode; 1674d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t wb_val; 1675d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int8_t exp_compensation; 1676f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t pclk; 1677d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct cord aec_cord; 1678d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int is_autoflash; 1679d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct mirror_flip mirror_flip; 1680f2be60f5864338ca33d569f0086dac301b7066afDevin Kim void *setting; 1681d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } cfg; 1682d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1683d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1684f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum gpio_operation_type { 1685f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_REQUEST, 1686f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_FREE, 1687f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_SET_DIRECTION_OUTPUT, 1688f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_SET_DIRECTION_INPUT, 1689f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_GET_VALUE, 1690f2be60f5864338ca33d569f0086dac301b7066afDevin Kim GPIO_SET_VALUE, 1691f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1692f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1693f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_cam_gpio_operation { 1694f2be60f5864338ca33d569f0086dac301b7066afDevin Kim enum gpio_operation_type op_type; 1695f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned address; 1696f2be60f5864338ca33d569f0086dac301b7066afDevin Kim int value; 1697f2be60f5864338ca33d569f0086dac301b7066afDevin Kim const char *tag; 1698f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1699f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1700d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct damping_params_t { 1701d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t damping_step; 1702d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t damping_delay; 1703d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t hw_params; 1704d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1705d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1706d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum actuator_type { 1707d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_VCM, 1708d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_PIEZO, 1709d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1710d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1711d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_actuator_data_type { 1712d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_ACTUATOR_BYTE_DATA = 1, 1713d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_ACTUATOR_WORD_DATA, 1714d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1715d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1716d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_actuator_addr_type { 1717d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_ACTUATOR_BYTE_ADDR = 1, 1718d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_ACTUATOR_WORD_ADDR, 1719d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1720d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1721d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_actuator_write_type { 1722d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_ACTUATOR_WRITE_HW_DAMP, 1723d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_ACTUATOR_WRITE_DAC, 1724d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1725d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1726d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_reg_params_t { 1727d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum msm_actuator_write_type reg_write_type; 1728d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t hw_mask; 1729d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t reg_addr; 1730d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t hw_shift; 1731d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t data_shift; 1732d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1733d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1734d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct reg_settings_t { 1735d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t reg_addr; 1736d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t reg_data; 1737d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1738d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1739d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct region_params_t { 1740d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* [0] = ForwardDirection Macro boundary 1741d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi [1] = ReverseDirection Inf boundary 1742d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */ 1743d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t step_bound[2]; 1744d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t code_per_step; 1745d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1746d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1747d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_move_params_t { 1748d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int8_t dir; 1749d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int8_t sign_dir; 1750d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int16_t dest_step_pos; 1751d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int32_t num_steps; 1752d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct damping_params_t *ringing_params; 1753d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1754d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1755d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_tuning_params_t { 1756d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int16_t initial_code; 1757d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t pwd_step; 1758d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t region_size; 1759d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t total_steps; 1760d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct region_params_t *region_params; 1761d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1762d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1763d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_params_t { 1764d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum actuator_type act_type; 1765d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t reg_tbl_size; 1766d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t data_size; 1767d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t init_setting_size; 1768d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t i2c_addr; 1769d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum msm_actuator_addr_type i2c_addr_type; 1770d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum msm_actuator_data_type i2c_data_type; 1771d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_actuator_reg_params_t *reg_tbl_params; 1772d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct reg_settings_t *init_settings; 1773d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1774d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1775d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_set_info_t { 1776d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_actuator_params_t actuator_params; 1777d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_actuator_tuning_params_t af_tuning_params; 1778d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1779d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1780d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_get_info_t { 1781d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t focal_length_num; 1782d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t focal_length_den; 1783d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t f_number_num; 1784d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t f_number_den; 1785d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t f_pix_num; 1786d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t f_pix_den; 1787d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t total_f_dist_num; 1788d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t total_f_dist_den; 1789d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t hor_view_angle_num; 1790d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t hor_view_angle_den; 1791d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t ver_view_angle_num; 1792d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t ver_view_angle_den; 1793d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1794d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1795d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum af_camera_name { 1796d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_MAIN_CAM_0, 1797d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_MAIN_CAM_1, 1798d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_MAIN_CAM_2, 1799d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_MAIN_CAM_3, 1800d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_MAIN_CAM_4, 1801d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_MAIN_CAM_5, 1802d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_WEB_CAM_0, 1803d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_WEB_CAM_1, 1804d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_WEB_CAM_2, 1805d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1806d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1807d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_cfg_data { 1808d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cfgtype; 1809d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t is_af_supported; 1810d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 1811d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_actuator_move_params_t move; 1812d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_actuator_set_info_t set_info; 1813d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_actuator_get_info_t get_info; 1814d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum af_camera_name cam_name; 1815d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } cfg; 1816d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1817d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1818d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_eeprom_support { 1819d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t is_supported; 1820d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t size; 1821d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t index; 1822d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t qvalue; 1823d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1824d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1825d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_wb { 1826d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t r_over_g; 1827d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t b_over_g; 1828d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gr_over_gb; 1829d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1830d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1831d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_af { 1832d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t macro_dac; 1833d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t inf_dac; 1834d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t start_dac; 1835d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1836d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1837d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_lsc { 1838d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t r_gain[221]; 1839d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t b_gain[221]; 1840d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gr_gain[221]; 1841d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t gb_gain[221]; 1842d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1843d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1844d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct pixel_t { 1845d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int x; 1846d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int y; 1847d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1848d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1849d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_dpc { 1850d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t validcount; 1851d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct pixel_t snapshot_coord[128]; 1852d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct pixel_t preview_coord[128]; 1853d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct pixel_t video_coord[128]; 1854d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1855d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1856f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_calib_raw { 1857f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t *data; 1858f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t size; 1859f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 1860f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 1861d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_eeprom_info_t { 1862d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_eeprom_support af; 1863d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_eeprom_support wb; 1864d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_eeprom_support lsc; 1865d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_eeprom_support dpc; 1866f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct msm_eeprom_support raw; 1867d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1868d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1869d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_eeprom_cfg_data { 1870d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cfgtype; 1871d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t is_eeprom_supported; 1872d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 1873d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_eeprom_data_t get_data; 1874d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_camera_eeprom_info_t get_info; 1875d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } cfg; 1876d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1877d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1878d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_large_data { 1879d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int cfgtype; 1880d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 1881d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct sensor_3d_cali_data_t sensor_3d_cali_data; 1882d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } data; 1883d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1884d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1885d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum sensor_type_t { 1886d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi BAYER, 1887d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi YUV, 1888d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi JPEG_SOC, 1889d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1890d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1891d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum flash_type { 1892d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi LED_FLASH, 1893d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi STROBE_FLASH, 1894d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1895d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1896d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum strobe_flash_ctrl_type { 1897d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi STROBE_FLASH_CTRL_INIT, 1898d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi STROBE_FLASH_CTRL_CHARGE, 1899d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi STROBE_FLASH_CTRL_RELEASE 1900d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1901d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1902d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct strobe_flash_ctrl_data { 1903d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum strobe_flash_ctrl_type type; 1904d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int charge_en; 1905d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1906d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1907d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_info { 1908d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int num_cameras; 1909d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t has_3d_support[MSM_MAX_CAMERA_SENSORS]; 1910d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t is_internal_cam[MSM_MAX_CAMERA_SENSORS]; 1911d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t s_mount_angle[MSM_MAX_CAMERA_SENSORS]; 1912d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi const char *video_dev_name[MSM_MAX_CAMERA_SENSORS]; 1913d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum sensor_type_t sensor_type[MSM_MAX_CAMERA_SENSORS]; 1914d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1915d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1916d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cam_config_dev_info { 1917d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int num_config_nodes; 1918d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi const char *config_dev_name[MSM_MAX_CAMERA_CONFIGS]; 1919d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int config_dev_id[MSM_MAX_CAMERA_CONFIGS]; 1920d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1921d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1922d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_node_info { 1923d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int num_mctl_nodes; 1924d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi const char *mctl_node_name[MSM_MAX_CAMERA_SENSORS]; 1925d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1926d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1927d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct flash_ctrl_data { 1928d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int flashtype; 1929d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi union { 1930d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int led_state; 1931d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct strobe_flash_ctrl_data strobe_ctrl; 1932d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi } ctrl_data; 1933d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1934d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1935d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_NAME 0 1936d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_PREVIEW_LINE_PER_FRAME 1 1937d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_PREVIEW_PIXELS_PER_LINE 2 1938d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_LINE_PER_FRAME 3 1939d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_PIXELS_PER_LINE 4 1940d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_FPS 5 1941d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_MAX_EP_LINE_CNT 6 1942d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1943d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camsensor_info { 1944d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi char name[MAX_SENSOR_NAME]; 1945d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t flash_enabled; 1946d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t strobe_flash_enabled; 1947d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t actuator_enabled; 1948d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t ispif_supported; 1949d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int8_t total_steps; 1950d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t support_3d; 1951d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum flash_type flashtype; 1952d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum sensor_type_t sensor_type; 1953f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t pxlcode; /* enum v4l2_mbus_pixelcode */ 1954f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t camera_type; /* msm_camera_type */ 1955d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int mount_angle; 1956d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t max_width; 1957d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t max_height; 1958d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1959d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1960d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_SINGLE_PLANE 0 1961d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_Y 0 1962d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_CBCR 1 1963d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_CB 1 1964d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_CR 2 1965d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1966d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct plane_data { 1967d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int plane_id; 1968d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t offset; 1969d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long size; 1970d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1971d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1972d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct img_plane_info { 1973d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t width; 1974d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t height; 1975d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t pixelformat; 1976f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t buffer_type; /*Single/Multi planar*/ 1977d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t output_port; 1978d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t ext_mode; 1979d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint8_t num_planes; 1980d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct plane_data plane[MAX_PLANES]; 1981d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t sp_y_offset; 1982d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t inst_handle; 1983d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 1984d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1985d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_NAME "qcamera" 1986d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_SERVER_NAME "qcamera_server" 1987d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_DEVICE_GROUP_ID 1 1988d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_VNODE_GROUP_ID 2 1989d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 1990d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_cam_subdev_type { 1991d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CSIPHY_DEV, 1992d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CSID_DEV, 1993d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CSIC_DEV, 1994d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ISPIF_DEV, 1995d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VFE_DEV, 1996d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi AXI_DEV, 1997d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi VPE_DEV, 1998d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi SENSOR_DEV, 1999d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ACTUATOR_DEV, 2000d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi EEPROM_DEV, 2001d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GESTURE_DEV, 2002d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi IRQ_ROUTER_DEV, 2003d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CPP_DEV, 2004d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CCI_DEV, 2005f2be60f5864338ca33d569f0086dac301b7066afDevin Kim FLASH_DEV, 2006d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2007d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2008d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_set_sdev_data { 2009d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t revision; 2010d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum msm_cam_subdev_type sdev_type; 2011d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2012d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2013d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_CAMERA_INFO \ 2014d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct msm_camera_v4l2_ioctl_t) 2015d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2016d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_CONFIG_INFO \ 2017d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct msm_camera_v4l2_ioctl_t) 2018d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2019d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_MCTL_INFO \ 2020d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct msm_camera_v4l2_ioctl_t) 2021d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2022d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_CTRL_CMD_DONE \ 2023d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct msm_camera_v4l2_ioctl_t) 2024d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2025d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_EVENT_PAYLOAD \ 2026d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct msm_camera_v4l2_ioctl_t) 2027d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2028d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SEND_EVENT \ 2029d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct v4l2_event) 2030d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2031d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_CFG_VPE \ 2032d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 7, struct msm_vpe_cfg_cmd) 2033d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2034d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_PRIVATE_S_CTRL \ 2035d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_camera_v4l2_ioctl_t) 2036d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2037d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_PRIVATE_G_CTRL \ 2038d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 9, struct msm_camera_v4l2_ioctl_t) 2039d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2040f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_V4L2_IOCTL_PRIVATE_GENERAL \ 2041f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOW('V', BASE_VIDIOC_PRIVATE + 10, struct msm_camera_v4l2_ioctl_t) 2042f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 2043d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VPE_INIT \ 2044d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO('V', BASE_VIDIOC_PRIVATE + 15) 2045d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2046d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VPE_RELEASE \ 2047d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO('V', BASE_VIDIOC_PRIVATE + 16) 2048d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2049d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VPE_CFG \ 2050d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 17, struct msm_mctl_pp_params *) 2051d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2052d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_INIT \ 2053f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOWR('V', BASE_VIDIOC_PRIVATE + 18, uint8_t *) 2054d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2055d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_RELEASE \ 2056d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO('V', BASE_VIDIOC_PRIVATE + 19) 2057d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2058d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_CFG \ 2059d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 20, void *) 2060d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2061d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_IRQ \ 2062d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 21, void *) 2063d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2064d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_BUF_CFG \ 2065d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 22, void *) 2066d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2067f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define VIDIOC_MSM_AXI_RDI_COUNT_UPDATE \ 2068f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IOWR('V', BASE_VIDIOC_PRIVATE + 23, struct rdi_count_msg) 2069f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 2070d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VFE_INIT \ 2071f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IO('V', BASE_VIDIOC_PRIVATE + 24) 2072d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2073d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VFE_RELEASE \ 2074f2be60f5864338ca33d569f0086dac301b7066afDevin Kim _IO('V', BASE_VIDIOC_PRIVATE + 25) 2075d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2076d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_v4l2_ioctl_t { 2077d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t id; 2078d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t len; 2079f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t trans_code; 2080f2be60f5864338ca33d569f0086dac301b7066afDevin Kim void __user *ioctl_ptr; 2081d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2082d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2083d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_vfe_params_t { 2084d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t operation_mode; 2085d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t capture_count; 2086f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t skip_reset; 2087f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t stop_immediately; 2088d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t port_info; 2089d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t inst_handle; 2090d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint16_t cmd_type; 2091d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2092d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2093d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_camss_irq_idx { 2094d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_0, 2095d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_1, 2096d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_2, 2097d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_3, 2098d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_4, 2099d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_5, 2100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_6, 2101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_7, 2102d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_8, 2103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_9, 2104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_10, 2105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_11, 2106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_12, 2107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi CAMERA_SS_IRQ_MAX 2108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_cam_hw_idx { 2111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_MICRO, 2112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_CCI, 2113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_CSI0, 2114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_CSI1, 2115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_CSI2, 2116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_CSI3, 2117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_ISPIF, 2118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_CPP, 2119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_VFE0, 2120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_VFE1, 2121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_JPEG0, 2122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_JPEG1, 2123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_JPEG2, 2124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CAM_HW_MAX 2125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_irq_cfg { 2128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* Bit mask of all the camera hardwares that needs to 2129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * be composited into a single IRQ to the MSM. 2130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Current usage: (may be updated based on hw changes) 2131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Bits 31:13 - Reserved. 2132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Bits 12:0 2133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 12 - MSM_CAM_HW_JPEG2 2134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 11 - MSM_CAM_HW_JPEG1 2135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 10 - MSM_CAM_HW_JPEG0 2136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 9 - MSM_CAM_HW_VFE1 2137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 8 - MSM_CAM_HW_VFE0 2138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 7 - MSM_CAM_HW_CPP 2139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 6 - MSM_CAM_HW_ISPIF 2140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 5 - MSM_CAM_HW_CSI3 2141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 4 - MSM_CAM_HW_CSI2 2142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 3 - MSM_CAM_HW_CSI1 2143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 2 - MSM_CAM_HW_CSI0 2144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 1 - MSM_CAM_HW_CCI 2145d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 0 - MSM_CAM_HW_MICRO 2146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */ 2147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t cam_hw_mask; 2148f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t irq_idx; 2149f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t num_hwcore; 2150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_IRQROUTER_CFG_COMPIRQ \ 2153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE, void __user *) 2154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_NUM_CPP_STRIPS 8 2156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2157d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_cpp_frame_type { 2158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CPP_OFFLINE_FRAME, 2159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi MSM_CPP_REALTIME_FRAME, 2160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cpp_frame_strip_info { 2163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int scale_v_en; 2164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int scale_h_en; 2165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int upscale_v_en; 2167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int upscale_h_en; 2168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int src_start_x; 2170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int src_end_x; 2171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int src_start_y; 2172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int src_end_y; 2173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi /* Padding is required for upscaler because it does not 2175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * pad internally like other blocks, also needed for rotation 2176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * rotation expects all the blocks in the stripe to be the same size 2177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Padding is done such that all the extra padded pixels 2178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * are on the right and bottom 2179f2be60f5864338ca33d569f0086dac301b7066afDevin Kim */ 2180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int pad_bottom; 2181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int pad_top; 2182d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int pad_right; 2183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int pad_left; 2184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int v_init_phase; 2186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int h_init_phase; 2187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int h_phase_step; 2188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int v_phase_step; 2189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int prescale_crop_width_first_pixel; 2191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int prescale_crop_width_last_pixel; 2192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int prescale_crop_height_first_line; 2193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int prescale_crop_height_last_line; 2194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int postscale_crop_height_first_line; 2196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int postscale_crop_height_last_line; 2197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int postscale_crop_width_first_pixel; 2198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int postscale_crop_width_last_pixel; 2199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int dst_start_x; 2201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int dst_end_x; 2202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int dst_start_y; 2203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int dst_end_y; 2204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int bytes_per_pixel; 2206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int source_address; 2207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int destination_address; 2208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int src_stride; 2209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int dst_stride; 2210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int rotate_270; 2211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int horizontal_flip; 2212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int vertical_flip; 2213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int scale_output_width; 2214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int scale_output_height; 2215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cpp_frame_info_t { 2218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int32_t frame_id; 2219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t inst_id; 2220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t client_id; 2221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi enum msm_cpp_frame_type frame_type; 2222d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t num_strips; 2223d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct msm_cpp_frame_strip_info *strip_info; 2224d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2225d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2226d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ver_num_info { 2227d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t main; 2228d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t minor; 2229d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi uint32_t rev; 2230d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 2231d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2232d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_CPP_CFG \ 2233d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_camera_v4l2_ioctl_t) 2234d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2235d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_CPP_GET_EVENTPAYLOAD \ 2236d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct msm_camera_v4l2_ioctl_t) 2237d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2238d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_CPP_GET_INST_INFO \ 2239d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct msm_camera_v4l2_ioctl_t) 2240d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2241d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_EVENT_CPP_FRAME_DONE (V4L2_EVENT_PRIVATE_START + 0) 2242d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2243d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Instance Handle - inst_handle 2244d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Data bundle containing the information about where 2245d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * to get a buffer for a particular camera instance. 2246d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * This is a bitmask containing the following data: 2247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Buffer Handle Bitmask: 2248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * ------------------------------------ 2249d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Bits : Purpose 2250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * ------------------------------------ 2251f2be60f5864338ca33d569f0086dac301b7066afDevin Kim * 31 : is Dev ID valid? 2252f2be60f5864338ca33d569f0086dac301b7066afDevin Kim * 30 - 24 : Dev ID. 2253d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 23 : is Image mode valid? 2254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 22 - 16 : Image mode. 2255d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 15 : is MCTL PP inst idx valid? 2256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 14 - 8 : MCTL PP inst idx. 2257d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 7 : is Video inst idx valid? 2258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 6 - 0 : Video inst idx. 2259d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */ 2260f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CLR_DEVID_MODE(handle) (handle &= 0x00FFFFFF) 2261f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define SET_DEVID_MODE(handle, data) \ 2262f2be60f5864338ca33d569f0086dac301b7066afDevin Kim (handle |= ((0x1 << 31) | ((data & 0x7F) << 24))) 2263f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define GET_DEVID_MODE(handle) \ 2264f2be60f5864338ca33d569f0086dac301b7066afDevin Kim ((handle & 0x80000000) ? ((handle & 0x7F000000) >> 24) : 0xFF) 2265f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 2266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CLR_IMG_MODE(handle) (handle &= 0xFF00FFFF) 2267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SET_IMG_MODE(handle, data) \ 2268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (handle |= ((0x1 << 23) | ((data & 0x7F) << 16))) 2269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_IMG_MODE(handle) \ 2270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ((handle & 0x800000) ? ((handle & 0x7F0000) >> 16) : 0xFF) 2271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CLR_MCTLPP_INST_IDX(handle) (handle &= 0xFFFF00FF) 2273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SET_MCTLPP_INST_IDX(handle, data) \ 2274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (handle |= ((0x1 << 15) | ((data & 0x7F) << 8))) 2275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_MCTLPP_INST_IDX(handle) \ 2276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ((handle & 0x8000) ? ((handle & 0x7F00) >> 8) : 0xFF) 2277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CLR_VIDEO_INST_IDX(handle) (handle &= 0xFFFFFF00) 2279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_VIDEO_INST_IDX(handle) \ 2280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi ((handle & 0x80) ? (handle & 0x7F) : 0xFF) 2281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SET_VIDEO_INST_IDX(handle, data) \ 2282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi (handle |= (0x1 << 7) | (data & 0x7F)) 2283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 2284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif /* __LINUX_MSM_CAMERA_H */ 2285