⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spca5xx.h

📁 应用于linux系统的usb接口的摄像头驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef SPCA50X_H#define SPCA50X_H/* * Header file for SPCA50x based camera driver. Originally copied from ov511 driver. * Originally by Mark W. McClelland * SPCA50x version by Joel Crisp; all bugs are mine, all nice features are his. */#ifdef __KERNEL__#include <asm/uaccess.h>#include <linux/videodev.h>#include <linux/smp_lock.h>#include <linux/usb.h>#include <linux/version.h>#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) && LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)#define urb_t struct urb#endif				/* LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) *///static const char SPCA50X_H_CVS_VERSION[]="$Id: spca50x.h,v 1.28 2004/01/10 21:37:40 mxhaard Exp $";/* V4L API extension for raw JPEG (=JPEG without header) and JPEG with header    */#define VIDEO_PALETTE_RAW_JPEG  20#define VIDEO_PALETTE_JPEG 21#ifdef SPCA50X_ENABLE_DEBUG#  define PDEBUG(level, fmt, args...) \if (debug >= level) info("[%s:%d] " fmt, __PRETTY_FUNCTION__, __LINE__ , ## args)#else				/* SPCA50X_ENABLE_DEBUG */#  define PDEBUG(level, fmt, args...) do {} while(0)#endif				/* SPCA50X_ENABLE_DEBUG *///#define FRAMES_PER_DESC               10      /* Default value, should be reasonable */#define FRAMES_PER_DESC		16	/* Default value, should be reasonable */#define MAX_FRAME_SIZE_PER_DESC 1024#define SPCA50X_MAX_WIDTH 640#define SPCA50X_MAX_HEIGHT 480#define SPCA50X_ENDPOINT_ADDRESS 1	/* Isoc endpoint number */#define PAC207_ENDPOINT_ADDRESS 5	/* Isoc endpoint number *//* only 2 or 4 frames are allowed here !!! */#define SPCA50X_NUMFRAMES	2#define SPCA50X_NUMSBUF	2#define BRIDGE_SPCA505 0#define BRIDGE_SPCA506 1#define BRIDGE_SPCA501 2#define BRIDGE_SPCA508 3#define BRIDGE_SPCA504 4#define BRIDGE_SPCA500 5#define BRIDGE_SPCA504B 6#define BRIDGE_SPCA533 7#define BRIDGE_SPCA504C 8#define BRIDGE_SPCA561 9#define BRIDGE_SPCA536 10#define BRIDGE_SONIX 11#define BRIDGE_ZC3XX 12#define BRIDGE_CX11646 13#define BRIDGE_TV8532 14#define BRIDGE_ETOMS 15#define BRIDGE_SN9CXXX 16#define BRIDGE_MR97311 17#define BRIDGE_PAC207 18#define SENSOR_SAA7113 0#define SENSOR_INTERNAL 1#define SENSOR_HV7131B  2#define SENSOR_HDCS1020 3#define SENSOR_PB100_BA 4#define SENSOR_PB100_92	5#define SENSOR_PAS106_80 6#define SENSOR_TAS5130C 7#define SENSOR_ICM105A 8#define SENSOR_HDCS2020 9#define SENSOR_PAS106 10#define SENSOR_PB0330 11#define SENSOR_HV7131C 12#define SENSOR_CS2102 13#define SENSOR_HDCS2020b 14#define SENSOR_HV7131R 15#define SENSOR_OV7630 16#define SENSOR_MI0360 17#define SENSOR_TAS5110 18#define SENSOR_PAS202 19#define SENSOR_PAC207 20#define SENSOR_OV7630C 21/* Alternate interface transfer sizes */#define SPCA50X_ALT_SIZE_0       0#define SPCA50X_ALT_SIZE_128     1#define SPCA50X_ALT_SIZE_256     1#define SPCA50X_ALT_SIZE_384     2#define SPCA50X_ALT_SIZE_512     3#define SPCA50X_ALT_SIZE_640     4#define SPCA50X_ALT_SIZE_768     5#define SPCA50X_ALT_SIZE_896     6#define SPCA50X_ALT_SIZE_1023    7/* Sequence packet identifier for a dropped packet */#define SPCA50X_SEQUENCE_DROP 0xFF/* Type bit for 10 byte header snapshot flag */#define SPCA50X_SNAPBIT 0x40#define SPCA50X_SNAPCTRL 0x80/* Offsets into the 10 byte header on the first ISO packet */#define SPCA50X_OFFSET_SEQUENCE 0/* Generic frame packet header offsets */#define SPCA50X_OFFSET_TYPE     1#define SPCA50X_OFFSET_COMPRESS 2#define SPCA50X_OFFSET_THRESHOLD 3#define SPCA50X_OFFSET_QUANT 4#define SPCA50X_OFFSET_QUANT2 5#define SPCA50X_OFFSET_FRAMSEQ 6#define SPCA50X_OFFSET_EDGE_AUDIO 7#define SPCA50X_OFFSET_GPIO 8#define SPCA50X_OFFSET_RESERVED 9#define SPCA50X_OFFSET_DATA 10/* Bitmask for properties at offsets above */#define SPCA50X_PROP_COMP_ENABLE(d) ( (d) & 1 )#define SPCA50X_PROP_SNAP(d) ( (d) & SPCA50X_SNAPBIT )#define SPCA50X_PROP_SNAP_CTRL(d) ( (d) & SPCA50X_SNAPCTRL )#define SPCA50X_PROP_COMP_T3A(d) ( ((d) & 0xA ) >> 2)#define SPCA50X_PROP_COMP_T3D(d) ( ((d) & 0x70 ) >> 4)/* USB control */#define SPCA50X_REG_USB 0x2#define SPCA50X_USB_CTRL 0x0#define SPCA50X_CUSB_ENABLE 0x1#define SPCA50X_CUSB_PREFETCH 0x2/* Global control register */#define SPCA50X_REG_GLOBAL 0x3#define SPCA50X_GLOBAL_MISC0 0x0	// Global control miscellaneous 0#define SPCA50X_GMISC0_IDSEL 0x1	// Global control device ID select#define SPCA50X_GMISC0_EXTTXEN 0x2	// Global control USB Transceiver select#define SPCA50X_GLOBAL_MISC1 0x1#define SPCA50X_GMISC1_BLKUSBRESET 0x1#define SPCA50X_GMISC1_BLKSUSPEND 0x2#define SPCA50X_GMISC1_DRAMOUTEN 0x10#define SPCA50X_GMISC1_INTRAMCRTEN 0x20#define SPCA50X_GLOBAL_MISC2 0x2#define SPCA50X_GLOBAL_MISC3 0x3#define SPCA50X_GMISC3_SSC 0x1#define SPCA50X_GMISC3_SSD 0x2#define SPCA50X_GMISC3_SAA7113RST 0x20	/* Not sure about this one */#define SPCA50X_GLOBAL_MISC4 0x4#define SPCA50X_GMISC4_SSCEN 0x1#define SPCA50X_GMISC4_SSDEN 0x2#define SPCA50X_GLOBAL_MISC5 0x5#define SPCA50X_GMISC5_SSD 0x2#define SPCA50X_GLOBAL_MISC6 0x6/* Image format and compression control */#define SPCA50X_REG_COMPRESS 0x4#define SPCA50X_COMPRESS_MISC1 0x1#define SPCA50X_CMISC1_TVFIELDPROCESS 0x40#define SPCA50X_COMPRESS_ENABLE 0x8#define SPCA50X_CENABLE_ENABLE 0x1/* SAA 7113 *//* TV control register */#define SPCA50X_REG_TV 0x8#define SPCA50X_TV_MISC0 0x0#define SPCA50X_TMISC0_PAL 0x1#define SPCA50X_TMISC0_SINGLECHANNEL 0x2#define SPCA50X_TMISC0_EXTFIELD 0x4#define SPCA50X_TMISC0_INVFIELD 0x8#define SPCA50X_TMISC0_PIXSEL 0x30	/* Not sure what this does */#define SPCA50x_TMISC0_ADD128 0x80/* I2C interface on an SPCA505, SPCA506, SPCA508 */#define SPCA50X_REG_I2C_CTRL 0x7#define SPCA50X_I2C_DEVICE 0x4#define SPCA50X_I2C_SUBADDR 0x1#define SPCA50X_I2C_VALUE 0x0#define SPCA50X_I2C_TRIGGER 0x2#define SPCA50X_I2C_TRIGGER_BIT 0x1#define SPCA50X_I2C_READ 0x0#define SPCA50X_I2C_STATUS 0x3#define SAA7113_REG_STATUS 0x1f#define SAA7113_I2C_BASE_WRITE 0x4A#define SAA7113_I2C_BASE_READ 0x4A	/* SPCA50x seems to add the read bit itself */#define SAA7113_I2C_ALT_BASE_WRITE 0x48#define SAA7113_I2C_ALT_BASE_READ 0x48	/* SPCA50x seems to add the read bit itself */#define SAA7113_STATUS_READY(d) (d & 0x1)#define SAA7113_STATUS_COPRO(d) (d & 0x2)#define SAA7113_STATUS_WIPA(d)  (d & 0x4)#define SAA7113_STATUS_GLIMB(d) (d & 0x8)#define SAA7113_STATUS_GLIMT(d) (d & 0x10)#define SAA7113_STATUS_FIDT(d)  (d & 0x20)#define SAA7113_STATUS_HLVLN(d) (d & 0x40)#define SAA7113_STATUS_INTL(d) (d & 0x80)/* Scratch buffer for 2 lines of YUV data */#define SCRATCH_BUF_SIZE 3*SPCA50X_MAX_WIDTH/* Brightness autoadjustment parameters*/#define NSTABLE_MAX 4#define NUNSTABLE_MAX 600#define MIN_BRIGHTNESS 10/* Camera type jpeg yuvy yyuv yuyv grey gbrg*/enum {    JPEG = 0,			//Jpeg 4.1.1 Sunplus    JPGH,			//jpeg 4.2.2 Zstar    JPGC,			//jpeg 4.2.2 Conexant    JPGS,			//jpeg 4.2.2 Sonix    JPGM,			//jpeg 4.2.2 Mars-Semi    YUVY,    YYUV,    YUYV,    GREY,    GBRG,    SN9C,			// Sonix compressed stream    GBGR,    S561,			// Sunplus Compressed stream    PGBRG,			// Pixart RGGB bayer};enum { QCIF = 1,    QSIF,    QPAL,    CIF,    SIF,    PAL,    VGA,    CUSTOM,    TOTMODE,};/* available palette */#define P_RGB16  1#define P_RGB24  (1 << 1)#define P_RGB32  (1 << 2)#define P_YUV420  (1 << 3)#define P_YUV422 ( 1 << 4)#define P_RAW  (1 << 5)#define P_JPEG  (1 << 6)struct mwebcam {    int width;    int height;    __u16 t_palette;    __u16 pipe;    int method;    int mode;};struct video_param {    int chg_para;#define CHGABRIGHT 1#define CHGQUALITY 2#define CHGTINTER  4    __u8 autobright;    __u8 quality;    __u16 time_interval;};/* Our private ioctl */#define SPCAGVIDIOPARAM _IOR('v',BASE_VIDIOCPRIVATE + 1,struct video_param)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -