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

📄 zc3xx.h

📁 网上下的该驱动没有中微星307b
💻 H
📖 第 1 页 / 共 2 页
字号:
static void zc3xx_setNoFlikerScale(struct usb_spca50x *spca50x) {     switch (spca50x->sensor) {         case SENSOR_OV7620: 	  zc3xxWriteVector(spca50x, OV7620_NoFlikerScale);      break;      default:           break;     } }static void zc3xx_setcontrast(struct usb_spca50x *spca50x){    __u16 contrast;    int gm0 = 0;    int gr0 = 0;    int index = 0;    int i;    /* now get the index of gamma table */    contrast = zc3xx_getcontrast(spca50x);    if ((index = contrast >> 13) > 6)	index = 6;    PDEBUG(2, "starting new table index %d ", index);    for (i = 0; i < 16; i++) {	gm0 = Tgamma[i] * index >> 2;	gr0 = Tgradient[i] * index >> 2;	spca5xxRegWrite(spca50x->dev, 0xa0, CLAMP(gm0), 0x0120 + i, NULL, 0);	//brightness	spca5xxRegWrite(spca50x->dev, 0xa0, CLAMP(gr0), 0x0130 + i, NULL, 0);	// contrast	//PDEBUG(0,"i %d gamma %d gradient %d",i ,Tgamma[i],Tgradient[i]);    }}static int zc3xx_init(struct usb_spca50x *spca50x){    spca5xxRegWrite(spca50x->dev, 0xa0, 0x01, 0x0000, NULL, 0);     /*spca5xxRegWrite(spca50x->dev, 0x0a, 0xc8, 0x307b, NULL, 0);*/    return 0;}static void set_zc3xxVGA(struct usb_spca50x *spca50x){    memset(spca50x->mode_cam, 0x00, TOTMODE * sizeof(struct mwebcam));    spca50x->mode_cam[VGA].width = 640;    spca50x->mode_cam[VGA].height = 480;    spca50x->mode_cam[VGA].t_palette =	P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[VGA].pipe = 1023;    spca50x->mode_cam[VGA].method = 0;    spca50x->mode_cam[VGA].mode = 0;    spca50x->mode_cam[PAL].width = 384;    spca50x->mode_cam[PAL].height = 288;    spca50x->mode_cam[PAL].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[PAL].pipe = 1023;    spca50x->mode_cam[PAL].method = 1;    spca50x->mode_cam[PAL].mode = 0;    spca50x->mode_cam[SIF].width = 352;    spca50x->mode_cam[SIF].height = 288;    spca50x->mode_cam[SIF].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[SIF].pipe = 1023;    spca50x->mode_cam[SIF].method = 1;    spca50x->mode_cam[SIF].mode = 0;    spca50x->mode_cam[CIF].width = 320;    spca50x->mode_cam[CIF].height = 240;    spca50x->mode_cam[CIF].t_palette =	P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[CIF].pipe = 1023;    spca50x->mode_cam[CIF].method = 0;    spca50x->mode_cam[CIF].mode = 1;    spca50x->mode_cam[QPAL].width = 192;    spca50x->mode_cam[QPAL].height = 144;    spca50x->mode_cam[QPAL].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[QPAL].pipe = 1023;    spca50x->mode_cam[QPAL].method = 1;    spca50x->mode_cam[QPAL].mode = 1;    spca50x->mode_cam[QSIF].width = 176;    spca50x->mode_cam[QSIF].height = 144;    spca50x->mode_cam[QSIF].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[QSIF].pipe = 1023;    spca50x->mode_cam[QSIF].method = 1;    spca50x->mode_cam[QSIF].mode = 1;}static void set_zc3xxSIF(struct usb_spca50x *spca50x){    memset(spca50x->mode_cam, 0x00, TOTMODE * sizeof(struct mwebcam));    spca50x->mode_cam[SIF].width = 352;    spca50x->mode_cam[SIF].height = 288;    spca50x->mode_cam[SIF].t_palette =	P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[SIF].pipe = 1023;    spca50x->mode_cam[SIF].method = 0;    spca50x->mode_cam[SIF].mode = 0;    spca50x->mode_cam[CIF].width = 320;    spca50x->mode_cam[CIF].height = 240;    spca50x->mode_cam[CIF].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[CIF].pipe = 1023;    spca50x->mode_cam[CIF].method = 1;    spca50x->mode_cam[CIF].mode = 0;    spca50x->mode_cam[QPAL].width = 192;    spca50x->mode_cam[QPAL].height = 144;    spca50x->mode_cam[QPAL].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[QPAL].pipe = 1023;    spca50x->mode_cam[QPAL].method = 1;    spca50x->mode_cam[QPAL].mode = 0;    spca50x->mode_cam[QSIF].width = 176;    spca50x->mode_cam[QSIF].height = 144;    spca50x->mode_cam[QSIF].t_palette =	P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[QSIF].pipe = 1023;    spca50x->mode_cam[QSIF].method = 0;    spca50x->mode_cam[QSIF].mode = 1;}static int zc3xx_config(struct usb_spca50x *spca50x){    int sensor = 0;    __u8 bsensor = 0;    spca50x->qindex = 1;    sensor = zcxx_probeSensor(spca50x);    switch (sensor) {    case -1:        if (spca50x->sensor == SENSOR_OV7620) {		PDEBUG(0, " Sensor OV7620");	    set_zc3xxVGA(spca50x);        }else if (spca50x->sensor = SENSOR_TAS5130C){	PDEBUG(0, "Find Sensor UNKNOW_0 force Tas5130");	set_zc3xxVGA(spca50x);        }	break;    case 0:	PDEBUG(0, "Find Sensor HV7131B");	spca50x->sensor = SENSOR_HV7131B;	set_zc3xxVGA(spca50x);	break;    case 1:	PDEBUG(0, "Find Sensor SIF UNKNOW_1");	break;    case 0x02:	PDEBUG(0, "Find Sensor UNKNOW_2");	break;    case 0x04:	PDEBUG(0, "Find Sensor CS2102");	spca50x->sensor = SENSOR_CS2102;	set_zc3xxVGA(spca50x);	break;    case 5:	PDEBUG(0, "Find Sensor SIF UNKNOW_5");	break;    case 0x06:	PDEBUG(0, "Find Sensor OV7630C");	spca50x->sensor = SENSOR_OV7630C;	set_zc3xxVGA(spca50x);	break;    case 7:	PDEBUG(0, "Find Sensor SIF UNKNOW_7");	break;    case 0x08:	PDEBUG(0, "Find Sensor HDCS2020(b)");	spca50x->sensor = SENSOR_HDCS2020b;	set_zc3xxVGA(spca50x);	break;    case 9:	PDEBUG(0, "Find Sensor SIF UNKNOW_9");	break;    case 0x0a:	PDEBUG(0, "Find Sensor PB0330");	spca50x->sensor = SENSOR_PB0330;	set_zc3xxVGA(spca50x);	break;    case 0x0b:	PDEBUG(0, "Find Sensor SIF UNKNOW_b");	break;    case 0x0c:	PDEBUG(0, "Find Sensor ICM105T");	spca50x->sensor = SENSOR_ICM105A;	set_zc3xxVGA(spca50x);	break;    case 0x0d:	PDEBUG(0, "Find Sensor SIF UNKNOW_d");	break;    case 0x0e:	PDEBUG(0, "Find Sensor PAS202BCB");	spca50x->sensor = SENSOR_HDCS2020;	set_zc3xxVGA(spca50x);	break;    case 0x0f:	PDEBUG(0, "Find Sensor PAS106");	spca50x->sensor = SENSOR_PAS106;	set_zc3xxSIF(spca50x);	break;    case 0x10:	PDEBUG(0, "Find Sensor TAS5130");	spca50x->sensor = SENSOR_TAS5130C;	set_zc3xxVGA(spca50x);	break;    case 0x11:	PDEBUG(0, "Find Sensor HV7131R(c)");	spca50x->sensor = SENSOR_HV7131C;	set_zc3xxVGA(spca50x);	break;    case 0x12:	PDEBUG(0, "Find Sensor TAS5130");	spca50x->sensor = SENSOR_TAS5130C;	set_zc3xxVGA(spca50x);	break;    case 0x13:	PDEBUG(0, "Find Sensor MI0360");	spca50x->sensor = SENSOR_PB0330;	set_zc3xxVGA(spca50x);	break;    };    if ((sensor == 0x02) || (sensor == 0x01) || (sensor == 0x05)	|| (sensor == 0x07) || (sensor == 0x09) || (sensor == 0x0b)	|| (sensor == 0x0d)) {	PDEBUG(0,	       "Our Sensor is unknow at the moment please report mxhaard@free.fr ");	return -EINVAL;    }    if ((sensor == -1) || (sensor == 0x10) || (sensor == 0x12)) {	spca5xxRegWrite(spca50x->dev, 0xa0, 0x02, 0x0010, NULL, 0);	spca5xxRegRead(spca50x->dev, 0xa1, 0x01, 0x0010, &bsensor, 1);    } else {	sensor = sensor & 0x0f;	spca5xxRegWrite(spca50x->dev, 0xa0, sensor, 0x0010, NULL, 0);	spca5xxRegRead(spca50x->dev, 0xa1, 0x01, 0x0010, &bsensor, 1);    }    /* switch the led off */    if( sensor == 0x06)      spca5xxRegWrite(spca50x->dev,0xa0,0x01,0x0000,NULL,0);    return 0;}static void zc3xx_setquality(struct usb_spca50x *spca50x){    __u8 quality = 0;    quality = (spca50x->qindex) & 0xff;    spca5xxRegWrite(spca50x->dev, 0xa0, quality, 0x0008, NULL, 0);}static void zc3xx_setAutobright(struct usb_spca50x *spca50x){    __u8 autoval = 0;    if (spca50x->autoexpo)	autoval = 0x42;    else	autoval = 0x02;    spca5xxRegWrite(spca50x->dev, 0xa0, autoval, 0x0180, NULL, 0);}static void zc3xx_start(struct usb_spca50x *spca50x){    int err = 0;    /* Assume start use the good resolution from spca50x->mode */    err = zcxx_probeSensor(spca50x);    switch (spca50x->sensor) {    case SENSOR_OV7620:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, OV7620_Initial);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, OV7620_InitialScale);	}	break;    case SENSOR_TAS5130C:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, tas5130cxx_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, tas5130cxx_scale_data);	}	break;    case SENSOR_ICM105A:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, icm105axx_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, icm105axx_scale_data);	}	break;    case SENSOR_HDCS2020:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, hdcs2020xx_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, hdcs2020xx_scale_data);	}	break;    case SENSOR_HDCS2020b:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, hdcs2020xb_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, hdcs2020xb_scale_data);	}	break;    case SENSOR_HV7131B:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, hv7131bxx_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, hv7131bxx_scale_data);	}	break;    case SENSOR_HV7131C:	//HV7131R	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, hv7131cxx_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, hv7131cxx_scale_data);	}	break;    case SENSOR_PB0330:	if (spca50x->mode) {	    /* 320x240 */	    if ((spca50x->chip_revision == 0xc001)		|| (spca50x->chip_revision == 0xe001))		err = zc3xxWriteVector(spca50x, pb03303x_start_data);	    else		err = zc3xxWriteVector(spca50x, pb0330xx_start_data);	} else {	    /* 640x480 */	    if ((spca50x->chip_revision == 0xc001)		|| (spca50x->chip_revision == 0xe001))		err = zc3xxWriteVector(spca50x, pb03303x_scale_data);	    else		err = zc3xxWriteVector(spca50x, pb0330xx_scale_data);	}	break;    case SENSOR_CS2102:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, cs2102_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, cs2102_scale_data);	}	break;    case SENSOR_OV7630C:	if (spca50x->mode) {	    /* 320x240 */	    err = zc3xxWriteVector(spca50x, ov7630c_start_data);	} else {	    /* 640x480 */	    err = zc3xxWriteVector(spca50x, ov7630c_scale_data);	}	break;    case SENSOR_PAS106:	if (spca50x->mode) {	    /* 176x144 */	    err = zc3xxWriteVector(spca50x, pas106b_start_data);	} else {	    /* 352x288 */	    err = zc3xxWriteVector(spca50x, pas106b_scale_data);	}	break;    }    zc3xx_setbrightness(spca50x);    zc3xx_setquality(spca50x);    zc3xx_setAutobright(spca50x);}static void zc3xx_stop(struct usb_spca50x *spca50x){// Nothing todo }static void zc3xx_shutdown(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    __u8 buffread;    spca5xxRegRead(dev, 0xa1, 0x01, 0x0180, &buffread, 1);    spca5xxRegWrite(dev, 0xa0, 0x00, 0x0180, NULL, 0);    spca5xxRegWrite(dev, 0xa0, 0x01, 0x0000, NULL, 0);}#endif				// ZC3XXUSB_H

⌨️ 快捷键说明

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