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

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

?? sdram_init.c

?? AT9260的BOOTLOADER,還有幾個版本的,需要的我再放
?? C
?? 第 1 頁 / 共 4 頁
字號:
		return 1;	}	/* delay line */	/* Program the GT with the discovered data */	if (info->registeredAddrAndControlInputs == true)		DP (printf		    ("Module is registered, but we do not support registered Modules !!!\n"));	/* delay line */	set_dfcdlInit ();	/* may be its not needed */	DP (printf ("Delay line set done\n"));	/* set SDRAM mode NOP */ /* To_do check it */	GT_REG_WRITE (SDRAM_OPERATION, 0x5);	while (GTREGREAD (SDRAM_OPERATION) != 0) {		DP (printf		    ("\n*** SDRAM_OPERATION 1418: Module still busy ... please wait... ***\n"));	}	/* SDRAM configuration */	GT_REG_WRITE (SDRAM_CONFIG, 0x58200400);	DP (printf ("sdram_conf 0x1400: %08x\n", GTREGREAD (SDRAM_CONFIG)));	/* SDRAM open pages controll keep open as much as I can */	GT_REG_WRITE (SDRAM_OPEN_PAGES_CONTROL, 0x0);	DP (printf	    ("sdram_open_pages_controll 0x1414: %08x\n",	     GTREGREAD (SDRAM_OPEN_PAGES_CONTROL)));	/* SDRAM D_UNIT_CONTROL_LOW 0x1404 */	tmp = (GTREGREAD (D_UNIT_CONTROL_LOW) & 0x01);	/* Clock Domain Sync from power on reset */	if (tmp == 0)		DP (printf ("Core Signals are sync (by HW-Setting)!!!\n"));	else		DP (printf		    ("Core Signals syncs. are bypassed (by HW-Setting)!!!\n"));	/* SDRAM set CAS Lentency according to SPD information */	switch (info->memoryType) {	case SDRAM:		DP (printf ("### SD-RAM not supported yet !!!\n"));		hang ();		/* ToDo fill SD-RAM if needed !!!!! */		break;	case DDR:		DP (printf ("### SET-CL for DDR-RAM\n"));		switch (info->maxClSupported_DDR) {		case DDR_CL_3:			tmp_dunit_control_low = 0x3c000000;	/* Read-Data sampled on falling edge of Clk */			tmp_sdram_mode = 0x32;	/* CL=3 Burstlength = 4 */			DP (printf			    ("Max. CL is 3 CLKs 0x141c= %08lx, 0x1404 = %08lx\n",			     tmp_sdram_mode, tmp_dunit_control_low));			break;		case DDR_CL_2_5:			if (tmp == 1) {	/* clocks sync */				tmp_dunit_control_low = 0x24000000;	/* Read-Data sampled on falling edge of Clk */				tmp_sdram_mode = 0x62;	/* CL=2,5 Burstlength = 4 */				DP (printf				    ("Max. CL is 2,5s CLKs 0x141c= %08lx, 0x1404 = %08lx\n",				     tmp_sdram_mode, tmp_dunit_control_low));			} else {	/* clk sync. bypassed     */				tmp_dunit_control_low = 0x03000000;	/* Read-Data sampled on rising edge of Clk */				tmp_sdram_mode = 0x62;	/* CL=2,5 Burstlength = 4 */				DP (printf				    ("Max. CL is 2,5 CLKs 0x141c= %08lx, 0x1404 = %08lx\n",				     tmp_sdram_mode, tmp_dunit_control_low));			}			break;		case DDR_CL_2:			if (tmp == 1) {	/* Sync */				tmp_dunit_control_low = 0x03000000;	/* Read-Data sampled on rising edge of Clk */				tmp_sdram_mode = 0x22;	/* CL=2 Burstlength = 4 */				DP (printf				    ("Max. CL is 2s CLKs 0x141c= %08lx, 0x1404 = %08lx\n",				     tmp_sdram_mode, tmp_dunit_control_low));			} else {	/* Not sync.      */				tmp_dunit_control_low = 0x3b000000;	/* Read-Data sampled on rising edge of Clk */				tmp_sdram_mode = 0x22;	/* CL=2 Burstlength = 4 */				DP (printf				    ("Max. CL is 2 CLKs 0x141c= %08lx, 0x1404 = %08lx\n",				     tmp_sdram_mode, tmp_dunit_control_low));			}			break;		case DDR_CL_1_5:			if (tmp == 1) {	/* Sync */				tmp_dunit_control_low = 0x23000000;	/* Read-Data sampled on falling edge of Clk */				tmp_sdram_mode = 0x52;	/* CL=1,5 Burstlength = 4 */				DP (printf				    ("Max. CL is 1,5s CLKs 0x141c= %08lx, 0x1404 = %08lx\n",				     tmp_sdram_mode, tmp_dunit_control_low));			} else {	/* not sync */				tmp_dunit_control_low = 0x1a000000;	/* Read-Data sampled on rising edge of Clk */				tmp_sdram_mode = 0x52;	/* CL=1,5 Burstlength = 4 */				DP (printf				    ("Max. CL is 1,5 CLKs 0x141c= %08lx, 0x1404 = %08lx\n",				     tmp_sdram_mode, tmp_dunit_control_low));			}			break;		default:			printf ("Max. CL is out of range %d\n",				info->maxClSupported_DDR);			hang ();			break;		}		break;	}	/* Write results of CL detection procedure */	GT_REG_WRITE (SDRAM_MODE, tmp_sdram_mode);	/* set SDRAM mode SetCommand 0x1418 */	GT_REG_WRITE (SDRAM_OPERATION, 0x3);	while (GTREGREAD (SDRAM_OPERATION) != 0) {		DP (printf		    ("\n*** SDRAM_OPERATION 1418 after SDRAM_MODE: Module still busy ... please wait... ***\n"));	}	/* SDRAM D_UNIT_CONTROL_LOW 0x1404 */	tmp = (GTREGREAD (D_UNIT_CONTROL_LOW) & 0x01);	/* Clock Domain Sync from power on reset */	if (tmp != 1) {		/*clocks are not sync */		/* asyncmode */		GT_REG_WRITE (D_UNIT_CONTROL_LOW,			      (GTREGREAD (D_UNIT_CONTROL_LOW) & 0x7F) |			      0x18110780 | tmp_dunit_control_low);	} else {		/* syncmode */		GT_REG_WRITE (D_UNIT_CONTROL_LOW,			      (GTREGREAD (D_UNIT_CONTROL_LOW) & 0x7F) |			      0x00110000 | tmp_dunit_control_low);	}	/* set SDRAM mode SetCommand 0x1418 */	GT_REG_WRITE (SDRAM_OPERATION, 0x3);	while (GTREGREAD (SDRAM_OPERATION) != 0) {		DP (printf		    ("\n*** SDRAM_OPERATION 1418 after D_UNIT_CONTROL_LOW: Module still busy ... please wait... ***\n"));	}/*------------------------------------------------------------------------------ */	/* bank parameters */	/* SDRAM address decode register */	/* program this with the default value */	tmp = 0x02;	DP (printf ("drb_size (n*64Mbit): %d\n", info->drb_size));	switch (info->drb_size) {	case 1:		/* 64 Mbit */	case 2:		/* 128 Mbit */		DP (printf ("RAM-Device_size 64Mbit or 128Mbit)\n"));		tmp |= (0x00 << 4);		break;	case 4:		/* 256 Mbit */	case 8:		/* 512 Mbit */		DP (printf ("RAM-Device_size 256Mbit or 512Mbit)\n"));		tmp |= (0x01 << 4);		break;	case 16:		/* 1 Gbit */	case 32:		/* 2 Gbit */		DP (printf ("RAM-Device_size 1Gbit or 2Gbit)\n"));		tmp |= (0x02 << 4);		break;	default:		printf ("Error in dram size calculation\n");		DP (printf ("Assume: RAM-Device_size 1Gbit or 2Gbit)\n"));		tmp |= (0x02 << 4);		return 1;	}	/* SDRAM bank parameters */	/* the param registers for slot 1 (banks 2+3) are offset by 0x8 */	DP (printf	    ("setting up slot %d config with: %08lx \n", info->slot, tmp));	GT_REG_WRITE (SDRAM_ADDR_CONTROL, tmp);/* ------------------------------------------------------------------------------ */	DP (printf	    ("setting up sdram_timing_control_low with: %08x \n",	     0x11511220));	GT_REG_WRITE (SDRAM_TIMING_CONTROL_LOW, 0x11511220);/* ------------------------------------------------------------------------------ */	/* SDRAM configuration */	tmp = GTREGREAD (SDRAM_CONFIG);	if (info->registeredAddrAndControlInputs	    || info->registeredDQMBinputs) {		tmp |= (1 << 17);		DP (printf		    ("SPD says: registered Addr. and Cont.: %d; registered DQMBinputs: %d\n",		     info->registeredAddrAndControlInputs,		     info->registeredDQMBinputs));	}	/* Use buffer 1 to return read data to the CPU	 * Page 426 MV64360 */	tmp |= (1 << 26);	DP (printf	    ("Before Buffer assignment - sdram_conf: %08x\n",	     GTREGREAD (SDRAM_CONFIG)));	DP (printf	    ("After Buffer assignment - sdram_conf: %08x\n",	     GTREGREAD (SDRAM_CONFIG)));	/* SDRAM timing To_do: */	tmp = GTREGREAD (SDRAM_TIMING_CONTROL_HIGH);	DP (printf ("# sdram_timing_control_high is : %08lx \n", tmp));	/* SDRAM address decode register */	/* program this with the default value */	tmp = GTREGREAD (SDRAM_ADDR_CONTROL);	DP (printf	    ("SDRAM address control (before: decode): %08x  ",	     GTREGREAD (SDRAM_ADDR_CONTROL)));	GT_REG_WRITE (SDRAM_ADDR_CONTROL, (tmp | 0x2));	DP (printf	    ("SDRAM address control (after: decode): %08x\n",	     GTREGREAD (SDRAM_ADDR_CONTROL)));	/* set the SDRAM configuration for each bank *//*	for (i = info->slot * 2; i < ((info->slot * 2) + info->banks); i++) */	{		i = info->slot;		DP (printf		    ("\n*** Running a MRS cycle for bank %d ***\n", i));		/* map the bank */		memory_map_bank (i, 0, GB / 4);#if 1				/* test only */		/* set SDRAM mode */ /* To_do check it */		GT_REG_WRITE (SDRAM_OPERATION, 0x3);		check = GTREGREAD (SDRAM_OPERATION);		DP (printf		    ("\n*** SDRAM_OPERATION 1418 (0 = Normal Operation) = %08lx ***\n",		     check));		/* switch back to normal operation mode */		GT_REG_WRITE (SDRAM_OPERATION, 0);		check = GTREGREAD (SDRAM_OPERATION);		DP (printf		    ("\n*** SDRAM_OPERATION 1418 (0 = Normal Operation) = %08lx ***\n",		     check));#endif /* test only */		/* unmap the bank */		memory_map_bank (i, 0, 0);	}	return 0;}/* * Check memory range for valid RAM. A simple memory test determines * the actually available RAM size between addresses `base' and * `base + maxsize'. Some (not all) hardware errors are detected: * - short between address lines * - short between data lines */long intdram_size(long int *base, long int maxsize){    volatile long int	 *addr, *b=base;    long int	 cnt, val, save1, save2;#define STARTVAL (1<<20)	/* start test at 1M */    for (cnt = STARTVAL/sizeof(long); cnt < maxsize/sizeof(long); cnt <<= 1) {	    addr = base + cnt;	/* pointer arith! */	    save1=*addr;		/* save contents of addr */	    save2=*b;		/* save contents of base */	    *addr=cnt;		/* write cnt to addr */	    *b=0;			/* put null at base */	    /* check at base address */	    if ((*b) != 0) {		*addr=save1;	/* restore *addr */		*b=save2;	/* restore *b */		return (0);	    }	    val = *addr;		/* read *addr */	    val = *addr;		/* read *addr */	    *addr=save1;	    *b=save2;	    if (val != cnt) {		    DP(printf("Found %08x  at Address %08x (failure)\n", (unsigned int)val, (unsigned int) addr));		    /* fix boundary condition.. STARTVAL means zero */		    if(cnt==STARTVAL/sizeof(long)) cnt=0;		    return (cnt * sizeof(long));	    }    }    return maxsize;}/* ------------------------------------------------------------------------- *//* ppcboot interface function to SDRAM init - this is where all the * controlling logic happens */long intinitdram(int board_type){	int s0 = 0, s1 = 0;	int checkbank[4] = { [0 ... 3] = 0 };		ulong bank_no, realsize, total, check;	AUX_MEM_DIMM_INFO dimmInfo1;	AUX_MEM_DIMM_INFO dimmInfo2;	int nhr;	/* first, use the SPD to get info about the SDRAM/ DDRRAM */	/* check the NHR bit and skip mem init if it's already done */	nhr = get_hid0() & (1 << 16);	if (nhr) {		printf("Skipping SD- DDRRAM setup due to NHR bit being set\n");	} else {		/* DIMM0 */		s0 = check_dimm(0, &dimmInfo1);		/* DIMM1 */		s1 = check_dimm(1, &dimmInfo2);		memory_map_bank(0, 0, 0);		memory_map_bank(1, 0, 0);		memory_map_bank(2, 0, 0);		memory_map_bank(3, 0, 0);		if (dimmInfo1.numOfModuleBanks && setup_sdram(&dimmInfo1)) {			printf("Setup for DIMM1 failed.\n");		}		if (dimmInfo2.numOfModuleBanks && setup_sdram(&dimmInfo2)) {			printf("Setup for DIMM2 failed.\n");		}		/* set the NHR bit */		set_hid0(get_hid0() | (1 << 16));	}	/* next, size the SDRAM banks */	realsize = total = 0;	check = GB/4;	if (dimmInfo1.numOfModuleBanks > 0) {checkbank[0] = 1; printf("-- DIMM1 has 1 bank\n");}	if (dimmInfo1.numOfModuleBanks > 1) {checkbank[1] = 1; printf("-- DIMM1 has 2 banks\n");}	if (dimmInfo1.numOfModuleBanks > 2)		printf("Error, SPD claims DIMM1 has >2 banks\n");	if (dimmInfo2.numOfModuleBanks > 0) {checkbank[2] = 1; printf("-- DIMM2 has 1 bank\n");}	if (dimmInfo2.numOfModuleBanks > 1) {checkbank[3] = 1; printf("-- DIMM2 has 2 banks\n");}	if (dimmInfo2.numOfModuleBanks > 2)		printf("Error, SPD claims DIMM2 has >2 banks\n");	for (bank_no = 0; bank_no < CFG_DRAM_BANKS; bank_no++) {		/* skip over banks that are not populated */		if (! checkbank[bank_no])			continue;		if ((total + check) > CFG_GT_REGS)			check = CFG_GT_REGS - total;		memory_map_bank(bank_no, total, check);		realsize = dram_size((long int *)total, check);		memory_map_bank(bank_no, total, realsize);		total += realsize;	}/*	Setup Ethernet DMA Adress window to DRAM Area */	return(total);}/* ***************************************************************************************! *                             SDRAM INIT                                              *! *  This procedure detect all Sdram types: 64, 128, 256, 512 Mbit, 1Gbit and 2Gb       *! *               This procedure fits only the Atlantis                                *! *                                                                                     *! *************************************************************************************** *//* ***************************************************************************************! *                             DFCDL initialize MV643xx Design Considerations             *! *                                                                                     *! *************************************************************************************** */int set_dfcdlInit (void){	int i;	unsigned int dfcdl_word = 0x0000014f;	for (i = 0; i < 64; i++) {		GT_REG_WRITE (SRAM_DATA0, dfcdl_word);	}	GT_REG_WRITE (DFCDL_CONFIG0, 0x00300000);	/* enable dynamic delay line updating */	return (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲一本大道中文在线| 亚洲欧洲av另类| 欧美日韩精品高清| 欧美综合天天夜夜久久| 91久久久免费一区二区| 精品视频一区 二区 三区| 91精品麻豆日日躁夜夜躁| 欧美性生交片4| 日韩美女在线视频| 中文在线一区二区| 一区二区三区中文字幕电影 | 午夜精品视频一区| 欧美bbbbb| 成人激情综合网站| 欧美一级高清片| 综合色天天鬼久久鬼色| 精品一区二区免费在线观看| 欧美一区二区三区在线视频| 日本不卡一二三| 一本一本大道香蕉久在线精品| 久久综合久久99| 日韩精品欧美成人高清一区二区| 色综合久久综合| 国产欧美一区二区三区在线看蜜臀 | 国产高清不卡一区| 欧美一区午夜精品| 午夜精品福利一区二区三区av | 亚洲精品一区二区三区福利| 另类成人小视频在线| 日韩欧美一二区| 久久aⅴ国产欧美74aaa| 欧美一二三四在线| 久久99精品久久久久婷婷| 91精品国产丝袜白色高跟鞋| 日韩精品福利网| 亚洲精品在线电影| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品综合一区二区三区| 久久夜色精品国产欧美乱极品| 久久91精品久久久久久秒播| 久久这里只有精品6| 成人丝袜18视频在线观看| 成人免费在线播放视频| 欧美性三三影院| 亚洲1区2区3区视频| 91国产丝袜在线播放| 久久精品国产99国产| 51午夜精品国产| 成人午夜视频福利| 视频一区二区三区中文字幕| 欧美性xxxxxxxx| 激情久久久久久久久久久久久久久久| 国产日韩欧美综合在线| 欧美三级电影网站| 成人在线一区二区三区| 亚洲不卡一区二区三区| 国产精品欧美综合在线| 日韩欧美一区二区久久婷婷| 成人性视频免费网站| 亚洲h在线观看| 亚洲卡通动漫在线| 中文字幕精品在线不卡| 日韩欧美中文字幕精品| 欧美亚洲丝袜传媒另类| 成人免费三级在线| 久久99国产精品尤物| 亚洲国产日韩综合久久精品| 亚洲靠逼com| 国产精品久久久久婷婷| 中文字幕欧美三区| 久久久久久麻豆| 日韩欧美久久一区| 欧美一区二区私人影院日本| 欧美日韩电影一区| 日韩一区二区在线观看| 欧美日韩午夜在线| 欧美一级片在线看| 欧美亚洲高清一区二区三区不卡| 91欧美激情一区二区三区成人| 国产成人免费在线观看不卡| 精品一区二区三区日韩| 国模一区二区三区白浆| 成人精品高清在线| 91国偷自产一区二区三区观看 | 国产又黄又大久久| 美女精品自拍一二三四| 成人少妇影院yyyy| 国产精品系列在线观看| 欧美伊人精品成人久久综合97| 国产亚洲女人久久久久毛片| 亚洲天堂网中文字| 国产精品资源在线观看| 欧美乱妇23p| 国产精品久久久久婷婷二区次| 日韩欧美亚洲国产另类| 欧美tickle裸体挠脚心vk| 亚洲视频每日更新| 一区二区三区日韩精品视频| 亚洲天堂2016| 99在线精品一区二区三区| 国产欧美一区二区精品性色超碰| 美女视频免费一区| 色综合欧美在线| 国产蜜臀97一区二区三区| 青青草97国产精品免费观看| 国产91精品欧美| 日韩一区二区三区视频在线| 亚洲国产精品激情在线观看| 欧美aaaaa成人免费观看视频| av一本久道久久综合久久鬼色| 日韩欧美精品三级| 加勒比av一区二区| 国产精品毛片高清在线完整版| 肉丝袜脚交视频一区二区| 欧美综合久久久| 亚洲免费成人av| 91视频免费看| 一区二区三区在线视频观看58 | 日韩欧美一级二级三级 | 欧美成人精精品一区二区频| 一区二区欧美在线观看| 欧美性生活一区| 亚洲3atv精品一区二区三区| 欧美一级高清大全免费观看| 日本亚洲三级在线| 精品播放一区二区| 一本一本大道香蕉久在线精品| 日韩电影在线一区二区三区| 国产日韩欧美一区二区三区乱码| www.欧美日韩| 午夜欧美视频在线观看| 欧美日韩一级二级三级| 麻豆国产精品官网| 久久蜜桃av一区精品变态类天堂| 91在线无精精品入口| 国产精品视频一二三| 99视频精品全部免费在线| 亚洲综合色网站| 日韩精品自拍偷拍| 91丝袜美女网| 黄色日韩网站视频| 亚洲女人小视频在线观看| 欧美人动与zoxxxx乱| 国产成人精品三级麻豆| 亚洲一二三四久久| 26uuu亚洲综合色| 99久久国产综合精品色伊| 午夜不卡av在线| 最新国产成人在线观看| 欧美日韩在线三级| 国内精品免费**视频| 午夜视频在线观看一区二区三区| 精品国产一区二区三区久久影院 | 国产精品久久久久久妇女6080| 欧美日韩精品三区| 99国产精品久| 成人aaaa免费全部观看| 久久99久久99小草精品免视看| 亚洲一区二区三区四区在线免费观看| 天天色综合成人网| 中文字幕亚洲在| 久久精品亚洲精品国产欧美| 91精品国产高清一区二区三区| 91国产丝袜在线播放| 色综合久久天天| 久久久影视传媒| 精品999久久久| www国产亚洲精品久久麻豆| 欧美人妇做爰xxxⅹ性高电影 | 亚洲一区二区在线免费看| 亚洲精品久久嫩草网站秘色| 综合激情成人伊人| 亚洲国产精品t66y| 1024亚洲合集| 亚洲第一会所有码转帖| 亚洲福利视频三区| 热久久久久久久| 黄页网站大全一区二区| 成人综合激情网| 欧美日韩一区二区三区高清| 欧美久久久久中文字幕| 精品国产一区二区亚洲人成毛片| 国产日韩v精品一区二区| 亚洲三级在线看| 欧美aaa在线| www.亚洲激情.com| 欧美精品1区2区3区| 青草av.久久免费一区| 青青草原综合久久大伊人精品优势 | 亚洲精选免费视频| 日产欧产美韩系列久久99| 国产精品99久久久久久久女警| 91丨porny丨中文| 久久丝袜美腿综合| 亚洲观看高清完整版在线观看| 国产成人在线色| 日韩欧美卡一卡二| 日韩中文字幕一区二区三区| 高清久久久久久| 精品日韩欧美一区二区|