15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef __LINUX_MSMB_CAMERA_H
25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define __LINUX_MSMB_CAMERA_H
35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/videodev2.h>
55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h>
65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/ioctl.h>
75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_LOGSYNC_FILE_NAME "logsync"
95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_LOGSYNC_FILE_BASEDIR "camera"
105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY \
125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 30, struct msm_v4l2_event_data)
135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY_META \
155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 31, struct msm_v4l2_event_data)
165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_CMD_ACK \
185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 32, struct msm_v4l2_event_data)
195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY_ERROR \
215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 33, struct msm_v4l2_event_data)
225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY_DEBUG \
245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 34, struct msm_v4l2_event_data)
255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifdef CONFIG_COMPAT
275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY32 \
285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 30, struct v4l2_event32)
295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY_META32 \
315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 31, struct v4l2_event32)
325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_CMD_ACK32 \
345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 32, struct v4l2_event32)
355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY_ERROR32 \
375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 33, struct v4l2_event32)
385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAM_V4L2_IOCTL_NOTIFY_DEBUG32 \
405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	_IOW('V', BASE_VIDIOC_PRIVATE + 34, struct v4l2_event32)
415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCAMERA_DEVICE_GROUP_ID	1
455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCAMERA_VNODE_GROUP_ID	2
465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_NAME					"msm_camera"
475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CONFIGURATION_NAME	"msm_config"
485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_CSIPHY       0
505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_CSID         1
515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_ISPIF        2
525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_VFE          3
535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_AXI          4
545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_VPE          5
555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_SENSOR       6
565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_ACTUATOR     7
575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_EEPROM       8
585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_CPP          9
595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_CCI          10
605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_LED_FLASH    11
615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_STROBE_FLASH 12
625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_BUF_MNGR     13
635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_SENSOR_INIT  14
645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_OIS          15
655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_FLASH        16
665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SUBDEV_EXT          17
675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MAX_CAMERA_SENSORS  5
695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The below macro is defined to put an upper limit on maximum
715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * number of buffer requested per stream. In case of extremely
725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * large value for number of buffer due to data structure corruption
735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * we return error to avoid integer overflow. Group processing
745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * can have max of 9 groups of 8 bufs each. This value may be
755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * configured in future*/
765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_MAX_STREAM_BUF 72
775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Max batch size of processing */
795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_MAX_USER_BUFF_CNT 16
805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* featur base */
825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_FEATURE_BASE     0x00010000
835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_FEATURE_SHUTDOWN (MSM_CAMERA_FEATURE_BASE + 1)
845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_STATUS_BASE      0x00020000
865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_STATUS_FAIL      (MSM_CAMERA_STATUS_BASE + 1)
875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_STATUS_SUCCESS   (MSM_CAMERA_STATUS_BASE + 2)
885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* event type */
905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_V4L2_EVENT_TYPE (V4L2_EVENT_PRIVATE_START + 0x00002000)
915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* event id */
935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_EVENT_MIN    0
945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_NEW_SESSION  (MSM_CAMERA_EVENT_MIN + 1)
955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_DEL_SESSION  (MSM_CAMERA_EVENT_MIN + 2)
965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_SET_PARM     (MSM_CAMERA_EVENT_MIN + 3)
975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_GET_PARM     (MSM_CAMERA_EVENT_MIN + 4)
985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_MAPPING_CFG  (MSM_CAMERA_EVENT_MIN + 5)
995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_MAPPING_SES  (MSM_CAMERA_EVENT_MIN + 6)
1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_MSM_NOTIFY   (MSM_CAMERA_EVENT_MIN + 7)
1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_EVENT_MAX    (MSM_CAMERA_EVENT_MIN + 8)
1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* data.command */
1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_S_CROP		 (V4L2_CID_PRIVATE_BASE + 1)
1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_G_CROP		 (V4L2_CID_PRIVATE_BASE + 2)
1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_G_FMT			 (V4L2_CID_PRIVATE_BASE + 3)
1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_S_FMT			 (V4L2_CID_PRIVATE_BASE + 4)
1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_TRY_FMT		 (V4L2_CID_PRIVATE_BASE + 5)
1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_METADATA	 (V4L2_CID_PRIVATE_BASE + 6)
1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_QUERY_CAP  (V4L2_CID_PRIVATE_BASE + 7)
1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_STREAM_ON  (V4L2_CID_PRIVATE_BASE + 8)
1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_STREAM_OFF (V4L2_CID_PRIVATE_BASE + 9)
1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_NEW_STREAM (V4L2_CID_PRIVATE_BASE + 10)
1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_DEL_STREAM (V4L2_CID_PRIVATE_BASE + 11)
1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_SHUTDOWN   (V4L2_CID_PRIVATE_BASE + 12)
1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_STREAM_INFO_SYNC \
1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	(V4L2_CID_PRIVATE_BASE + 13)
1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_G_SESSION_ID (V4L2_CID_PRIVATE_BASE + 14)
1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_PRIV_CMD_MAX  20
1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* data.status - success */
1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_CMD_SUCESS      0x00000001
1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_BUF_MAP_SUCESS  0x00000002
1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* data.status - error */
1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_ERR_EVT_BASE 0x00010000
1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_ERR_CMD_FAIL (MSM_CAMERA_ERR_EVT_BASE + 1)
1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_ERR_MAPPING  (MSM_CAMERA_ERR_EVT_BASE + 2)
1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_CAMERA_ERR_DEVICE_BUSY  (MSM_CAMERA_ERR_EVT_BASE + 3)
1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The msm_v4l2_event_data structure should match the
1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * v4l2_event.u.data field.
1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * should not exceed 16 elements */
1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_v4l2_event_data {
1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 0*/
1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int command;
1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 1*/
1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int status;
1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 2*/
1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int session_id;
1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 3*/
1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int stream_id;
1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 4*/
1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int map_op;
1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 5*/
1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int map_buf_idx;
1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 6*/
1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int notify;
1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 7*/
1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int arg_value;
1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 8*/
1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int ret_value;
1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 9*/
1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int v4l2_event_type;
1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 10*/
1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int v4l2_event_id;
1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 11*/
1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int handle;
1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 12*/
1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int nop6;
1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 13*/
1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int nop7;
1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 14*/
1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int nop8;
1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*word 15*/
1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int nop9;
1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* map to v4l2_format.fmt.raw_data */
1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_v4l2_format_data {
1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum v4l2_buf_type type;
1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int width;
1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int height;
1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int pixelformat; /* FOURCC */
1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char num_planes;
1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int plane_sizes[VIDEO_MAX_PLANES];
1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  MSM Four-character-code (FOURCC) */
1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define msm_v4l2_fourcc(a, b, c, d)\
1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) |\
1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((__u32)(d) << 24))
1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Composite stats */
1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_COMB v4l2_fourcc('S', 'T', 'C', 'M')
1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* AEC stats */
1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_AE   v4l2_fourcc('S', 'T', 'A', 'E')
1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* AF stats */
1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_AF   v4l2_fourcc('S', 'T', 'A', 'F')
1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* AWB stats */
1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_AWB  v4l2_fourcc('S', 'T', 'W', 'B')
1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* IHIST stats */
1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_IHST v4l2_fourcc('I', 'H', 'S', 'T')
1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Column count stats */
1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_CS   v4l2_fourcc('S', 'T', 'C', 'S')
1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Row count stats */
1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_RS   v4l2_fourcc('S', 'T', 'R', 'S')
1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Bayer Grid stats */
1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_BG   v4l2_fourcc('S', 'T', 'B', 'G')
2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Bayer focus stats */
2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_BF   v4l2_fourcc('S', 'T', 'B', 'F')
2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Bayer hist stats */
2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_STATS_BHST v4l2_fourcc('B', 'H', 'S', 'T')
2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum smmu_attach_mode {
2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	NON_SECURE_MODE = 0x01,
2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SECURE_MODE = 0x02,
2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MAX_PROTECTION_MODE = 0x03,
2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_smmu_attach_type {
2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum smmu_attach_mode attach;
2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_user_buf_cont_t {
2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int buf_cnt;
2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int buf_idx[MSM_CAMERA_MAX_USER_BUFF_CNT];
2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif /* __LINUX_MSMB_CAMERA_H */
221