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

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

?? video.c

?? PPC860常見外圍驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:
		if (VIDEO_FONT_WIDTH == 8) {
		    ((u32 *)dest)[2] = (video_font_draw_table[bits >> 2 & 3] & eorx) ^ bgx;
		    ((u32 *)dest)[3] = (video_font_draw_table[bits & 3] & eorx) ^ bgx;
		}
	    }
	    dest0 += VIDEO_FONT_WIDTH*2;
	    s++ ;
	}
	break;
    case 12:
    case 16:
	while (count--) {
	    cdat = video_fontdata + (*s) * (VIDEO_FONT_HEIGHT << 1);
	    for (rows = VIDEO_FONT_HEIGHT, dest = dest0; rows--; dest += VIDEO_LINE_LEN) {
		u8 bits = *cdat++;
		((u32 *)dest)[0] = (video_font_draw_table[bits >> 6] & eorx) ^ bgx;
		((u32 *)dest)[1] = (video_font_draw_table[bits >> 4 & 3] & eorx) ^ bgx;
		((u32 *)dest)[2] = (video_font_draw_table[bits >> 2 & 3] & eorx) ^ bgx;
		((u32 *)dest)[3] = (video_font_draw_table[bits & 3] & eorx) ^ bgx;
		bits = *cdat++;
		((u32 *)dest)[4] = (video_font_draw_table[bits >> 6] & eorx) ^ bgx;
		((u32 *)dest)[5] = (video_font_draw_table[bits >> 4 & 3] & eorx) ^ bgx;
		if (VIDEO_FONT_WIDTH == 16) {
		    ((u32 *)dest)[6] = (video_font_draw_table[bits >> 2 & 3] & eorx) ^ bgx;
		    ((u32 *)dest)[7] = (video_font_draw_table[bits & 3] & eorx) ^ bgx;
		}
	    }
	    s++ ;
	    dest0 += VIDEO_FONT_WIDTH*2;
	}
	break;
    }
}

static inline void video_drawstring(int xx, int yy, unsigned char *s)
{
    video_drawchars (xx, yy, s, strlen(s)) ;
}

// Relative to console plotting functions

static void video_putchars(int xx, int yy, unsigned char *s, int count)
{
#ifdef CONFIG_VIDEO_LOGO
    video_drawchars (xx, yy + VIDEO_LOGO_HEIGHT, s, count) ;
#else
    video_drawchars (xx, yy, s, count) ;
#endif
}

static void video_putchar(int xx, int yy, unsigned char c)
{
#ifdef CONFIG_VIDEO_LOGO
    video_drawchars (xx, yy + VIDEO_LOGO_HEIGHT, &c, 1) ;
#else
    video_drawchars (xx, yy, &c, 1) ;
#endif
}

static inline void video_putstring(int xx, int yy, unsigned char *s)
{
    video_putchars (xx, yy, s, strlen(s)) ;
}

// ***********************************************************************
// ** VIDEO CONTROLLER LOW-LEVEL FUNCTIONS
// ***********************************************************************

static void video_mode_dupefield(VRAM *source, VRAM *dest, int entries)
{
    int i ;
    
    for(i=0; i<entries; i++)
    {
	dest[i] = source[i] ;		// Copy the entire record
	dest[i].fx = (!dest[i].fx)*3 ;	// Negate field bit
    }
	
    dest[0].lcyc++ ;		// Add a cycle to the first entry
    dest[entries-1].lst = 1 ;	// Set end of ram entries
}

static void inline video_mode_addentry(VRAM *vr,
		    int Hx,
	 	    int Vx,
	 	    int Fx,
		    int Bx,
		    int VDS,
		    int INT,
		    int LCYC,
		    int LP,
		    int LST)
{
    vr->hx 	= Hx ;
    vr->vx 	= Vx ;
    vr->fx 	= Fx ;
    vr->bx 	= Bx ;
    vr->vds 	= VDS ;
    vr->inter 	= INT ;
    vr->lcyc 	= LCYC ;
    vr->lp 	= LP ;
    vr->lst 	= LST ;
}

