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

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

?? vp.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
字號:
/* Copyright 1996, ESS Technology, Inc.					*//* SCCSID @(#)vp.c	1.89 5/5/98 *//* * $Log$ */#include "common.h"#include "mvd.h"#include "util.h"#include "vp.h"#include "const.h"#include "debug.h"#include "display.h"#include "vpucode.h"#include "low.h"#include "constvar.h"#include "vscale.h"/***************************************************************************** * compile option *****************************************************************************/#define PRINTF(a)#ifndef UCODE_IN_DRAM#define UCODE_CACHE#endif/***************************************************************************** * Some local defines *****************************************************************************/#define VPRESETOFF 	1#define VPLOADMODEON 	2#define VPDMBASEMD 	0x200#define VPZIGZAG	0x104#define VPPACKMD        0x102#ifdef UCODE_IN_DRAMstatic int	next_start;#endifvoid load_vp(RAMCODE name, int direct);void register_ucode(RAMCODE name, int *ucode, int size, int offset);static void register_all_ucode(void);/***************************************************************************** Private data *****************************************************************************/RAMCODE	RamCode = rnone;      /* convey what is paged inside VP now */int	ucode_start[rdummy];  /* addr of ucode in DRAM/SRAM */int	ucode_size[rdummy];   /* ucode size in dwords */int	ucode_offset[rdummy]; /* ucode offset from 0x800 in dwords */#ifdef UCODE_CACHERAMCODE	ucode_in_dram0;		/* What's in ucode cache 0 */RAMCODE	ucode_in_dram1;		/* What's in ucode cache 1 */int	mru_ucode;		/* Which page is most recently used */#endifDEBUGVAR(vp_load_error, 0);DEBUGVAR(loading_ucode, rnone);/***************************************************************************** Register ucode. *****************************************************************************/void register_ucode(RAMCODE name, int *ucode, int size, int offset){#ifdef UCODE_IN_DRAM    ucode_start[name] = next_start;    sram_to_dram(next_start, ucode, size);    PRINTF(("name %d next %d ucode %d size %d\n",name,next_start,ucode,size));    next_start += size;    assert(next_start < END_UCODE);#else    ucode_start[name] = (int)ucode;#endif    ucode_size[name] = size;    ucode_offset[name] = offset;}/***************************************************************************** Load ucode to VP. We either load direct from sram/eprom and go through the cmd bus, or we load from dram and use DMA. *****************************************************************************/void load_vp(RAMCODE name, int direct){    int code;    int n = ucode_size[name];    int addr = ucode_offset[name];#ifdef UCODE_CACHE    if (!direct) {    	if (ucode_in_dram0 == name) {	    code = START_UCODE0;	    mru_ucode = 0;	/* page 0 is now the most recently used */#ifdef BF43    	} else if (ucode_in_dram1 == name) {#else    	} else if ((!mineomine) && (ucode_in_dram1 == name)) {#endif	    code = START_UCODE1;	    mru_ucode = 1;	/* page 1 is now the most recently used */    	} else {	    /* Cache miss. Load to the least recently used page. */	    if (name==rksearch) {    		code = ucode_start[name];		direct = 1;		goto hack;	    }#ifdef BF43	    if (mru_ucode) {#else	    if (mru_ucode || mineomine) {#endif	    	code = START_UCODE0;	    	ucode_in_dram0 = rnone;	    } else {	    	code = START_UCODE1;	    	ucode_in_dram1 = rnone;	    }	    RISC_to_dram(code, (int *)ucode_start[name], ucode_size[name]);#ifdef BF43	    if (mru_ucode) {#else	    if (mru_ucode || mineomine) {#endif	    	ucode_in_dram0 = name;	    	mru_ucode = 0;	    } else {	    	ucode_in_dram1 = name;	    	mru_ucode = 1;	    }    	}    } else#endif    code = ucode_start[name];hack:    PRINTF(("Loading ucode %d at %d to 0x%x, %d dwords.\n",	loading_ucode,code,addr,n));    VP_block_twice(NCMDQ_VP_block_twice, UCODE_IDLE);    VP_cmdq_wait_empty;    mvd[buscon_vp_control] = VPLOADMODEON | VPRESETOFF;    asm("nop"); asm("nop"); asm("nop"); asm("nop");    mvd[buscon_cmdque_vpcbuswr] = 0x0100;  /*  loaducode write mode */    mvd[buscon_cmdque_vpcbuswr] = addr;#if defined(UCODE_IN_DRAM) || defined(UCODE_CACHE)    if (!direct) {    	VP_cmdq_deltas(n, 1);    	VP_cmdq_dmax(VPDMA_MEM2VP | a2x(code));    	VP_cmdq_dmay(a2y(code));    }#ifdef UCODE_CACHE    else {	int i;	int *p = (int *)code;	for (i=0; i<n; i++) {    	    VP_cmdq_wait_empty;	    mvd[buscon_cmdque_vpdbuswrhi]  = ((*p)>>16) & 0xffff;	    mvd[buscon_cmdque_vpdbuswrlow] = (*p++) & 0xffff;	}	VP_endio(0);    }#endif#else	/* No UCODE_IN_DRAM nor UCODE_CACHE */    if (direct) {	int i;	int *p = (int *)code;	for (i=0; i<n; i++) {    	    VP_cmdq_wait_empty;	    mvd[buscon_cmdque_vpdbuswrhi]  = ((*p)>>16) & 0xffff;	    mvd[buscon_cmdque_vpdbuswrlow] = (*p++) & 0xffff;	}	VP_endio(0);    }#endif    VP_block_twice(NCMDQ_VP_block_twice, UCODE_IDLE);    VP_cmdq_wait_empty;    mvd[buscon_vp_control] = VPRESETOFF;    asm("nop"); asm("nop"); asm("nop"); asm("nop");    /* keep these modes because the reset in loadvp will clear all these modes,    causing video rla data to be transferred without zigzag translation */    mvd[buscon_cmdque_vpcbuswr] = (VPZIGZAG | VPPACKMD);    mvd[buscon_cmdque_vpcbuswr] = VPDMBASEMD; /* no dm bank/word displacement */}/***************************************************************************** Register all ucode. *****************************************************************************/static void register_all_ucode(){#ifdef UCODE_IN_DRAM    next_start = START_UCODE;#endif#ifdef AC3    register_ucode(rac3both, ac3both_ucode, ac3both_SIZE, ac3both_OFFSET);    register_ucode(rac3shot, ac3shot_ucode, ac3shot_SIZE, ac3shot_OFFSET);    register_ucode(rac3long, ac3long_ucode, ac3long_SIZE, ac3long_OFFSET);    register_ucode(rfft64,   fft64_ucode,   fft64_SIZE,   fft64_OFFSET);#endif#ifdef MPEG2    register_ucode(rvideo, vid_ucode, VID_UCODE_SIZE, VID_UCODE_OFFSET);#endif#ifdef MPEG1#ifdef SVCD     register_ucode(rvideo, vid_ucode, VID_UCODE_SIZE, VID_UCODE_OFFSET);#endif    register_ucode(rnonpage,  T_nonpage_ucode,  nonpage1_SIZE,nonpage1_OFFSET);    register_ucode(rtwo2one,  T_two2one_ucode,  two2one_SIZE, two2one_OFFSET);    register_ucode(rntsc2pal, T_ntsc2pal_ucode, ntsc2pal_SIZE,ntsc2pal_OFFSET);    register_ucode(rpal2ntsc, T_pal2ntsc_ucode, pal2ntsc_SIZE,pal2ntsc_OFFSET);    register_ucode(rksearch,  T_ksearch_ucode,  ksearch_SIZE, ksearch_OFFSET);    register_ucode(rcdda,     T_cdda_ucode,     cdda_SIZE,    cdda_OFFSET);#ifdef SPATIAL    register_ucode(rspatial,  T_spatial_ucode,  spatial_SIZE, spatial_OFFSET);#endif#ifdef BF43    register_ucode(rhscale,   T_hscale_ucode,   hscale_SIZE,  hscale_OFFSET);#endif#endif /* end of #ifdef MPEG1 */}/***************************************************************************** Initialise the VP. *****************************************************************************/void VP_init(){    VP_reset();    register_all_ucode();#ifdef AC3    VP_load_ucode(rac3both);#endif#ifdef MPEG1    VP_load_ucode(rnonpage);#endif#ifdef UCODE_CACHE    ucode_in_dram0 = ucode_in_dram1 = rnone;    mru_ucode = 1;#endif    VP_ucode(0, clr_pcstack);    VP_ucode_wait();}/***************************************************************************** Make a wild guess. *****************************************************************************//* * Detect 3210 version by reading location 0x390 of VP microcode ROM. * * Different 3210 versions have different VP ucode address, so it is * extremely important to make sure the version number matches the chip. * Therefore, we'll do equality checking for all versions (no default), * and we'll loop until the version number matches. * * Side effect: *	Sets rev3210 (3210 revision) and VP_ucode_offset. * */void VP_version(){    int i, rddata;    volatile unsigned int *ptrdelay = (unsigned int *) x1c060000;#if 0    /*     * When life is easier, there is only 1 VP ROM, the following code     * is sufficient.     */    rev3210 = 0;    VP_ucode_offset = T_VP_ucode_offset1;#else    /* Do automatic version detection */    do {	/* read VPROM at location 0x390  */	mvd[buscon_vp_control] = 0;	(void) *ptrdelay;	mvd[buscon_vp_control] = VPRESETOFF;	(void) *ptrdelay;	mvd[buscon_cmdque_vpcbuswr] = 0x0000;  /*  soft init */	(void) *ptrdelay;	mvd[buscon_cmdque_vpcbuswr] = 0x0101;  /*  house keeping- rd ucode */	/*	 * Needs lots of delay here. If there is not enough delay,	 * we may NEVER detect the chip version, and the loop will	 * last forever!	 */	for (i = 0; i < 1000; i++) 	  (void) *ptrdelay;	mvd[buscon_vp_control] = (VPLOADMODEON | VPRESETOFF);	(void) *ptrdelay;	mvd[buscon_cmdque_vpcbuswr] = 0x0390;  /*  ucode rom addr  */	(void) *ptrdelay;	mvd[buscon_cmdque_vprd] = 0x0000;     /* reads vp */	(void) *ptrdelay; (void) *ptrdelay;	rddata = mvd[buscon_cmdque_rdrlatchh];	(void) *ptrdelay;	rddata <<= 16;	rddata |= mvd[buscon_cmdque_rdrlatchl] & 0xffffL;	/* reading is done */		/* 	 * Determine 3210 versions. Depending on chip version, some VP	 * ucode offsets are different.	 *	 * To avoid making mistake, we'll retry until we see the value	 * we are expecting.	 */	if (rddata == 0x40678000) {	    rev3210 = 1;	    VP_ucode_offset = T_VP_ucode_offset2;#ifdef BF43	    {		extern DISP_Info disp_info[][4];		DISP_Info * dip = &disp_info[3][2]; /* B in PAL to PAL	*/		/* 		 * Revision S or later (i.e. 3880).		 * (Revision T has the same ID, but it is NOT for production)		 *		 * Change B-frame Y/UV compression for PAL to PAL 		 */		dip->zY = dip->zUV = 0x8000;	/* -1 to 0x8000		*/	    }#endif#ifdef BF43PLUS	    {		extern VSCALE_Info vscale_info[];		VSCALE_Info * vip = &vscale_info[3]; /* B in PAL to PAL	*/		vip->ratio = 0x10;		vip->ucode = rnone;	    }#endif	    break;	} else if (rddata == 0x484e8583) {	    rev3210 = 0;	    VP_ucode_offset = T_VP_ucode_offset1;	    break;	}    } while (1);#endif}void VP_reset(){     volatile unsigned int *ptrdelay = (unsigned int *) x1c060000;    mvd[buscon_vp_control] = 0;    (void) *ptrdelay;    mvd[buscon_vp_control] = VPRESETOFF;    (void) *ptrdelay;    mvd[buscon_cmdque_vpcbuswr] = (VPZIGZAG | VPPACKMD);    mvd[buscon_cmdque_vpcbuswr] = VPDMBASEMD; /* no dm bank/word displacement */    mvd[buscon_cmdque_vpcbuswr]= loading; /* loading */    VP_ucode(0, clr_pcstack);    VP_cmdq_wait_empty;    RamCode = rnone;    DEBUGASSIGN(loading_ucode, rnone);}/***************************************************************************** On the fly loading of VP ucode. Exported. *****************************************************************************/#if defined(UCODE_IN_DRAM) || defined(UCODE_CACHE)#define direct_from_eprom	0#else#define direct_from_eprom	1#endifvoid VP_load_ucode(RAMCODE name){    if (name == rnone) return;#ifdef MPEG1    if (name == rnonpage) {	load_vp(rnonpage, 1);	return;    }#endif    if (RamCode != name) {	RamCode = rnone;	DEBUGASSIGN(loading_ucode, name);	load_vp(name, direct_from_eprom);	RamCode = name;    }}/***************************************************************************** On the fly loading of VP ucode. Exported. *****************************************************************************/void VP_xfer_wait(void){    VP_block_twice(NCMDQ_VP_block_twice, UCODE_IDLE);    VP_cmdq_wait_empty;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一道久久a久久精品| 中文字幕二三区不卡| 色悠久久久久综合欧美99| 欧美午夜寂寞影院| 91麻豆精品国产自产在线| 久久久久久97三级| 综合久久给合久久狠狠狠97色 | 国产一区二区三区| 成人精品免费网站| 成人高清免费在线播放| 欧美影院一区二区三区| 日韩一级二级三级精品视频| 国产精品网站在线| 亚洲精品菠萝久久久久久久| 一区二区三区在线观看动漫| 久久99国产乱子伦精品免费| 成人蜜臀av电影| 在线观看91av| 日本一区二区三区四区在线视频 | 国产精品二三区| 亚洲一区二区偷拍精品| 蓝色福利精品导航| 在线欧美日韩精品| 欧美一区二区黄色| 26uuu久久天堂性欧美| 亚洲猫色日本管| 捆绑调教美女网站视频一区| 成人永久aaa| 欧美大片日本大片免费观看| 中文字幕字幕中文在线中不卡视频| 亚洲精品五月天| 成人一区二区三区中文字幕| 欧美日韩在线亚洲一区蜜芽| 国产精品网友自拍| 首页综合国产亚洲丝袜| 狠狠色丁香久久婷婷综合_中| 欧美中文字幕亚洲一区二区va在线 | 精品久久国产97色综合| 国产精品美女久久久久久久久 | 在线中文字幕一区二区| 欧美电影免费观看高清完整版在线观看 | 久久免费看少妇高潮| 一区二区高清在线| 国产精品一区二区在线观看网站 | 日韩欧美一二区| 日本一区二区不卡视频| 日本不卡123| 欧美在线观看禁18| 2017欧美狠狠色| 亚洲成精国产精品女| 国产精品99久久久| 91麻豆精品国产自产在线观看一区 | 亚洲在线观看免费视频| 激情图片小说一区| 欧美一级高清片| 亚洲一区二区影院| 在线观看一区日韩| 国产精品久久久一本精品| 亚洲午夜电影在线| 91麻豆国产香蕉久久精品| 久久无码av三级| 激情成人午夜视频| 91麻豆精品国产91久久久久久久久| 一区免费观看视频| 国产福利电影一区二区三区| 欧美一级日韩免费不卡| 日本系列欧美系列| 欧美日韩黄色一区二区| 亚洲欧美激情视频在线观看一区二区三区| 国产伦精品一区二区三区免费| 欧美一三区三区四区免费在线看| 亚洲成人你懂的| 亚洲欧美综合色| 国产成人综合亚洲91猫咪| 欧美精品一区二区精品网| 美女视频黄久久| 亚洲精品一区二区三区四区高清 | 欧美激情一区二区在线| 久久99精品久久久久久动态图 | 韩国精品免费视频| 久久综合久久综合久久| 国产.精品.日韩.另类.中文.在线.播放| 2014亚洲片线观看视频免费| 91蜜桃免费观看视频| 免费精品视频在线| 日韩一区二区三| 香港成人在线视频| 日韩欧美黄色影院| 成人免费毛片a| 久久成人免费日本黄色| 国产一区在线不卡| 337p亚洲精品色噜噜| 日韩美女视频一区二区在线观看| 一区二区三区不卡在线观看| 色综合一区二区三区| 亚洲人xxxx| 色婷婷综合久色| 亚洲国产成人va在线观看天堂| 欧美性做爰猛烈叫床潮| 亚洲一二三四在线观看| 日韩你懂的在线观看| 成人综合在线网站| 老司机精品视频在线| 亚洲少妇最新在线视频| 精品国产免费人成电影在线观看四季| 精品亚洲欧美一区| 一区二区成人在线观看| 国产色综合久久| 欧美日韩国产123区| 欧美日韩精品欧美日韩精品| 26uuu国产日韩综合| 国产一区在线观看麻豆| 91久久精品一区二区| 亚洲国产视频a| 精品久久久久久综合日本欧美| 精品在线一区二区| 久久久噜噜噜久噜久久综合| 成人av电影在线网| 一区二区三区四区不卡在线| 日韩精品一区二区三区老鸭窝| 国产精品一区一区三区| 日韩美女视频一区二区| 欧美日产在线观看| 精品一区二区综合| 一区二区三区四区高清精品免费观看 | 国产精品丝袜久久久久久app| 色婷婷狠狠综合| 青青草原综合久久大伊人精品| 中文无字幕一区二区三区| 色琪琪一区二区三区亚洲区| 日本不卡一区二区| 国产精品国产自产拍高清av| 在线精品视频一区二区三四| 国产福利不卡视频| 亚洲高清免费观看| 欧美成人一区二区三区 | 一区二区在线观看免费| 久久亚洲综合色| 欧美亚洲国产一区在线观看网站| 日韩激情在线观看| 亚洲人成精品久久久久| 日韩一区二区在线看| 91久久奴性调教| 激情五月婷婷综合| 亚洲一区在线看| 国产精品国产精品国产专区不蜜 | 久久精品噜噜噜成人av农村| 国产三级精品视频| 欧美三级三级三级| 成人激情免费网站| 美女看a上一区| 亚洲少妇30p| 久久综合色天天久久综合图片| 欧美亚洲国产一区二区三区va | 日韩欧美视频一区| 欧美丝袜丝nylons| 国产69精品久久777的优势| 久久精工是国产品牌吗| 亚洲国产aⅴ成人精品无吗| 国产欧美久久久精品影院| 精品播放一区二区| 欧美日产国产精品| 国产精品一区二区在线播放| 国产亚洲精品bt天堂精选| 欧美日韩一区二区在线视频| 99久精品国产| 国产一区二区三区久久久| 一区二区三区在线视频免费观看| 久久丝袜美腿综合| 欧美女孩性生活视频| 91亚洲男人天堂| 激情另类小说区图片区视频区| 亚洲一线二线三线久久久| 国产精品美女久久久久久久久久久 | 国产成人精品网址| 紧缚捆绑精品一区二区| 蜜臀av一区二区在线免费观看 | 欧美日韩国产色站一区二区三区| 在线观看www91| 99re热视频这里只精品 | 亚洲精品亚洲人成人网在线播放| 亚洲国产精品成人综合| 国产精品天美传媒| 国产亚洲成aⅴ人片在线观看 | 亚洲国产精品自拍| 亚洲一级二级三级在线免费观看| 国产精品第一页第二页第三页| 一区视频在线播放| 国产精品久久久久天堂| 日韩欧美一卡二卡| 久久久久久久电影| 亚洲精品一线二线三线| 国产午夜精品一区二区三区四区| 欧美r级在线观看| 欧美精品一区二区三区四区 | 国产午夜精品久久| 国产精品久久久久一区| 日韩久久一区二区| 夜夜爽夜夜爽精品视频| 亚洲二区在线观看|