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

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

?? meteor.c

?? 基于組件方式開發操作系統的OSKIT源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
}/* * There is also a problem with range checking on the 7116. * It seems to only work for 22 bits, so the max size we can allocate * is 22 bits long or 4194304 bytes assuming that we put the beginning * of the buffer on a 2^24 bit boundary.  The range registers will use * the top 8 bits of the dma start registers along with the bottom 22 * bits of the range register to determine if we go out of range. * This makes getting memory a real kludge. * */#define RANGE_BOUNDARY	(1<<22)static vm_offset_tget_meteor_mem(int unit, unsigned size){vm_offset_t	addr = 0;	addr = vm_page_alloc_contig(size, 0x100000, 0xffffffff, 1<<24);	if(addr == 0)		addr = vm_page_alloc_contig(size, 0x100000, 0xffffffff,								PAGE_SIZE);	if(addr == 0) {		printf("meteor%d: Unable to allocate %d bytes of memory.\n",			unit, size);	}	return addr;}static voidbt254_write(meteor_reg_t *mtr, u_char addr, u_char data){	addr &= 0x7;						/* sanity? */	mtr->bt254_reg[addr] = data;	PCF8574_DATA_WRITE(mtr, data);				/* set data */	PCF8574_CTRL_WRITE(mtr, (PCF8574_CTRL_REG(mtr) & ~0x7) | addr);	PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) & ~0x10);	/* WR/ to 0 */	PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) | 0x10);	/* WR to 1 */	PCF8574_DATA_WRITE(mtr, 0xff);				/* clr data */}static voidbt254_init(meteor_reg_t *mtr){int	i;	PCF8574_CTRL_WRITE(mtr, 0x7f);	PCF8574_DATA_WRITE(mtr, 0xff);	/* data port must be 0xff */	PCF8574_CTRL_WRITE(mtr, 0x7f);	/* init RGB module for 24bpp, composite input */	for(i=0; i<NUM_BT254_REGS; i++)		bt254_write(mtr, i, bt254_default[i]);	bt254_write(mtr, BT254_COMMAND, 0x00);	/* 24 bpp */}static voidbt254_ntsc(meteor_reg_t *mtr, int arg){        if (arg){	  /* Set NTSC bit */	  PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) | 0x20);	}	else {	  /* reset NTSC bit */	  PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) &= ~0x20);	}}static voidselect_bt254(meteor_reg_t *mtr){	/* disable saa7196, saaen = 1 */	PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) | 0x80);	/* enable Bt254, bten = 0 */	PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) & ~0x40);}static voidselect_saa7196(meteor_reg_t *mtr){	/* disable Bt254, bten = 1 */	PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) | 0x40);	/* enable saa7196, saaen = 0 */	PCF8574_CTRL_WRITE(mtr, PCF8574_CTRL_REG(mtr) & ~0x80);}/* * Initialize the 7116, 7196 and the RGB module. */static voidmeteor_init ( meteor_reg_t *mtr ){	mreg_t	*vbase_addr;	int 	i;	/*	 * Initialize the Philips SAA7116	 */	mtr->base->cap_cntl = 0x00000040L;	vbase_addr = &mtr->base->dma1e;	for (i = 0 ; i < (sizeof(struct saa7116_regs)/sizeof(mreg_t)); i++)		*vbase_addr++ = saa7116_pci_default[i];	/*	 * Check for the Philips SAA7196	 */	i2c_print_err = 0;	if(i2c_write(mtr, SAA7196_I2C_ADDR, SAA7116_I2C_WRITE, 0, 0xff) == 0) {		i2c_print_err = 1;		/*		 * Initialize 7196		 */		for (i = 0; i < NUM_SAA7196_I2C_REGS; i++) 			SAA7196_WRITE(mtr, i, saa7196_i2c_default[i]);		/*		 * Get version number.		 */		SAA7196_WRITE(mtr, SAA7196_STDC,			SAA7196_REG(mtr, SAA7196_STDC) & ~0x02);		SAA7196_READ(mtr);		printf("meteor%d: <Philips SAA 7196> rev 0x%x\n",			METEOR_NUM(mtr),			(unsigned)((mtr->base->i2c_read & 0xff000000L) >> 28));	} else {		i2c_print_err = 1;		printf("meteor%d: <Philips SAA 7196 NOT FOUND>\n",			METEOR_NUM(mtr));	}	/*	 * Check for RGB module, initialized if found.	 */	i2c_print_err = 0;	if(i2c_write(mtr,PCF8574_DATA_I2C_ADDR,SAA7116_I2C_WRITE,0,0xff) == 0) {		i2c_print_err = 1;		printf("meteor%d: <Booktree 254 (RGB module)>\n",			METEOR_NUM(mtr));	/* does this have a rev #? */		bt254_init(mtr);	/* Set up RGB module */		mtr->flags = METEOR_RGB;	} else {		i2c_print_err = 1;		mtr->flags = 0;	}	set_fps(mtr, 30);}static	voidmet_attach(pcici_t tag, int unit){#ifdef METEOR_IRQ	u_long old_irq, new_irq;#endif METEOR_IRQ	meteor_reg_t *mtr;	vm_offset_t buf;	u_long latency;	if (unit >= NMETEOR) {		printf("meteor%d: attach: only %d units configured.\n",				unit, NMETEOR);		printf("meteor%d: attach: invalid unit number.\n", unit);        	return ;	}	mtr = &meteor[unit];	mtr->tag = tag;	pci_map_mem(tag, PCI_MAP_REG_START, (vm_offset_t *)&mtr->base,				&mtr->phys_base);#ifdef METEOR_IRQ		/* from the configuration file */	old_irq = pci_conf_read(tag, PCI_INTERRUPT_REG);	pci_conf_write(tag, PCI_INTERRUPT_REG, METEOR_IRQ);	new_irq = pci_conf_read(tag, PCI_INTERRUPT_REG);	printf("meteor%d: attach: irq changed from %d to %d\n",		unit, (old_irq & 0xff), (new_irq & 0xff));#endif METEOR_IRQ				/* setup the interrupt handling routine */	pci_map_int(tag, meteor_intr, (void*) mtr, &net_imask); /* * PCI latency timer.  32 is a good value for 4 bus mastering slots, if * you have more than for, then 16 would probably be a better value. * */#ifndef METEOR_DEF_LATENCY_VALUE#define METEOR_DEF_LATENCY_VALUE	32	#endif	latency = pci_conf_read(tag, PCI_LATENCY_TIMER);	latency = (latency >> 8) & 0xff;	if(bootverbose) {		if(latency)			printf("meteor%d: PCI bus latency is", unit);		else			printf("meteor%d: PCI bus latency was 0 changing to",				unit);	}	if(!latency) {		latency = METEOR_DEF_LATENCY_VALUE;		pci_conf_write(tag, PCI_LATENCY_TIMER,  latency<<8);	}	if(bootverbose) {		printf(" %lu.\n", latency);	}	meteor_init(mtr);	/* set up saa7116, saa7196, and rgb module */	if(METEOR_ALLOC)		buf = get_meteor_mem(unit, METEOR_ALLOC);	else		buf = 0;	if(bootverbose) {		printf("meteor%d: buffer size %d, addr 0x%x\n",			unit, METEOR_ALLOC, vtophys(buf));	}	mtr->bigbuf = buf;	mtr->alloc_pages = METEOR_ALLOC_PAGES;	if(buf != 0) {		bzero((caddr_t) buf, METEOR_ALLOC);		buf = vtophys(buf);					/* 640x480 RGB 16 */		mtr->base->dma1e = buf;		mtr->base->dma1o = buf + 0x500;		mtr->base->dma_end_e = 		mtr->base->dma_end_o = buf + METEOR_ALLOC;	}	/* 1 frame of 640x480 RGB 16 */	mtr->cols = 640;	mtr->rows = 480;	mtr->depth = 2;		/* two bytes per pixel */	mtr->frames = 1;	/* one frame */    	mtr->flags |= METEOR_INITALIZED | METEOR_AUTOMODE | METEOR_DEV0 |		   METEOR_RGB16;#ifdef DEVFS	mtr->devfs_token = devfs_add_devswf(&meteor_cdevsw, unit,						DV_CHR, 0, 0, 0644, "meteor");#endif}#define UNIT(x)	((x) & 0x07)#ifdef unusedstatic intmeteor_reset(dev_t dev){int			unit = UNIT(minor(dev));struct	saa7116_regs	*m;	if(unit >= NMETEOR)		return ENXIO;	m = meteor[unit].base;	m->cap_cntl = 0x0;	tsleep((caddr_t)m, METPRI, "Mreset", hz/50);	m->cap_cntl = 0x8ff0;	m->cap_cntl = 0x80c0;	m->cap_cntl = 0x8040;	tsleep((caddr_t)m, METPRI, "Mreset", hz/10);	m->cap_cntl = 0x80c0;	return 0;}#endif/*---------------------------------------------------------****	Meteor character device driver routines****---------------------------------------------------------*/intmeteor_open(dev_t dev, int flags, int fmt, struct proc *p){	meteor_reg_t *mtr;	int	unit; 	int	i;	unit = UNIT(minor(dev));	if (unit >= NMETEOR)	/* unit out of range */		return(ENXIO);	mtr = &(meteor[unit]);	if (!(mtr->flags & METEOR_INITALIZED))	/* device not found */		return(ENXIO);	if (mtr->flags & METEOR_OPEN)		/* device is busy */		return(EBUSY);	mtr->flags |= METEOR_OPEN;	/*	 * Make sure that the i2c regs are set the same for each open.	 */	for(i=0; i< NUM_SAA7196_I2C_REGS; i++) {		SAA7196_WRITE(mtr, i, saa7196_i2c_default[i]);	}	mtr->fifo_errors = 0;	mtr->dma_errors = 0;	mtr->frames_captured = 0;	mtr->even_fields_captured = 0;	mtr->odd_fields_captured = 0;	mtr->proc = (struct proc *)0;	set_fps(mtr, 30);#ifdef METEOR_TEST_VIDEO	mtr->video.addr = 0;	mtr->video.width = 0;	mtr->video.banksize = 0;	mtr->video.ramsize = 0;#endif	return(0);}intmeteor_close(dev_t dev, int flags, int fmt, struct proc *p){	meteor_reg_t *mtr;	int	unit; #ifdef METEOR_DEALLOC_ABOVE	int	temp;#endif	unit = UNIT(minor(dev));	if (unit >= NMETEOR)	/* unit out of range */		return(ENXIO);	mtr = &(meteor[unit]);	mtr->flags &= ~METEOR_OPEN;	if(mtr->flags & METEOR_SINGLE)				/* this should not happen, the read capture 				  should have completed or in the very least				  recieved a signal before close is called. */		wakeup((caddr_t)mtr);	/* continue read */	/*	 * Turn off capture mode.	 */	mtr->base->cap_cntl = 0x8ff0;	mtr->flags &= ~(METEOR_CAP_MASK|METEOR_WANT_MASK);#ifdef METEOR_DEALLOC_PAGES	if (mtr->bigbuf != NULL) {		kmem_free(kernel_map,mtr->bigbuf,(mtr->alloc_pages*PAGE_SIZE));		mtr->bigbuf = NULL;		mtr->alloc_pages = 0;	}#else#ifdef METEOR_DEALLOC_ABOVE	if (mtr->bigbuf != NULL && mtr->alloc_pages > METEOR_DEALLOC_ABOVE) {		temp = METEOR_DEALLOC_ABOVE - mtr->alloc_pages;		kmem_free(kernel_map,			  mtr->bigbuf+((mtr->alloc_pages - temp) * PAGE_SIZE),			  (temp * PAGE_SIZE));		mtr->alloc_pages = METEOR_DEALLOC_ABOVE;	}#endif#endif	return(0);}static voidstart_capture(meteor_reg_t *mtr, unsigned type){mreg_t *cap = &mtr->base->cap_cntl;	mtr->flags |= type;	switch(mtr->flags & METEOR_ONLY_FIELDS_MASK) {	case METEOR_ONLY_EVEN_FIELDS:		mtr->flags |= METEOR_WANT_EVEN;		if(type == METEOR_SINGLE)			*cap = 0x0ff4 | mtr->range_enable;		else			*cap = 0x0ff1 | mtr->range_enable;		break;	case METEOR_ONLY_ODD_FIELDS:		mtr->flags |= METEOR_WANT_ODD;		if(type == METEOR_SINGLE)			*cap = 0x0ff8 | mtr->range_enable;		else			*cap = 0x0ff2 | mtr->range_enable;		break;	default:		mtr->flags |= METEOR_WANT_MASK;		if(type == METEOR_SINGLE)			*cap = 0x0ffc | mtr->range_enable;		else			*cap = 0x0ff3 | mtr->range_enable;		break;	}}intmeteor_read(dev_t dev, struct uio *uio, int ioflag){	meteor_reg_t *mtr;	int	unit; 	int	status;	int	count;	unit = UNIT(minor(dev));	if (unit >= NMETEOR)	/* unit out of range */		return(ENXIO);	mtr = &(meteor[unit]);	if (mtr->bigbuf == 0)/* no frame buffer allocated (ioctl failed) */		return(ENOMEM);	if (mtr->flags & METEOR_CAP_MASK)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看一区不卡| 亚洲欧美视频在线观看视频| 另类小说综合欧美亚洲| 欧美一二三在线| 国产精品1区2区| 尤物视频一区二区| 91啪亚洲精品| 亚洲码国产岛国毛片在线| 欧美一区二区黄色| 制服丝袜成人动漫| 在线播放国产精品二区一二区四区| 国产高清无密码一区二区三区| 久久精品久久99精品久久| 国产精品久久久久7777按摩| 色婷婷香蕉在线一区二区| 国产精品伊人色| 免费在线观看精品| 亚洲一卡二卡三卡四卡 | 波多野结衣中文字幕一区二区三区 | 国产精品一区二区黑丝| 一区二区三区小说| 久久一二三国产| 日本韩国欧美三级| 成人av手机在线观看| 国产一区二区三区高清播放| 日本麻豆一区二区三区视频| 亚洲精品视频在线观看网站| 国产精品久久综合| 国产人成亚洲第一网站在线播放| 911精品产国品一二三产区| 成人激情小说乱人伦| 国产乱子伦一区二区三区国色天香| 亚洲精选视频免费看| 综合亚洲深深色噜噜狠狠网站| 久久青草欧美一区二区三区| 亚洲精品在线电影| 精品免费99久久| 亚洲一区在线观看视频| 成人国产在线观看| 日韩美女视频在线| 日本欧美久久久久免费播放网| 视频一区在线视频| 成人高清免费观看| 5月丁香婷婷综合| 一区二区久久久| 成人av网站免费观看| 日韩美一区二区三区| 综合在线观看色| 国产在线不卡一卡二卡三卡四卡| 成人性视频免费网站| 亚洲精品一区二区三区福利| 中文幕一区二区三区久久蜜桃| 99re这里只有精品视频首页| 欧美在线你懂的| 精品国产乱码久久久久久免费 | 欧美电视剧在线观看完整版| 亚洲成人av中文| 91麻豆精品国产91久久久久久| 一个色综合网站| 蜜桃视频一区二区三区在线观看| 日韩一级完整毛片| 久久久久久久久久久久久女国产乱| 国产日韩高清在线| 日本aⅴ精品一区二区三区| 国产91精品免费| 色综合天天综合给合国产| 91精品国产欧美一区二区成人| 久久色中文字幕| 亚洲sss视频在线视频| 国产一区二区精品久久| 99精品欧美一区| 日韩色视频在线观看| 亚洲男女毛片无遮挡| 韩国女主播成人在线| 欧亚洲嫩模精品一区三区| 337p粉嫩大胆色噜噜噜噜亚洲 | 色老头久久综合| 日韩欧美高清在线| 亚洲大片精品永久免费| 国产福利电影一区二区三区| 日韩丝袜情趣美女图片| 国产原创一区二区| eeuss鲁一区二区三区| 中文字幕精品三区| 久久婷婷综合激情| 欧美亚洲精品一区| 成人精品国产免费网站| 国产成人亚洲综合a∨猫咪| 成人免费一区二区三区视频| zzijzzij亚洲日本少妇熟睡| 亚洲免费观看高清完整版在线观看| 色狠狠色狠狠综合| 日本一区二区在线不卡| 精品乱码亚洲一区二区不卡| 国产精品伦一区二区三级视频| 日韩精品一二三四| 91麻豆精品在线观看| 国产日产欧产精品推荐色| 91精品国产综合久久婷婷香蕉 | 久久嫩草精品久久久精品一| 亚洲不卡av一区二区三区| 久久精品夜色噜噜亚洲aⅴ| av电影在线观看完整版一区二区| 开心九九激情九九欧美日韩精美视频电影 | 精品欧美黑人一区二区三区| 亚洲永久精品国产| 色伊人久久综合中文字幕| 精品国产区一区| 国产高清在线精品| 久久噜噜亚洲综合| 国产精品亚洲а∨天堂免在线| 国产精品久久久久久久久免费桃花 | 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品色婷婷| 国产精一区二区三区| 国产日产欧美一区| 在线看国产日韩| 日本aⅴ亚洲精品中文乱码| 欧美电视剧免费全集观看| 久久99精品久久久| 亚洲国产精华液网站w| 在线观看亚洲a| 亚洲一区二区精品视频| 欧美日韩一区精品| 久久99国内精品| 91精品欧美福利在线观看| 欧美日韩国产不卡| 色综合中文字幕| 色综合天天综合狠狠| 欧美亚洲一区二区在线| 91精品国产综合久久福利软件 | 日韩你懂的电影在线观看| 一区二区三区在线视频播放 | 成人的网站免费观看| 欧美中文一区二区三区| 国产欧美一区视频| 久久中文娱乐网| 2022国产精品视频| 精品免费一区二区三区| 国产欧美日韩亚州综合| 久久亚洲二区三区| 日本一区二区三区视频视频| 中文av字幕一区| 一区二区三区四区蜜桃| 一区二区在线观看免费视频播放| 91精品国产免费| 精品国内二区三区| 日韩免费看的电影| 欧美videos大乳护士334| 91精品国产一区二区| 97se亚洲国产综合自在线| av欧美精品.com| 91在线视频播放| 成人免费看的视频| 精品中文字幕一区二区小辣椒| 丝袜国产日韩另类美女| 亚洲一区二区欧美日韩| 亚洲国产中文字幕| 日日摸夜夜添夜夜添国产精品| 日本欧美一区二区| 天堂久久一区二区三区| 一区二区三区在线观看国产 | 国产午夜精品久久| 国产午夜亚洲精品羞羞网站| 中文字幕一区二区三中文字幕| 国产精品白丝在线| 中文天堂在线一区| 亚洲人精品午夜| 日本视频一区二区| 国产91在线观看| 欧美主播一区二区三区| 91久久精品一区二区三区| 欧美精品丝袜中出| 国产欧美一区二区三区沐欲| 午夜婷婷国产麻豆精品| 精品粉嫩超白一线天av| 午夜精品久久久久久久久久久| 欧美一区二区三区电影| 国产99一区视频免费| 亚洲国产视频一区二区| 日本一区二区在线不卡| 亚洲精品乱码久久久久| 丝袜美腿一区二区三区| 视频一区欧美日韩| 成人激情图片网| 国产欧美一区二区在线| 另类小说一区二区三区| 日韩在线a电影| 蜜桃免费网站一区二区三区| 日本不卡一区二区| 亚洲丶国产丶欧美一区二区三区| 日本大胆欧美人术艺术动态| 99在线视频精品| 国产精品国产自产拍高清av| 男人的天堂久久精品| caoporn国产精品| 久久精品视频免费观看| 久草中文综合在线| 国产清纯白嫩初高生在线观看91| 欧美一区二区三区视频在线观看|