#define ADDENTRY(a,b,c,d,e,f,g,h,i) 	video_mode_addentry(&vr[entry++],a,b,c,d,e,f,g,h,i)

static int video_mode_generate (void)
{
    immap_t *immap = (immap_t *)CFG_IMMR;
    VRAM *vr = (VRAM *)(((void *)immap) + 0xb00); // Pointer to the VRAM table
    int DX, X1, X2, DY, Y1, Y2, entry=0, fifo ;

    // CHECKING PARAMETERS

    if (video_panning_factor_y < -128)
	video_panning_factor_y = -128;

    if (video_panning_factor_y >  128)
	video_panning_factor_y =  128;

    if (video_panning_factor_x < -128)
	video_panning_factor_x = -128;

    if (video_panning_factor_x >  128)
	video_panning_factor_x =  128;

    // Setting panning

    DX = video_panning_range_x = (VIDEO_ACTIVE_COLS - VIDEO_COLS) * 2 ;
    DY = video_panning_range_y = (VIDEO_ACTIVE_ROWS - VIDEO_ROWS) / 2 ;

    video_panning_value_x = (video_panning_factor_x + 128) * DX / 256;
    video_panning_value_y = (video_panning_factor_y + 128) * DY / 256;
	
    // We assume these are burst units (multiplied by 2, we need it pari)
    X1 = video_panning_value_x & 0xfffe;
    X2 = DX - X1;

    // We assume these are field line units (divided by 2, we need it pari)
    Y1 = video_panning_value_y & 0xfffe;
    Y2 = DY - Y1;

#ifdef VIDEO_MODE_NTSC
//           Hx Vx Fx Bx VDS INT LCYC LP LST 		
//
// Retrace blanking
//
    ADDENTRY( 0, 0, 3, 0,  1,  0,   3, 1,  0 ); 
    ADDENTRY( 3, 0, 3, 0,  1,  0, 243, 0,  0 );
    ADDENTRY( 3, 0, 3, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 3, 0,  1,  0,  32, 1,  0 );
//
// Vertical blanking
//
    ADDENTRY( 0, 0, 0, 0,  1,  0,  18, 1,  0 ); 
    ADDENTRY( 3, 0, 0, 0,  1,  0, 243, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,  32, 1,  0 );
//
// Odd field active area (TOP)
//
    if (Y1 > 0)
    {
	ADDENTRY( 0, 0, 0, 0,  1,  0,  Y1, 1,  0 ); 
	ADDENTRY( 3, 0, 0, 0,  1,  0, 235, 0,  0 );
	ADDENTRY( 3, 0, 0, 3,  1,  0,1448, 0,  0 );
	ADDENTRY( 3, 0, 0, 0,  1,  0,  32, 1,  0 ); 
    }
//
// Odd field active area
//
    ADDENTRY( 0, 0, 0, 0,  1,  0, 240 - DY, 1,  0 ); 
    ADDENTRY( 3, 0, 0, 0,  1,  0,  235, 0,  0 );
    ADDENTRY( 3, 0, 0, 3,  1,  0, 8+X1, 0,  0 );
    ADDENTRY( 3, 0, 0, 3,  0,  0,VIDEO_COLS * 2, 0,  0 );

    if (X2 > 0)
        ADDENTRY( 3, 0, 0, 3,  1,  0,  X2, 0,  0 );

    ADDENTRY( 3, 0, 0, 0,  1,  0,  32, 1,  0 ); 

//
// Odd field active area (BOTTOM)
//
    if (Y1 > 0)
    {
	ADDENTRY( 0, 0, 0, 0,  1,  0,  Y2, 1,  0 ); 
	ADDENTRY( 3, 0, 0, 0,  1,  0, 235, 0,  0 );
	ADDENTRY( 3, 0, 0, 3,  1,  0,1448, 0,  0 );
	ADDENTRY( 3, 0, 0, 0,  1,  0,  32, 1,  0 ); 
    }
//
// Vertical blanking
//
    ADDENTRY( 0, 0, 0, 0,  1,  0,   4, 1,  0 ); 
    ADDENTRY( 3, 0, 0, 0,  1,  0, 243, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,  32, 1,  0 );
//
// Vertical blanking
//
    ADDENTRY( 0, 0, 3, 0,  1,  0,  19, 1,  0 ); 
    ADDENTRY( 3, 0, 3, 0,  1,  0, 243, 0,  0 );
    ADDENTRY( 3, 0, 3, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 3, 0,  1,  0,  32, 1,  0 );
//
// Even field active area (TOP)
//
    if (Y1 > 0)
    {
	ADDENTRY( 0, 0, 3, 0,  1,  0,  Y1, 1,  0 ); 
	ADDENTRY( 3, 0, 3, 0,  1,  0, 235, 0,  0 );
	ADDENTRY( 3, 0, 3, 3,  1,  0,1448, 0,  0 );
	ADDENTRY( 3, 0, 3, 0,  1,  0,  32, 1,  0 ); 
    }
//
// Even field active area (CENTER)
//
    ADDENTRY( 0, 0, 3, 0,  1,  0, 240 - DY, 1,  0 ); 
    ADDENTRY( 3, 0, 3, 0,  1,  0,  235, 0,  0 );
    ADDENTRY( 3, 0, 3, 3,  1,  0, 8+X1, 0,  0 );
    ADDENTRY( 3, 0, 3, 3,  0,  0,VIDEO_COLS * 2, 0,  0 );

    if (X2 > 0)
        ADDENTRY( 3, 0, 3, 3,  1,  0,  X2, 0,  0 );

    ADDENTRY( 3, 0, 3, 0,  1,  0,  32, 1,  0 ); 
//
// Even field active area (BOTTOM)
//
    if (Y1 > 0)
    {
	ADDENTRY( 0, 0, 3, 0,  1,  0,  Y2, 1,  0 ); 
	ADDENTRY( 3, 0, 3, 0,  1,  0, 235, 0,  0 );
	ADDENTRY( 3, 0, 3, 3,  1,  0,1448, 0,  0 );
	ADDENTRY( 3, 0, 3, 0,  1,  0,  32, 1,  0 ); 
    }
//
// Vertical blanking
//
    ADDENTRY( 0, 0, 3, 0,  1,  0,   1, 1,  0 ); 
    ADDENTRY( 3, 0, 3, 0,  1,  0, 243, 0,  0 );
    ADDENTRY( 3, 0, 3, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 3, 0,  1,  1,  32, 1,  1 );
#endif

#ifdef VIDEO_MODE_PAL
//           Hx Vx Fx Bx VDS INT LCYC LP LST 		
//
// vertical; blanking
//
    ADDENTRY( 0, 0, 0, 0,  1,  0,  22, 1,  0 ); 
    ADDENTRY( 3, 0, 0, 0,  1,  0, 263, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,  24, 1,  0 );
//
// active area (TOP)
//
    if (Y1 > 0)
    {
	ADDENTRY( 0, 0, 0, 0,  1,  0,  Y1, 1,  0 ); // 11?
	ADDENTRY( 3, 0, 0, 0,  1,  0, 255, 0,  0 );
	ADDENTRY( 3, 0, 0, 3,  1,  0,1448, 0,  0 );
	ADDENTRY( 3, 0, 0, 0,  1,  0,  24, 1,  0 );
    }
//
// field active area (CENTER)
//
    ADDENTRY( 0, 0, 0, 0,  1,  0, 288-DY, 1,  0 ); // 265?
    ADDENTRY( 3, 0, 0, 0,  1,  0, 255, 0,  0 );
    ADDENTRY( 3, 0, 0, 3,  1,  0, 8 + X1, 0,  0 );	
    ADDENTRY( 3, 0, 0, 3,  0,  0, VIDEO_COLS * 2, 0,  0 );	

    if (X2 > 0)
        ADDENTRY( 3, 0, 0, 1,  1,  0,  X2, 0,  0 );

    ADDENTRY( 3, 0, 0, 0,  1,  0,  24, 1,  0 );
//
// field active area (BOTTOM)
//
    if (Y2 > 0)
    {
	ADDENTRY( 0, 0, 0, 0,  1,  0,  Y2, 1,  0 ); // 12?
	ADDENTRY( 3, 0, 0, 0,  1,  0, 255, 0,  0 );
	ADDENTRY( 3, 0, 0, 3,  1,  0,1448, 0,  0 );
	ADDENTRY( 3, 0, 0, 0,  1,  0,  24, 1,  0 );
    }
//
// field vertical; blanking
//
    ADDENTRY( 0, 0, 0, 0,  1,  0,   2, 1,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0, 263, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,1440, 0,  0 );
    ADDENTRY( 3, 0, 0, 0,  1,  0,  24, 1,  0 );
//
// Create the other field (like this, but whit other field selected,
// one more cycle loop and a last identifier) 
//
    video_mode_dupefield (vr, &vr[entry], entry);
#endif

    // See what FIFO are we using
    fifo = GETBIT(immap->im_vid.vid_vsr, VIDEO_VSR_CAS);   
    
    // Set number of lines and burst (only one frame for now)
    if (fifo)
	immap->im_vid.vid_vfcr0 = VIDEO_BURST_LEN | 
	    			(VIDEO_BURST_LEN << 8) | 
				((VIDEO_ROWS / 2) << 19) ;
    else
	immap->im_vid.vid_vfcr1 = VIDEO_BURST_LEN | 
				(VIDEO_BURST_LEN << 8) | 
				((VIDEO_ROWS / 2) << 19) ;
    
    SETBIT(immap->im_vid.vid_vcmr, VIDEO_VCMR_ASEL, !fifo);   

// Wait until changes are applied (not done)
// while (GETBIT(immap->im_vid.vid_vsr, VIDEO_VSR_CAS) == fifo) ;

    // Return number of VRAM entries
    return entry * 2 ;
}

