亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? w9968cf.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
                 " for every device."                 "\n");MODULE_PARM_DESC(contrast,                  "\n<n[,...]> Set picture contrast (0-65535)."                 "\nDefault value is "__MODULE_STRING(W9968CF_CONTRAST)                 " for every device."                 "\n");MODULE_PARM_DESC(whiteness,                  "\n<n[,...]> Set picture whiteness (0-65535)."                 "\nDefault value is "__MODULE_STRING(W9968CF_WHITENESS)                 " for every device."                 "\n");#ifdef W9968CF_DEBUGMODULE_PARM_DESC(debug,                 "\n<n> Debugging information level, from 0 to 6:"                 "\n0 = none (use carefully)"                 "\n1 = critical errors"                 "\n2 = significant informations"                 "\n3 = configuration or general messages"                 "\n4 = warnings"                 "\n5 = called functions"                 "\n6 = function internals"                 "\nLevel 5 and 6 are useful for testing only, when only "                 "one device is used."                 "\nDefault value is "__MODULE_STRING(W9968CF_DEBUG_LEVEL)"."                 "\n");MODULE_PARM_DESC(specific_debug,                 "\n<0|1> Enable or disable specific debugging messages:"                 "\n0 = print messages concerning every level"                 " <= 'debug' level."                 "\n1 = print messages concerning the level"                 " indicated by 'debug'."                 "\nDefault value is "                 __MODULE_STRING(W9968CF_SPECIFIC_DEBUG)"."                 "\n");#endif /* W9968CF_DEBUG *//**************************************************************************** * Some prototypes                                                          * ****************************************************************************//* Video4linux interface */static struct file_operations w9968cf_fops;static int w9968cf_open(struct inode*, struct file*);static int w9968cf_release(struct inode*, struct file*);static int w9968cf_mmap(struct file*, struct vm_area_struct*);static int w9968cf_ioctl(struct inode*, struct file*, unsigned, unsigned long);static ssize_t w9968cf_read(struct file*, char __user *, size_t, loff_t*);static int w9968cf_v4l_ioctl(struct inode*, struct file*, unsigned int,                             void __user *);/* USB-specific */static int w9968cf_start_transfer(struct w9968cf_device*);static int w9968cf_stop_transfer(struct w9968cf_device*);static int w9968cf_write_reg(struct w9968cf_device*, u16 value, u16 index);static int w9968cf_read_reg(struct w9968cf_device*, u16 index);static int w9968cf_write_fsb(struct w9968cf_device*, u16* data);static int w9968cf_write_sb(struct w9968cf_device*, u16 value);static int w9968cf_read_sb(struct w9968cf_device*);static int w9968cf_upload_quantizationtables(struct w9968cf_device*);static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs);/* Low-level I2C (SMBus) I/O */static int w9968cf_smbus_start(struct w9968cf_device*);static int w9968cf_smbus_stop(struct w9968cf_device*);static int w9968cf_smbus_write_byte(struct w9968cf_device*, u8 v);static int w9968cf_smbus_read_byte(struct w9968cf_device*, u8* v);static int w9968cf_smbus_write_ack(struct w9968cf_device*);static int w9968cf_smbus_read_ack(struct w9968cf_device*);static int w9968cf_smbus_refresh_bus(struct w9968cf_device*);static int w9968cf_i2c_adap_read_byte(struct w9968cf_device* cam,                                      u16 address, u8* value);static int w9968cf_i2c_adap_read_byte_data(struct w9968cf_device*, u16 address,                                            u8 subaddress, u8* value);static int w9968cf_i2c_adap_write_byte(struct w9968cf_device*,                                       u16 address, u8 subaddress);static int w9968cf_i2c_adap_fastwrite_byte_data(struct w9968cf_device*,                                                u16 address, u8 subaddress,                                                u8 value);/* I2C interface to kernel */static int w9968cf_i2c_init(struct w9968cf_device*);static int w9968cf_i2c_smbus_xfer(struct i2c_adapter*, u16 addr,                                   unsigned short flags, char read_write,                                   u8 command, int size, union i2c_smbus_data*);static u32 w9968cf_i2c_func(struct i2c_adapter*);static int w9968cf_i2c_attach_inform(struct i2c_client*);static int w9968cf_i2c_detach_inform(struct i2c_client*);static int w9968cf_i2c_control(struct i2c_adapter*, unsigned int cmd,                               unsigned long arg);/* Memory management */static inline unsigned long kvirt_to_pa(unsigned long adr);static void* rvmalloc(unsigned long size);static void rvfree(void *mem, unsigned long size);static void w9968cf_deallocate_memory(struct w9968cf_device*);static int  w9968cf_allocate_memory(struct w9968cf_device*);/* High-level image sensor control functions */static int w9968cf_sensor_set_control(struct w9968cf_device*,int cid,int val);static int w9968cf_sensor_get_control(struct w9968cf_device*,int cid,int *val);static int w9968cf_sensor_cmd(struct w9968cf_device*,                              unsigned int cmd, void *arg);static int w9968cf_sensor_init(struct w9968cf_device*);static int w9968cf_sensor_update_settings(struct w9968cf_device*);static int w9968cf_sensor_get_picture(struct w9968cf_device*);static int w9968cf_sensor_update_picture(struct w9968cf_device*,                                          struct video_picture pict);/* Other helper functions */static void w9968cf_configure_camera(struct w9968cf_device*,struct usb_device*,                                     enum w9968cf_model_id,                                      const unsigned short dev_nr);static void w9968cf_adjust_configuration(struct w9968cf_device*);static int w9968cf_turn_on_led(struct w9968cf_device*);static int w9968cf_init_chip(struct w9968cf_device*);static inline u16 w9968cf_valid_palette(u16 palette);static inline u16 w9968cf_valid_depth(u16 palette);static inline u8 w9968cf_need_decompression(u16 palette);static int w9968cf_set_picture(struct w9968cf_device*, struct video_picture);static int w9968cf_set_window(struct w9968cf_device*, struct video_window);static int w9968cf_postprocess_frame(struct w9968cf_device*,                                      struct w9968cf_frame_t*);static int w9968cf_adjust_window_size(struct w9968cf_device*, u16* w, u16* h);static void w9968cf_init_framelist(struct w9968cf_device*);static void w9968cf_push_frame(struct w9968cf_device*, u8 f_num);static void w9968cf_pop_frame(struct w9968cf_device*,struct w9968cf_frame_t**);static void w9968cf_release_resources(struct w9968cf_device*);/* Intermodule communication */static int w9968cf_vppmod_detect(struct w9968cf_device*);static void w9968cf_vppmod_release(struct w9968cf_device*);/**************************************************************************** * Symbolic names                                                           * ****************************************************************************//* Used to represent a list of values and their respective symbolic names */struct w9968cf_symbolic_list {	const int num;	const char *name;};/*--------------------------------------------------------------------------   Returns the name of the matching element in the symbolic_list array. The  end of the list must be marked with an element that has a NULL name.  --------------------------------------------------------------------------*/static inline const char * symbolic(struct w9968cf_symbolic_list list[], const int num){	int i;	for (i = 0; list[i].name != NULL; i++)		if (list[i].num == num)			return (list[i].name);	return "Unknown";}static struct w9968cf_symbolic_list camlist[] = {	{ W9968CF_MOD_GENERIC, "W996[87]CF JPEG USB Dual Mode Camera" },	{ W9968CF_MOD_CLVBWGP, "Creative Labs Video Blaster WebCam Go Plus" },	/* Other cameras (having the same descriptors as Generic W996[87]CF) */	{ W9968CF_MOD_ADPVDMA, "Aroma Digi Pen VGA Dual Mode ADG-5000" },	{ W9986CF_MOD_AAU, "AVerMedia AVerTV USB" },	{ W9968CF_MOD_CLVBWG, "Creative Labs Video Blaster WebCam Go" },	{ W9968CF_MOD_LL, "Lebon LDC-035A" },	{ W9968CF_MOD_EEEMC, "Ezonics EZ-802 EZMega Cam" },	{ W9968CF_MOD_OOE, "OmniVision OV8610-EDE" },	{ W9968CF_MOD_ODPVDMPC, "OPCOM Digi Pen VGA Dual Mode Pen Camera" },	{ W9968CF_MOD_PDPII, "Pretec Digi Pen-II" },	{ W9968CF_MOD_PDP480, "Pretec DigiPen-480" },	{  -1, NULL }};static struct w9968cf_symbolic_list senlist[] = {	{ CC_OV76BE,   "OV76BE" },	{ CC_OV7610,   "OV7610" },	{ CC_OV7620,   "OV7620" },	{ CC_OV7620AE, "OV7620AE" },	{ CC_OV6620,   "OV6620" },	{ CC_OV6630,   "OV6630" },	{ CC_OV6630AE, "OV6630AE" },	{ CC_OV6630AF, "OV6630AF" },	{ -1, NULL }};/* Video4Linux1 palettes */static struct w9968cf_symbolic_list v4l1_plist[] = {	{ VIDEO_PALETTE_GREY,    "GREY" },	{ VIDEO_PALETTE_HI240,   "HI240" },	{ VIDEO_PALETTE_RGB565,  "RGB565" },	{ VIDEO_PALETTE_RGB24,   "RGB24" },	{ VIDEO_PALETTE_RGB32,   "RGB32" },	{ VIDEO_PALETTE_RGB555,  "RGB555" },	{ VIDEO_PALETTE_YUV422,  "YUV422" },	{ VIDEO_PALETTE_YUYV,    "YUYV" },	{ VIDEO_PALETTE_UYVY,    "UYVY" },	{ VIDEO_PALETTE_YUV420,  "YUV420" },	{ VIDEO_PALETTE_YUV411,  "YUV411" },	{ VIDEO_PALETTE_RAW,     "RAW" },	{ VIDEO_PALETTE_YUV422P, "YUV422P" },	{ VIDEO_PALETTE_YUV411P, "YUV411P" },	{ VIDEO_PALETTE_YUV420P, "YUV420P" },	{ VIDEO_PALETTE_YUV410P, "YUV410P" },	{ -1, NULL }};/* Decoder error codes: */static struct w9968cf_symbolic_list decoder_errlist[] = {	{ W9968CF_DEC_ERR_CORRUPTED_DATA, "Corrupted data" },	{ W9968CF_DEC_ERR_BUF_OVERFLOW,   "Buffer overflow" },	{ W9968CF_DEC_ERR_NO_SOI,         "SOI marker not found" },     	{ W9968CF_DEC_ERR_NO_SOF0,        "SOF0 marker not found" },	{ W9968CF_DEC_ERR_NO_SOS,         "SOS marker not found" },	{ W9968CF_DEC_ERR_NO_EOI,         "EOI marker not found" },	{ -1, NULL }};/* URB error codes: */static struct w9968cf_symbolic_list urb_errlist[] = {	{ -ENOMEM,    "No memory for allocation of internal structures" },	{ -ENOSPC,    "The host controller's bandwidth is already consumed" },	{ -ENOENT,    "URB was canceled by unlink_urb" },	{ -EXDEV,     "ISO transfer only partially completed" },	{ -EAGAIN,    "Too match scheduled for the future" },	{ -ENXIO,     "URB already queued" },	{ -EFBIG,     "Too much ISO frames requested" },	{ -ENOSR,     "Buffer error (overrun)" },	{ -EPIPE,     "Specified endpoint is stalled (device not responding)"},	{ -EOVERFLOW, "Babble (bad cable?)" },	{ -EPROTO,    "Bit-stuff error (bad cable?)" },	{ -EILSEQ,    "CRC/Timeout" },	{ -ETIMEDOUT, "NAK (device does not respond)" },	{ -1, NULL }};/**************************************************************************** * Memory management functions                                              * ****************************************************************************//* Here we want the physical address of the memory.   This is used when initializing the contents of the area. */static inline unsigned long kvirt_to_pa(unsigned long adr){	unsigned long kva, ret;	kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));	kva |= adr & (PAGE_SIZE-1); /* restore the offset */	ret = __pa(kva);	return ret;}static void* rvmalloc(unsigned long size){	void* mem;	unsigned long adr;	size = PAGE_ALIGN(size);	mem = vmalloc_32(size);	if (!mem)		return NULL;	memset(mem, 0, size); /* Clear the ram out, no junk to the user */	adr = (unsigned long) mem;	while (size > 0) {		SetPageReserved(vmalloc_to_page((void *)adr));		adr += PAGE_SIZE;		size -= PAGE_SIZE;	}	return mem;}static void rvfree(void* mem, unsigned long size){	unsigned long adr;	if (!mem)		return;	adr = (unsigned long) mem;	while ((long) size > 0) {		ClearPageReserved(vmalloc_to_page((void *)adr));		adr += PAGE_SIZE;		size -= PAGE_SIZE;	}	vfree(mem);}/*--------------------------------------------------------------------------  Deallocate previously allocated memory.  --------------------------------------------------------------------------*/static void w9968cf_deallocate_memory(struct w9968cf_device* cam){	u8 i;	/* Free the isochronous transfer buffers */	for (i = 0; i < W9968CF_URBS; i++) {		kfree(cam->transfer_buffer[i]);		cam->transfer_buffer[i] = NULL;	}	/* Free temporary frame buffer */	if (cam->frame_tmp.buffer) {		rvfree(cam->frame_tmp.buffer, cam->frame_tmp.size);		cam->frame_tmp.buffer = NULL;	}	/* Free helper buffer */	if (cam->frame_vpp.buffer) {		rvfree(cam->frame_vpp.buffer, cam->frame_vpp.size);		cam->frame_vpp.buffer = NULL;	}	/* Free video frame buffers */	if (cam->frame[0].buffer) {		rvfree(cam->frame[0].buffer, cam->nbuffers*cam->frame[0].size);		cam->frame[0].buffer = NULL;	}	cam->nbuffers = 0;	DBG(5, "Memory successfully deallocated")}/*--------------------------------------------------------------------------  Allocate memory buffers for USB transfers and video frames.  This function is called by open() only.  Return 0 on success, a negative number otherwise.  --------------------------------------------------------------------------*/static int w9968cf_allocate_memory(struct w9968cf_device* cam){	const u16 p_size = wMaxPacketSize[cam->altsetting-1];	void* buff = NULL;	unsigned long hw_bufsize, vpp_bufsize;	u8 i, bpp;	/* NOTE: Deallocation is done elsewhere in case of error */	/* Calculate the max amount of raw data per frame from the device */	hw_bufsize = cam->maxwidth*cam->maxheight*2;	/* Calculate the max buf. size needed for post-processing routines */	bpp = (w9968cf_vpp) ? 4 : 2;	if (cam->upscaling)		vpp_bufsize = max(W9968CF_MAX_WIDTH*W9968CF_MAX_HEIGHT*bpp,		                  cam->maxwidth*cam->maxheight*bpp);	else		vpp_bufsize = cam->maxwidth*cam->maxheight*bpp;	/* Allocate memory for the isochronous transfer buffers */	for (i = 0; i < W9968CF_URBS; i++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频一二三区| 国产乱人伦精品一区二区在线观看| 成人免费精品视频| 国产精品久久久久久户外露出| 欧美日韩精品一区二区三区蜜桃| 亚洲男人天堂一区| 在线观看精品一区| 国产伦精品一区二区三区视频青涩 | 欧美色国产精品| 亚洲成人av一区二区三区| 欧美精品久久久久久久多人混战| 婷婷夜色潮精品综合在线| 欧美日韩国产区一| 奇米影视一区二区三区| 精品国产露脸精彩对白| 高清国产午夜精品久久久久久| 欧美激情一区二区| 亚洲乱码国产乱码精品精的特点| 91久久精品一区二区三| 天天色天天操综合| 久久久美女毛片| 色悠悠亚洲一区二区| 午夜国产精品一区| 久久伊人蜜桃av一区二区| av激情综合网| 日产精品久久久久久久性色| 国产婷婷色一区二区三区在线| 成人美女视频在线看| 亚洲一区二区三区四区在线 | 日韩视频免费直播| 国产suv一区二区三区88区| 一区二区三区中文字幕在线观看| 7777精品伊人久久久大香线蕉 | 亚洲激情五月婷婷| 欧美xingq一区二区| 不卡的av电影| 美日韩黄色大片| 亚洲视频一区二区免费在线观看| 7777精品伊人久久久大香线蕉的 | 精品国精品自拍自在线| 97超碰欧美中文字幕| 蜜桃视频一区二区| 亚洲精品久久久蜜桃| 精品国产一区二区三区久久影院 | 国产成人在线电影| 婷婷成人激情在线网| 中文字幕一区不卡| 精品福利av导航| 欧美猛男gaygay网站| 成人在线视频一区| 精品影视av免费| 视频一区二区中文字幕| 中文字幕永久在线不卡| 日韩欧美在线综合网| 欧美视频三区在线播放| 波多野结衣在线aⅴ中文字幕不卡| 日本不卡免费在线视频| 亚洲成av人在线观看| 最新热久久免费视频| 国产午夜精品理论片a级大结局| 欧美另类变人与禽xxxxx| 91天堂素人约啪| 成人av午夜影院| 国产成人亚洲精品青草天美| 日本不卡视频一二三区| 午夜精品久久久久| 一区二区三区丝袜| 亚洲欧洲一区二区在线播放| 国产欧美一区在线| 国产欧美精品在线观看| www国产精品av| 精品第一国产综合精品aⅴ| 欧美精品电影在线播放| 欧美日韩电影在线| 欧美丰满嫩嫩电影| 欧美日韩一区在线| 欧美丝袜丝交足nylons图片| 色欧美乱欧美15图片| 色婷婷香蕉在线一区二区| 成人福利在线看| 99久久久精品| 色哟哟一区二区| 欧洲色大大久久| 欧美日韩在线播放三区| 欧美日韩国产bt| 日韩精品一区二| 精品日韩在线观看| 国产午夜精品在线观看| 国产精品福利影院| 亚洲人成电影网站色mp4| 亚洲一区在线播放| 日本不卡一区二区三区高清视频| 青青草97国产精品免费观看无弹窗版| 日韩国产一二三区| 国精品**一区二区三区在线蜜桃| 国产自产视频一区二区三区| 国产成人精品免费看| 99久久免费国产| 欧美网站大全在线观看| 日韩一级片网址| 国产日韩成人精品| 亚洲精品国产成人久久av盗摄 | 国产精品免费人成网站| 亚洲欧洲日韩综合一区二区| 一区二区三区日韩精品视频| 亚洲123区在线观看| 久草中文综合在线| 粉嫩嫩av羞羞动漫久久久| 欧美伊人久久久久久久久影院 | 91免费版pro下载短视频| 欧美亚洲国产bt| 欧美电影免费观看高清完整版在线 | 一区二区三区蜜桃网| 日本网站在线观看一区二区三区 | 丁香网亚洲国际| 欧美又粗又大又爽| 久久综合久色欧美综合狠狠| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品久久久久久久第一福利| 亚洲综合免费观看高清完整版 | 亚洲成av人片在线观看无码| 国产在线不卡一卡二卡三卡四卡| 99精品视频一区| 日韩欧美在线一区二区三区| 亚洲免费看黄网站| 九九**精品视频免费播放| 色综合咪咪久久| 久久蜜臀精品av| 亚洲高清在线精品| 福利91精品一区二区三区| 91精品欧美综合在线观看最新| 国产精品―色哟哟| 激情另类小说区图片区视频区| 色综合欧美在线视频区| 久久女同性恋中文字幕| 午夜天堂影视香蕉久久| 不卡的av在线播放| 久久久久九九视频| 免费观看日韩av| 欧美性猛片xxxx免费看久爱| 中文字幕欧美国产| 看片的网站亚洲| 7777精品伊人久久久大香线蕉| 亚洲图片欧美激情| 国产精品亚洲а∨天堂免在线| 日韩视频免费直播| 五月综合激情日本mⅴ| 色综合久久天天综合网| 中文字幕欧美日韩一区| 韩国一区二区三区| 欧美不卡一区二区三区四区| 视频在线在亚洲| 欧美三级一区二区| 伊人开心综合网| 91网址在线看| 亚洲人快播电影网| 国产成人在线视频网址| 久久人人97超碰com| 久久99国产精品尤物| 日韩欧美中文字幕一区| 喷白浆一区二区| 日韩一卡二卡三卡四卡| 日韩高清欧美激情| 欧美精品三级日韩久久| 天堂一区二区在线免费观看| 欧美午夜在线观看| 亚洲超碰97人人做人人爱| 色嗨嗨av一区二区三区| 亚洲综合丝袜美腿| 欧美男生操女生| 热久久国产精品| 日韩欧美精品在线| 精品一区二区日韩| 久久蜜桃av一区二区天堂| 国产精品一区二区在线播放| 久久无码av三级| 国产老肥熟一区二区三区| 国产午夜精品福利| 成人aa视频在线观看| 亚洲素人一区二区| 欧洲一区二区三区在线| 婷婷国产v国产偷v亚洲高清| 日韩一二三区不卡| 国产一区999| 亚洲色图在线视频| 欧美另类z0zxhd电影| 麻豆国产精品视频| 国产午夜精品一区二区三区视频| 成人av资源下载| 亚洲福利视频一区二区| 欧美一区二区性放荡片| 久久国产麻豆精品| 中文字幕在线不卡视频| 欧美日韩www| 精品一区二区久久久| 国产免费观看久久| 在线一区二区三区| 麻豆免费精品视频| 最新国产成人在线观看| 欧美军同video69gay|