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