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

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

?? pmc440.c

?? uboot200903最新版本的通用uboot
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * pci_pre_init * * This routine is called just prior to registering the hose and gives * the board the opportunity to check things. Returning a value of zero * indicates that things are bad & PCI initialization should be aborted. * * Different boards may wish to customize the pci controller structure * (add regions, override default access routines, etc) or perform * certain pre-initialization actions. */#if defined(CONFIG_PCI)int pci_pre_init(struct pci_controller *hose){	unsigned long addr;	/*	 * Set priority for all PLB3 devices to 0.	 * Set PLB3 arbiter to fair mode.	 */	mfsdr(sdr_amp1, addr);	mtsdr(sdr_amp1, (addr & 0x000000FF) | 0x0000FF00);	addr = mfdcr(plb3_acr);	mtdcr(plb3_acr, addr | 0x80000000);	/*	 * Set priority for all PLB4 devices to 0.	 */	mfsdr(sdr_amp0, addr);	mtsdr(sdr_amp0, (addr & 0x000000FF) | 0x0000FF00);	addr = mfdcr(plb4_acr) | 0xa0000000;	/* Was 0x8---- */	mtdcr(plb4_acr, addr);	/*	 * Set Nebula PLB4 arbiter to fair mode.	 */	/* Segment0 */	addr = (mfdcr(plb0_acr) & ~plb0_acr_ppm_mask) | plb0_acr_ppm_fair;	addr = (addr & ~plb0_acr_hbu_mask) | plb0_acr_hbu_enabled;	addr = (addr & ~plb0_acr_rdp_mask) | plb0_acr_rdp_4deep;	addr = (addr & ~plb0_acr_wrp_mask) | plb0_acr_wrp_2deep;	mtdcr(plb0_acr, addr);	/* Segment1 */	addr = (mfdcr(plb1_acr) & ~plb1_acr_ppm_mask) | plb1_acr_ppm_fair;	addr = (addr & ~plb1_acr_hbu_mask) | plb1_acr_hbu_enabled;	addr = (addr & ~plb1_acr_rdp_mask) | plb1_acr_rdp_4deep;	addr = (addr & ~plb1_acr_wrp_mask) | plb1_acr_wrp_2deep;	mtdcr(plb1_acr, addr);#ifdef CONFIG_PCI_PNP	hose->fixup_irq = pmc440_pci_fixup_irq;#endif	return 1;}#endif /* defined(CONFIG_PCI) *//* * pci_target_init * * The bootstrap configuration provides default settings for the pci * inbound map (PIM). But the bootstrap config choices are limited and * may not be sufficient for a given board. */#if defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_TARGET_INIT)void pci_target_init(struct pci_controller *hose){	char *ptmla_str, *ptmms_str;	/*	 * Set up Direct MMIO registers	 */	/*	 * PowerPC440EPX PCI Master configuration.	 * Map one 1Gig range of PLB/processor addresses to PCI memory space.	 * PLB address 0x80000000-0xBFFFFFFF	 *     ==> PCI address 0x80000000-0xBFFFFFFF	 * Use byte reversed out routines to handle endianess.	 * Make this region non-prefetchable.	 */	out32r(PCIX0_PMM0MA, 0x00000000);	/* PMM0 Mask/Attribute */						/* - disabled b4 setting */	out32r(PCIX0_PMM0LA, CONFIG_SYS_PCI_MEMBASE);	/* PMM0 Local Address */	out32r(PCIX0_PMM0PCILA, CONFIG_SYS_PCI_MEMBASE); /* PMM0 PCI Low Address */	out32r(PCIX0_PMM0PCIHA, 0x00000000);	/* PMM0 PCI High Address */	out32r(PCIX0_PMM0MA, 0xc0000001);	/* 1G + No prefetching, */						/* and enable region */	if (!is_monarch()) {		ptmla_str = getenv("ptm1la");		ptmms_str = getenv("ptm1ms");		if(NULL != ptmla_str && NULL != ptmms_str ) {			out32r(PCIX0_PTM1MS,			       simple_strtoul(ptmms_str, NULL, 16));			out32r(PCIX0_PTM1LA,			       simple_strtoul(ptmla_str, NULL, 16));		} else {			/* BAR1: default top 64MB of RAM */			out32r(PCIX0_PTM1MS, 0xfc000001);			out32r(PCIX0_PTM1LA, 0x0c000000);		}	} else {		/* BAR1: default: complete 256MB RAM */		out32r(PCIX0_PTM1MS, 0xf0000001);		out32r(PCIX0_PTM1LA, 0x00000000);	}	ptmla_str = getenv("ptm2la");		/* Local Addr. Reg */	ptmms_str = getenv("ptm2ms");		/* Memory Size/Attribute */	if(NULL != ptmla_str && NULL != ptmms_str ) {		out32r(PCIX0_PTM2MS, simple_strtoul(ptmms_str, NULL, 16));		out32r(PCIX0_PTM2LA, simple_strtoul(ptmla_str, NULL, 16));	} else {		/* BAR2: default: 4MB FPGA */		out32r(PCIX0_PTM2MS, 0xffc00001); /* Memory Size/Attribute */		out32r(PCIX0_PTM2LA, 0xef000000); /* Local Addr. Reg */	}	if (is_monarch()) {		/* BAR2: map FPGA registers behind system memory at 1GB */		pci_hose_write_config_dword(hose, 0, PCI_BASE_ADDRESS_2, 0x40000008);	}	/*	 * Set up Configuration registers	 */	/* Program the board's vendor id */	pci_hose_write_config_word(hose, 0, PCI_SUBSYSTEM_VENDOR_ID,				   CONFIG_SYS_PCI_SUBSYS_VENDORID);	/* disabled for PMC405 backward compatibility */	/* Configure command register as bus master */	/* pci_write_config_word(0, PCI_COMMAND, PCI_COMMAND_MASTER); */	/* 240nS PCI clock */	pci_hose_write_config_word(hose, 0, PCI_LATENCY_TIMER, 1);	/* No error reporting */	pci_hose_write_config_word(hose, 0, PCI_ERREN, 0);	pci_write_config_dword(0, PCI_BRDGOPT2, 0x00000101);	if (!is_monarch()) {		/* Program the board's subsystem id/classcode */		pci_hose_write_config_word(hose, 0, PCI_SUBSYSTEM_ID,					   CONFIG_SYS_PCI_SUBSYS_ID_NONMONARCH);		pci_hose_write_config_word(hose, 0, PCI_CLASS_SUB_CODE,					   CONFIG_SYS_PCI_CLASSCODE_NONMONARCH);		/* PCI configuration done: release ERREADY */		out_be32((void*)GPIO1_OR,			 in_be32((void*)GPIO1_OR) | GPIO1_PPC_EREADY);		out_be32((void*)GPIO1_TCR,			 in_be32((void*)GPIO1_TCR) | GPIO1_PPC_EREADY);	} else {		/* Program the board's subsystem id/classcode */		pci_hose_write_config_word(hose, 0, PCI_SUBSYSTEM_ID,					   CONFIG_SYS_PCI_SUBSYS_ID_MONARCH);		pci_hose_write_config_word(hose, 0, PCI_CLASS_SUB_CODE,					   CONFIG_SYS_PCI_CLASSCODE_MONARCH);	}	/* enable host configuration */	pci_hose_write_config_dword(hose, 0, PCI_BRDGOPT2, 0x00000101);}#endif /* defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_TARGET_INIT) *//* * pci_master_init */#if defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_MASTER_INIT)void pci_master_init(struct pci_controller *hose){	unsigned short temp_short;	/*	 * Write the PowerPC440 EP PCI Configuration regs.	 * Enable PowerPC440 EP to be a master on the PCI bus (PMM).	 * Enable PowerPC440 EP to act as a PCI memory target (PTM).	 */	if (is_monarch()) {		pci_read_config_word(0, PCI_COMMAND, &temp_short);		pci_write_config_word(0, PCI_COMMAND,				      temp_short | PCI_COMMAND_MASTER |				      PCI_COMMAND_MEMORY);	}}#endif /* defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_MASTER_INIT) */static void wait_for_pci_ready(void){	int i;	char *s = getenv("pcidelay");	/*	 * We have our own handling of the pcidelay variable.	 * Using CONFIG_PCI_BOOTDELAY enables pausing for host	 * and adapter devices. For adapter devices we do not	 * want this.	 */	if (s) {		int ms = simple_strtoul(s, NULL, 10);		printf("PCI:   Waiting for %d ms\n", ms);		for (i=0; i<ms; i++)			udelay(1000);	}	if (!(in_be32((void*)GPIO1_IR) & GPIO1_PPC_EREADY)) {		printf("PCI:   Waiting for EREADY (CTRL-C to skip) ... ");		while (1) {			if (ctrlc()) {				puts("abort\n");				break;			}			if (in_be32((void*)GPIO1_IR) & GPIO1_PPC_EREADY) {				printf("done\n");				break;			}		}	}}/* * is_pci_host * * This routine is called to determine if a pci scan should be * performed. With various hardware environments (especially cPCI and * PPMC) it's insufficient to depend on the state of the arbiter enable * bit in the strap register, or generic host/adapter assumptions. * * Rather than hard-code a bad assumption in the general 440 code, the * 440 pci code requires the board to decide at runtime. * * Return 0 for adapter mode, non-zero for host (monarch) mode. */#if defined(CONFIG_PCI)int is_pci_host(struct pci_controller *hose){	char *s = getenv("pciscan");	if (s == NULL)		if (is_monarch()) {			wait_for_pci_ready();			return 1;		} else			return 0;	else if (!strcmp(s, "yes"))		return 1;	return 0;}#endif /* defined(CONFIG_PCI) */#if defined(CONFIG_POST)/* * Returns 1 if keys pressed to start the power-on long-running tests * Called from board_init_f(). */int post_hotkeys_pressed(void){	return 0;	/* No hotkeys supported */}#endif /* CONFIG_POST */#ifdef CONFIG_RESET_PHY_Rvoid reset_phy(void){	char *s;	unsigned short val_method, val_behavior;	/* special LED setup for NGCC/CANDES */	if ((s = getenv("bd_type")) &&	    ((!strcmp(s, "ngcc")) || (!strcmp(s, "candes")))) {		val_method   = 0x0e0a;		val_behavior = 0x0cf2;	} else {		/* PMC440 standard type */		val_method   = 0x0e10;		val_behavior = 0x0cf0;	}	if (miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x1f, 0x0001) == 0) {		miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x11, 0x0010);		miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x11, val_behavior);		miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x10, val_method);		miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x1f, 0x0000);	}	if (miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x1f, 0x0001) == 0) {		miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x11, 0x0010);		miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x11, val_behavior);		miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x10, val_method);		miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x1f, 0x0000);	}}#endif#if defined(CONFIG_SYS_EEPROM_WREN)/* *  Input: <dev_addr> I2C address of EEPROM device to enable. *         <state>    -1: deliver current state *	               0: disable write *		       1: enable write *  Returns:          -1: wrong device address *                     0: dis-/en- able done *		     0/1: current state if <state> was -1. */int eeprom_write_enable(unsigned dev_addr, int state){	if ((CONFIG_SYS_I2C_EEPROM_ADDR != dev_addr) &&	    (CONFIG_SYS_I2C_BOOT_EEPROM_ADDR != dev_addr)) {		return -1;	} else {		switch (state) {		case 1:			/* Enable write access, clear bit GPIO_SINT2. */			out32(GPIO0_OR, in32(GPIO0_OR) & ~GPIO0_EP_EEP);			state = 0;			break;		case 0:			/* Disable write access, set bit GPIO_SINT2. */			out32(GPIO0_OR, in32(GPIO0_OR) | GPIO0_EP_EEP);			state = 0;			break;		default:			/* Read current status back. */			state = (0 == (in32(GPIO0_OR) & GPIO0_EP_EEP));			break;		}	}	return state;}#endif /* #if defined(CONFIG_SYS_EEPROM_WREN) */#define CONFIG_SYS_BOOT_EEPROM_PAGE_WRITE_BITS 3int bootstrap_eeprom_write(unsigned dev_addr, unsigned offset,			   uchar *buffer, unsigned cnt){	unsigned end = offset + cnt;	unsigned blk_off;	int rcode = 0;#if defined(CONFIG_SYS_EEPROM_WREN)	eeprom_write_enable(dev_addr, 1);#endif	/*	 * Write data until done or would cross a write page boundary.	 * We must write the address again when changing pages	 * because the address counter only increments within a page.	 */	while (offset < end) {		unsigned alen, len;		unsigned maxlen;		uchar addr[2];		blk_off = offset & 0xFF;	/* block offset */		addr[0] = offset >> 8;		/* block number */		addr[1] = blk_off;		/* block offset */		alen	= 2;		addr[0] |= dev_addr;		/* insert device address */		len = end - offset;#define	BOOT_EEPROM_PAGE_SIZE	   (1 << CONFIG_SYS_BOOT_EEPROM_PAGE_WRITE_BITS)#define	BOOT_EEPROM_PAGE_OFFSET(x) ((x) & (BOOT_EEPROM_PAGE_SIZE - 1))		maxlen = BOOT_EEPROM_PAGE_SIZE -			BOOT_EEPROM_PAGE_OFFSET(blk_off);		if (maxlen > I2C_RXTX_LEN)			maxlen = I2C_RXTX_LEN;		if (len > maxlen)			len = maxlen;		if (i2c_write (addr[0], offset, alen-1, buffer, len) != 0)			rcode = 1;		buffer += len;		offset += len;#if defined(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS)		udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);#endif	}#if defined(CONFIG_SYS_EEPROM_WREN)	eeprom_write_enable(dev_addr, 0);#endif	return rcode;}int bootstrap_eeprom_read (unsigned dev_addr, unsigned offset,			   uchar *buffer, unsigned cnt){	unsigned end = offset + cnt;	unsigned blk_off;	int rcode = 0;	/*	 * Read data until done or would cross a page boundary.	 * We must write the address again when changing pages	 * because the next page may be in a different device.	 */	while (offset < end) {		unsigned alen, len;		unsigned maxlen;		uchar addr[2];		blk_off = offset & 0xFF;	/* block offset */		addr[0] = offset >> 8;		/* block number */		addr[1] = blk_off;		/* block offset */		alen	= 2;		addr[0] |= dev_addr;		/* insert device address */		len = end - offset;		maxlen = 0x100 - blk_off;		if (maxlen > I2C_RXTX_LEN)			maxlen = I2C_RXTX_LEN;		if (len > maxlen)			len = maxlen;		if (i2c_read (addr[0], offset, alen-1, buffer, len) != 0)			rcode = 1;		buffer += len;		offset += len;	}	return rcode;}#if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_BOARD_INIT)int usb_board_init(void){	char *act = getenv("usbact");	int i;	if ((act == NULL || strcmp(act, "host") == 0) &&	    !(in_be32((void*)GPIO0_IR) & GPIO0_USB_PRSNT))		/* enable power on USB socket */		out_be32((void*)GPIO1_OR,			 in_be32((void*)GPIO1_OR) & ~GPIO1_USB_PWR_N);	for (i=0; i<1000; i++)		udelay(1000);	return 0;}int usb_board_stop(void){	/* disable power on USB socket */	out_be32((void*)GPIO1_OR, in_be32((void*)GPIO1_OR) | GPIO1_USB_PWR_N);	return 0;}int usb_board_init_fail(void){	usb_board_stop();	return 0;}#endif /* defined(CONFIG_USB_OHCI) && defined(CONFIG_SYS_USB_OHCI_BOARD_INIT) */#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)void ft_board_setup(void *blob, bd_t *bd){	int rc;	__ft_board_setup(blob, bd);	/*	 * Disable PCI in non-monarch mode.	 */	if (!is_monarch()) {		rc = fdt_find_and_setprop(blob, "/plb/pci@1ec000000", "status",					  "disabled", sizeof("disabled"), 1);		if (rc) {			printf("Unable to update property status in PCI node, err=%s\n",			       fdt_strerror(rc));		}	}}#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美va在线播放| 777奇米四色成人影色区| 国产欧美综合在线观看第十页| 成人免费一区二区三区视频 | 中文字幕亚洲在| 国产成人欧美日韩在线电影| 337p日本欧洲亚洲大胆色噜噜| 亚洲国产中文字幕在线视频综合| 中文子幕无线码一区tr| 国产一区二区三区综合| 欧美成人精品高清在线播放| 青青草一区二区三区| 欧美一级精品在线| 久久99精品国产麻豆婷婷| 欧美一级xxx| 久久国产精品99久久久久久老狼| 欧美日韩国产电影| 日本va欧美va欧美va精品| 日韩欧美在线观看一区二区三区| 视频一区国产视频| 欧美一级二级在线观看| 亚洲成人资源网| 亚洲欧美激情小说另类| 欧美日韩黄视频| 国产成人精品影视| 日韩成人午夜精品| 亚洲午夜久久久| 日本欧美一区二区在线观看| 久久品道一品道久久精品| 国内精品免费**视频| 欧美国产激情二区三区| 99久久精品免费观看| 一区二区三区国产豹纹内裤在线| av资源站一区| 亚洲精品国产a久久久久久| 欧美日韩精品免费观看视频| 日韩1区2区日韩1区2区| 精品欧美乱码久久久久久1区2区 | 久久色.com| 国产91丝袜在线播放九色| 综合亚洲深深色噜噜狠狠网站| 99久久精品免费观看| 亚洲福利国产精品| 精品美女被调教视频大全网站| 久久精品国产**网站演员| 国产性色一区二区| 国产精品初高中害羞小美女文| 99久久久精品| 午夜视频一区二区| 久久综合成人精品亚洲另类欧美 | 国产精品自拍av| 亚洲欧洲日产国码二区| 在线观看日韩av先锋影音电影院| 午夜电影一区二区| 久久亚洲精品国产精品紫薇| 99久精品国产| 免费人成精品欧美精品| 国产精品网站导航| 欧美日韩国产综合视频在线观看 | 欧美视频在线不卡| 99久久精品免费| 成人美女视频在线观看18| 国产成人午夜精品5599| 福利一区二区在线观看| 丁香婷婷深情五月亚洲| 国产成人免费网站| 国产一区二区免费视频| 韩国女主播成人在线| 成人在线视频一区| 91成人免费在线视频| 欧美精品一卡二卡| 日韩精品一区二区三区在线播放| 欧美精品日韩一区| 国产欧美日韩精品在线| 亚洲欧洲av一区二区三区久久| 亚洲色图欧洲色图婷婷| 亚洲主播在线观看| 丁香婷婷综合五月| 欧美日韩精品免费| 国产欧美va欧美不卡在线| 日韩一卡二卡三卡国产欧美| 欧美日韩在线不卡| 欧美一区二区三区人| 久久精品男人的天堂| 成人性生交大合| av一区二区三区四区| 91麻豆精品久久久久蜜臀| 一区免费观看视频| 蜜臀av一区二区三区| 91极品视觉盛宴| 日本不卡一区二区三区高清视频| 久久久噜噜噜久噜久久综合| 国产成人精品一区二区三区网站观看| 国产精品久久精品日日| 日韩一区二区三区视频| 欧美亚洲日本国产| 99久久精品费精品国产一区二区| 日韩av一区二区三区四区| 亚洲图片你懂的| 久久精品视频一区二区| 日韩欧美在线不卡| 欧美人妇做爰xxxⅹ性高电影| 国产精品99久久久| 久久99久久久久| 性欧美大战久久久久久久久| 国产精品国产三级国产专播品爱网 | 91福利社在线观看| 成人听书哪个软件好| 狠狠色丁香婷综合久久| 日韩黄色小视频| 亚洲最新视频在线播放| 国产精品日韩精品欧美在线| 久久亚洲精精品中文字幕早川悠里 | 成人激情电影免费在线观看| 美国十次综合导航| 亚洲一二三四在线| 亚洲男帅同性gay1069| 精品国产乱码久久久久久图片| 成人av在线一区二区| 久久夜色精品国产噜噜av | 在线观看一区二区视频| 成人综合在线观看| 久久综合成人精品亚洲另类欧美| 美女高潮久久久| 久久精品国产精品青草| 日韩激情av在线| 日韩av一区二区三区四区| 18成人在线视频| 欧美制服丝袜第一页| 伊人色综合久久天天| 精品国产网站在线观看| 激情综合一区二区三区| 香蕉久久一区二区不卡无毒影院| 久久精品亚洲乱码伦伦中文| 精品88久久久久88久久久| www.久久久久久久久| 亚洲欧美视频在线观看| 色香色香欲天天天影视综合网| 国产亚洲精品久| 国产成人精品免费在线| 欧美伦理影视网| 免费久久精品视频| 国产亚洲欧美一级| 欧美三片在线视频观看| 国内精品在线播放| 国产精品黄色在线观看| 岛国精品在线观看| 欧美精品色综合| 成人一区在线看| 日韩中文字幕1| 亚洲欧美色图小说| 国产精品视频线看| 日韩欧美视频在线| 91精品国产高清一区二区三区| 自拍偷拍欧美激情| 在线不卡一区二区| av资源网一区| 久草这里只有精品视频| 亚洲同性gay激情无套| 精品视频免费在线| 精品一区二区三区香蕉蜜桃 | 欧美精品三级日韩久久| 国产成人av电影在线观看| 日韩精品一二区| 国产精品国产三级国产普通话99| 成熟亚洲日本毛茸茸凸凹| 91国产精品成人| 日韩综合小视频| 中文字幕高清不卡| 精品国产乱码久久久久久牛牛| 国产一区二区三区国产| 久久成人免费网站| 一区二区日韩av| 国产精品色婷婷| 综合久久久久久| 一区二区三区在线不卡| 亚洲女性喷水在线观看一区| 久久综合九色欧美综合狠狠| 日韩一级大片在线观看| 欧美日韩一区二区在线观看| 色综合久久中文字幕综合网| 成人性视频免费网站| 国产成人欧美日韩在线电影| 成人免费视频一区| 色综合久久99| 91黄色免费网站| 成人免费在线播放视频| 日韩国产精品久久| 老司机午夜精品99久久| 亚洲精品大片www| 久久夜色精品一区| 依依成人综合视频| 九色porny丨国产精品| 99久久婷婷国产综合精品电影| 99视频超级精品| 在线播放91灌醉迷j高跟美女| 老司机免费视频一区二区 | 色天天综合色天天久久| 欧美一区二区免费| 亚洲色图制服丝袜|