upload tizen1.0 source
[kernel/linux-2.6.36.git] / drivers / media / video / m5mo / m5mo_cid.h
1 /*
2  * Driver Header for M5MO(MBG027) 5MP/8MP ISP driver
3  * FIXME: This contents of file must be into include/linux/videodev2.h.
4  *
5  * Copyright (C) 2010 Samsung Electronics Co., Ltd
6  * Author: HeungJun Kim, riverful.kim@samsung.com
7  *
8  * Copyright (C) 2009 Samsung Electronics Co., Ltd
9  * Author: Dongsoo Nathaniel Kim, dongsoo45.kim@samsung.com
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  */
16
17 #ifndef __M5MO_CID_H
18 #define __M5MO_CID_H
19
20 /* Manual exposure control items menu type: iris, shutter, iso */
21 #define V4L2_CID_CAM_APERTURE           (V4L2_CID_CAMERA_CLASS_BASE+20)
22 #define V4L2_CID_CAM_SHUTTER            (V4L2_CID_CAMERA_CLASS_BASE+21)
23 #define V4L2_CID_CAM_ISO                (V4L2_CID_CAMERA_CLASS_BASE+22)
24
25 /* Following CIDs are menu type */
26 #define V4L2_CID_SCENEMODE              (V4L2_CID_CAMERA_CLASS_BASE+23)
27 #define V4L2_CID_CAM_STABILIZE          (V4L2_CID_CAMERA_CLASS_BASE+24)
28 #define V4L2_CID_CAM_MULTISHOT          (V4L2_CID_CAMERA_CLASS_BASE+25)
29
30 /* Control dynamic range */
31 #define V4L2_CID_CAM_DR                 (V4L2_CID_CAMERA_CLASS_BASE+26)
32
33 /* White balance preset control */
34 #define V4L2_CID_WHITE_BALANCE_PRESET   (V4L2_CID_CAMERA_CLASS_BASE+27)
35
36 /* CID extensions */
37 #define V4L2_CID_ROTATION               (V4L2_CID_PRIVATE_BASE + 0)
38 #define V4L2_CID_PADDR_Y                (V4L2_CID_PRIVATE_BASE + 1)
39 #define V4L2_CID_PADDR_CB               (V4L2_CID_PRIVATE_BASE + 2)
40 #define V4L2_CID_PADDR_CR               (V4L2_CID_PRIVATE_BASE + 3)
41 #define V4L2_CID_PADDR_CBCR             (V4L2_CID_PRIVATE_BASE + 4)
42 #define V4L2_CID_OVERLAY_AUTO           (V4L2_CID_PRIVATE_BASE + 5)
43 #define V4L2_CID_OVERLAY_VADDR0         (V4L2_CID_PRIVATE_BASE + 6)
44 #define V4L2_CID_OVERLAY_VADDR1         (V4L2_CID_PRIVATE_BASE + 7)
45 #define V4L2_CID_OVERLAY_VADDR2         (V4L2_CID_PRIVATE_BASE + 8)
46
47 #define V4L2_CID_FW_UPDATE              (V4L2_CID_PRIVATE_BASE + 5)
48
49 /* Object recognition and collateral actions */
50 enum v4l2_recog_mode {
51         V4L2_RECOGNITION_MODE_OFF       = 0,
52         V4L2_RECOGNITION_MODE_ON        = 1,
53         V4L2_RECOGNITION_MODE_LOCK      = 2,
54 };
55
56 enum v4l2_recog_action {
57         V4L2_RECOGNITION_ACTION_NONE    = 0,    /* only recognition */
58         V4L2_RECOGNITION_ACTION_BLINK   = 1,    /* Capture on blinking */
59         V4L2_RECOGNITION_ACTION_SMILE   = 2,    /* Capture on smiling */
60 };
61
62 enum v4l2_recog_pattern {
63         V4L2_RECOG_PATTERN_FACE         = 0,    /* Face */
64         V4L2_RECOG_PATTERN_HUMAN        = 1,    /* Human */
65         V4L2_RECOG_PATTERN_CHAR         = 2,    /* Character */
66 };
67
68 struct v4l2_recog_rect {
69         enum    v4l2_recog_pattern      p;      /* detected pattern */
70         struct  v4l2_rect               o;      /* detected area */
71         __u32   reserved[4];
72 };
73
74 struct v4l2_recog_data {
75         __u8                    detect_cnt;     /* detected object counter */
76         struct  v4l2_rect       o;              /* detected area */
77         __u32                   reserved[4];
78 };
79
80 struct v4l2_recognition {
81         enum v4l2_recog_mode    mode;
82         enum v4l2_recog_pattern pattern;        /* Which pattern to detect */
83         __u8                    obj_num;        /* How many object to detect */
84         __u32                   detect_idx;     /* select detected object */
85         struct v4l2_recog_data  data;           /* read only :Get object coordination */
86         enum v4l2_recog_action  action;
87         __u32                   reserved[4];
88 };
89 #define VIDIOC_S_RECOGNITION            _IOWR ('V', 85, struct v4l2_recognition)
90 #define VIDIOC_G_RECOGNITION            _IOR ('V', 86, struct v4l2_recognition)
91
92 #define V4L2_CID_FOCUS_MODE             (V4L2_CID_CAMERA_CLASS_BASE+17)
93 /* Focus Methods */
94 enum v4l2_focus_mode {
95         V4L2_FOCUS_MODE_AUTO            = 0,
96         V4L2_FOCUS_MODE_MACRO           = 1,
97         V4L2_FOCUS_MODE_MANUAL          = 2,
98         V4L2_FOCUS_MODE_CONTINUOUS      = 3,
99         V4L2_FOCUS_MODE_LASTP           = V4L2_FOCUS_MODE_CONTINUOUS,
100 };
101
102 #define V4L2_CID_ZOOM_MODE              (V4L2_CID_CAMERA_CLASS_BASE+18)
103 /* Zoom Methods */
104 enum v4l2_zoom_mode {
105         V4L2_ZOOM_MODE_CONTINUOUS       = 0,
106         V4L2_ZOOM_MODE_OPTICAL          = 1,
107         V4L2_ZOOM_MODE_DIGITAL          = 2,
108         V4L2_ZOOM_MODE_LASTP            = V4L2_ZOOM_MODE_DIGITAL,
109 };
110
111 /* Exposure Methods */
112 #define V4L2_CID_PHOTOMETRY             (V4L2_CID_CAMERA_CLASS_BASE+19)
113 enum v4l2_photometry_mode {
114         V4L2_PHOTOMETRY_MULTISEG        = 0, /* Multi Segment */
115         V4L2_PHOTOMETRY_CWA             = 1, /* Centre Weighted Average */
116         V4L2_PHOTOMETRY_SPOT            = 2,
117         V4L2_PHOTOMETRY_AFSPOT          = 3, /* Spot metering on focused point */
118         V4L2_PHOTOMETRY_LASTP           = V4L2_PHOTOMETRY_AFSPOT,
119 };
120
121 #endif  /* __M5MO_CID_H */