static void video_encoder_init (void)
{
#ifdef VIDEO_I2C
    // Initialize the I2C
    PRINTD("\n[VIDEO ENCODER] Initializing I2C bus...");
    i2c_init (VIDEO_I2C_RATE);

#ifdef CONFIG_FADS
    // Reset ADV7176 chip 
    PRINTD("\n[VIDEO ENCODER] Resetting encoder...");
    (*(int *)BCSR4) &= ~(1 << 21);
  
    // Wait for 5 ms inside the reset
    PRINTD("\n[VIDEO ENCODER] Waiting for encoder reset...");
    udelay(5000);

    // Take ADV7176 out of reset 
    (*(int *)BCSR4) |= 1 << 21;  

    // Wait for 5 ms after the reset
    udelay(5000);
#endif

    // Send configuration
    PRINTD("\n[VIDEO ENCODER] Configuring the encoder...");
#if (VIDEO_DEBUG_STEP == 1)
    printf("Sending %d bytes (%08x) to I2C 0x%x\n", 
	VIDEO_I2C_DATA_SIZE, VIDEO_I2C_DATA_ADDR, VIDEO_I2C_ADDR);
#endif
    i2c_send(VIDEO_I2C_ADDR, 0, 1, VIDEO_I2C_DATA_SIZE, VIDEO_I2C_DATA_ADDR);
#endif
    return  ;
}

