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