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

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

?? pip405.c

?? ppcboot2.0 華恒光盤里帶的BOOTLOADER
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland, 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 * * * TODO: clean-up */#include <common.h>#include "pip405.h"#include <asm/processor.h>#include <i2c.h>#include "../common/isa.h"#include "../common/common_util.h"#undef SDRAM_DEBUG#define FALSE           0#define TRUE            1/* stdlib.h causes some compatibility problems; should fixe these! -- wd */#ifndef __ldiv_t_definedtypedef struct {	long int quot;		/* Quotient */	long int rem;		/* Remainder    */} ldiv_t;extern ldiv_t ldiv (long int __numer, long int __denom);# define __ldiv_t_defined	1#endiftypedef enum {	SDRAM_NO_ERR,	SDRAM_SPD_COMM_ERR,	SDRAM_SPD_CHKSUM_ERR,	SDRAM_UNSUPPORTED_ERR,	SDRAM_UNKNOWN_ERR} SDRAM_ERR;typedef struct {	const unsigned char mode;	const unsigned char row;	const unsigned char col;	const unsigned char bank;} SDRAM_SETUP;static const SDRAM_SETUP sdram_setup_table[] = {	{1, 11, 9, 2},	{1, 11, 10, 2},	{2, 12, 9, 4},	{2, 12, 10, 4},	{3, 13, 9, 4},	{3, 13, 10, 4},	{3, 13, 11, 4},	{4, 12, 8, 2},	{4, 12, 8, 4},	{5, 11, 8, 2},	{5, 11, 8, 4},	{6, 13, 8, 2},	{6, 13, 8, 4},	{7, 13, 9, 2},	{7, 13, 10, 2},	{0, 0, 0, 0}};static const unsigned char cal_indextable[] = {	9, 23, 25};/* * translate ns.ns/10 coding of SPD timing values * into 10 ps unit values */unsigned short NS10to10PS (unsigned char spd_byte, unsigned char spd_version){	unsigned short ns, ns10;	/* isolate upper nibble */	ns = (spd_byte >> 4) & 0x0F;	/* isolate lower nibble */	ns10 = (spd_byte & 0x0F);	return (ns * 100 + ns10 * 10);}/* * translate ns.ns/4 coding of SPD timing values * into 10 ps unit values */unsigned short NS4to10PS (unsigned char spd_byte, unsigned char spd_version){	unsigned short ns, ns4;	/* isolate upper 6 bits */	ns = (spd_byte >> 2) & 0x3F;	/* isloate lower 2 bits */	ns4 = (spd_byte & 0x03);	return (ns * 100 + ns4 * 25);}/* * translate ns coding of SPD timing values * into 10 ps unit values */unsigned short NSto10PS (unsigned char spd_byte){	return (spd_byte * 100);}void SDRAM_err (const char *s){#ifndef SDRAM_DEBUG	DECLARE_GLOBAL_DATA_PTR;	(void) get_clocks ();	gd->baudrate = 9600;	serial_init ();#endif	serial_puts ("\n");	serial_puts (s);	serial_puts ("\n enable SDRAM_DEBUG for more info\n");	for (;;);}#ifdef SDRAM_DEBUGvoid 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);}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);}#endifint board_pre_init (void){	unsigned char dataout[1];	unsigned char datain[128];	unsigned long sdram_size;	SDRAM_SETUP *t = (SDRAM_SETUP *) sdram_setup_table;	unsigned long memclk;	unsigned long tmemclk = 0;	unsigned long tmp, bank, baseaddr, bank_size;	unsigned short i;	unsigned char rows, cols, banks, sdram_banks, density;	unsigned char supported_cal, trp_clocks, trcd_clocks, tras_clocks,			trc_clocks, tctp_clocks;	unsigned char cal_index, cal_val, spd_version, spd_chksum;	unsigned char buf[8];#ifdef SDRAM_DEBUG	DECLARE_GLOBAL_DATA_PTR;#endif	memclk = get_bus_freq (tmemclk);	tmemclk = 1000000000 / (memclk / 100);	/* in 10 ps units */#ifdef SDRAM_DEBUG	(void) get_clocks ();	gd->baudrate = 9600;	serial_init ();	serial_puts ("\nstart SDRAM Setup\n");#endif	/* Read Serial Presence Detect Information */	i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);	dataout[0] = 0;	for (i = 0; i < 128; i++)		datain[i] = 127;	i2c_read(SPD_EEPROM_ADDRESS,0,1,datain,128);#ifdef SDRAM_DEBUG	serial_puts ("\ni2c_read returns ");	write_hex (i);	serial_puts ("\n");#endif#ifdef SDRAM_DEBUG	for (i = 0; i < 128; i++) {		write_hex (datain[i]);		serial_puts (" ");		if (((i + 1) % 16) == 0)			serial_puts ("\n");	}	serial_puts ("\n");#endif	spd_chksum = 0;	for (i = 0; i < 63; i++) {		spd_chksum += datain[i];	}							/* endfor */	if (datain[63] != spd_chksum) {#ifdef SDRAM_DEBUG		serial_puts ("SPD chksum: 0x");		write_hex (datain[63]);		serial_puts (" != calc. chksum: 0x");		write_hex (spd_chksum);		serial_puts ("\n");#endif		SDRAM_err ("SPD checksum Error");	}	/* SPD seems to be ok, use it */	/* get SPD version */	spd_version = datain[62];	/* do some sanity checks on the kind of RAM */	if ((datain[0] < 0x80) ||	/* less than 128 valid bytes in SPD */		(datain[2] != 0x04) ||	/* if not SDRAM */		(!((datain[6] == 0x40) || (datain[6] == 0x48))) ||	/* or not (64 Bit or 72 Bit)  */		(datain[7] != 0x00) || (datain[8] != 0x01) ||	/* or not LVTTL signal levels */		(datain[126] == 0x66))	/* or a 66Mhz modules */		SDRAM_err ("unsupported SDRAM");#ifdef SDRAM_DEBUG	serial_puts ("SDRAM sanity ok\n");#endif	/* get number of rows/cols/banks out of byte 3+4+5 */	rows = datain[3];	cols = datain[4];	banks = datain[5];	/* get number of SDRAM banks out of byte 17 and	   supported CAS latencies out of byte 18 */	sdram_banks = datain[17];	supported_cal = datain[18] & ~0x81;	while (t->mode != 0) {		if ((t->row == rows) && (t->col == cols)			&& (t->bank == sdram_banks))			break;		t++;	}							/* endwhile */#ifdef SDRAM_DEBUG	serial_puts ("rows: ");	write_hex (rows);	serial_puts (" cols: ");	write_hex (cols);	serial_puts (" banks: ");	write_hex (banks);	serial_puts (" mode: ");	write_hex (t->mode);	serial_puts ("\n");#endif	if (t->mode == 0)		SDRAM_err ("unsupported SDRAM");	/* get tRP, tRCD, tRAS and density from byte 27+29+30+31 */#ifdef SDRAM_DEBUG	serial_puts ("tRP: ");	write_hex (datain[27]);	serial_puts ("\ntRCD: ");	write_hex (datain[29]);	serial_puts ("\ntRAS: ");	write_hex (datain[30]);	serial_puts ("\n");#endif	trp_clocks = (NSto10PS (datain[27]) + (tmemclk - 1)) / tmemclk;	trcd_clocks = (NSto10PS (datain[29]) + (tmemclk - 1)) / tmemclk;	tras_clocks = (NSto10PS (datain[30]) + (tmemclk - 1)) / tmemclk;	density = datain[31];	/* trc_clocks is sum of trp_clocks + tras_clocks */	trc_clocks = trp_clocks + tras_clocks;	/* ctp = ((trp + tras) - trp - trcd) => tras - trcd */	tctp_clocks =			((NSto10PS (datain[30]) - NSto10PS (datain[29])) +			 (tmemclk - 1)) / tmemclk;#ifdef SDRAM_DEBUG	serial_puts ("c_RP: ");	write_hex (trp_clocks);	serial_puts ("\nc_RCD: ");	write_hex (trcd_clocks);	serial_puts ("\nc_RAS: ");	write_hex (tras_clocks);	serial_puts ("\nc_RC: (RP+RAS): ");	write_hex (trc_clocks);	serial_puts ("\nc_CTP: ((RP+RAS)-RP-RCD): ");	write_hex (tctp_clocks);	serial_puts ("\nt_CTP: RAS - RCD: ");	write_hex ((unsigned				char) ((NSto10PS (datain[30]) -						NSto10PS (datain[29])) >> 8));	write_hex ((unsigned char) (NSto10PS (datain[30]) - NSto10PS (datain[29])));	serial_puts ("\ntmemclk: ");	write_hex ((unsigned char) (tmemclk >> 8));	write_hex ((unsigned char) (tmemclk));	serial_puts ("\n");#endif	cal_val = 255;	for (i = 6, cal_index = 0; (i > 0) && (cal_index < 3); i--) {		/* is this CAS latency supported ? */		if ((supported_cal >> i) & 0x01) {			buf[0] = datain[cal_indextable[cal_index]];			if (cal_index < 2) {				if (NS10to10PS (buf[0], spd_version) <= tmemclk)					cal_val = i;			} else {				/* SPD bytes 25+26 have another format */				if (NS4to10PS (buf[0], spd_version) <= tmemclk)					cal_val = i;			}	/* endif */			cal_index++;		}	/* endif */	}	/* endfor */#ifdef SDRAM_DEBUG	serial_puts ("CAL: ");	write_hex (cal_val + 1);	serial_puts ("\n");#endif	if (cal_val == 255)		SDRAM_err ("unsupported SDRAM");	/* get SDRAM timing register */	mtdcr (memcfga, mem_sdtr1);	tmp = mfdcr (memcfgd) & ~0x018FC01F;	/* insert CASL value *//*  tmp |= ((unsigned long)cal_val) << 23; */	tmp |= ((unsigned long) cal_val) << 23;	/* insert PTA value */	tmp |= ((unsigned long) (trp_clocks - 1)) << 18;	/* insert CTP value *//*  tmp |= ((unsigned long)(trc_clocks - trp_clocks - trcd_clocks - 1)) << 16; */	tmp |= ((unsigned long) (trc_clocks - trp_clocks - trcd_clocks)) << 16;	/* insert LDF (always 01) */	tmp |= ((unsigned long) 0x01) << 14;	/* insert RFTA value */	tmp |= ((unsigned long) (trc_clocks - 4)) << 2;	/* insert RCD value */	tmp |= ((unsigned long) (trcd_clocks - 1)) << 0;#ifdef SDRAM_DEBUG	serial_puts ("sdtr: ");	write_4hex (tmp);	serial_puts ("\n");#endif	/* write SDRAM timing register */	mtdcr (memcfga, mem_sdtr1);	mtdcr (memcfgd, tmp);	baseaddr = CFG_SDRAM_BASE;	bank_size = (((unsigned long) density) << 22) / 2;	/* insert AM value */	tmp = ((unsigned long) t->mode - 1) << 13;	/* insert SZ value; */	switch (bank_size) {	case 0x00400000:		tmp |= ((unsigned long) 0x00) << 17;		break;	case 0x00800000:		tmp |= ((unsigned long) 0x01) << 17;		break;	case 0x01000000:		tmp |= ((unsigned long) 0x02) << 17;		break;	case 0x02000000:		tmp |= ((unsigned long) 0x03) << 17;		break;	case 0x04000000:		tmp |= ((unsigned long) 0x04) << 17;		break;	case 0x08000000:		tmp |= ((unsigned long) 0x05) << 17;		break;	case 0x10000000:		tmp |= ((unsigned long) 0x06) << 17;		break;	default:		SDRAM_err ("unsupported SDRAM");	}	/* endswitch */	/* get SDRAM bank 0 register */	mtdcr (memcfga, mem_mb0cf);	bank = mfdcr (memcfgd) & ~0xFFCEE001;	bank |= (baseaddr | tmp | 0x01);#ifdef SDRAM_DEBUG	serial_puts ("bank0: baseaddr: ");	write_4hex (baseaddr);	serial_puts (" banksize: ");	write_4hex (bank_size);	serial_puts (" mb0cf: ");	write_4hex (bank);	serial_puts ("\n");#endif	baseaddr += bank_size;	sdram_size += bank_size;	/* write SDRAM bank 0 register */	mtdcr (memcfga, mem_mb0cf);	mtdcr (memcfgd, bank);	/* get SDRAM bank 1 register */	mtdcr (memcfga, mem_mb1cf);	bank = mfdcr (memcfgd) & ~0xFFCEE001;	sdram_size = 0;#ifdef SDRAM_DEBUG	serial_puts ("bank1: baseaddr: ");	write_4hex (baseaddr);	serial_puts (" banksize: ");	write_4hex (bank_size);#endif	if (banks == 2) {		bank |= (baseaddr | tmp | 0x01);		baseaddr += bank_size;		sdram_size += bank_size;	}	/* endif */#ifdef SDRAM_DEBUG	serial_puts (" mb1cf: ");	write_4hex (bank);	serial_puts ("\n");#endif	/* write SDRAM bank 1 register */	mtdcr (memcfga, mem_mb1cf);	mtdcr (memcfgd, bank);	/* get SDRAM bank 2 register */	mtdcr (memcfga, mem_mb2cf);	bank = mfdcr (memcfgd) & ~0xFFCEE001;	bank |= (baseaddr | tmp | 0x01);#ifdef SDRAM_DEBUG	serial_puts ("bank2: baseaddr: ");	write_4hex (baseaddr);	serial_puts (" banksize: ");	write_4hex (bank_size);	serial_puts (" mb2cf: ");	write_4hex (bank);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站最新网址| 日韩电影免费在线观看网站| 成人三级伦理片| 欧美国产日韩亚洲一区| 成人国产精品视频| 亚洲女同一区二区| 欧美视频一区在线| 日韩电影在线免费观看| 精品久久久久99| 成人高清免费观看| 亚洲一区二区偷拍精品| 91精品在线一区二区| 久久成人免费网站| 国产欧美一区二区三区在线看蜜臀| 成人18视频在线播放| 亚洲男同性恋视频| 91.com视频| 国产乱码精品一区二区三区av| 中文字幕+乱码+中文字幕一区| 91极品美女在线| 老司机免费视频一区二区 | 一区二区三区国产精华| 欧美午夜影院一区| 国产一区二区在线免费观看| 中文字幕在线一区| 欧美高清性hdvideosex| 国产一区二区91| 亚洲综合色自拍一区| 精品理论电影在线| 在线观看国产精品网站| 91精品久久久久久久久99蜜臂| 青青草97国产精品免费观看| 中文字幕的久久| 欧美一区二区三区视频在线观看| 国产1区2区3区精品美女| 亚洲一二三区视频在线观看| 国产亚洲一区二区在线观看| 欧美三级蜜桃2在线观看| 国产一区二区女| 婷婷亚洲久悠悠色悠在线播放| 国产欧美日韩在线视频| 欧美美女激情18p| eeuss鲁一区二区三区| 青娱乐精品视频| 一个色在线综合| 中文一区在线播放| 欧美成人video| 欧美综合欧美视频| 成人国产在线观看| 国产一区二区久久| 麻豆91在线看| 午夜精品一区二区三区电影天堂| 中文字幕在线不卡一区| 26uuu另类欧美亚洲曰本| 欧美日韩aaaaa| 欧美在线三级电影| 91丨九色丨黑人外教| 国产精品综合网| 精品在线免费视频| 日韩成人午夜精品| 婷婷久久综合九色综合绿巨人| 亚洲精品免费看| 国产精品萝li| 欧美精彩视频一区二区三区| www激情久久| 欧美大片拔萝卜| 日韩免费在线观看| 日韩精品一区二区三区四区视频| 91超碰这里只有精品国产| 欧美视频完全免费看| 91美女在线观看| 日本丰满少妇一区二区三区| 99久久亚洲一区二区三区青草| 成人久久视频在线观看| 大陆成人av片| 成人黄页在线观看| 91在线视频播放地址| 99久久精品国产网站| av资源网一区| 色香蕉久久蜜桃| 在线亚洲免费视频| 欧美日韩成人激情| 日韩一区二区在线观看视频| 欧美成人精精品一区二区频| 2020国产精品自拍| 久久久久国产精品麻豆| 国产区在线观看成人精品| **欧美大码日韩| 亚洲韩国精品一区| 美女免费视频一区二区| 国产在线精品一区在线观看麻豆| 国产精品一区在线观看乱码 | 精品久久一区二区三区| 精品国产一区二区三区久久久蜜月 | 国产欧美日产一区| 欧美国产视频在线| 夜夜夜精品看看| 老司机午夜精品99久久| 国产99久久久久久免费看农村| www.视频一区| 欧美日韩激情一区二区三区| 日韩欧美一区二区在线视频| 久久久91精品国产一区二区三区| 国产精品麻豆视频| 亚洲福利视频导航| 国产一区二区三区免费观看| 91在线云播放| 欧美一区二区高清| 欧美激情中文不卡| 亚洲一区二区av电影| 久久国产麻豆精品| 99久久精品国产网站| 欧美电影一区二区| 中文字幕av免费专区久久| 亚洲午夜免费电影| 国产乱码精品一区二区三区av| 色先锋aa成人| 精品日韩在线观看| 亚洲欧美成aⅴ人在线观看 | 亚洲国产欧美在线人成| 狠狠色丁香婷婷综合久久片| 不卡视频在线看| 精品毛片乱码1区2区3区| 亚洲视频精选在线| 久久99热99| 在线观看www91| 日本一区二区三区高清不卡| 五月婷婷久久丁香| 成人精品高清在线| 久久新电视剧免费观看| 亚洲va国产天堂va久久en| 成人av免费在线观看| 日韩欧美电影在线| 亚洲国产乱码最新视频| 国产精品1区2区| 日韩欧美另类在线| 亚洲高清免费观看高清完整版在线观看 | 国产精品污污网站在线观看| 三级在线观看一区二区 | 欧美亚洲日本国产| 欧美高清在线精品一区| 精品一区二区影视| 欧美美女一区二区在线观看| 一区二区三区四区国产精品| 成人国产精品免费网站| 久久免费国产精品| 国内精品国产成人| 3751色影院一区二区三区| 一区二区三区视频在线看| 成人avav影音| 中文字幕欧美激情一区| 国产精一区二区三区| 久久人人超碰精品| 久久99精品一区二区三区| 在线成人av影院| 性做久久久久久免费观看| 欧美亚一区二区| 亚洲成人av中文| 欧美日韩视频第一区| 亚洲精品一二三区| 91高清视频在线| 一区二区三区在线影院| 91视频91自| 亚洲免费观看高清| 色88888久久久久久影院野外| 中文字幕一区二区三区av | 91一区二区在线| 中文字幕在线一区免费| 成人涩涩免费视频| 亚洲欧洲三级电影| 色综合天天综合网国产成人综合天| 国产精品免费久久久久| 不卡在线观看av| 一级精品视频在线观看宜春院| 欧美性感一区二区三区| 亚洲风情在线资源站| 69精品人人人人| 奇米色一区二区| 2024国产精品| 成人app网站| 亚洲自拍欧美精品| 91精品国产综合久久精品性色| 美女视频黄 久久| 久久久久久综合| 99久久国产综合精品女不卡| 亚洲精品视频免费看| 欧美三级电影在线观看| 麻豆成人久久精品二区三区小说| 久久亚洲综合av| 成人综合婷婷国产精品久久蜜臀| 中文字幕亚洲区| 欧美吞精做爰啪啪高潮| 青青草国产成人av片免费| 久久久五月婷婷| www.成人网.com| 奇米精品一区二区三区在线观看| 久久精品亚洲精品国产欧美| 色综合激情久久| 免费精品99久久国产综合精品| 国产亚洲欧美色|