dcam1394_io.h revision 21:9318364fb703
1130803Smarcel/* 2130803Smarcel * CDDL HEADER START 3130803Smarcel * 4130803Smarcel * The contents of this file are subject to the terms of the 5130803Smarcel * Common Development and Distribution License, Version 1.0 only 6130803Smarcel * (the "License"). You may not use this file except in compliance 7130803Smarcel * with the License. 8130803Smarcel * 9130803Smarcel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10130803Smarcel * or http://www.opensolaris.org/os/licensing. 11130803Smarcel * See the License for the specific language governing permissions 12130803Smarcel * and limitations under the License. 13130803Smarcel * 14130803Smarcel * When distributing Covered Code, include this CDDL HEADER in each 15130803Smarcel * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16130803Smarcel * If applicable, add the following below this CDDL HEADER, with the 17130803Smarcel * fields enclosed by brackets "[]" replaced with your own identifying 18130803Smarcel * information: Portions Copyright [yyyy] [name of copyright owner] 19130803Smarcel * 20130803Smarcel * CDDL HEADER END 21130803Smarcel */ 22130803Smarcel/* 23130803Smarcel * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 24130803Smarcel * Use is subject to license terms. 25130803Smarcel */ 26130803Smarcel 27130803Smarcel#ifndef _SYS_DCAM_DCAM1394_IO_H 28130803Smarcel#define _SYS_DCAM_DCAM1394_IO_H 29130803Smarcel 30130803Smarcel#pragma ident "%Z%%M% %I% %E% SMI" 31130803Smarcel 32130803Smarcel#include <sys/time.h> 33130803Smarcel 34130803Smarcel#ifdef __cplusplus 35130803Smarcelextern "C" { 36130803Smarcel#endif 37130803Smarcel 38130803Smarcel/* macros for manipulating dcam1394_param_list_t structure */ 39130803Smarcel#define PARAM_LIST_INIT(list) bzero(list, sizeof (list)) 40130803Smarcel#define PARAM_LIST_ADD(list, param, subparam) list[param][subparam].flag = 1 41130803Smarcel#define PARAM_LIST_REMOVE(list, param, subparam) list[param][subparam].flag = 0 42130803Smarcel#define PARAM_LIST_IS_ENTRY(list, param, subparam) list[param][subparam].flag 43130803Smarcel#define PARAM_VAL(list, param, subparam) list[param][subparam].val 44130803Smarcel#define PARAM_ERR(list, param, subparam) list[param][subparam].err 45130803Smarcel 46130803Smarcel#define DCAM1394_NUM_PARAM 30 47130803Smarcel#define DCAM1394_NUM_SUBPARAM 24 48130803Smarcel 49130803Smarcel/* parameters */ 50130803Smarcel#define DCAM1394_PARAM_CAP_POWER_CTRL 0x0 51130803Smarcel#define DCAM1394_PARAM_CAP_VID_MODE 0x1 52130803Smarcel#define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0 0x2 53130803Smarcel#define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_1 0x3 54130803Smarcel#define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_2 0x4 55130803Smarcel#define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_3 0x5 56130803Smarcel#define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_4 0x6 57130803Smarcel#define DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_5 0x7 58130803Smarcel#define DCAM1394_PARAM_POWER 0x8 59130803Smarcel#define DCAM1394_PARAM_VID_MODE 0x9 60130803Smarcel#define DCAM1394_PARAM_FRAME_RATE 0xA 61130803Smarcel#define DCAM1394_PARAM_RING_BUFF_CAPACITY 0xB 62130803Smarcel#define DCAM1394_PARAM_RING_BUFF_NUM_FRAMES_READY 0xC 63130803Smarcel#define DCAM1394_PARAM_RING_BUFF_READ_PTR_INCR 0xD 64130803Smarcel#define DCAM1394_PARAM_FRAME_NUM_BYTES 0xE 65130803Smarcel#define DCAM1394_PARAM_STATUS 0xF 66130803Smarcel#define DCAM1394_PARAM_BRIGHTNESS 0x10 67130803Smarcel#define DCAM1394_PARAM_EXPOSURE 0x11 68130803Smarcel#define DCAM1394_PARAM_SHARPNESS 0x12 69130803Smarcel#define DCAM1394_PARAM_WHITE_BALANCE 0x13 70130803Smarcel#define DCAM1394_PARAM_HUE 0x14 71130803Smarcel#define DCAM1394_PARAM_SATURATION 0x15 72130803Smarcel#define DCAM1394_PARAM_GAMMA 0x16 73130803Smarcel#define DCAM1394_PARAM_SHUTTER 0x17 74130803Smarcel#define DCAM1394_PARAM_GAIN 0x18 75130803Smarcel#define DCAM1394_PARAM_IRIS 0x19 76130803Smarcel#define DCAM1394_PARAM_FOCUS 0x1A 77130803Smarcel#define DCAM1394_PARAM_ZOOM 0x1B 78130803Smarcel#define DCAM1394_PARAM_PAN 0x1C 79130803Smarcel#define DCAM1394_PARAM_TILT 0x1D 80130803Smarcel 81130803Smarcel/* subparameters */ 82130803Smarcel 83130803Smarcel/* for DCAM1394_PARAM_CAP_VID_MODE */ 84130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_0 0x0 85130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_YUV_444_160_120 0x0 86130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_1 0x1 87130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_YUV_422_320_240 0x1 88130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_2 0x2 89130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_YUV_411_640_480 0x2 90130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_3 0x3 91130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_YUV_422_640_480 0x3 92130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_4 0x4 93130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_RGB_640_480 0x4 94130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_5 0x5 95130803Smarcel#define DCAM1394_SUBPARAM_VID_MODE_Y_640_480 0x5 96130803Smarcel 97130803Smarcel/* for DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0 */ 98130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_0 0x6 99130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_3_75_FPS 0x6 100130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_1 0x7 101130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_7_5_FPS 0x7 102130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_2 0x8 103130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_15_FPS 0x8 104130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_3 0x9 105130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_30_FPS 0x9 106130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_4 0xA 107130803Smarcel#define DCAM1394_SUBPARAM_FRAME_RATE_60_FPS 0xA 108130803Smarcel 109130803Smarcel/* for features */ 110130803Smarcel#define DCAM1394_SUBPARAM_PRESENCE 0xB 111130803Smarcel#define DCAM1394_SUBPARAM_CAP_READ 0xC 112130803Smarcel#define DCAM1394_SUBPARAM_CAP_ON_OFF 0xD 113130803Smarcel#define DCAM1394_SUBPARAM_CAP_CTRL_AUTO 0xE 114130803Smarcel#define DCAM1394_SUBPARAM_CAP_CTRL_MANUAL 0xF 115130803Smarcel#define DCAM1394_SUBPARAM_MIN_VAL 0x10 116130803Smarcel#define DCAM1394_SUBPARAM_MAX_VAL 0x11 117130803Smarcel#define DCAM1394_SUBPARAM_ON_OFF 0x12 118130803Smarcel#define DCAM1394_SUBPARAM_CTRL_MODE 0x13 119130803Smarcel#define DCAM1394_SUBPARAM_VALUE 0x14 120130803Smarcel 121130803Smarcel/* for white balance feature */ 122130803Smarcel#define DCAM1394_SUBPARAM_U_VALUE 0x15 123130803Smarcel#define DCAM1394_SUBPARAM_V_VALUE 0x16 124130803Smarcel 125130803Smarcel#define DCAM1394_SUBPARAM_NONE 0x17 126130803Smarcel 127130803Smarcel/* parameter values */ 128130803Smarcel 129130803Smarcel/* for video mode param */ 130130803Smarcel 131130803Smarcel#define DCAM1394_VID_MODE_0 0x0 132130803Smarcel#define DCAM1394_VID_MODE_YUV_444_160_120 0x0 133130803Smarcel 134130803Smarcel#define DCAM1394_VID_MODE_1 0x1 135130803Smarcel#define DCAM1394_VID_MODE_YUV_422_320_240 0x1 136130803Smarcel 137130803Smarcel#define DCAM1394_VID_MODE_2 0x2 138130803Smarcel#define DCAM1394_VID_MODE_YUV_411_640_480 0x2 139130803Smarcel 140130803Smarcel#define DCAM1394_VID_MODE_3 0x3 141130803Smarcel#define DCAM1394_VID_MODE_YUV_422_640_480 0x3 142130803Smarcel 143130803Smarcel#define DCAM1394_VID_MODE_4 0x4 144130803Smarcel#define DCAM1394_VID_MODE_RGB_640_480 0x4 145130803Smarcel 146130803Smarcel#define DCAM1394_VID_MODE_5 0x5 147130803Smarcel#define DCAM1394_VID_MODE_Y_640_480 0x5 148130803Smarcel 149130803Smarcel/* for frame rate param */ 150130803Smarcel 151130803Smarcel#define DCAM1394_FRAME_RATE_0 0x6 152130803Smarcel#define DCAM1394_3_75_FPS 0x6 153130803Smarcel 154130803Smarcel#define DCAM1394_FRAME_RATE_1 0x7 155130803Smarcel#define DCAM1394_7_5_FPS 0x7 156130803Smarcel 157130803Smarcel#define DCAM1394_FRAME_RATE_2 0x8 158130803Smarcel#define DCAM1394_15_FPS 0x8 159130803Smarcel 160130803Smarcel#define DCAM1394_FRAME_RATE_3 0x9 161130803Smarcel#define DCAM1394_30_FPS 0x9 162130803Smarcel 163130803Smarcel#define DCAM1394_FRAME_RATE_4 0xA 164130803Smarcel#define DCAM1394_60_FPS 0xA 165130803Smarcel 166130803Smarcel/* for feature control mode subparam */ 167130803Smarcel 168130803Smarcel#define DCAM1394_CTRL_AUTO 0x1 169130803Smarcel#define DCAM1394_CTRL_MANUAL 0x0 170130803Smarcel 171130803Smarcel/* for power control subparam */ 172130803Smarcel 173130803Smarcel#define DCAM1394_POWER_OFF 0x0 174130803Smarcel#define DCAM1394_POWER_ON 0x1 175130803Smarcel 176130803Smarcel/* ioctl() commands */ 177130803Smarcel 178130803Smarcel#define DCAM1394_IOC ('d' << 8) 179130803Smarcel 180130803Smarcel#define DCAM1394_CMD_REG_READ (DCAM1394_IOC | 0) 181130803Smarcel#define DCAM1394_CMD_REG_WRITE (DCAM1394_IOC | 1) 182130803Smarcel 183130803Smarcel#define DCAM1394_CMD_CAM_RESET (DCAM1394_IOC | 2) 184130803Smarcel#define DCAM1394_CMD_PARAM_GET (DCAM1394_IOC | 3) 185130803Smarcel#define DCAM1394_CMD_PARAM_SET (DCAM1394_IOC | 4) 186130803Smarcel#define DCAM1394_CMD_FRAME_RCV_START (DCAM1394_IOC | 5) 187130803Smarcel#define DCAM1394_CMD_FRAME_RCV_STOP (DCAM1394_IOC | 6) 188130803Smarcel#define DCAM1394_CMD_RING_BUFF_FLUSH (DCAM1394_IOC | 7) 189130803Smarcel#define DCAM1394_CMD_FRAME_SEQ_NUM_COUNT_RESET (DCAM1394_IOC | 8) 190130803Smarcel 191130803Smarcel#define DCAM1394_RING_BUFF_OFFS 0x1 192130803Smarcel 193130803Smarcel/* for DCAM1394_PARAM_STATUS */ 194130803Smarcel 195130803Smarcel#define DCAM1394_STATUS_FRAME_RCV_DONE 0x1 196130803Smarcel#define DCAM1394_STATUS_RING_BUFF_LOST_FRAME 0x2 197130803Smarcel#define DCAM1394_STATUS_PARAM_CHANGE 0x4 198130803Smarcel#define DCAM1394_STATUS_FRAME_SEQ_NUM_COUNT_OVERFLOW 0x8 199130803Smarcel#define DCAM1394_STATUS_CAM_UNPLUG 0x10 200130803Smarcel 201130803Smarceltypedef struct dcam1394_param_list_entry_s { 202130803Smarcel int flag; 203130803Smarcel int err; 204130803Smarcel unsigned int val; 205130803Smarcel 206130803Smarcel} dcam1394_param_list_entry_t; 207130803Smarcel 208130803Smarceltypedef dcam1394_param_list_entry_t 209130803Smarcel dcam1394_param_list_t[DCAM1394_NUM_PARAM][DCAM1394_NUM_SUBPARAM]; 210130803Smarcel 211130803Smarceltypedef dcam1394_param_list_entry_t 212130803Smarcel (*dcam1394_param_list_p_t)[DCAM1394_NUM_PARAM][DCAM1394_NUM_SUBPARAM]; 213130803Smarcel 214130803Smarceltypedef struct dcam1394_frame_s { 215130803Smarcel unsigned int vid_mode; 216130803Smarcel unsigned int seq_num; 217130803Smarcel hrtime_t timestamp; 218130803Smarcel unsigned char *buff; 219130803Smarcel} dcam1394_frame_t; 220130803Smarcel 221130803Smarceltypedef struct dcam1394_reg_io_s { 222130803Smarcel unsigned int offs; 223130803Smarcel unsigned int val; 224130803Smarcel 225130803Smarcel} dcam1394_reg_io_t; 226130803Smarcel 227130803Smarcel#ifdef __cplusplus 228130803Smarcel} 229130803Smarcel#endif 230130803Smarcel 231130803Smarcel#endif /* _SYS_DCAM_DCAM1394_IO_H */ 232130803Smarcel