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

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

?? davincifb.c

?? 這是我自已改的適合RGB888的視頻驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
					(dmparams.format == 0) ? "" :		(dmparams.format == COMPOSITE) ? " in COMPOSITE format":		(dmparams.format == SVIDEO) ? " in SVIDEO format":		(dmparams.format == COMPONENT) ? " in COMPONENT format":		(dmparams.format == RGB) ? " in RGB format" : "",				(dmparams.windows & (1 << VID0)) ? "Video0" : "",		(dmparams.windows & (1 << VID1)) ? "Video1" : "",		(dmparams.windows & (1 << OSD0)) ? "OSD0" : "",		(dmparams.windows & (1 << OSD1)) ? "OSD1" : "");		if (dmparams.output == NTSC)		{			format_yres = 480;		}		else if (dmparams.output == PAL)		{			format_yres = 576;		}		else		{			printk(KERN_INFO "DM64XX:invalid format..defaulting width to 480\n");		}		dmparams.osd0_yres = osd0_default_var.yres = format_yres;
		dmparams.osd1_yres = osd1_default_var.yres = format_yres;		dmparams.vid0_yres = vid0_default_var.yres = format_yres;		dmparams.vid1_yres = vid1_default_var.yres = format_yres;		osd0_default_var.yres_virtual = format_yres * DOUBLE_BUF;		osd1_default_var.yres_virtual = format_yres * DOUBLE_BUF;		vid0_default_var.yres_virtual = format_yres * TRIPLE_BUF;		vid1_default_var.yres_virtual = format_yres * TRIPLE_BUF;			if (dmparams.windows & (1 << VID0))		printk(KERN_INFO "Setting Video0 size %dx%d, "				 "position (%d,%d)\n",				 dmparams.vid0_xres, dmparams.vid0_yres,				 dmparams.vid0_xpos, dmparams.vid0_ypos);	if (dmparams.windows & (1 << VID1))		printk(KERN_INFO "Setting Video1 size %dx%d, "				 "position (%d,%d)\n",				 dmparams.vid1_xres, dmparams.vid1_yres,				 dmparams.vid1_xpos, dmparams.vid1_ypos);	if (dmparams.windows & (1 << OSD0))		printk(KERN_INFO "Setting OSD0 size %dx%d, "				 "position (%d,%d)\n",				 dmparams.osd0_xres, dmparams.osd0_yres,				 dmparams.osd0_xpos, dmparams.osd0_ypos);
	if (dmparams.windows & (1 << OSD1))
		printk(KERN_INFO "Setting OSD1 size %dx%d, "
				 "position (%d,%d)\n",
				 dmparams.osd1_xres, dmparams.osd1_yres,
				 dmparams.osd1_xpos, dmparams.osd1_ypos);	RETURN(0);}__setup("video",dm64xxfb_setup);#endifstatic int mem_release(struct dm_win_info *w) //釋放指定窗口的ram空間{	DBGENTER;	if (!w->alloc_fb_mem) {		iounmap((void*)w->fb_base);		release_mem_region(w->fb_base_phys, w->fb_size);	}	else 		dma_free_coherent(NULL, w->fb_size, (void *)w->fb_base,				  w->fb_base_phys);	kfree(w);	RETURN(0);}static int mem_alloc(struct dm_win_info **win, dma_addr_t fb_base_phys,    		     unsigned long fb_size, char *fbname) {	struct dm_win_info *w;		DBGENTER;	w = kmalloc(sizeof(struct dm_win_info), GFP_KERNEL);//申請空間	if (!w) {		printk(KERN_ERR "%s: could not allocate memory\n", fbname);		RETURN(-ENOMEM);	}	memset(w, 0, sizeof(struct dm_win_info));	//初始化內存,初始化為0	w->fb_base_phys = fb_base_phys;		//初始化為給定的起始地址和大小	w->fb_size = fb_size;	/* A null base address indicates that the framebuffer memory should be	 * dynamically allocated.	 */	if (!w->fb_base_phys)	//若給了一個值為0(NULL)的地址,則FB memory要動態的分配		w->alloc_fb_mem = 1;	if (!w->alloc_fb_mem) {		if (!request_mem_region(w->fb_base_phys, w->fb_size, fbname))  // 請求內存		{			printk(KERN_ERR 				"%s: cannot reserve FB region\n", fbname);			goto free_par;		}		w->fb_base =			(unsigned long) ioremap(w->fb_base_phys, w->fb_size);   //空間映射		if (!w->fb_base) {			printk(KERN_ERR "%s: cannot map framebuffer\n", fbname);			goto release_fb;		}	}	else {		/* allocate coherent memory for the framebuffer */		w->fb_base = (unsigned long) dma_alloc_coherent(NULL, 
			w->fb_size, &w->fb_base_phys, GFP_KERNEL | GFP_DMA);
		if (!w->fb_base) {
			printk(KERN_ERR "%s: cannot allocate "
				"framebuffer\n", fbname);
			goto free_par;
		}
