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

📄 sn9cxxx.h

📁 应用于linux系统的usb接口的摄像头驱动
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifndef SONIXJPGUSB_H#define SONIXJPGUSB_H/****************************************************************************#	 	Sonix sn9c102p sn9c105 sn9c120 library                      ## 		Copyright (C) 2005 Michel Xhaard   mxhaard@magic.fr         ##                                                                           ## This program is free software; you can redistribute it and/or modify      ## it under the terms of the GNU General Public License as published by      ## the Free Software Foundation; either version 2 of the License, or         ## (at your option) any later version.                                       ##                                                                           ## This program is distributed in the hope that it will be useful,           ## but WITHOUT ANY WARRANTY; without even the implied warranty of            ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             ## GNU General Public License for more details.                              ##                                                                           ## You should have received a copy of the GNU General Public License         ## along with this program; if not, write to the Free Software               ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA ##                                                                           #****************************************************************************/static int sn9cxxx_init(struct usb_spca50x *spca50x);static void sn9cxxx_start(struct usb_spca50x *spca50x);static void sn9cxxx_stop(struct usb_spca50x *spca50x);static __u16 sn9cxxx_setbrightness(struct usb_spca50x *spca50x);static __u16 sn9cxxx_getbrightness(struct usb_spca50x *spca50x);static __u16 sn9cxxx_setcontrast(struct usb_spca50x *spca50x);static __u16 sn9cxxx_getcontrast(struct usb_spca50x *spca50x);static unsigned int sn9cxxx_getexposure(struct usb_spca50x *spca50x);static unsigned int sn9cxxx_getexposure(struct usb_spca50x *spca50x);//static void sn9cxxx_setAutobright (struct usb_spca50x *spca50x);//static void sn9cxxx_shutdown(struct usb_spca50x *spca50x);static int sn9cxxx_probesensor(struct usb_spca50x *spca50x);enum {    SN9C101 = 0,    SN9C102,    SN9C102P,    SN9C103,    SN9C105,    SN9C120,};static __u8 sn_mi0360[] = {    0x00, 0x61, 0x44, 0x00, 0x1A, 0x20, 0x20, 0x20, 0xB1, 0x5D, 0x07, 0x00,	0x00, 0x00, 0x00, 0x10, 0x03, 0x00,//reg0  reg1  reg2  reg3  reg4  reg5  reg6  reg7  reg8  reg9  rega  regb  regc  regd  rege  regf  reg10 reg11    0x00, 0x02, 0x0a, 0x28, 0x1e, 0x61, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00//reg12 reg13 reg14 reg15 reg16 reg17 reg18 reg19 reg1a reg1b reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23};/*Data from sn9c102p+hv71331r */static __u8 sn_hv7131[] = {    0x00, 0x03, 0x64, 0x00, 0x1A, 0x20, 0x20, 0x20, 0xA1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00,	//00//reg0  reg1  reg2  reg3  reg4  reg5  reg6  reg7  reg8  reg9  rega  regb  regc  regd  rege  regf  reg10 reg11    0x00, 0x01, 0x03, 0x28, 0x1e, 0x41, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00//reg12 reg13 reg14 reg15 reg16 reg17 reg18 reg19 reg1a reg1b reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23};static __u8 reg9a[] = {    0x08, 0x40, 0x20, 0x10, 0x00, 0x04};static __u8 regsn20[] = {    0x00, 0x2D, 0x46, 0x5A, 0x6C, 0x7C, 0x8B, 0x99, 0xA6, 0xB2, 0xBF, 0xCA,	0xD5, 0xE0, 0xEB, 0xF5, 0xFF};static __u8 reg84[] = {    0x14, 0x00, 0x27, 0x00, 0x07, 0x00, 0xE5, 0x0F, 0xE4, 0x0F, 0x38, 0x00,	0x3E, 0x00, 0xC3, 0x0F,    0x00, 0x00, 0x00, 0x00, 0x00};static __u8 hv7131r_sensor_init[][8] = {    {0xC1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},    {0xB1, 0x11, 0x34, 0x17, 0x7F, 0x00, 0x00, 0x10},    {0xD1, 0x11, 0x40, 0xFF, 0x7F, 0x7F, 0x7F, 0x10},    {0x91, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x11, 0x14, 0x01, 0xE2, 0x02, 0x82, 0x10},    {0x91, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10},//          {0xA1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xC1, 0x11, 0x25, 0x00, 0x61, 0xA8, 0x00, 0x10},    {0xA1, 0x11, 0x30, 0x22, 0x00, 0x00, 0x00, 0x10},    {0xC1, 0x11, 0x31, 0x20, 0x2E, 0x20, 0x00, 0x10},    {0xC1, 0x11, 0x25, 0x00, 0xC3, 0x50, 0x00, 0x10},    {0xA1, 0x11, 0x30, 0x07, 0x00, 0x00, 0x00, 0x10},	//gain14    {0xC1, 0x11, 0x31, 0x10, 0x10, 0x10, 0x00, 0x10},	//r g b 101a10       //    {0xA1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x23, 0x09, 0x00, 0x00, 0x00, 0x10},//    {0xA1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xA1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10},    {0, 0, 0, 0, 0, 0, 0, 0}};static __u8 mi0360_sensor_init[][8] = {    {0xB1, 0x5D, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x01, 0x00, 0x08, 0x00, 0x16, 0x10},    {0xD1, 0x5D, 0x03, 0x01, 0xE2, 0x02, 0x82, 0x10},    {0xD1, 0x5D, 0x05, 0x00, 0x09, 0x00, 0x53, 0x10},    {0xB1, 0x5D, 0x0D, 0x00, 0x02, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x20, 0x91, 0x01, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x26, 0x00, 0x00, 0x00, 0x24, 0x10},    {0xD1, 0x5D, 0x2F, 0xF7, 0xB0, 0x00, 0x04, 0x10},    {0xD1, 0x5D, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x33, 0x00, 0x00, 0x01, 0x00, 0x10},    {0xB1, 0x5D, 0x3D, 0x06, 0x8F, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x40, 0x01, 0xE0, 0x00, 0xD1, 0x10},    {0xB1, 0x5D, 0x44, 0x00, 0x82, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x58, 0x00, 0x78, 0x00, 0x43, 0x10},    {0xD1, 0x5D, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x5E, 0x00, 0x00, 0xA3, 0x1D, 0x10},    {0xB1, 0x5D, 0x62, 0x04, 0x11, 0x00, 0x00, 0x10},        // {0xB1, 0x5D, 0x64, 0x00, 0x3F, 0x00, 0x00, 0x10}, //blue offset ???    {0xB1, 0x5D, 0x20, 0x91, 0x01, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10},    {0xD1, 0x5D, 0x2B, 0x00, 0xA0, 0x00, 0xB0, 0x10},    {0xD1, 0x5D, 0x2D, 0x00, 0xA0, 0x00, 0xA0, 0x10},    {0xB1, 0x5D, 0x0A, 0x00, 0x02, 0x00, 0x00, 0x10},	//sensor clck ?2    {0xB1, 0x5D, 0x06, 0x00, 0x30, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x05, 0x00, 0x0A, 0x00, 0x00, 0x10},    {0xB1, 0x5D, 0x09, 0x02, 0x35, 0x00, 0x00, 0x10},	// exposure 2    //{ 0xD1,0x5D,0x2B,0x00,0xB9,0x00,0xE3,0x10 },    //{ 0xD1,0x5D,0x2D,0x00,0xC5,0x00,0xB9,0x10 },    {0xB1, 0x5D, 0x35, 0x00, 0x67, 0x00, 0x00, 0x10},	//gain     {0xB1, 0x5D, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10},	//update    {0xB1, 0x5D, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},	//sensor on    {0, 0, 0, 0, 0, 0, 0, 0}};#if 0/* Data from sn9c120+hv7131r */static __u8 hv7131r_sensor_init[][8] = {    {0xc1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},    {0xd1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xd1, 0x11, 0x14, 0x01, 0xe2, 0x02, 0x82, 0x10},    {0xb1, 0x11, 0x34, 0x17, 0x7f, 0x00, 0x00, 0x10},    {0xd1, 0x11, 0x40, 0xff, 0x7f, 0x7f, 0x7f, 0x10},    {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xc1, 0x11, 0x25, 0x00, 0xc3, 0x50, 0x00, 0x10},    {0xa1, 0x11, 0x30, 0x20, 0x00, 0x00, 0x00, 0x10},    {0xc1, 0x11, 0x31, 0x13, 0x06, 0x12, 0x00, 0x10},    {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x21, 0xd0, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x23, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xc1, 0x11, 0x31, 0x17, 0x06, 0x10, 0x00, 0x10},    {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x21, 0xd1, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},    {0xa1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10},    {0, 0, 0, 0, 0, 0, 0, 0}};static __u8 sn_hv7131[] = {    0x00, 0x23, 0x60, 0x00, 0x1A, 0x1f, 0x21, 0x1f, 0xA1, 0x11, 0x02, 0x09,	0x00, 0x00, 0x00, 0x10, 0x03, 0x00,//reg0  reg1  reg2  reg3  reg4  reg5  reg6  reg7  reg8  reg9  rega  regb  regc  regd  rege  regf  reg10 reg11    0x00, 0x01, 0x0c, 0x28, 0x1e, 0x60, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00//reg12 reg13 reg14 reg15 reg16 reg17 reg18 reg19 reg1a reg1b reg1c reg1d reg1e reg1f reg20 reg21 reg22 reg23};static __u8 reg9a[] = {//HV7131//0x08, 0x40, 0x20, 0x10, 0x00, 0x04    //0x00, 0x40, 0x20, 0x00, 0x00, 0x00     0x07, 0x40, 0x20, 0x00, 0x00, 0x00	//MI0360};static __u8 regsn20[] = {//HV7131//0x00, 0x2D, 0x46, 0x5A, 0x6C, 0x7C, 0x8B, 0x99, 0xA6, 0xB2, 0xBF, 0xCA, 0xD5, 0xE0, 0xEB, 0xF5, 0xFF    //0x08, 0x3a, 0x52, 0x65, 0x75, 0x83, 0x91, 0x9d, 0xa9, 0xb4, 0xbe, 0xc8, 0xd2, 0xdb, 0xe4, 0xed, 0xf5 //hv7131R    0x08, 0x39, 0x51, 0x63, 0x73, 0x82, 0x8f, 0x9b, 0xa7, 0xb1, 0xbc, 0xc6, 0xcf, 0xd8, 0xe1, 0xea, 0xf2	//mi0360};static __u8 reg84[] = {//HV7131//0x14, 0x00, 0x27, 0x00, 0x07, 0x00, 0xE5, 0x0F, 0xE4, 0x0F, 0x38, 0x00, 0x3E, 0x00, 0xC3, 0x0F,    //0x00, 0x00, 0x00, 0x00, 0x00//HV7131//0x13, 0x00, 0x25, 0x00, 0x07, 0x00, 0xef, 0x0f, 0xdf, 0x0f, 0x33, 0x00, 0x38, 0x00, 0xd1, 0x0f,    //0xf7, 0x0f, 0x0f, 0x00, 0x00    //MI0360    0x13, 0x00, 0x25, 0x00, 0x07, 0x00, 0xee, 0x0f, 0xe5, 0x0f, 0x2e, 0x00,	0x30, 0x00, 0xd4, 0x0f,    0xfc, 0x0f, 0x14, 0x00, 0x00};#endif#if 0static __u8 qtable1[] = {    0x0B, 0x07, 0x07, 0x0B, 0x07, 0x07, 0x0B, 0x0B, 0x0B, 0x0B, 0x0E, 0x0B,	0x0B, 0x0E, 0x12, 0x1D,    0x12, 0x12, 0x0E, 0x0E, 0x12, 0x24, 0x19, 0x19, 0x15, 0x1D, 0x2B, 0x24,	0x2B, 0x2B, 0x27, 0x24,    0x27, 0x27, 0x2F, 0x32, 0x40, 0x39, 0x2F, 0x32, 0x3D, 0x32, 0x27, 0x27,	0x39, 0x4F, 0x39, 0x3D,    0x44, 0x48, 0x4B, 0x4B, 0x4B, 0x2B, 0x36, 0x52, 0x56, 0x4F, 0x48, 0x56,	0x40, 0x48, 0x4B, 0x48,    0x0B, 0x0E, 0x0E, 0x12, 0x0E, 0x12, 0x20, 0x12, 0x12, 0x20, 0x48, 0x2F,	0x27, 0x2F, 0x48, 0x48,    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,	0x48, 0x48, 0x48, 0x48,    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,	0x48, 0x48, 0x48, 0x48,    0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,	0x48, 0x48, 0x48, 0x48};static __u8 qtable2[] = {    0x09, 0x06, 0x06, 0x09, 0x06, 0x06, 0x09, 0x09, 0x09, 0x09, 0x0C, 0x09,	0x09, 0x0C, 0x0F, 0x18,    0x0F, 0x0F, 0x0C, 0x0C, 0x0F, 0x1E, 0x15, 0x15, 0x12, 0x18, 0x24, 0x1E,	0x24, 0x24, 0x21, 0x1E,    0x21, 0x21, 0x27, 0x2A, 0x36, 0x30, 0x27, 0x2A, 0x33, 0x2A, 0x21, 0x21,	0x30, 0x42, 0x30, 0x33,    0x39, 0x3C, 0x3F, 0x3F, 0x3F, 0x24, 0x2D, 0x45, 0x48, 0x42, 0x3C, 0x48,	0x36, 0x3C, 0x3F, 0x3C,    0x09, 0x0C, 0x0C, 0x0F, 0x0C, 0x0F, 0x1B, 0x0F, 0x0F, 0x1B, 0x3C, 0x27,	0x21, 0x27, 0x3C, 0x3C,    0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,	0x3C, 0x3C, 0x3C, 0x3C,    0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,	0x3C, 0x3C, 0x3C, 0x3C,    0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,	0x3C, 0x3C, 0x3C, 0x3C};#endifstatic __u8 qtable3[] = {    0x07, 0x05, 0x05, 0x07, 0x05, 0x05, 0x07, 0x07, 0x07, 0x07, 0x0A, 0x07,	0x07, 0x0A, 0x0C, 0x14,    0x0C, 0x0C, 0x0A, 0x0A, 0x0C, 0x19, 0x11, 0x11, 0x0F, 0x14, 0x1E, 0x19,	0x1E, 0x1E, 0x1B, 0x19,    0x1B, 0x1B, 0x20, 0x23, 0x2D, 0x28, 0x20, 0x23, 0x2A, 0x23, 0x1B, 0x1B,	0x28, 0x37, 0x28, 0x2A,    0x2F, 0x32, 0x34, 0x34, 0x34, 0x1E, 0x25, 0x39, 0x3C, 0x37, 0x32, 0x3C,	0x2D, 0x32, 0x34, 0x32,    0x07, 0x0A, 0x0A, 0x0C, 0x0A, 0x0C, 0x16, 0x0C, 0x0C, 0x16, 0x32, 0x20,	0x1B, 0x20, 0x32, 0x32,    0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,	0x32, 0x32, 0x32, 0x32,    0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,	0x32, 0x32, 0x32, 0x32,    0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,	0x32, 0x32, 0x32, 0x32};#if 0static __u8 qtable4[] = {    0x06, 0x04, 0x04, 0x06, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x08, 0x06,	0x06, 0x08, 0x0A, 0x11,    0x0A, 0x0A, 0x08, 0x08, 0x0A, 0x15, 0x0F, 0x0F, 0x0C, 0x11, 0x19, 0x15,	0x19, 0x19, 0x17, 0x15,    0x17, 0x17, 0x1B, 0x1D, 0x25, 0x21, 0x1B, 0x1D, 0x23, 0x1D, 0x17, 0x17,	0x21, 0x2E, 0x21, 0x23,    0x27, 0x29, 0x2C, 0x2C, 0x2C, 0x19, 0x1F, 0x30, 0x32, 0x2E, 0x29, 0x32,	0x25, 0x29, 0x2C, 0x29,    0x06, 0x08, 0x08, 0x0A, 0x08, 0x0A, 0x13, 0x0A, 0x0A, 0x13, 0x29, 0x1B,	0x17, 0x1B, 0x29, 0x29,

⌨️ 快捷键说明

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