static void video_ctrl_init (void *memptr)
{
    immap_t 	*immap = (immap_t *)CFG_IMMR;

    video_fb_address = memptr;

    // Set black background
    PRINTD("\n[VIDEO CTRL] Setting background color...");
    immap->im_vid.vid_vbcb = VIDEO_BG_COL; 

    // Show the background
    PRINTD("\n[VIDEO CTRL] Forcing background...");
    SETBIT(immap->im_vid.vid_vcmr, VIDEO_VCMR_BD, 1);   

    // Turn off video controller
    PRINTD("\n[VIDEO CTRL] Turning off video controller...");
    SETBIT(immap->im_vid.vid_vccr, VIDEO_VCCR_VON, 0) ;

#ifdef CONFIG_FADS
    // Turn on Video Port LED 
    PRINTD("\n[VIDEO CTRL] Turning off video port led...");
    SETBIT(*(int *)BCSR4, VIDEO_BCSR4_VIDLED_BIT, 1);

    // Disable internal clock
    PRINTD("\n[VIDEO CTRL] Disabling internal clock...");
    SETBIT(*(int *)BCSR4, VIDEO_BCSR4_EXTCLK_BIT, 0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕综合网| 亚洲一区二区三区激情| 亚洲欧洲韩国日本视频 | 青青草成人在线观看| 美国十次综合导航| 国产一区在线不卡| 色成人在线视频| 久久久久综合网| 亚洲一区二区视频在线观看| 精品一区二区三区欧美| 成人av在线观| 日韩精品一区二区三区视频播放| 国产精品久久久久久久岛一牛影视 | 91麻豆精品国产91久久久| 久久日韩粉嫩一区二区三区| 亚洲女性喷水在线观看一区| 精品一区二区三区欧美| 99精品国产91久久久久久| 欧美一级视频精品观看| 亚洲精品精品亚洲| 激情另类小说区图片区视频区| 国产在线精品一区二区夜色| 成人午夜私人影院| 欧美一区二区视频观看视频| 国产日产精品一区| 天堂蜜桃91精品| 日本精品免费观看高清观看| 亚洲精品一区二区三区影院 | 一区精品在线播放| 激情av综合网| 欧美精品丝袜久久久中文字幕| 国产午夜亚洲精品午夜鲁丝片| 日本在线观看不卡视频| 色吧成人激情小说| 国产精品久久久久久久第一福利 | 综合久久综合久久| 国产乱一区二区| 91麻豆精品国产91久久久使用方法 | 欧美成人精品3d动漫h| 亚洲成人动漫一区| 在线看国产日韩| 日韩理论片网站| www.av亚洲| 国产精品区一区二区三| 大尺度一区二区| 久久久久久久一区| 国产精品综合一区二区三区| 欧美tk—视频vk| 韩国av一区二区三区| 精品久久久久香蕉网| 看国产成人h片视频| 日韩一级片网站| 国产一区二区三区视频在线播放| 欧美一区二区三区视频免费| 蜜桃一区二区三区在线观看| 日韩一区二区三区电影| 九色porny丨国产精品| 精品国产伦一区二区三区免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美猛男男办公室激情| 日韩精品一区第一页| 91精品婷婷国产综合久久| 日本aⅴ精品一区二区三区| 欧美女孩性生活视频| 五月婷婷综合在线| 精品奇米国产一区二区三区| 国产美女娇喘av呻吟久久| 中文字幕欧美国产| 91视频一区二区| 亚洲一区二区三区国产| 日韩欧美国产综合一区| 国产一区亚洲一区| 亚洲色图19p| 欧美挠脚心视频网站| 久久国内精品视频| 中文字幕一区二区三区四区不卡| 色激情天天射综合网| 日韩电影一区二区三区四区| 久久久久国色av免费看影院| 成人av小说网| 亚洲一区二区三区四区五区中文 | 九九国产精品视频| 国产欧美精品区一区二区三区 | 国产成人无遮挡在线视频| 亚洲色图制服诱惑 | 亚洲欧洲精品一区二区三区| 欧美性大战久久| 久久se这里有精品| 国产精品久久久久久久蜜臀| 欧美无砖砖区免费| 九九**精品视频免费播放| 成人免费在线视频| 日韩欧美中文字幕一区| 顶级嫩模精品视频在线看| 亚洲国产色一区| 国产精品午夜电影| 56国语精品自产拍在线观看| 成人免费av资源| 天天做天天摸天天爽国产一区| 久久精品日产第一区二区三区高清版| 日韩一区二区三区免费观看 | 国产午夜精品久久久久久免费视| 91蝌蚪国产九色| 国产乱码精品一区二区三区五月婷| 最新日韩在线视频| 久久综合五月天婷婷伊人| 在线观看国产一区二区| 蜜臀av一级做a爰片久久| 国产精品沙发午睡系列990531| 日韩一区二区电影在线| 色噜噜狠狠成人网p站| 国产精品69毛片高清亚洲| 午夜精品免费在线| 中文字幕成人在线观看| 日韩免费高清av| 欧美精品1区2区| 色乱码一区二区三区88| 国产尤物一区二区| 久久精品噜噜噜成人88aⅴ| 日韩精品每日更新| 午夜一区二区三区视频| 亚洲欧美激情一区二区| 国产精品热久久久久夜色精品三区| 欧美一区三区四区| 欧美日韩另类一区| 精品视频色一区| 欧美天天综合网| 色婷婷综合久色| 97se亚洲国产综合自在线观| 成人aa视频在线观看| 国产一区二区三区电影在线观看| 免费人成精品欧美精品| 午夜国产不卡在线观看视频| 亚洲3atv精品一区二区三区| 亚洲国产日韩av| 亚洲mv在线观看| 日韩国产精品久久久久久亚洲| 亚洲一区欧美一区| 亚洲午夜电影在线| 亚洲午夜久久久久久久久电影网| 亚洲图片一区二区| 日本va欧美va瓶| 裸体一区二区三区| 国产精品亚洲视频| 99视频精品全部免费在线| 成+人+亚洲+综合天堂| 成人毛片在线观看| 色综合久久66| 欧美精品久久一区| 精品国产一区二区三区不卡 | 久久久久久99精品| 国产精品色噜噜| 一区二区三区日韩在线观看| 亚洲v精品v日韩v欧美v专区| 日韩黄色免费电影| 国产精品综合久久| 色婷婷av一区二区| 欧美一级一级性生活免费录像| 精品国产乱码久久久久久图片| 国产午夜亚洲精品不卡| 亚洲三级在线播放| 全部av―极品视觉盛宴亚洲| 国产一区二区三区av电影| 99久久伊人网影院| 欧美另类z0zxhd电影| 久久伊人蜜桃av一区二区| 国产精品久久久久四虎| 婷婷丁香激情综合| 亚洲a一区二区| 国产一区91精品张津瑜| 国产高清一区日本| 91精品国产免费| 国产情人综合久久777777| 综合激情成人伊人| 久久不见久久见免费视频1| 99精品久久只有精品| 日韩美女视频在线| 1区2区3区欧美| 韩国三级电影一区二区| 色婷婷激情综合| 国产亚洲欧洲997久久综合| 亚洲一级二级在线| 国产成人日日夜夜| 日韩一区二区三区免费观看| 综合激情成人伊人| 国产精品一区在线观看你懂的| 欧美中文字幕一区二区三区亚洲| 精品免费日韩av| 午夜精品爽啪视频| 色偷偷一区二区三区| 国产调教视频一区| 蜜桃av一区二区| 欧美乱熟臀69xxxxxx| 中文字幕日韩av资源站| 国内精品国产成人| 欧美精品日韩综合在线| 亚洲免费在线观看视频| 豆国产96在线|亚洲| 久久久综合激的五月天| 图片区日韩欧美亚洲|