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