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