//		printk("Framebuffer allocated at 0x%lx, mapped to 0x%p, size %dk\n",
//	       w->fb_base_phys, w->fb_base, w->fb_size/1024);
	}		*win = w;	RETURN(0);release_fb:	if (!w->alloc_fb_mem)		release_mem_region(w->fb_base_phys, w->fb_size);free_par:	kfree(w);	RETURN(-ENOMEM);}static struct fb_info *init_fb_info(struct dm_win_info *w, 				    struct fb_var_screeninfo *var, char *id) //指針函數,初始化fb_info{	struct fb_info *info = &(w->info);	struct dm_info *dm = w->dm;	DBGENTER;//	printk("Entered the Davinci FB Init Routine\n");		/* initialize the fb_info structure */	info->flags = FBINFO_DEFAULT;	info->fbops = &dm64xxfb_ops;	info->screen_base = (char *)(w->fb_base);/* 	info->currcon = -1; */	info->pseudo_palette = w->pseudo_palette;	info->par = w;	/* Initialize variable screeninfo.	 * The variable screeninfo can be directly specified by the user	 * via an ioctl.	 */	memcpy(&info->var, var, sizeof(info->var));	info->var.activate = FB_ACTIVATE_NOW;	/* Initialize fixed screeninfo.	 * The fixed screeninfo cannot be directly specified by the user, but	 * it may change to reflect changes to the var info.	 */	strlcpy(info->fix.id, id, sizeof(info->fix.id));	info->fix.smem_start = w->fb_base_phys;	info->fix.line_length =			(info->var.xres_virtual*info->var.bits_per_pixel)/8;	info->fix.smem_len = w->fb_size;	info->fix.type = FB_TYPE_PACKED_PIXELS;	info->fix.visual = (info->var.bits_per_pixel <= 8) ?				FB_VISUAL_PSEUDOCOLOR: FB_VISUAL_TRUECOLOR;	info->fix.xpanstep = 0;	info->fix.ypanstep = 0;	info->fix.ywrapstep = 0;	info->fix.type_aux = 0;	info->fix.mmio_start = dm->mmio_base_phys;	info->fix.mmio_len = dm->mmio_size;	info->fix.accel = FB_ACCEL_NONE;				if(dmparams.output==LCDS)		{			info->fix.type_aux=1;							printk(" ====into LCD and set no interlaced\n");		}	DBGEXIT;	return info;}static void dm64xxfb_ntsc_composite_config(int on){	DBGENTER;	if (on) {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);				//寄存器的設置方法,可以照著寫其他的		/* Enable Composite output and start video encoder */		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));			/* Set REC656 Mode */		dispc_reg_out(VENC_YCCCTL, 0x1);		/* Enable output mode and NTSC  */		dispc_reg_out(VENC_VMOD, 0x1003);		/* Enable all DACs  */		dispc_reg_out(VENC_DACTST, 0);	} 	else {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);	}	DBGEXIT;}static void dm64xxfb_ntsc_svideo_config(int on){	DBGENTER;	if (on) {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);		/* Enable Composite output and start video encoder */		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));		/* Set REC656 Mode */		dispc_reg_out(VENC_YCCCTL, 0x1);		/* Enable output mode and NTSC  */		dispc_reg_out(VENC_VMOD, 0x1003);		/* Enable S-Video Output; DAC B: S-Video Y, DAC C: S-Video C  */		dispc_reg_out(VENC_DACSEL, 0x210);		/* Enable all DACs  */		dispc_reg_out(VENC_DACTST, 0);	}	else {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);	}	DBGEXIT;}static void dm64xxfb_ntsc_component_config(int on){	DBGENTER;	if (on) {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);		/* Enable Composite output and start video encoder */		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));		/* Set REC656 Mode */		dispc_reg_out(VENC_YCCCTL, 0x1);		/* Enable output mode and NTSC  */		dispc_reg_out(VENC_VMOD, 0x1003);				/* Enable Component output; DAC A: Y, DAC B: Pb, DAC C: Pr  */		dispc_reg_out(VENC_DACSEL, 0x543);		/* Enable all DACs  */		dispc_reg_out(VENC_DACTST, 0);	}	else {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);	}	DBGEXIT;}static void dm64xxfb_pal_composite_config(int on){	DBGENTER;	if (on) {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);		/* Enable Composite output and start video encoder */		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));		/* Set REC656 Mode */		dispc_reg_out(VENC_YCCCTL, 0x1);		/* Enable output mode and PAL  */		dispc_reg_out(VENC_VMOD, 0x1043);		/* Enable all DACs  */		dispc_reg_out(VENC_DACTST, 0);	}	else {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);	}	DBGEXIT;}static void dm64xxfb_pal_svideo_config(int on){	DBGENTER;	if (on) {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);		/* Enable Composite output and start video encoder */		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));		/* Set REC656 Mode */		dispc_reg_out(VENC_YCCCTL, 0x1);		/* Enable output mode and PAL  */		dispc_reg_out(VENC_VMOD, 0x1043);    /* Enable S-Video Output; DAC B: S-Video Y, DAC C: S-Video C  */		dispc_reg_out(VENC_DACSEL, 0x210);		/* Enable all DACs  */		dispc_reg_out(VENC_DACTST, 0);	}	else {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);	}	DBGEXIT;}static void dm64xxfb_pal_component_config(int on){	DBGENTER;	if (on) {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);		/* Enable Composite output and start video encoder */		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));		/* Set REC656 Mode */		dispc_reg_out(VENC_YCCCTL, 0x1);		/* Enable output mode and PAL  */		dispc_reg_out(VENC_VMOD, 0x1043);		/* Enable Component output; DAC A: Y, DAC B: Pb, DAC C: Pr  */		dispc_reg_out(VENC_DACSEL, 0x543);		/* Enable all DACs  */		dispc_reg_out(VENC_DACTST, 0);	}	else {		/* Reset video encoder module */		dispc_reg_out(VENC_VMOD, 0);	}	DBGEXIT;}

