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

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

?? p3mx.c

?? U-boot latest tarball
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * (C) Copyright 2006 * Stefan Roese, DENX Software Engineering, sr@denx.de. * * Based on original work by *	Roel Loeffen, (C) Copyright 2006 Prodrive B.V. *	Josh Huber, (C) Copyright 2001 Mission Critical Linux, Inc. * * 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 * * modifications for the DB64360 eval board based by Ingo.Assmus@keymile.com * modifications for the cpci750 by reinhard.arlt@esd-electronics.com * modifications for the P3M750 by roel.loeffen@prodrive.nl *//* * p3m750.c - main board support/init for the Prodrive p3m750/p3m7448. */#include <common.h>#include <74xx_7xx.h>#include "../../Marvell/include/memory.h"#include "../../Marvell/include/pci.h"#include "../../Marvell/include/mv_gen_reg.h"#include <net.h>#include <i2c.h>#include "eth.h"#include "mpsc.h"#include "64460.h"#include "mv_regs.h"#include "p3mx.h"DECLARE_GLOBAL_DATA_PTR;#undef	DEBUG/*#define	DEBUG */#ifdef CONFIG_PCI#define	MAP_PCI#endif /* of CONFIG_PCI */#ifdef DEBUG#define DP(x) x#else#define DP(x)#endifextern flash_info_t flash_info[];/* ------------------------------------------------------------------------- *//* this is the current GT register space location *//* it starts at CONFIG_SYS_DFL_GT_REGS but moves later to CONFIG_SYS_GT_REGS *//* Unfortunately, we cant change it while we are in flash, so we initialize it * to the "final" value. This means that any debug_led calls before * board_early_init_f wont work right (like in cpu_init_f). * See also my_remap_gt_regs below. (NTL) */void board_prebootm_init (void);unsigned int INTERNAL_REG_BASE_ADDR = CONFIG_SYS_GT_REGS;int display_mem_map (void);void set_led(int);/* ------------------------------------------------------------------------- *//* * This is a version of the GT register space remapping function that * doesn't touch globals (meaning, it's ok to run from flash.) * * Unfortunately, this has the side effect that a writable * INTERNAL_REG_BASE_ADDR is impossible. Oh well. */void my_remap_gt_regs (u32 cur_loc, u32 new_loc){	u32 temp;	/* check and see if it's already moved */	temp = in_le32 ((u32 *) (new_loc + INTERNAL_SPACE_DECODE));	if ((temp & 0xffff) == new_loc >> 16)		return;	temp = (in_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE)) &		0xffff0000) | (new_loc >> 16);	out_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE), temp);	while (GTREGREAD (INTERNAL_SPACE_DECODE) != temp);}#ifdef CONFIG_PCIstatic void gt_pci_config (void){	unsigned int stat;	unsigned int val = 0x00fff864;	/* DINK32: BusNum 23:16,  DevNum 15:11, */					/* FuncNum 10:8, RegNum 7:2 */	/*	 * In PCIX mode devices provide their own bus and device numbers.	 * We query the Discovery II's	 * config registers by writing ones to the bus and device.	 * We then update the Virtual register with the correct value for the	 * bus and device.	 */	if ((GTREGREAD (PCI_0_MODE) & (BIT4 | BIT5)) != 0) {	/* if  PCI-X */		GT_REG_WRITE (PCI_0_CONFIG_ADDR, BIT31 | val);		GT_REG_READ (PCI_0_CONFIG_DATA_VIRTUAL_REG, &stat);		GT_REG_WRITE (PCI_0_CONFIG_ADDR, BIT31 | val);		GT_REG_WRITE (PCI_0_CONFIG_DATA_VIRTUAL_REG,			      (stat & 0xffff0000) | CONFIG_SYS_PCI_IDSEL);	}	if ((GTREGREAD (PCI_1_MODE) & (BIT4 | BIT5)) != 0) {	/* if  PCI-X */		GT_REG_WRITE (PCI_1_CONFIG_ADDR, BIT31 | val);		GT_REG_READ (PCI_1_CONFIG_DATA_VIRTUAL_REG, &stat);		GT_REG_WRITE (PCI_1_CONFIG_ADDR, BIT31 | val);		GT_REG_WRITE (PCI_1_CONFIG_DATA_VIRTUAL_REG,			      (stat & 0xffff0000) | CONFIG_SYS_PCI_IDSEL);	}	/* Enable master */	PCI_MASTER_ENABLE (0, SELF);	PCI_MASTER_ENABLE (1, SELF);	/* Enable PCI0/1 Mem0 and IO 0 disable all others */	GT_REG_READ (BASE_ADDR_ENABLE, &stat);	stat |= (1 << 11) | (1 << 12) | (1 << 13) | (1 << 16) | (1 << 17) |		(1 << 18);	stat &= ~((1 << 9) | (1 << 10) | (1 << 14) | (1 << 15));	GT_REG_WRITE (BASE_ADDR_ENABLE, stat);	/* ronen:	 * add write to pci remap registers for 64460.	 * in 64360 when writing to pci base go and overide remap automaticaly,	 * in 64460 it doesn't	 */	GT_REG_WRITE (PCI_0_IO_BASE_ADDR, CONFIG_SYS_PCI0_IO_SPACE >> 16);	GT_REG_WRITE (PCI_0I_O_ADDRESS_REMAP, CONFIG_SYS_PCI0_IO_SPACE_PCI >> 16);	GT_REG_WRITE (PCI_0_IO_SIZE, (CONFIG_SYS_PCI0_IO_SIZE - 1) >> 16);	GT_REG_WRITE (PCI_0_MEMORY0_BASE_ADDR, CONFIG_SYS_PCI0_MEM_BASE >> 16);	GT_REG_WRITE (PCI_0MEMORY0_ADDRESS_REMAP, CONFIG_SYS_PCI0_MEM_BASE >> 16);	GT_REG_WRITE (PCI_0_MEMORY0_SIZE, (CONFIG_SYS_PCI0_MEM_SIZE - 1) >> 16);	GT_REG_WRITE (PCI_1_IO_BASE_ADDR, CONFIG_SYS_PCI1_IO_SPACE >> 16);	GT_REG_WRITE (PCI_1I_O_ADDRESS_REMAP, CONFIG_SYS_PCI1_IO_SPACE_PCI >> 16);	GT_REG_WRITE (PCI_1_IO_SIZE, (CONFIG_SYS_PCI1_IO_SIZE - 1) >> 16);	GT_REG_WRITE (PCI_1_MEMORY0_BASE_ADDR, CONFIG_SYS_PCI1_MEM_BASE >> 16);	GT_REG_WRITE (PCI_1MEMORY0_ADDRESS_REMAP, CONFIG_SYS_PCI1_MEM_BASE >> 16);	GT_REG_WRITE (PCI_1_MEMORY0_SIZE, (CONFIG_SYS_PCI1_MEM_SIZE - 1) >> 16);	/* PCI interface settings */	/* Timeout set to retry forever */	GT_REG_WRITE (PCI_0TIMEOUT_RETRY, 0x0);	GT_REG_WRITE (PCI_1TIMEOUT_RETRY, 0x0);	/* ronen - enable only CS0 and Internal reg!! */	GT_REG_WRITE (PCI_0BASE_ADDRESS_REGISTERS_ENABLE, 0xfffffdfe);	GT_REG_WRITE (PCI_1BASE_ADDRESS_REGISTERS_ENABLE, 0xfffffdfe);	/* ronen:	 * update the pci internal registers base address.	 */#ifdef MAP_PCI	for (stat = 0; stat <= PCI_HOST1; stat++)		pciWriteConfigReg (stat,				   PCI_INTERNAL_REGISTERS_MEMORY_MAPPED_BASE_ADDRESS,				   SELF, CONFIG_SYS_GT_REGS);#endif}#endif/* Setup CPU interface paramaters */static void gt_cpu_config (void){	cpu_t cpu = get_cpu_type ();	ulong tmp;	/* cpu configuration register */	tmp = GTREGREAD (CPU_CONFIGURATION);	/* set the SINGLE_CPU bit  see MV64460 */#ifndef CONFIG_SYS_GT_DUAL_CPU		/* SINGLE_CPU seems to cause JTAG problems */	tmp |= CPU_CONF_SINGLE_CPU;#endif	tmp &= ~CPU_CONF_AACK_DELAY_2;	tmp |= CPU_CONF_DP_VALID;	tmp |= CPU_CONF_AP_VALID;	tmp |= CPU_CONF_PIPELINE;	GT_REG_WRITE (CPU_CONFIGURATION, tmp);	/* Marvell (VXWorks) writes 0x20220FF */	/* CPU master control register */	tmp = GTREGREAD (CPU_MASTER_CONTROL);	tmp |= CPU_MAST_CTL_ARB_EN;	if ((cpu == CPU_7400) ||	    (cpu == CPU_7410) || (cpu == CPU_7455) || (cpu == CPU_7450)) {		tmp |= CPU_MAST_CTL_CLEAN_BLK;		tmp |= CPU_MAST_CTL_FLUSH_BLK;	} else {		/* cleanblock must be cleared for CPUs		 * that do not support this command (603e, 750)		 * see Res#1 */		tmp &= ~CPU_MAST_CTL_CLEAN_BLK;		tmp &= ~CPU_MAST_CTL_FLUSH_BLK;	}	GT_REG_WRITE (CPU_MASTER_CONTROL, tmp);}/* * board_early_init_f. * * set up gal. device mappings, etc. */int board_early_init_f (void){	/* set up the GT the way the kernel wants it	 * the call to move the GT register space will obviously	 * fail if it has already been done, but we're going to assume	 * that if it's not at the power-on location, it's where we put	 * it last time. (huber)	 */	my_remap_gt_regs (CONFIG_SYS_DFL_GT_REGS, CONFIG_SYS_GT_REGS);#ifdef CONFIG_PCI	gt_pci_config ();#endif	/* mask all external interrupt sources */	GT_REG_WRITE (CPU_INTERRUPT_MASK_REGISTER_LOW, 0);	GT_REG_WRITE (CPU_INTERRUPT_MASK_REGISTER_HIGH, 0);	/* new in >MV6436x */	GT_REG_WRITE (CPU_INTERRUPT_1_MASK_REGISTER_LOW, 0);	GT_REG_WRITE (CPU_INTERRUPT_1_MASK_REGISTER_HIGH, 0);	/* --------------------- */	GT_REG_WRITE (PCI_0INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);	GT_REG_WRITE (PCI_0INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);	GT_REG_WRITE (PCI_1INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);	GT_REG_WRITE (PCI_1INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);	/* Device and Boot bus settings	 */	memoryMapDeviceSpace(DEVICE0, 0, 0);	GT_REG_WRITE(DEVICE_BANK0PARAMETERS, 0);	memoryMapDeviceSpace(DEVICE1, 0, 0);	GT_REG_WRITE(DEVICE_BANK1PARAMETERS, 0);	memoryMapDeviceSpace(DEVICE2, 0, 0);	GT_REG_WRITE(DEVICE_BANK2PARAMETERS, 0);	memoryMapDeviceSpace(DEVICE3, 0, 0);	GT_REG_WRITE(DEVICE_BANK3PARAMETERS, 0);	GT_REG_WRITE(DEVICE_BOOT_BANK_PARAMETERS, CONFIG_SYS_BOOT_PAR);	gt_cpu_config();	/* MPP setup */	GT_REG_WRITE (MPP_CONTROL0, CONFIG_SYS_MPP_CONTROL_0);	GT_REG_WRITE (MPP_CONTROL1, CONFIG_SYS_MPP_CONTROL_1);	GT_REG_WRITE (MPP_CONTROL2, CONFIG_SYS_MPP_CONTROL_2);	GT_REG_WRITE (MPP_CONTROL3, CONFIG_SYS_MPP_CONTROL_3);	GT_REG_WRITE (GPP_LEVEL_CONTROL, CONFIG_SYS_GPP_LEVEL_CONTROL);	set_led(LED_RED);	return 0;}/* various things to do after relocation */int misc_init_r (){	u8 val;	icache_enable ();#ifdef CONFIG_SYS_L2	l2cache_enable ();#endif#ifdef CONFIG_MPSC	mpsc_sdma_init ();	mpsc_init2 ();#endif	/*	 * Enable trickle changing in RTC upon powerup	 * No diode, 250 ohm series resistor	 */	val = 0xa5;	i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 8, 1, &val, 1);	return 0;}int board_early_init_r(void){	/* now relocate the debug serial driver */	mpsc_putchar += gd->reloc_off;	mpsc_getchar += gd->reloc_off;	mpsc_test_char += gd->reloc_off;	return 0;}void after_reloc (ulong dest_addr, gd_t * gd){	memoryMapDeviceSpace (BOOT_DEVICE, CONFIG_SYS_BOOT_SPACE, CONFIG_SYS_BOOT_SIZE);/*	display_mem_map(); */	/* now, jump to the main U-Boot board init code */	set_led(LED_GREEN);	board_init_r (gd, dest_addr);	/* NOTREACHED */}/* * Check Board Identity: * right now, assume borad type. (there is just one...after all) */int checkboard (void){	char *s = getenv("serial#");	printf("Board: %s", CONFIG_SYS_BOARD_NAME);	if (s != NULL) {		puts(", serial# ");		puts(s);	}	putc('\n');	return (0);}void set_led(int col){	int tmp;	int on_pin;	int off_pin;	/* Program Mpp[22] as Gpp[22]	 * Program Mpp[23] as Gpp[23]	 */	tmp = GTREGREAD(MPP_CONTROL2);	tmp &= 0x00ffffff;	GT_REG_WRITE(MPP_CONTROL2,tmp);	/* Program Gpp[22] and Gpp[23] as output	 */	tmp = GTREGREAD(GPP_IO_CONTROL);	tmp |= 0x00C00000;	GT_REG_WRITE(GPP_IO_CONTROL, tmp);	/* Program Gpp[22] and Gpp[23] as active high	 */	tmp = GTREGREAD(GPP_LEVEL_CONTROL);	tmp &= 0xff3fffff;	GT_REG_WRITE(GPP_LEVEL_CONTROL, tmp);	switch(col) {	default:	case LED_OFF :		on_pin  = 0;		off_pin = ((1 << 23) | (1 << 22));		break;	case LED_RED :		on_pin  = (1 << 23);		off_pin = (1 << 22);		break;	case LED_GREEN :		on_pin  = (1 << 22);		off_pin = (1 << 23);		break;	case LED_ORANGE :		on_pin  = ((1 << 23) | (1 << 22));		off_pin = 0;		break;	}	/* Set output Gpp[22] and Gpp[23]	 */	tmp = GTREGREAD(GPP_VALUE);	tmp |= on_pin;	tmp &= ~off_pin;	GT_REG_WRITE(GPP_VALUE, tmp);}int display_mem_map (void){	int i;	unsigned int base, size, width;#ifdef CONFIG_PCI	int j;#endif	/* SDRAM */	printf ("SD (DDR) RAM\n");	for (i = 0; i <= BANK3; i++) {		base = memoryGetBankBaseAddress (i);		size = memoryGetBankSize (i);		if (size != 0)			printf ("BANK%d: base - 0x%08x\tsize - %dM bytes\n",				i, base, size >> 20);	}#ifdef CONFIG_PCI	/* CPU's PCI windows */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看av不卡| 欧美一区二区播放| 奇米影视一区二区三区| 国产午夜精品久久久久久免费视| 色先锋资源久久综合| 国产精品18久久久| 日韩精品视频网站| 亚洲免费av高清| 国产欧美综合色| 欧美一区二区高清| 在线观看亚洲专区| 国产成人免费视频一区| 免费欧美高清视频| 亚洲国产一区二区a毛片| 国产精品色在线观看| 日韩美女一区二区三区| 欧美视频在线不卡| 色综合天天天天做夜夜夜夜做| 精东粉嫩av免费一区二区三区| 天堂精品中文字幕在线| 一区二区三区国产精华| 中文字幕av免费专区久久| 精品免费国产二区三区 | 国产成人在线网站| 日韩精品乱码免费| 亚洲综合色在线| 一区二区三区中文字幕在线观看| 国产欧美一区二区精品性色 | 国产在线麻豆精品观看| 日本在线观看不卡视频| 天堂va蜜桃一区二区三区漫画版| 一区二区三区不卡视频| 亚洲人吸女人奶水| 中文字幕人成不卡一区| 国产精品色眯眯| 国产精品色噜噜| 亚洲欧美福利一区二区| 最新欧美精品一区二区三区| 中文字幕乱码亚洲精品一区| 日本一区二区三区在线观看| 久久精品夜夜夜夜久久| 久久久久国产精品麻豆ai换脸| 日韩精品影音先锋| 久久奇米777| 国产欧美日韩三区| 亚洲欧洲日产国产综合网| 亚洲视频 欧洲视频| 亚洲欧美综合网| 亚洲一区av在线| 日本最新不卡在线| 久久精品免费看| 国产成人一区二区精品非洲| 国产99久久久精品| 9人人澡人人爽人人精品| 91香蕉视频mp4| 欧美亚洲国产怡红院影院| 欧美日韩一区二区在线观看| 欧美精品一卡两卡| 日韩欧美一级在线播放| 精品国产91亚洲一区二区三区婷婷 | 国产欧美日韩不卡| 亚洲同性同志一二三专区| 亚洲一区二区三区在线看| 青青青伊人色综合久久| 国产精品自拍av| 91丨porny丨首页| 欧美三级视频在线观看| 欧美电视剧在线观看完整版| 国产精品午夜免费| 亚洲愉拍自拍另类高清精品| 久久精品国产亚洲高清剧情介绍| 国产一区欧美日韩| 91高清视频在线| 精品久久久三级丝袜| 国产精品卡一卡二| 亚洲第一会所有码转帖| 久久99久久99小草精品免视看| 风间由美一区二区av101| 色综合久久88色综合天天免费| 欧美精品自拍偷拍| 国产精品日韩成人| 亚洲国产精品久久人人爱| 麻豆精品国产传媒mv男同| 99精品在线免费| 精品日韩在线观看| 亚洲图片另类小说| 国产在线视频一区二区| 日本精品一区二区三区高清| 欧美xxxx老人做受| 亚洲香肠在线观看| 国产99久久久久久免费看农村| 欧美日韩精品一二三区| 久久九九99视频| 天天操天天色综合| 91同城在线观看| 精品国产污污免费网站入口 | 精品国产一区二区亚洲人成毛片| 国产精品毛片久久久久久久| 男男视频亚洲欧美| 色爱区综合激月婷婷| 国产午夜精品理论片a级大结局| 天天综合天天综合色| 91免费在线视频观看| 国产人妖乱国产精品人妖| 全国精品久久少妇| 欧美日韩在线播| 亚洲人成网站在线| 国产黑丝在线一区二区三区| 欧美一区二区三区啪啪| 亚洲影院久久精品| 99re视频这里只有精品| 久久蜜臀中文字幕| 久久99精品久久久久婷婷| 欧美美女直播网站| 一区二区三区四区不卡视频| 国产91精品久久久久久久网曝门| 日韩久久免费av| 日日噜噜夜夜狠狠视频欧美人| 色综合咪咪久久| **网站欧美大片在线观看| 风间由美一区二区三区在线观看 | 国产成人av电影在线观看| 91精品国产91久久综合桃花 | 性久久久久久久久久久久| 91丨九色丨国产丨porny| 国产欧美日产一区| 国产99一区视频免费| 国产欧美日韩不卡免费| 国产一区二区精品在线观看| 亚洲精品在线三区| 久久精品国产网站| 精品捆绑美女sm三区| 极品瑜伽女神91| 国产午夜精品在线观看| 国产成人激情av| 国产精品天天看| 99re视频精品| 亚洲国产成人av好男人在线观看| 欧美天堂亚洲电影院在线播放| 亚洲最快最全在线视频| 欧美伊人精品成人久久综合97| 一区二区三区日韩欧美| 欧美午夜在线一二页| 水蜜桃久久夜色精品一区的特点| 欧美女孩性生活视频| 麻豆成人免费电影| 久久女同性恋中文字幕| 高清国产一区二区| 综合久久久久综合| 欧美午夜精品一区二区三区| 亚洲成a人片综合在线| 欧美一区二区在线免费播放| 麻豆精品在线播放| 国产免费观看久久| 91久久精品日日躁夜夜躁欧美| 亚洲图片欧美综合| 欧美xxxx老人做受| 成人性生交大片免费| 一区二区在线免费观看| 91精品国模一区二区三区| 激情小说亚洲一区| 亚洲日本一区二区三区| 欧美日韩在线综合| 国产一区二区三区免费在线观看| 国产精品美女久久久久久久久久久| av影院午夜一区| 日本欧美韩国一区三区| 久久精品在线免费观看| 色综合久久久久综合体| 日韩精品一级二级| 国产女人18水真多18精品一级做| 日本道在线观看一区二区| 久久国产精品露脸对白| 国产精品美女一区二区在线观看| 欧美日韩一区二区在线视频| 狠狠狠色丁香婷婷综合久久五月| 一区免费观看视频| 欧美一区二区日韩一区二区| 粉嫩绯色av一区二区在线观看| 亚洲福利一区二区三区| 久久久国产精品不卡| 欧美日韩在线精品一区二区三区激情| 精品一区二区三区av| 亚洲综合色视频| 国产欧美精品国产国产专区 | 色老头久久综合| 国产资源精品在线观看| 亚洲一二三级电影| 中文久久乱码一区二区| 日韩一区二区免费视频| 97se亚洲国产综合在线| 精品一区二区免费视频| 亚洲国产欧美在线| 国产午夜精品一区二区| 91精品一区二区三区在线观看| 99热这里都是精品| 国产又粗又猛又爽又黄91精品| 亚洲成人午夜影院| 1024国产精品| 久久久精品日韩欧美|