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 #include <sys/time.h> 31*8eea8e29Sap25164 32*8eea8e29Sap25164 #ifdef __cplusplus 33*8eea8e29Sap25164 extern "C" { 34*8eea8e29Sap25164 #endif 35*8eea8e29Sap25164 36*8eea8e29Sap25164 /* macros for manipulating dcam1394_param_list_t structure */ 37*8eea8e29Sap25164 #define PARAM_LIST_INIT(list) bzero(list, sizeof (list)) 38*8eea8e29Sap25164 #define PARAM_LIST_ADD(list, param, subparam) list[param][subparam].flag = 1 39*8eea8e29Sap25164 #define PARAM_LIST_REMOVE(list, param, subparam) list[param][subparam].flag = 0 40*8eea8e29Sap25164 #define PARAM_LIST_IS_ENTRY(list, param, subparam) list[param][subparam].flag 41*8eea8e29Sap25164 #define PARAM_VAL(list, param, subparam) list[param][subparam].val 42*8eea8e29Sap25164 #define PARAM_ERR(list, param, subparam) list[param][subparam].err 43*8eea8e29Sap25164 44*8eea8e29Sap25164 #define DCAM1394_NUM_PARAM 30 45*8eea8e29Sap25164 #define DCAM1394_NUM_SUBPARAM 24 46*8eea8e29Sap25164 47*8eea8e29Sap25164 /* parameters */ 48*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_POWER_CTRL 0x0 49*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_VID_MODE 0x1 50*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0 0x2 51*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_1 0x3 52*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_2 0x4 53*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_3 0x5 54*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_4 0x6 55*8eea8e29Sap25164 #define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_5 0x7 56*8eea8e29Sap25164 #define DCAM1394_PARAM_POWER 0x8 57*8eea8e29Sap25164 #define DCAM1394_PARAM_VID_MODE 0x9 58*8eea8e29Sap25164 #define DCAM1394_PARAM_FRAME_RATE 0xA 59*8eea8e29Sap25164 #define DCAM1394_PARAM_RING_BUFF_CAPACITY 0xB 60*8eea8e29Sap25164 #define DCAM1394_PARAM_RING_BUFF_NUM_FRAMES_READY 0xC 61*8eea8e29Sap25164 #define DCAM1394_PARAM_RING_BUFF_READ_PTR_INCR 0xD 62*8eea8e29Sap25164 #define DCAM1394_PARAM_FRAME_NUM_BYTES 0xE 63*8eea8e29Sap25164 #define DCAM1394_PARAM_STATUS 0xF 64*8eea8e29Sap25164 #define DCAM1394_PARAM_BRIGHTNESS 0x10 65*8eea8e29Sap25164 #define DCAM1394_PARAM_EXPOSURE 0x11 66*8eea8e29Sap25164 #define DCAM1394_PARAM_SHARPNESS 0x12 67*8eea8e29Sap25164 #define DCAM1394_PARAM_WHITE_BALANCE 0x13 68*8eea8e29Sap25164 #define DCAM1394_PARAM_HUE 0x14 69*8eea8e29Sap25164 #define DCAM1394_PARAM_SATURATION 0x15 70*8eea8e29Sap25164 #define DCAM1394_PARAM_GAMMA 0x16 71*8eea8e29Sap25164 #define DCAM1394_PARAM_SHUTTER 0x17 72*8eea8e29Sap25164 #define DCAM1394_PARAM_GAIN 0x18 73*8eea8e29Sap25164 #define DCAM1394_PARAM_IRIS 0x19 74*8eea8e29Sap25164 #define DCAM1394_PARAM_FOCUS 0x1A 75*8eea8e29Sap25164 #define DCAM1394_PARAM_ZOOM 0x1B 76*8eea8e29Sap25164 #define DCAM1394_PARAM_PAN 0x1C 77*8eea8e29Sap25164 #define DCAM1394_PARAM_TILT 0x1D 78*8eea8e29Sap25164 79*8eea8e29Sap25164 /* subparameters */ 80*8eea8e29Sap25164 81*8eea8e29Sap25164 /* for DCAM1394_PARAM_CAP_VID_MODE */ 82*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_0 0x0 83*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_YUV_444_160_120 0x0 84*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_1 0x1 85*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_YUV_422_320_240 0x1 86*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_2 0x2 87*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_YUV_411_640_480 0x2 88*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_3 0x3 89*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_YUV_422_640_480 0x3 90*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_4 0x4 91*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_RGB_640_480 0x4 92*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_5 0x5 93*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VID_MODE_Y_640_480 0x5 94*8eea8e29Sap25164 95*8eea8e29Sap25164 /* for DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0 */ 96*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_0 0x6 97*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_3_75_FPS 0x6 98*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_1 0x7 99*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_7_5_FPS 0x7 100*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_2 0x8 101*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_15_FPS 0x8 102*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_3 0x9 103*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_30_FPS 0x9 104*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_4 0xA 105*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_FRAME_RATE_60_FPS 0xA 106*8eea8e29Sap25164 107*8eea8e29Sap25164 /* for features */ 108*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_PRESENCE 0xB 109*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_CAP_READ 0xC 110*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_CAP_ON_OFF 0xD 111*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_CAP_CTRL_AUTO 0xE 112*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_CAP_CTRL_MANUAL 0xF 113*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_MIN_VAL 0x10 114*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_MAX_VAL 0x11 115*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_ON_OFF 0x12 116*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_CTRL_MODE 0x13 117*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_VALUE 0x14 118*8eea8e29Sap25164 119*8eea8e29Sap25164 /* for white balance feature */ 120*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_U_VALUE 0x15 121*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_V_VALUE 0x16 122*8eea8e29Sap25164 123*8eea8e29Sap25164 #define DCAM1394_SUBPARAM_NONE 0x17 124*8eea8e29Sap25164 125*8eea8e29Sap25164 /* parameter values */ 126*8eea8e29Sap25164 127*8eea8e29Sap25164 /* for video mode param */ 128*8eea8e29Sap25164 129*8eea8e29Sap25164 #define DCAM1394_VID_MODE_0 0x0 130*8eea8e29Sap25164 #define DCAM1394_VID_MODE_YUV_444_160_120 0x0 131*8eea8e29Sap25164 132*8eea8e29Sap25164 #define DCAM1394_VID_MODE_1 0x1 133*8eea8e29Sap25164 #define DCAM1394_VID_MODE_YUV_422_320_240 0x1 134*8eea8e29Sap25164 135*8eea8e29Sap25164 #define DCAM1394_VID_MODE_2 0x2 136*8eea8e29Sap25164 #define DCAM1394_VID_MODE_YUV_411_640_480 0x2 137*8eea8e29Sap25164 138*8eea8e29Sap25164 #define DCAM1394_VID_MODE_3 0x3 139*8eea8e29Sap25164 #define DCAM1394_VID_MODE_YUV_422_640_480 0x3 140*8eea8e29Sap25164 141*8eea8e29Sap25164 #define DCAM1394_VID_MODE_4 0x4 142*8eea8e29Sap25164 #define DCAM1394_VID_MODE_RGB_640_480 0x4 143*8eea8e29Sap25164 144*8eea8e29Sap25164 #define DCAM1394_VID_MODE_5 0x5 145*8eea8e29Sap25164 #define DCAM1394_VID_MODE_Y_640_480 0x5 146*8eea8e29Sap25164 147*8eea8e29Sap25164 /* for frame rate param */ 148*8eea8e29Sap25164 149*8eea8e29Sap25164 #define DCAM1394_FRAME_RATE_0 0x6 150*8eea8e29Sap25164 #define DCAM1394_3_75_FPS 0x6 151*8eea8e29Sap25164 152*8eea8e29Sap25164 #define DCAM1394_FRAME_RATE_1 0x7 153*8eea8e29Sap25164 #define DCAM1394_7_5_FPS 0x7 154*8eea8e29Sap25164 155*8eea8e29Sap25164 #define DCAM1394_FRAME_RATE_2 0x8 156*8eea8e29Sap25164 #define DCAM1394_15_FPS 0x8 157*8eea8e29Sap25164 158*8eea8e29Sap25164 #define DCAM1394_FRAME_RATE_3 0x9 159*8eea8e29Sap25164 #define DCAM1394_30_FPS 0x9 160*8eea8e29Sap25164 161*8eea8e29Sap25164 #define DCAM1394_FRAME_RATE_4 0xA 162*8eea8e29Sap25164 #define DCAM1394_60_FPS 0xA 163*8eea8e29Sap25164 164*8eea8e29Sap25164 /* for feature control mode subparam */ 165*8eea8e29Sap25164 166*8eea8e29Sap25164 #define DCAM1394_CTRL_AUTO 0x1 167*8eea8e29Sap25164 #define DCAM1394_CTRL_MANUAL 0x0 168*8eea8e29Sap25164 169*8eea8e29Sap25164 /* for power control subparam */ 170*8eea8e29Sap25164 171*8eea8e29Sap25164 #define DCAM1394_POWER_OFF 0x0 172*8eea8e29Sap25164 #define DCAM1394_POWER_ON 0x1 173*8eea8e29Sap25164 174*8eea8e29Sap25164 /* ioctl() commands */ 175*8eea8e29Sap25164 176*8eea8e29Sap25164 #define DCAM1394_IOC ('d' << 8) 177*8eea8e29Sap25164 178*8eea8e29Sap25164 #define DCAM1394_CMD_REG_READ (DCAM1394_IOC | 0) 179*8eea8e29Sap25164 #define DCAM1394_CMD_REG_WRITE (DCAM1394_IOC | 1) 180*8eea8e29Sap25164 181*8eea8e29Sap25164 #define DCAM1394_CMD_CAM_RESET (DCAM1394_IOC | 2) 182*8eea8e29Sap25164 #define DCAM1394_CMD_PARAM_GET (DCAM1394_IOC | 3) 183*8eea8e29Sap25164 #define DCAM1394_CMD_PARAM_SET (DCAM1394_IOC | 4) 184*8eea8e29Sap25164 #define DCAM1394_CMD_FRAME_RCV_START (DCAM1394_IOC | 5) 185*8eea8e29Sap25164 #define DCAM1394_CMD_FRAME_RCV_STOP (DCAM1394_IOC | 6) 186*8eea8e29Sap25164 #define DCAM1394_CMD_RING_BUFF_FLUSH (DCAM1394_IOC | 7) 187*8eea8e29Sap25164 #define DCAM1394_CMD_FRAME_SEQ_NUM_COUNT_RESET (DCAM1394_IOC | 8) 188*8eea8e29Sap25164 189*8eea8e29Sap25164 #define DCAM1394_RING_BUFF_OFFS 0x1 190*8eea8e29Sap25164 191*8eea8e29Sap25164 /* for DCAM1394_PARAM_STATUS */ 192*8eea8e29Sap25164 193*8eea8e29Sap25164 #define DCAM1394_STATUS_FRAME_RCV_DONE 0x1 194*8eea8e29Sap25164 #define DCAM1394_STATUS_RING_BUFF_LOST_FRAME 0x2 195*8eea8e29Sap25164 #define DCAM1394_STATUS_PARAM_CHANGE 0x4 196*8eea8e29Sap25164 #define DCAM1394_STATUS_FRAME_SEQ_NUM_COUNT_OVERFLOW 0x8 197*8eea8e29Sap25164 #define DCAM1394_STATUS_CAM_UNPLUG 0x10 198*8eea8e29Sap25164 199*8eea8e29Sap25164 typedef struct dcam1394_param_list_entry_s { 200*8eea8e29Sap25164 int flag; 201*8eea8e29Sap25164 int err; 202*8eea8e29Sap25164 unsigned int val; 203*8eea8e29Sap25164 204*8eea8e29Sap25164 } dcam1394_param_list_entry_t; 205*8eea8e29Sap25164 206*8eea8e29Sap25164 typedef dcam1394_param_list_entry_t 207*8eea8e29Sap25164 dcam1394_param_list_t[DCAM1394_NUM_PARAM][DCAM1394_NUM_SUBPARAM]; 208*8eea8e29Sap25164 209*8eea8e29Sap25164 typedef dcam1394_param_list_entry_t 210*8eea8e29Sap25164 (*dcam1394_param_list_p_t)[DCAM1394_NUM_PARAM][DCAM1394_NUM_SUBPARAM]; 211*8eea8e29Sap25164 212*8eea8e29Sap25164 typedef struct dcam1394_frame_s { 213*8eea8e29Sap25164 unsigned int vid_mode; 214*8eea8e29Sap25164 unsigned int seq_num; 215*8eea8e29Sap25164 hrtime_t timestamp; 216*8eea8e29Sap25164 unsigned char *buff; 217*8eea8e29Sap25164 } dcam1394_frame_t; 218*8eea8e29Sap25164 219*8eea8e29Sap25164 typedef struct dcam1394_reg_io_s { 220*8eea8e29Sap25164 unsigned int offs; 221*8eea8e29Sap25164 unsigned int val; 222*8eea8e29Sap25164 223*8eea8e29Sap25164 } dcam1394_reg_io_t; 224*8eea8e29Sap25164 225*8eea8e29Sap25164 #ifdef __cplusplus 226*8eea8e29Sap25164 } 227*8eea8e29Sap25164 #endif 228*8eea8e29Sap25164 229*8eea8e29Sap25164 #endif /* _SYS_DCAM_DCAM1394_IO_H */ 230