static void dm64xxfb_lcd_config(int on)       //配置Lcd輸出模式為RGB888
{
	if(on)
	{				/////////////////////////////// Reset video encoder module 		dispc_reg_out(VENC_VMOD, 0);				//寄存器的設置方法,可以照著寫其他的		// Enable Composite output and start video encoder 		dispc_reg_out(VENC_VMOD, (VENC_VMOD_VIE | VENC_VMOD_VENC));			// Set REC656 Mode 		dispc_reg_out(VENC_YCCCTL, 0x0);		// Enable output mode and NTSC  		//dispc_reg_out(VENC_VMOD, 0x1003);		// Enable all DACs  		dispc_reg_out(VENC_DACTST, 0xf000);//set  0 to display on small screen,f000, disenablr DAC///////////////////////////////////////		/*使能VPBE的時鐘,PCR.CLK_OFF=0 */
		dispc_reg_out(VPBE_PCR, 0);

		/*設置RGB輸出時的數字濾波器頻率、以及階數*/
		dispc_reg_out(VENC_RGBCTL,0x8400);

		/*設置RGBCLP寄存器 */
		dispc_reg_out(VENC_RGBCLP,0xff00);

		//讀入一個YCC=>RGB轉化的矩陣系數,值應該是1404(十進制)
		printk("===================\nDRGBX1=    %d\n",(inl(VENC_ARGBX1)&0xffff));

		/*reset VENC*/
		dispc_reg_out(VENC_VMOD, 0);
		
		/* RGB888的引腳復用*//*
		PINMUX0|=(1<<23); //在PINMUX0中設置RGB888
		PINMUX0&=~(1<<25);
		PINMUX0&=~(1<<27);
		PINMUX0|=(1<<24);   //選通LCD_OE
		
		PINMUX1&=~(1<<5); //設置PINMUX1中的PWM1 為RGB888的輸出
		PINMUX1&=~(1<<6); //設置PINMUX1中的PWM2 為RGB888的輸出*/		dispc_reg_merge(PINMUX0,0xffffffff,1<<23);		dispc_reg_merge(PINMUX0,0x0,1<<25);		dispc_reg_merge(PINMUX0,0,1<<27);		dispc_reg_merge(PINMUX0,0xffffffff,1<<24);		dispc_reg_merge(PINMUX1,0,1<<5);		dispc_reg_merge(PINMUX1,0,1<<6);		
	
		/*使能VENC的時鐘,關閉DAC的時鐘,VENC的時鐘是27M */
	//	dispc_reg_out(VPSS_CLKCTL, 0x08);

		/*使能VENC */
		dispc_reg_out(VENC_VMOD, 0x1);		dispc_reg_out(VENC_HSTART,0x25);
		dispc_reg_out(VENC_HVALID,DISP_XRES);		dispc_reg_out(VENC_VVALID,DISP_YRES);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲与欧洲av电影| 成人av集中营| 亚欧色一区w666天堂| 亚洲欧美国产三级| 欧美国产一区视频在线观看| 久久精品视频一区二区三区| 欧美精品一区二区三区视频| 欧美日韩高清在线播放| 在线亚洲免费视频| 91看片淫黄大片一级在线观看| 国产不卡一区视频| 国产成人亚洲综合a∨猫咪| 国产高清视频一区| www.综合网.com| 99re成人在线| 欧美丝袜丝交足nylons图片| 欧美日韩一级黄| 日韩精品资源二区在线| 久久久久国产精品麻豆ai换脸 | 国产成人精品1024| 成人午夜av影视| 在线亚洲一区观看| 在线观看视频一区| 欧美男同性恋视频网站| 日韩欧美在线综合网| 精品国产乱码久久久久久久| xvideos.蜜桃一区二区| 精品国产乱码久久久久久图片 | 一区二区三区免费观看| 日韩主播视频在线| 激情图片小说一区| 岛国av在线一区| 一本大道久久a久久综合婷婷 | 亚洲在线观看免费| 蜜桃视频在线观看一区| 激情图区综合网| 成人免费毛片高清视频| 欧美三级韩国三级日本三斤| 日韩视频永久免费| 中文字幕亚洲视频| 亚洲国产成人tv| 国内偷窥港台综合视频在线播放| 激情欧美日韩一区二区| 9l国产精品久久久久麻豆| 欧美日韩一区国产| 国产欧美日韩三级| 午夜视黄欧洲亚洲| 成人午夜激情影院| 欧美日韩成人综合在线一区二区| 国产午夜精品一区二区三区视频| 洋洋成人永久网站入口| 国产乱人伦偷精品视频免下载 | 欧美丰满少妇xxxbbb| 国产农村妇女精品| 日韩精品一二三区| 成人不卡免费av| 日韩一区二区免费在线观看| 最新日韩av在线| 国产米奇在线777精品观看| 99久久国产综合精品色伊 | 亚洲高清不卡在线观看| 精品在线观看免费| 欧美日韩另类国产亚洲欧美一级| 国产日韩欧美一区二区三区乱码| 日韩电影在线一区二区三区| 波多野结衣视频一区| ww亚洲ww在线观看国产| 图片区日韩欧美亚洲| 91香蕉视频在线| 国产亚洲精品精华液| 日韩av成人高清| 在线视频国内一区二区| 国产调教视频一区| 久久成人精品无人区| 欧美在线观看18| 欧美精品一区视频| 舔着乳尖日韩一区| 黄色资源网久久资源365| 7777精品伊人久久久大香线蕉| 一区二区三区在线视频观看| av亚洲精华国产精华精华| 亚洲精品一区二区三区福利| 日本成人中文字幕在线视频 | 一区二区在线观看视频 | 欧美三级三级三级爽爽爽| 国产精品久久三| 高清成人在线观看| 2022国产精品视频| 久久国产尿小便嘘嘘| 欧美久久久久久久久久| 亚洲图片欧美一区| 色88888久久久久久影院按摩| 国产精品久久久久久久浪潮网站| 国内久久精品视频| 日韩久久精品一区| 精品一区二区三区在线观看国产 | 91麻豆精品91久久久久久清纯| 一区二区视频免费在线观看| 色综合网站在线| 亚洲免费在线视频一区 二区| 99久久精品国产网站| 最近日韩中文字幕| 91在线精品一区二区| 亚洲日本va在线观看| 色综合天天综合狠狠| 亚洲欧美日韩人成在线播放| bt欧美亚洲午夜电影天堂| 最新国产精品久久精品| 色综合久久88色综合天天6| 亚洲三级免费电影| 日本一区二区三区四区| 国产二区国产一区在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 精品日韩一区二区三区免费视频| 日产欧产美韩系列久久99| 欧美在线视频你懂得| 亚洲国产中文字幕在线视频综合| 色八戒一区二区三区| 有坂深雪av一区二区精品| 在线观看日韩国产| 午夜成人免费电影| 日韩免费在线观看| 国产九色精品成人porny| 日本一区二区三区免费乱视频| 国产精品1024久久| 最新成人av在线| 欧美日韩精品一区二区三区蜜桃| 日本欧美一区二区三区乱码| 精品999在线播放| 成人一区二区三区视频在线观看| 国产精品久久久久久户外露出 | 最新中文字幕一区二区三区 | 亚洲国产经典视频| 色诱亚洲精品久久久久久| 国产亚洲美州欧州综合国| 精品少妇一区二区三区在线播放 | 亚洲精品成人悠悠色影视| 亚洲另类在线制服丝袜| 一区二区三区国产精华| 午夜视频在线观看一区| 国产成人免费视频网站| 国产自产视频一区二区三区| 色就色 综合激情| 色噜噜狠狠色综合欧洲selulu| 亚洲欧洲日韩av| 99亚偷拍自图区亚洲| 日韩精品视频网站| 国产亚洲精品超碰| 欧美综合久久久| 国产美女av一区二区三区| 亚洲色图一区二区| 日韩精品一区二区三区视频| 大尺度一区二区| 五月婷婷激情综合| 国产嫩草影院久久久久| 欧美三片在线视频观看| 国产乱码精品1区2区3区| 亚洲一区二区三区四区的| 欧美综合亚洲图片综合区| 午夜伊人狠狠久久| 国产午夜亚洲精品理论片色戒| 欧美最新大片在线看| 成人午夜电影久久影院| 日本亚洲三级在线| 中文字幕在线观看一区二区| 日韩一区二区在线看片| 91一区二区在线| 国产福利一区在线| 日本成人超碰在线观看| 亚洲色图在线视频| 久久在线观看免费| 在线不卡的av| 一本到不卡精品视频在线观看| 国产一区二区三区观看| 日韩黄色免费网站| 亚洲男帅同性gay1069| 久久久91精品国产一区二区三区| 欧美日韩美少妇| 91麻豆免费在线观看| 国产成人鲁色资源国产91色综| 日本中文字幕一区| 一区二区三区日韩| 日韩美女视频一区二区| 久久精品无码一区二区三区 | 亚洲色欲色欲www在线观看| 久久青草欧美一区二区三区| 欧美日韩成人一区| 色88888久久久久久影院野外| 777a∨成人精品桃花网| 激情欧美日韩一区二区| 国产欧美精品一区二区色综合朱莉| 免费久久99精品国产| 欧美三级日韩三级国产三级| 欧美色精品在线视频| 国产成人在线视频网址| 久久精品av麻豆的观看方式| 亚洲国产视频在线| 亚洲国产aⅴ天堂久久| 亚洲欧美电影一区二区| 国产精品不卡一区|