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

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

?? wtmpeg1ch.c

?? motorola MCF5249+IME6400的視頻采集系統的視頻驅動程序,可實時采集4路CIF視頻
?? C
?? 第 1 頁 / 共 2 頁
字號:
//************************************************************************************************//*                                                                                                                 *//*  IME6400 Video Caputure Card General Purpose Bus driver                     *//*  Direct map memory//*  //***********************************************************************************************#include <linux/config.h>#ifndef __KERNEL__#  define __KERNEL__#endif#ifdef   MODULE#include <linux/version.h>#include <linux/module.h>#endif#include <linux/kernel.h>#include <linux/types.h>#include <linux/sched.h>#include <linux/mm.h>#include <linux/string.h>#include <linux/errno.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/system.h>#include <linux/kmod.h>#include <linux/slab.h>   /* kmalloc() */#include <linux/fs.h>#include <linux/wait.h>#include <linux/ioctl.h>#include <linux/sched.h>//#include <linux/wait.h>#include <linux/init.h>#ifndef _MCF5249_#define _MCF5249_#endif//#ifndef _REVERSE_//#define _REVERSE_//#endif//#undef  _REVERSE_//#define _HHETH_#define HAVE_MAP#define DEVICEMAJOR 254#define MEDIAHEAD 20//***************************************************************//Data type define#define DWORD volatile unsigned long#define BYTE  volatile unsigned char#define WORD volatile unsigned short//***************************************************************//***  for debug **//#define DEBUG 1#ifdef DEBUG#define PDEBUG(fmt, args...) printf(fmt,##args)#define KDEBUG(fmt, args...) printk("KDEBUG: "fmt, ##args)#else#define PDEBUG(fmt, args...)#define KDEBUG(fmt, args...)#endif#ifdef _MCF5249_//Define base address#define IME_MBAR 0x30000000#define MCF_MBAR 0x10000000#define MCF_MBAR2 0x80000000//ime6400 Register define#define BaseAddress0 (0x12<<1)#define BaseAddress1 (0x14<<1)#define Status (0x1e<<1)#define Data (0x02<<1)#define Command 0x00#define User0 (0x04<<1)#define User4 (0x0c<<1)#define User3 (0x0a<<1)#define EncodedStream (0x10<<1)#ifdef _HHETH_#define IrqID  161#else#define IrqID  162#endif// Chip Select registers (in MBA)#define MCFSIM_CSAR0		0x80		/* CS 0 Address 0 reg (r/w) */#define MCFSIM_CSMR0		0x84		/* CS 0 Mask 0 reg (r/w) */#define MCFSIM_CSCR0		0x8a		/* CS 0 Control reg (r/w) */#define MCFSIM_CSAR1		0x8c		/* CS 1 Address reg (r/w) */#define MCFSIM_CSMR1		0x90		/* CS 1 Mask reg (r/w) */#define MCFSIM_CSCR1		0x96		/* CS 1 Control reg (r/w) *//* *	General purpose IO registers (in MBAR2). */#define	MCFSIM2_GPIOREAD	0x0		/* GPIO read values */#define	MCFSIM2_GPIOWRITE	0x4		/* GPIO write values */#define	MCFSIM2_GPIOENABLE	0x8		/* GPIO enabled */#define	MCFSIM2_GPIOFUNC	0xc		/* GPIO function */#define	MCFSIM2_GPIO1READ	0xb0		/* GPIO1 read values */#define	MCFSIM2_GPIO1WRITE	0xb4		/* GPIO1 write values */#define	MCFSIM2_GPIO1ENABLE	0xb8		/* GPIO1 enabled */#define	MCFSIM2_GPIO1FUNC	0xbc		/* GPIO1 function */#define	MCFSIM2_GPIOINTSTAT	0xc0		/* GPIO interrupt status */#define	MCFSIM2_GPIOINTCLEAR	0xc0		/* GPIO interrupt clear */#define	MCFSIM2_GPIOINTENABLE	0xc4		/* GPIO interrupt enable */#define	MCFSIM2_INTLEVEL1	0x140		/* Interrupt level reg 1 */#define	MCFSIM2_INTLEVEL2	0x144		/* Interrupt level reg 2 */#define	MCFSIM2_INTLEVEL3	0x148		/* Interrupt level reg 3 */#define	MCFSIM2_INTLEVEL4	0x14c		/* Interrupt level reg 4 */#define	MCFSIM2_INTLEVEL5	0x150		/* Interrupt level reg 5 */#define	MCFSIM2_INTLEVEL6	0x154		/* Interrupt level reg 6 */#define	MCFSIM2_INTLEVEL7	0x158		/* Interrupt level reg 7 */#define	MCFSIM2_INTLEVEL8	0x15c		/* Interrupt level reg 8 */#else //Define base address#define IME_MBAR 0x01000000#define MCF_MBAR 0x10000000//ime6400 Register define#define BaseAddress0 0x12#define BaseAddress1 0x14#define Status 0x1e#define Data 0x02#define Command 0x00#define User0 0x04#define User4 0x0c#define User3 0x0a#define EncodedStream 0x10#define IrqID  67#endif//****************************#define IOC_MAGIC ('k')//** video ioctl ***#define IOCVGSTATUE _IOR(IOC_MAGIC,0,int)//****************************//******************************************//***      Function                                            ****//******************************************// Big-endian <==> Little-endian#ifdef _REVERSE_#define Reverse16(r)	(((WORD)r<<8)|((WORD)r>>8))#else#define Reverse16(r) (r)#endif//***   pointer for mem space#define	mcf32p(r)	((DWORD *) (r))#define	mcf16p(r)	((WORD *) (r))#define	mcf8p(r)	((BYTE *) (r))//***   pointer for mbar register#define	mcfReg32p(r)	(mcf32p(MCF_MBAR + (r)))#define	mcfReg16p(r)	(mcf16p(MCF_MBAR + (r)))#define	mcfReg8p(r) 	(mcf8p(MCF_MBAR + (r)))#ifdef _MCF5249_//***   pointer for 5249 mbar2 register#define	mcf2Reg32p(r)	(mcf32p(MCF_MBAR2 + (r)))#define	mcf2Reg16p(r)	(mcf16p(MCF_MBAR2 + (r)))#define	mcf2Reg8p(r) 	(mcf8p(MCF_MBAR2 + (r)))#endif//***   pointer for ime6400 register#define	I6400Reg32p(r)	(mcf32p(IME_MBAR + (r)))#define	I6400Reg16p(r)	(mcf16p(IME_MBAR + (r)))#define	I6400Reg8p(r) 	(mcf8p(IME_MBAR + (r)))//******** the  old  functions//===========================mcf Access =====================#define M5272ReadMem(r) (*mcf32p(r))#define M5272ReadReg(r) (*mcfReg32p(r))#define M5272WriteReg(x, y) (mcf32Write(x,y))inline void  mcf32Write(DWORD dIndex,DWORD dValue){	*(mcfReg32p(dIndex))=dValue;		return;}//===========================IME 6400 Access =====================#define	I6400ReadReg(r) (Reverse16(*I6400Reg16p(r)))inline void I6400WriteReg(DWORD dIndex,WORD wValue){	*(I6400Reg16p(dIndex))=Reverse16(wValue);	return;}//*******  set cs wait length  *************static int ta_wait =3;#ifdef MODULEMODULE_PARM (ta_wait, "i");MODULE_PARM_DESC (ta_wait, "clocks to insert before internal /TA!!!");#endif#define WAITLENTH(x) (((WORD)x<<10)|0x0180)//*************************************/************ globel value **************/static DECLARE_WAIT_QUEUE_HEAD(wq);//wait_queue_head_t wq;DWORD dEncode=IME_MBAR + EncodedStream;WORD wLoop=0;#define LEAFLET 2   //1k#define BLOCK 2048  ////#define PACKSIZE 528#define PACKSIZE 532#define BUFFERINC(x,y,z)  ((x+y)%z)  //z: num of package  y: inc  x: indicate//#define NR_QUEUE   256  //(BLOCK/LEAFLET)unsigned char * StreamPool;  //buffer volatile int nRd=0;volatile int nWrt=0;//volatile int nBlock=0;DWORD mmstart=0;//volatile int activeMap = 0;//*******************************************static ssize_t driver_read(struct file *file,char *buf, size_t count, loff_t *ppos){	int nRet;	int slen;	//int flags;//	wait_queue_t wait;	//	init_waitqueue_entry(&wait, current);//	KDEBUG("S");//	add_wait_queue(&wq, &wait);//	while (1) {//   	 	set_current_state(TASK_INTERRUPTIBLE);//   		if (nRd != nWrt) /* whatever test your driver needs *///   	 	break;//   	 	schedule();//	}//	set_current_state(TASK_RUNNING);//	remove_wait_queue(&wq, &wait);//	KDEBUG("W");	/*       while(nRd==nWrt){       	if (file->f_flags & O_NONBLOCK) {			return -EAGAIN;		}	   		interruptible_sleep_on(&wq);	   		if (signal_pending(current)) {			KDEBUG("  interrupted\n");			return -ERESTARTSYS;		}	}*/	tryagain:	//printk("nw[%d] nr[%d]\n",nWrt,nRd);	slen = ((nWrt>=nRd)?(nWrt-nRd):(BLOCK-nRd));	if(slen<(count/PACKSIZE)){		if((BLOCK-nRd)<(count/PACKSIZE)){			KDEBUG("align error\n");			nRd = 0;		}		if (signal_pending(current))	  	  return (-ERESTARTSYS);		set_current_state(TASK_INTERRUPTIBLE);		schedule_timeout(1);		goto tryagain;				//return 0;	//	wait_event_interruptible(wq,(nRd!=nWrt));			}			//if(nRd==nWrt){	//	bufStatue = 0;	//	return 0;		//interruptible_sleep_on(&wq);	//}	  	   //************************************************************	#ifndef HAVE_MAP	//copy_to_user(buf,StreamPool+LEAFLET*PACKSIZE*nRd,LEAFLET*PACKSIZE);	copy_to_user(buf,StreamPool+PACKSIZE*nRd,LEAFLET*PACKSIZE);#endif	nRet = nRd;	//nRd = BUFFERINC(nRd, LEAFLET,BLOCK);	nRd = BUFFERINC(nRd, (count/PACKSIZE), BLOCK);	     	return nRet;}//****** mmap **************/*void driver_vma_open(struct vm_area_struct *vma){ 	MOD_INC_USE_COUNT; 	activeMap++;}void driver_vma_close(struct vm_area_struct *vma){ 	MOD_DEC_USE_COUNT; 	activeMap--;}struct vm_operations_struct driver_vm_ops = {    open:     driver_vma_open,    close:  	driver_vma_close,};*/int driver_mmap(struct file *filp, struct vm_area_struct *vma){	KDEBUG("vmmap()\n");	vma->vm_flags |= VM_RESERVED;	//if((driver_buf == NULL) || remap_page_range(vma->vm_start,__pa(driver_buf),BUFSIZE,PAGE_SHARED))	vma->vm_start = vma->vm_offset + mmstart;	//vma->vm_ops = driver_vm_ops;	//return -EAGAIN;	//activeMap++;	return 0;}//******** ioctl ********************int 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久久久| 97久久精品人人爽人人爽蜜臀| 精品久久久久久久久久久院品网| 国产在线不卡视频| 亚洲国产精品久久人人爱蜜臀| 在线成人小视频| 国产毛片精品视频| 婷婷久久综合九色综合伊人色| 日韩女优制服丝袜电影| 不卡的av网站| 久久精品久久久精品美女| 国产精品久久免费看| 欧美日韩黄色一区二区| 成人深夜福利app| 五月婷婷久久综合| 国产精品免费久久久久| 2021中文字幕一区亚洲| 色天天综合色天天久久| 综合久久国产九一剧情麻豆| 精品国产亚洲在线| 色综合久久天天| 美洲天堂一区二卡三卡四卡视频| 一区二区三区.www| 国产无遮挡一区二区三区毛片日本| 精品污污网站免费看| 顶级嫩模精品视频在线看| 日本不卡的三区四区五区| 一区二区三区在线不卡| 中文在线免费一区三区高中清不卡| 欧美性大战久久| 91亚洲国产成人精品一区二区三 | 色婷婷久久99综合精品jk白丝| 日本人妖一区二区| 亚洲免费av在线| 亚洲免费av网站| 国产亚洲精品aa午夜观看| 欧美精品久久99久久在免费线| 色噜噜狠狠一区二区三区果冻| 福利一区二区在线观看| 色综合久久久久久久久久久| 久久爱www久久做| 天天av天天翘天天综合网| 一区二区三区高清| 亚洲三级电影全部在线观看高清| 国产精品久久久99| 国产亚洲一二三区| 久久综合九色综合97婷婷女人| 久久综合五月天婷婷伊人| 国产精品无码永久免费888| 久久色在线观看| 欧美精品一区二区三区蜜桃| 日韩一区二区三区免费看| 日本道在线观看一区二区| av资源网一区| av高清不卡在线| 91同城在线观看| 91丨九色丨国产丨porny| 国产成人午夜电影网| 蜜乳av一区二区三区| 蜜臀a∨国产成人精品| 国产精品伊人色| 国产传媒日韩欧美成人| 蜜臀精品久久久久久蜜臀| 美女一区二区三区在线观看| 久久国产精品99久久人人澡| 国产一区二区精品在线观看| 国产成人精品www牛牛影视| 国产成人免费在线| 97se狠狠狠综合亚洲狠狠| 在线影视一区二区三区| 欧美撒尿777hd撒尿| 精品欧美乱码久久久久久| 久久综合九色综合97_久久久| 久久精品一区二区三区不卡| 中文字幕乱码久久午夜不卡| 欧美国产一区二区| 亚洲最大成人网4388xx| 三级亚洲高清视频| 麻豆国产欧美日韩综合精品二区| 国产精品一区二区你懂的| 国产98色在线|日韩| 99在线精品免费| 91精品国产综合久久久蜜臀粉嫩 | 精品久久99ma| 欧美国产一区二区| 一区二区三区在线观看网站| 亚洲伊人伊色伊影伊综合网| 日本在线不卡视频一二三区| 国产精华液一区二区三区| 色天天综合久久久久综合片| 91精品国产高清一区二区三区| 久久久不卡影院| 亚洲激情男女视频| 国产一区二三区好的| 99麻豆久久久国产精品免费| 欧美亚洲一区二区在线| 久久久久久久久久久电影| 亚洲免费观看在线视频| 美女国产一区二区| 不卡一区二区三区四区| 欧美三级一区二区| 国产精品青草久久| 日本不卡视频在线观看| 91麻豆国产在线观看| 精品久久久久一区二区国产| 亚洲视频一二区| 久久99国产乱子伦精品免费| 波多野结衣视频一区| 欧美精品精品一区| 国产精品国产自产拍在线| 日产精品久久久久久久性色| 日本精品裸体写真集在线观看 | 日韩一区二区中文字幕| 一区二区视频在线| 国内精品国产成人| 99精品国产99久久久久久白柏| 日韩三级免费观看| 亚洲欧美激情在线| 成人免费视频网站在线观看| 5566中文字幕一区二区电影| 精品久久久久一区二区国产| 日韩av在线免费观看不卡| 色婷婷综合久久久中文一区二区| 国产精品久久二区二区| 九一九一国产精品| 欧美午夜精品理论片a级按摩| 最新不卡av在线| 国产精品一卡二卡在线观看| 日韩美女视频一区二区在线观看| 亚洲激情校园春色| av激情亚洲男人天堂| 国产精品美女www爽爽爽| 国产一区二区网址| 精品国产凹凸成av人网站| 日韩精品视频网站| 欧美吞精做爰啪啪高潮| 亚洲一级二级在线| 色哟哟欧美精品| 亚洲精品亚洲人成人网| 成人av在线网站| 国产网站一区二区| 成人晚上爱看视频| 国产视频一区在线播放| 久久成人麻豆午夜电影| 91精品国产入口在线| 久久久精品国产免大香伊| 久99久精品视频免费观看| 日韩亚洲欧美高清| 亚洲欧美一区二区三区极速播放 | 成人精品亚洲人成在线| 久久久久久久久久美女| 久久69国产一区二区蜜臀| 久久伊人蜜桃av一区二区| 麻豆国产欧美日韩综合精品二区| 欧洲精品中文字幕| 亚洲日穴在线视频| 日本韩国欧美国产| 亚洲综合成人在线视频| 99国产精品国产精品毛片| 国产精品欧美久久久久无广告 | 亚洲影视在线观看| 色欧美片视频在线观看| 亚洲黄色免费网站| 欧美精品日韩一区| 日本免费在线视频不卡一不卡二| 欧美成人乱码一区二区三区| 久久成人免费日本黄色| 久久亚洲私人国产精品va媚药| 国产成人精品免费看| 中文字幕一区三区| 欧美天天综合网| 男女男精品网站| 久久久久九九视频| 欧洲国内综合视频| 日韩电影在线免费观看| 国产亚洲欧美色| 91蜜桃视频在线| 亚洲制服丝袜一区| 337p日本欧洲亚洲大胆精品| 国产精品1区二区.| 亚洲大片在线观看| 日韩欧美高清一区| 一本色道**综合亚洲精品蜜桃冫| 无码av免费一区二区三区试看 | 色94色欧美sute亚洲13| 亚洲五码中文字幕| 国产女人18毛片水真多成人如厕| www.日韩精品| 美国十次综合导航| 国产精品美女久久久久高潮| 99久久夜色精品国产网站| 日韩中文字幕区一区有砖一区| 久久嫩草精品久久久久| 欧美午夜影院一区| 国产中文一区二区三区| 国产精品国产三级国产aⅴ原创| 欧美一区二区视频观看视频| 国产精品一区二区在线播放| 一区2区3区在线看| 久久视频一区二区|