xref: /titanic_41/usr/src/uts/common/sys/dcam/dcam1394_io.h (revision 8eea8e29cc4374d1ee24c25a07f45af132db3499)
1*8eea8e29Sap25164 /*
2*8eea8e29Sap25164  * CDDL HEADER START
3*8eea8e29Sap25164  *
4*8eea8e29Sap25164  * The contents of this file are subject to the terms of the
5*8eea8e29Sap25164  * Common Development and Distribution License, Version 1.0 only
6*8eea8e29Sap25164  * (the "License").  You may not use this file except in compliance
7*8eea8e29Sap25164  * with the License.
8*8eea8e29Sap25164  *
9*8eea8e29Sap25164  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*8eea8e29Sap25164  * or http://www.opensolaris.org/os/licensing.
11*8eea8e29Sap25164  * See the License for the specific language governing permissions
12*8eea8e29Sap25164  * and limitations under the License.
13*8eea8e29Sap25164  *
14*8eea8e29Sap25164  * When distributing Covered Code, include this CDDL HEADER in each
15*8eea8e29Sap25164  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*8eea8e29Sap25164  * If applicable, add the following below this CDDL HEADER, with the
17*8eea8e29Sap25164  * fields enclosed by brackets "[]" replaced with your own identifying
18*8eea8e29Sap25164  * information: Portions Copyright [yyyy] [name of copyright owner]
19*8eea8e29Sap25164  *
20*8eea8e29Sap25164  * CDDL HEADER END
21*8eea8e29Sap25164  */
22*8eea8e29Sap25164 /*
23*8eea8e29Sap25164  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24*8eea8e29Sap25164  * Use is subject to license terms.
25*8eea8e29Sap25164  */
26*8eea8e29Sap25164 
27*8eea8e29Sap25164 #ifndef _SYS_DCAM_DCAM1394_IO_H
28*8eea8e29Sap25164 #define	_SYS_DCAM_DCAM1394_IO_H
29*8eea8e29Sap25164 
30*8eea8e29Sap25164 #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*8eea8e29Sap25164 
32*8eea8e29Sap25164 #include <sys/time.h>
33*8eea8e29Sap25164 
34*8eea8e29Sap25164 #ifdef __cplusplus
35*8eea8e29Sap25164 extern "C" {
36*8eea8e29Sap25164 #endif
37*8eea8e29Sap25164 
38*8eea8e29Sap25164 /* macros for manipulating dcam1394_param_list_t structure */
39*8eea8e29Sap25164 #define	PARAM_LIST_INIT(list)			bzero(list, sizeof (list))
40*8eea8e29Sap25164 #define	PARAM_LIST_ADD(list, param, subparam)	list[param][subparam].flag = 1
41*8eea8e29Sap25164 #define	PARAM_LIST_REMOVE(list, param, subparam)  list[param][subparam].flag = 0
42*8eea8e29Sap25164 #define	PARAM_LIST_IS_ENTRY(list, param, subparam) list[param][subparam].flag
43*8eea8e29Sap25164 #define	PARAM_VAL(list, param, subparam)	list[param][subparam].val
44*8eea8e29Sap25164 #define	PARAM_ERR(list, param, subparam)	list[param][subparam].err
45*8eea8e29Sap25164 
46*8eea8e29Sap25164 #define	DCAM1394_NUM_PARAM	30
47*8eea8e29Sap25164 #define	DCAM1394_NUM_SUBPARAM	24
48*8eea8e29Sap25164 
49*8eea8e29Sap25164 /* parameters */
50*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_POWER_CTRL			0x0
51*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_VID_MODE			0x1
52*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0	0x2
53*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_1	0x3
54*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_2	0x4
55*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_3	0x5
56*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_4	0x6
57*8eea8e29Sap25164 #define	DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_5	0x7
58*8eea8e29Sap25164 #define	DCAM1394_PARAM_POWER				0x8
59*8eea8e29Sap25164 #define	DCAM1394_PARAM_VID_MODE				0x9
60*8eea8e29Sap25164 #define	DCAM1394_PARAM_FRAME_RATE			0xA
61*8eea8e29Sap25164 #define	DCAM1394_PARAM_RING_BUFF_CAPACITY		0xB
62*8eea8e29Sap25164 #define	DCAM1394_PARAM_RING_BUFF_NUM_FRAMES_READY	0xC
63*8eea8e29Sap25164 #define	DCAM1394_PARAM_RING_BUFF_READ_PTR_INCR		0xD
64*8eea8e29Sap25164 #define	DCAM1394_PARAM_FRAME_NUM_BYTES			0xE
65*8eea8e29Sap25164 #define	DCAM1394_PARAM_STATUS				0xF
66*8eea8e29Sap25164 #define	DCAM1394_PARAM_BRIGHTNESS			0x10
67*8eea8e29Sap25164 #define	DCAM1394_PARAM_EXPOSURE				0x11
68*8eea8e29Sap25164 #define	DCAM1394_PARAM_SHARPNESS			0x12
69*8eea8e29Sap25164 #define	DCAM1394_PARAM_WHITE_BALANCE			0x13
70*8eea8e29Sap25164 #define	DCAM1394_PARAM_HUE				0x14
71*8eea8e29Sap25164 #define	DCAM1394_PARAM_SATURATION			0x15
72*8eea8e29Sap25164 #define	DCAM1394_PARAM_GAMMA				0x16
73*8eea8e29Sap25164 #define	DCAM1394_PARAM_SHUTTER				0x17
74*8eea8e29Sap25164 #define	DCAM1394_PARAM_GAIN				0x18
75*8eea8e29Sap25164 #define	DCAM1394_PARAM_IRIS				0x19
76*8eea8e29Sap25164 #define	DCAM1394_PARAM_FOCUS				0x1A
77*8eea8e29Sap25164 #define	DCAM1394_PARAM_ZOOM				0x1B
78*8eea8e29Sap25164 #define	DCAM1394_PARAM_PAN				0x1C
79*8eea8e29Sap25164 #define	DCAM1394_PARAM_TILT				0x1D
80*8eea8e29Sap25164 
81*8eea8e29Sap25164 /* subparameters */
82*8eea8e29Sap25164 
83*8eea8e29Sap25164 /* for DCAM1394_PARAM_CAP_VID_MODE */
84*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_0			0x0
85*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_YUV_444_160_120	0x0
86*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_1			0x1
87*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_YUV_422_320_240	0x1
88*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_2			0x2
89*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_YUV_411_640_480	0x2
90*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_3			0x3
91*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_YUV_422_640_480	0x3
92*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_4			0x4
93*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_RGB_640_480		0x4
94*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_5			0x5
95*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VID_MODE_Y_640_480		0x5
96*8eea8e29Sap25164 
97*8eea8e29Sap25164 /* for DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0 */
98*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_0			0x6
99*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_3_75_FPS		0x6
100*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_1			0x7
101*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_7_5_FPS		0x7
102*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_2			0x8
103*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_15_FPS		0x8
104*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_3			0x9
105*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_30_FPS		0x9
106*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_4			0xA
107*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_FRAME_RATE_60_FPS		0xA
108*8eea8e29Sap25164 
109*8eea8e29Sap25164 /* for features */
110*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_PRESENCE			0xB
111*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_CAP_READ			0xC
112*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_CAP_ON_OFF			0xD
113*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_CAP_CTRL_AUTO			0xE
114*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_CAP_CTRL_MANUAL		0xF
115*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_MIN_VAL			0x10
116*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_MAX_VAL			0x11
117*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_ON_OFF			0x12
118*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_CTRL_MODE			0x13
119*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_VALUE				0x14
120*8eea8e29Sap25164 
121*8eea8e29Sap25164 /* for white balance feature */
122*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_U_VALUE			0x15
123*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_V_VALUE			0x16
124*8eea8e29Sap25164 
125*8eea8e29Sap25164 #define	DCAM1394_SUBPARAM_NONE				0x17
126*8eea8e29Sap25164 
127*8eea8e29Sap25164 /* parameter values */
128*8eea8e29Sap25164 
129*8eea8e29Sap25164 /* for video mode param */
130*8eea8e29Sap25164 
131*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_0			0x0
132*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_YUV_444_160_120	0x0
133*8eea8e29Sap25164 
134*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_1			0x1
135*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_YUV_422_320_240	0x1
136*8eea8e29Sap25164 
137*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_2			0x2
138*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_YUV_411_640_480	0x2
139*8eea8e29Sap25164 
140*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_3			0x3
141*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_YUV_422_640_480	0x3
142*8eea8e29Sap25164 
143*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_4			0x4
144*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_RGB_640_480		0x4
145*8eea8e29Sap25164 
146*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_5			0x5
147*8eea8e29Sap25164 #define	DCAM1394_VID_MODE_Y_640_480		0x5
148*8eea8e29Sap25164 
149*8eea8e29Sap25164 /* for frame rate param */
150*8eea8e29Sap25164 
151*8eea8e29Sap25164 #define	DCAM1394_FRAME_RATE_0			0x6
152*8eea8e29Sap25164 #define	DCAM1394_3_75_FPS			0x6
153*8eea8e29Sap25164 
154*8eea8e29Sap25164 #define	DCAM1394_FRAME_RATE_1			0x7
155*8eea8e29Sap25164 #define	DCAM1394_7_5_FPS			0x7
156*8eea8e29Sap25164 
157*8eea8e29Sap25164 #define	DCAM1394_FRAME_RATE_2			0x8
158*8eea8e29Sap25164 #define	DCAM1394_15_FPS				0x8
159*8eea8e29Sap25164 
160*8eea8e29Sap25164 #define	DCAM1394_FRAME_RATE_3			0x9
161*8eea8e29Sap25164 #define	DCAM1394_30_FPS				0x9
162*8eea8e29Sap25164 
163*8eea8e29Sap25164 #define	DCAM1394_FRAME_RATE_4			0xA
164*8eea8e29Sap25164 #define	DCAM1394_60_FPS				0xA
165*8eea8e29Sap25164 
166*8eea8e29Sap25164 /* for feature control mode subparam */
167*8eea8e29Sap25164 
168*8eea8e29Sap25164 #define	DCAM1394_CTRL_AUTO			0x1
169*8eea8e29Sap25164 #define	DCAM1394_CTRL_MANUAL			0x0
170*8eea8e29Sap25164 
171*8eea8e29Sap25164 /* for power control subparam */
172*8eea8e29Sap25164 
173*8eea8e29Sap25164 #define	DCAM1394_POWER_OFF			0x0
174*8eea8e29Sap25164 #define	DCAM1394_POWER_ON			0x1
175*8eea8e29Sap25164 
176*8eea8e29Sap25164 /* ioctl() commands */
177*8eea8e29Sap25164 
178*8eea8e29Sap25164 #define	DCAM1394_IOC				('d' << 8)
179*8eea8e29Sap25164 
180*8eea8e29Sap25164 #define	DCAM1394_CMD_REG_READ			(DCAM1394_IOC | 0)
181*8eea8e29Sap25164 #define	DCAM1394_CMD_REG_WRITE			(DCAM1394_IOC | 1)
182*8eea8e29Sap25164 
183*8eea8e29Sap25164 #define	DCAM1394_CMD_CAM_RESET			(DCAM1394_IOC | 2)
184*8eea8e29Sap25164 #define	DCAM1394_CMD_PARAM_GET			(DCAM1394_IOC | 3)
185*8eea8e29Sap25164 #define	DCAM1394_CMD_PARAM_SET			(DCAM1394_IOC | 4)
186*8eea8e29Sap25164 #define	DCAM1394_CMD_FRAME_RCV_START		(DCAM1394_IOC | 5)
187*8eea8e29Sap25164 #define	DCAM1394_CMD_FRAME_RCV_STOP		(DCAM1394_IOC | 6)
188*8eea8e29Sap25164 #define	DCAM1394_CMD_RING_BUFF_FLUSH		(DCAM1394_IOC | 7)
189*8eea8e29Sap25164 #define	DCAM1394_CMD_FRAME_SEQ_NUM_COUNT_RESET	(DCAM1394_IOC | 8)
190*8eea8e29Sap25164 
191*8eea8e29Sap25164 #define	DCAM1394_RING_BUFF_OFFS		0x1
192*8eea8e29Sap25164 
193*8eea8e29Sap25164 /* for DCAM1394_PARAM_STATUS */
194*8eea8e29Sap25164 
195*8eea8e29Sap25164 #define	DCAM1394_STATUS_FRAME_RCV_DONE			0x1
196*8eea8e29Sap25164 #define	DCAM1394_STATUS_RING_BUFF_LOST_FRAME		0x2
197*8eea8e29Sap25164 #define	DCAM1394_STATUS_PARAM_CHANGE			0x4
198*8eea8e29Sap25164 #define	DCAM1394_STATUS_FRAME_SEQ_NUM_COUNT_OVERFLOW	0x8
199*8eea8e29Sap25164 #define	DCAM1394_STATUS_CAM_UNPLUG			0x10
200*8eea8e29Sap25164 
201*8eea8e29Sap25164 typedef struct dcam1394_param_list_entry_s {
202*8eea8e29Sap25164 	int 		flag;
203*8eea8e29Sap25164 	int 		err;
204*8eea8e29Sap25164 	unsigned int 	val;
205*8eea8e29Sap25164 
206*8eea8e29Sap25164 } dcam1394_param_list_entry_t;
207*8eea8e29Sap25164 
208*8eea8e29Sap25164 typedef dcam1394_param_list_entry_t
209*8eea8e29Sap25164 	dcam1394_param_list_t[DCAM1394_NUM_PARAM][DCAM1394_NUM_SUBPARAM];
210*8eea8e29Sap25164 
211*8eea8e29Sap25164 typedef dcam1394_param_list_entry_t
212*8eea8e29Sap25164 	(*dcam1394_param_list_p_t)[DCAM1394_NUM_PARAM][DCAM1394_NUM_SUBPARAM];
213*8eea8e29Sap25164 
214*8eea8e29Sap25164 typedef struct dcam1394_frame_s {
215*8eea8e29Sap25164 	unsigned int	 vid_mode;
216*8eea8e29Sap25164 	unsigned int	 seq_num;
217*8eea8e29Sap25164 	hrtime_t	 timestamp;
218*8eea8e29Sap25164 	unsigned char	*buff;
219*8eea8e29Sap25164 } dcam1394_frame_t;
220*8eea8e29Sap25164 
221*8eea8e29Sap25164 typedef struct dcam1394_reg_io_s {
222*8eea8e29Sap25164 	unsigned int	offs;
223*8eea8e29Sap25164 	unsigned int 	val;
224*8eea8e29Sap25164 
225*8eea8e29Sap25164 } dcam1394_reg_io_t;
226*8eea8e29Sap25164 
227*8eea8e29Sap25164 #ifdef __cplusplus
228*8eea8e29Sap25164 }
229*8eea8e29Sap25164 #endif
230*8eea8e29Sap25164 
231*8eea8e29Sap25164 #endif	/* _SYS_DCAM_DCAM1394_IO_H */
232