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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pati.c

?? 針對(duì)yassylcd的uboot源碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * (C) Copyright 2003 * Martin Winistoerfer, martinwinistoerfer@gmx.ch. * Atapted for PATI * Denis Peter, d.peter@mpl.ch * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA *//*********************************************************************************** * Bits for the SDRAM controller * ----------------------------- * * CAL:	CAS Latency. If cleared to 0 (default) the SDRAM controller asserts TA# on *	the 2nd Clock after ACTIVE command (CAS Latency = 2). If set to 1 the SDRAM *	controller asserts TA# on the 3rd Clock after ACTIVE command (CAS Latency = 3). * RCD:	RCD ACTIVE to READ or WRITE Delay (Ras to Cas Delay). If cleared 0 (default) *	tRCD of the SDRAM must equal or less 25ns. If set to 1 tRCD must be equal or less 50ns. * WREC:Write Recovery. If cleared 0 (default) tWR of the SDRAM must equal or less 25ns. *	If set to 1 tWR must be equal or less 50ns. * RP:	Precharge Command Time. If cleared 0 (default) tRP of the SDRAM must equal or less *	25ns. If set to 1 tRP must be equal or less 50ns. * RC:	Auto Refresh to Active Time. If cleared 0 (default) tRC of the SDRAM must equal *	or less 75ns. If set to 1 tRC must be equal or less 100ns. * LMR:	Bit to set the Mode Register of the SDRAM. If set, the next access to the SDRAM *	is the Load Mode Register Command. * IIP:	Init in progress. Set to 1 for starting the init sequence *	(Precharge All). As long this bit is set, the Precharge All is still in progress. *	After command has completed, wait at least for 8 refresh (200usec) before proceed. **********************************************************************************/#include <common.h>#include <mpc5xx.h>#include <devices.h>#include <pci_ids.h>#define PLX9056_LOC#include "plx9056.h"#include "pati.h"#if defined(__APPLE__)/* Leading underscore on symbols */#  define SYM_CHAR "_"#else /* No leading character on symbols */#  define SYM_CHAR#endif#undef SDRAM_DEBUG/* * Macros to generate global absolutes. */#define GEN_SYMNAME(str) SYM_CHAR #str#define GEN_VALUE(str) #str#define GEN_ABS(name, value) \		asm (".globl " GEN_SYMNAME(name)); \		asm (GEN_SYMNAME(name) " = " GEN_VALUE(value))/************************************************************************ * Early debug routines */void write_hex (unsigned char i){	char cc;	cc = i >> 4;	cc &= 0xf;	if (cc > 9)		serial_putc (cc + 55);	else		serial_putc (cc + 48);	cc = i & 0xf;	if (cc > 9)		serial_putc (cc + 55);	else		serial_putc (cc + 48);}#if defined(SDRAM_DEBUG)void write_4hex (unsigned long val){	write_hex ((unsigned char) (val >> 24));	write_hex ((unsigned char) (val >> 16));	write_hex ((unsigned char) (val >> 8));	write_hex ((unsigned char) val);}#endifunsigned long in32(unsigned long addr){	unsigned long *p=(unsigned long *)addr;	return *p;}void out32(unsigned long addr,unsigned long data){	unsigned long *p=(unsigned long *)addr;	*p=data;}typedef struct {	unsigned short boardtype; /* Board revision and Population Options */	unsigned char cal;		/* cas Latency  0:CAL=2 1:CAL=3 */	unsigned char rcd;		/* ras to cas delay  0:<25ns 1:<50ns*/	unsigned char wrec;		/* write recovery 0:<25ns 1:<50ns */	unsigned char pr;		/* Precharge Command Time 0:<25ns 1:<50ns */	unsigned char rc;		/* Auto Refresh to Active Time 0:<75ns 1:<100ns */	unsigned char sz;		/* log binary => Size = (4MByte<<sz) 5 = 128, 4 = 64, 3 = 32, 2 = 16, 1=8 */} sdram_t;const sdram_t sdram_table[] = {	{ 0x0000,	/* PATI Rev A, 16MByte -1 Board */		1,	/* Case Latenty = 3 */		0,	/* ras to cas delay  0 (20ns) */		0,	/* write recovery 0:<25ns 1:<50ns*/		0,	/* Precharge Command Time 0 (20ns) */		0,	/* Auto Refresh to Active Time 0 (68) */		2	/* log binary => Size 2 = 16MByte, 1=8 */	},	{ 0xffff, /* terminator */	  0xff,	  0xff,	  0xff,	  0xff,	  0xff,	  0xff }};extern int mem_test (unsigned long start, unsigned long ramsize, int quiet);extern void mem_test_reloc(void);/* * Get RAM size. */long int initdram(int board_type){	unsigned char board_rev;	unsigned long reg;	unsigned long lmr;	int i,timeout;#if defined(SDRAM_DEBUG)	reg=in32(PLD_CONFIG_BASE+PLD_PART_ID);	puts("\n\nSYSTEM part 0x"); write_4hex(SYSCNTR_PART(reg));	puts(" Vers 0x"); write_4hex(SYSCNTR_ID(reg));	puts("\nSDRAM  part  0x"); write_4hex(SDRAM_PART(reg));	puts(" Vers 0x"); write_4hex(SDRAM_ID(reg));	reg=in32(PLD_CONFIG_BASE+PLD_BOARD_TIMING);	puts("\nBoard rev.   0x"); write_4hex(SYSCNTR_BREV(reg));   putc('\n');#endif	reg=in32(PLD_CONFIG_BASE+PLD_BOARD_TIMING);	board_rev=(unsigned char)(SYSCNTR_BREV(reg));	i=0;	while(1) {		if(sdram_table[i].boardtype==0xffff) {			puts("ERROR, found no table for Board 0x");			write_hex(board_rev);			while(1);		}		if(sdram_table[i].boardtype==(unsigned char)board_rev)			break;		i++;	}	/* Set CAL, RCD, WREQ, PR and RC Bits */#if defined(SDRAM_DEBUG)	puts("Set CAL, RCD, WREQ, PR and RC Bits\n");#endif	/* mask bits */	reg &= ~(SET_REG_BIT(1,SDRAM_CAL) | SET_REG_BIT(1,SDRAM_RCD) | SET_REG_BIT(1,SDRAM_WREQ) |				SET_REG_BIT(1,SDRAM_PR)  |  SET_REG_BIT(1,SDRAM_RC) | SET_REG_BIT(1,SDRAM_LMR)  |				SET_REG_BIT(1,SDRAM_IIP) | SET_REG_BIT(1,SDRAM_RES0));	/* set bits */	reg |= (SET_REG_BIT(sdram_table[i].cal,SDRAM_CAL) |			  SET_REG_BIT(sdram_table[i].rcd,SDRAM_RCD) |			  SET_REG_BIT(sdram_table[i].wrec,SDRAM_WREQ) |			  SET_REG_BIT(sdram_table[i].pr,SDRAM_PR) |			  SET_REG_BIT(sdram_table[i].rc,SDRAM_RC));	out32(PLD_CONFIG_BASE+PLD_BOARD_TIMING,reg);	/* step 2 set IIP */#if defined(SDRAM_DEBUG)	puts("step 2 set IIP\n");#endif	/* step 2 set IIP */	reg |= SET_REG_BIT(1,SDRAM_IIP);	timeout=0;	while (timeout!=0xffff) {		__asm__ volatile("eieio");		reg=in32(PLD_CONFIG_BASE+PLD_BOARD_TIMING);		if((reg & SET_REG_BIT(1,SDRAM_IIP))==0)			break;		timeout++;		udelay(1);	}	/* wait for at least 8 refresh */	udelay(1000);	/* set LMR */	reg |= SET_REG_BIT(1,SDRAM_LMR);	out32(PLD_CONFIG_BASE+PLD_BOARD_TIMING,reg);	__asm__ volatile("eieio");	lmr=0x00000002; /* sequential burst 4 data */	if(sdram_table[i].cal==1)		lmr|=0x00000030; /* cal = 3 */	else		lmr|=0000000020; /* cal = 2 */	/* rest standard operation programmed write burst length */	/* we have a x32 bit bus to the SDRAM, so shift the addr with 2 */	lmr<<=2;	in32(CFG_SDRAM_BASE + lmr);	/* ok, we're done, return SDRAM size */	return ((0x400000 << sdram_table[i].sz));		/* log2 value of 4MByte  */}void set_flash_vpp(int ext_vpp, int ext_wp, int int_vpp){	unsigned long reg;	reg=in32(PLD_CONF_REG2+PLD_CONFIG_BASE);	reg &= ~(SET_REG_BIT(1,SYSCNTR_CPU_VPP) |			   SET_REG_BIT(1,SYSCNTR_FL_VPP) |				SET_REG_BIT(1,SYSCNTR_FL_WP));	reg |= (SET_REG_BIT(int_vpp,SYSCNTR_CPU_VPP) |			   SET_REG_BIT(ext_vpp,SYSCNTR_FL_VPP) |				SET_REG_BIT(ext_wp,SYSCNTR_FL_WP));	out32(PLD_CONF_REG2+PLD_CONFIG_BASE,reg);	udelay(100);}void show_pld_regs(void){	unsigned long reg,reg1;	reg=in32(PLD_CONFIG_BASE+PLD_PART_ID);	printf("\nSYSTEM part %ld, Vers %ld\n",SYSCNTR_PART(reg),SYSCNTR_ID(reg));	printf("SDRAM  part %ld, Vers %ld\n",SDRAM_PART(reg),SDRAM_ID(reg));	reg=in32(PLD_CONFIG_BASE+PLD_BOARD_TIMING);	printf("Board rev.  %c\n",(char) (SYSCNTR_BREV(reg)+'A'));	printf("Waitstates  %ld\n",GET_SYSCNTR_FLWAIT(reg));	printf("SDRAM:      CAL=%ld RCD=%ld WREQ=%ld PR=%ld\n            RC=%ld  LMR=%ld IIP=%ld\n",		GET_REG_BIT(reg,SDRAM_CAL),GET_REG_BIT(reg,SDRAM_RCD),		GET_REG_BIT(reg,SDRAM_WREQ),GET_REG_BIT(reg,SDRAM_PR),		GET_REG_BIT(reg,SDRAM_RC),GET_REG_BIT(reg,SDRAM_LMR),		GET_REG_BIT(reg,SDRAM_IIP));	reg=in32(PLD_CONFIG_BASE+PLD_CONF_REG1);	reg1=in32(PLD_CONFIG_BASE+PLD_CONF_REG2);	printf("HW Config:  FLAG=%ld IP=%ld  index=%ld PRPM=%ld\n            ICW=%ld  ISB=%ld BDIS=%ld  PCIM=%ld\n",		GET_REG_BIT(reg,SYSCNTR_FLAG),GET_REG_BIT(reg,SYSCNTR_IP),		GET_SYSCNTR_BOOTIND(reg),GET_REG_BIT(reg,SYSCNTR_PRM),		GET_REG_BIT(reg,SYSCNTR_ICW),GET_SYSCNTR_ISB(reg),		GET_REG_BIT(reg1,SYSCNTR_BDIS),GET_REG_BIT(reg1,SYSCNTR_PCIM));	printf("Switches:   MUX=%ld PCI_DIS=%ld Boot_EN=%ld  Config=%ld\n",GET_SDRAM_MUX(reg),		GET_REG_BIT(reg,SDRAM_PDIS),GET_REG_BIT(reg1,SYSCNTR_BOOTEN),		GET_SYSCNTR_CFG(reg1));	printf("Misc:       RIP=%ld CPU_VPP=%ld FLSH_VPP=%ld FLSH_WP=%ld\n\n",		GET_REG_BIT(reg,SDRAM_RIP),GET_REG_BIT(reg1,SYSCNTR_CPU_VPP),		GET_REG_BIT(reg1,SYSCNTR_FL_VPP),GET_REG_BIT(reg1,SYSCNTR_FL_WP));}/**************************************************************** * Setting IOs * ----------- * GPIO6 is User LED1 * GPIO7 is Interrupt PLX (Output) * GPIO5 is User LED0 * GPIO2 is PLX USERi (Output) * GPIO1 is PLX Interrupt (Input) ****************************************************************/ void init_ios(void) {	volatile immap_t * immr = (immap_t *) CFG_IMMR;	volatile sysconf5xx_t *sysconf = &immr->im_siu_conf;	unsigned long reg;	reg=sysconf->sc_sgpiocr; /* Data direction register */	reg &= ~0x67000000;	reg |= 0x27000000; /* set outpupts */	sysconf->sc_sgpiocr=reg; /* Data direction register */	reg=sysconf->sc_sgpiodt2; /* Data register */	/* set output to 0 */	reg &= ~0x27000000;	/* set IRQ and USERi to 1 */	reg |= 0x28000000;	sysconf->sc_sgpiodt2=reg; /* Data register */}void user_led0(int led_on){	volatile immap_t * immr = (immap_t *) CFG_IMMR;	volatile sysconf5xx_t *sysconf = &immr->im_siu_conf;	unsigned long reg;	reg=sysconf->sc_sgpiodt2; /* Data register */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成人在线观看| 99精品国产热久久91蜜凸| 91老司机福利 在线| 久久伊99综合婷婷久久伊| 日本不卡视频在线观看| 欧美精品xxxxbbbb| 日韩精品一卡二卡三卡四卡无卡| 欧美网站一区二区| 亚洲一区二区三区中文字幕 | 精品国产亚洲在线| 欧美a级理论片| 欧美一区二区三区在线观看| 日韩av成人高清| 日韩一区二区三区视频在线观看| 亚洲大尺度视频在线观看| 在线观看欧美日本| 偷拍一区二区三区| 日韩精品一区二区三区在线播放 | 国产精品你懂的| 国产91丝袜在线播放0| 中文在线资源观看网站视频免费不卡| 国产精品一级在线| 国产精品不卡视频| 在线观看一区日韩| 天堂影院一区二区| 欧美精品一区男女天堂| 国产精品一区一区三区| 国产精品美女久久久久久久久久久| 成人黄色免费短视频| 亚洲欧美日韩电影| 69堂国产成人免费视频| 国产揄拍国内精品对白| 国产精品久久久久影院色老大| 99精品视频在线播放观看| 亚洲一区二区三区三| 3d成人h动漫网站入口| 韩国午夜理伦三级不卡影院| 国产日韩亚洲欧美综合| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日韩国产一二三区| 精品国产不卡一区二区三区| 成人美女在线视频| 亚洲国产一区二区三区| 欧美成人三级在线| 99这里都是精品| 日韩影院免费视频| 欧美国产在线观看| 欧美日韩成人综合天天影院| 韩国精品在线观看| 亚洲久本草在线中文字幕| 日韩午夜中文字幕| 99久久精品一区| 麻豆精品蜜桃视频网站| 中文字幕在线一区二区三区| 欧美久久一二区| 成人av动漫网站| 免费在线看成人av| 亚洲人一二三区| 26uuuu精品一区二区| 日本高清不卡一区| 韩日欧美一区二区三区| 亚洲一区二区三区激情| 欧美激情一区二区| 欧美一区午夜精品| 色婷婷狠狠综合| 国产风韵犹存在线视精品| 亚洲va欧美va人人爽| 中文字幕中文乱码欧美一区二区 | 色综合久久综合网97色综合 | 中文字幕永久在线不卡| 日韩视频在线你懂得| 99re免费视频精品全部| 国产一区二区按摩在线观看| 亚洲成av人片一区二区| 亚洲三级在线免费| 国产欧美一区二区三区在线老狼| 91精品国产色综合久久久蜜香臀| 91免费观看视频在线| 国产成人亚洲综合a∨婷婷| 日本不卡视频在线观看| 亚洲午夜久久久久久久久久久 | 色94色欧美sute亚洲13| 国产99一区视频免费| 久久精品国产在热久久| 午夜一区二区三区视频| 一区二区在线电影| 国产精品国产三级国产aⅴ中文| 久久人人97超碰com| 日韩一区二区在线观看| 欧美美女一区二区在线观看| 日本韩国欧美在线| 91丨porny丨国产| av爱爱亚洲一区| www.99精品| 不卡一区中文字幕| 成人午夜电影小说| 国产91在线|亚洲| 丁香啪啪综合成人亚洲小说| 国产二区国产一区在线观看| 国产精品亚洲专一区二区三区 | 国内成+人亚洲+欧美+综合在线| 日韩福利视频导航| 日韩avvvv在线播放| 日韩av电影免费观看高清完整版 | 亚洲第一搞黄网站| 亚洲v精品v日韩v欧美v专区| 午夜视黄欧洲亚洲| 午夜伦欧美伦电影理论片| 日韩有码一区二区三区| 麻豆中文一区二区| 国模少妇一区二区三区| 国产成人免费高清| www..com久久爱| 日本韩国精品在线| 欧美色区777第一页| 欧美高清你懂得| 欧美xxxxx裸体时装秀| 久久一区二区三区四区| 国产女人18毛片水真多成人如厕 | 在线观看网站黄不卡| 欧美三级欧美一级| 91麻豆精品国产| 精品久久久久久无| 国产欧美日韩中文久久| 国产精品久久毛片av大全日韩| 亚洲欧美日韩在线| 午夜精品久久久久| 久久97超碰色| 成人丝袜18视频在线观看| 日本精品裸体写真集在线观看 | 久久99最新地址| 丁香五精品蜜臀久久久久99网站| 99精品欧美一区| 欧美喷潮久久久xxxxx| 精品卡一卡二卡三卡四在线| 国产精品视频一二三区| 亚洲图片自拍偷拍| 国产一区二区三区免费看 | 欧美欧美午夜aⅴ在线观看| 欧美va亚洲va香蕉在线| 国产精品三级av在线播放| 亚洲亚洲精品在线观看| 黄网站免费久久| 91黄色免费网站| 精品国产制服丝袜高跟| 亚洲欧美另类在线| 久久激情综合网| 日本精品视频一区二区| 亚洲精品一区二区三区99| 亚洲欧美日韩成人高清在线一区| 蜜臀av一区二区在线免费观看| 成人app网站| 日韩久久久久久| 亚洲免费视频中文字幕| 黄一区二区三区| 欧美群妇大交群的观看方式| 国产精品麻豆欧美日韩ww| 日本不卡视频在线观看| 色偷偷久久人人79超碰人人澡| 精品国产免费人成在线观看| 亚洲午夜久久久久久久久电影网 | 国产午夜精品理论片a级大结局| 一区二区三区在线高清| 国产乱色国产精品免费视频| 欧美日韩亚洲另类| 国产精品色噜噜| 国内精品久久久久影院色| 欧美另类z0zxhd电影| 国产精品久久久久久久久快鸭 | 成人午夜视频福利| 精品免费99久久| 婷婷成人综合网| 色噜噜狠狠色综合中国| 久久久久久夜精品精品免费| 日韩在线观看一区二区| 在线亚洲一区二区| 国产精品国产三级国产aⅴ无密码| 黄页视频在线91| 欧美电影免费观看高清完整版在线 | thepron国产精品| 26uuu国产一区二区三区| 天天影视网天天综合色在线播放| 在线不卡一区二区| 亚洲国产精品天堂| 色综合天天综合给合国产| 欧美激情综合网| 国产精品系列在线播放| www久久精品| 激情综合五月婷婷| 日韩免费观看2025年上映的电影| 五月婷婷久久综合| 欧美日韩国产小视频在线观看| 亚洲伦在线观看| 色94色欧美sute亚洲线路一ni| 亚洲欧洲日本在线| 91亚洲国产成人精品一区二区三| 国产精品每日更新| 91丨九色丨尤物| 又紧又大又爽精品一区二区| 一本大道av伊人久久综合|