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