1f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *
38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * This program is free software; you can redistribute it and/or modify
48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * it under the terms of the GNU General Public License version 2 and
58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * only version 2 as published by the Free Software Foundation.
68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *
78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * This program is distributed in the hope that it will be useful,
88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * but WITHOUT ANY WARRANTY; without even the implied warranty of
98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * GNU General Public License for more details.
118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *
128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */
138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef __LINUX_MSM_GESTURES_H
148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define __LINUX_MSM_GESTURES_H
158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h>
178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/ioctl.h>
188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <media/msm_camera.h>
198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_IOCTL_CTRL_COMMAND \
218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW('V', BASE_VIDIOC_PRIVATE + 20, struct v4l2_control)
228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VIDIOC_MSM_GESTURE_EVT \
248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOWR('V', BASE_VIDIOC_PRIVATE + 21, struct v4l2_event)
258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_GET_EVT_PAYLOAD \
278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW('V', BASE_VIDIOC_PRIVATE + 22, struct msm_ges_evt)
288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VIDIOC_MSM_GESTURE_CAM_EVT \
308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOWR('V', BASE_VIDIOC_PRIVATE + 23, int)
318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_RESP_V4L2  MSM_CAM_RESP_MAX
338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_RESP_MAX  (MSM_GES_RESP_V4L2 + 1)
348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_SVR_RESP_MAX  MSM_GES_RESP_MAX
368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_V4L2_GES_BASE                             100
398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_V4L2_GES_OPEN         (MSM_V4L2_GES_BASE + 0)
408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_V4L2_GES_CLOSE        (MSM_V4L2_GES_BASE + 1)
418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_V4L2_GES_CAM_OPEN     (MSM_V4L2_GES_BASE + 2)
428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_V4L2_GES_CAM_CLOSE    (MSM_V4L2_GES_BASE + 3)
438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_APP_EVT_MIN     (V4L2_EVENT_PRIVATE_START + 0x14)
458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_APP_NOTIFY_EVENT        (MSM_GES_APP_EVT_MIN + 0)
468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_APP_NOTIFY_ERROR_EVENT  (MSM_GES_APP_EVT_MIN + 1)
478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GES_APP_EVT_MAX             (MSM_GES_APP_EVT_MIN + 2)
488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_GESTURE_CID_CTRL_CMD V4L2_CID_BRIGHTNESS
508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MAX_GES_EVENTS 25
528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msm_ges_ctrl_cmd {
548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int type;
558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	void *value;
568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int len;
578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int fd;
588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	uint32_t cookie;
598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msm_ges_evt {
628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	void *evt_data;
638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int evt_len;
648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /*__LINUX_MSM_GESTURES_H*/
67