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

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

?? pci.c

?? u-boot1.3德國DENX小組開發的用于多種嵌入式CPU的bootloader
?? C
字號:
/* * Copyright (C) Freescale Semiconductor, Inc. 2007 * * Author: Scott Wood <scottwood@freescale.com>, * with some bits from older board-specific PCI initialization. * * 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 */#include <common.h>#include <pci.h>#if defined(CONFIG_OF_LIBFDT)#include <libfdt.h>#elif defined(CONFIG_OF_FLAT_TREE)#include <ft_build.h>#endif#include <asm/mpc8349_pci.h>#ifdef CONFIG_83XX_GENERIC_PCI#define MAX_BUSES 2DECLARE_GLOBAL_DATA_PTR;static struct pci_controller pci_hose[MAX_BUSES];static int pci_num_buses;static void pci_init_bus(int bus, struct pci_region *reg){	volatile immap_t *immr = (volatile immap_t *)CFG_IMMR;	volatile pot83xx_t *pot = immr->ios.pot;	volatile pcictrl83xx_t *pci_ctrl = &immr->pci_ctrl[bus];	struct pci_controller *hose = &pci_hose[bus];	u32 dev;	u16 reg16;	int i;	if (bus == 1)		pot += 3;	/* Setup outbound translation windows */	for (i = 0; i < 3; i++, reg++, pot++) {		if (reg->size == 0)			break;		hose->regions[i] = *reg;		hose->region_count++;		pot->potar = reg->bus_start >> 12;		pot->pobar = reg->phys_start >> 12;		pot->pocmr = ~(reg->size - 1) >> 12;		if (reg->flags & PCI_REGION_IO)			pot->pocmr |= POCMR_IO;#ifdef CONFIG_83XX_PCI_STREAMING		else if (reg->flags & PCI_REGION_PREFETCH)			pot->pocmr |= POCMR_SE;#endif		if (bus == 1)			pot->pocmr |= POCMR_DST;		pot->pocmr |= POCMR_EN;	}	/* Point inbound translation at RAM */	pci_ctrl->pitar1 = 0;	pci_ctrl->pibar1 = 0;	pci_ctrl->piebar1 = 0;	pci_ctrl->piwar1 = PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP |	                   PIWAR_WTT_SNOOP | (__ilog2(gd->ram_size) - 1);	i = hose->region_count++;	hose->regions[i].bus_start = 0;	hose->regions[i].phys_start = 0;	hose->regions[i].size = gd->ram_size;	hose->regions[i].flags = PCI_REGION_MEM | PCI_REGION_MEMORY;	hose->first_busno = 0;	hose->last_busno = 0xff;	pci_setup_indirect(hose, CFG_IMMR + 0x8300 + bus * 0x80,	                         CFG_IMMR + 0x8304 + bus * 0x80);	pci_register_hose(hose);	/*	 * Write to Command register	 */	reg16 = 0xff;	dev = PCI_BDF(hose->first_busno, 0, 0);	pci_hose_read_config_word(hose, dev, PCI_COMMAND, &reg16);	reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;	pci_hose_write_config_word(hose, dev, PCI_COMMAND, reg16);	/*	 * Clear non-reserved bits in status register.	 */	pci_hose_write_config_word(hose, dev, PCI_STATUS, 0xffff);	pci_hose_write_config_byte(hose, dev, PCI_LATENCY_TIMER, 0x80);	pci_hose_write_config_byte(hose, dev, PCI_CACHE_LINE_SIZE, 0x08);#ifdef CONFIG_PCI_SCAN_SHOW	printf("PCI:   Bus Dev VenId DevId Class Int\n");#endif	/*	 * Hose scan.	 */	hose->last_busno = pci_hose_scan(hose);}/* * The caller must have already set OCCR, and the PCI_LAW BARs * must have been set to cover all of the requested regions. * * If fewer than three regions are requested, then the region * list is terminated with a region of size 0. */void mpc83xx_pci_init(int num_buses, struct pci_region **reg, int warmboot){	volatile immap_t *immr = (volatile immap_t *)CFG_IMMR;	int i;	if (num_buses > MAX_BUSES) {		printf("%d PCI buses requsted, %d supported\n",		       num_buses, MAX_BUSES);		num_buses = MAX_BUSES;	}	pci_num_buses = num_buses;	/*	 * Release PCI RST Output signal.	 * Power on to RST high must be at least 100 ms as per PCI spec.	 * On warm boots only 1 ms is required.	 */	udelay(warmboot ? 1000 : 100000);	for (i = 0; i < num_buses; i++)		immr->pci_ctrl[i].gcr = 1;	/*	 * RST high to first config access must be at least 2^25 cycles	 * as per PCI spec.  This could be cut in half if we know we're	 * running at 66MHz.  This could be insufficiently long if we're	 * running the PCI bus at significantly less than 33MHz.	 */	udelay(1020000);	for (i = 0; i < num_buses; i++)		pci_init_bus(i, reg[i]);}#if defined(CONFIG_OF_LIBFDT)void ft_pci_setup(void *blob, bd_t *bd){	int nodeoffset;	int err;	int tmp[2];	if (pci_num_buses < 1)		return;	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8500");	if (nodeoffset >= 0) {		tmp[0] = cpu_to_be32(pci_hose[0].first_busno);		tmp[1] = cpu_to_be32(pci_hose[0].last_busno);		err = fdt_setprop(blob, nodeoffset, "bus-range",				  tmp, sizeof(tmp));		tmp[0] = cpu_to_be32(gd->pci_clk);		err = fdt_setprop(blob, nodeoffset, "clock-frequency",				  tmp, sizeof(tmp[0]));	}	if (pci_num_buses < 2)		return;	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8600");	if (nodeoffset >= 0) {		tmp[0] = cpu_to_be32(pci_hose[0].first_busno);		tmp[1] = cpu_to_be32(pci_hose[0].last_busno);		err = fdt_setprop(blob, nodeoffset, "bus-range",				  tmp, sizeof(tmp));		tmp[0] = cpu_to_be32(gd->pci_clk);		err = fdt_setprop(blob, nodeoffset, "clock-frequency",				  tmp, sizeof(tmp[0]));	}}#elif CONFIG_OF_FLAT_TREEvoid ft_pci_setup(void *blob, bd_t *bd){	u32 *p;	int len;	if (pci_num_buses < 1)		return;	p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len);	if (p) {		p[0] = pci_hose[0].first_busno;		p[1] = pci_hose[0].last_busno;	}	if (pci_num_buses < 2)		return;	p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8600/bus-range", &len);	if (p) {		p[0] = pci_hose[1].first_busno;		p[1] = pci_hose[1].last_busno;	}}#endif /* CONFIG_OF_FLAT_TREE */#endif /* CONFIG_83XX_GENERIC_PCI */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久99| 国产喂奶挤奶一区二区三区| 国产偷国产偷亚洲高清人白洁| 亚洲蜜臀av乱码久久精品蜜桃| 久久精品久久精品| 欧美日韩一级视频| 亚洲欧美另类小说视频| 国产一区激情在线| 欧美一级黄色大片| 一二三四社区欧美黄| www.亚洲在线| 久久免费视频色| 久久福利资源站| 日韩亚洲欧美在线观看| 亚洲综合视频网| 99精品国产视频| 中文字幕第一区二区| 国产伦精一区二区三区| 欧美tickling网站挠脚心| 视频一区在线播放| 欧美日本在线看| 亚洲成在人线免费| 欧美日韩一区二区三区不卡| 亚洲一区二区美女| 欧美在线你懂得| 亚洲大片免费看| 欧美另类高清zo欧美| 午夜精品成人在线| 成人综合婷婷国产精品久久免费| 欧美猛男超大videosgay| 一区二区三区在线免费播放| 99久久99久久精品国产片果冻| 欧美国产日韩精品免费观看| 国产91高潮流白浆在线麻豆| 久久久www免费人成精品| 精品一区二区综合| 久久久精品国产99久久精品芒果 | 精品一区二区免费视频| 91精品国产福利| 免费看欧美女人艹b| 欧美大片顶级少妇| 激情另类小说区图片区视频区| 久久亚洲欧美国产精品乐播| 成人少妇影院yyyy| 亚洲免费伊人电影| 5858s免费视频成人| 国产高清不卡一区| 国产精品久久三| av在线一区二区三区| 亚洲久草在线视频| 欧美日韩不卡一区二区| 麻豆精品在线播放| 欧美激情综合五月色丁香小说| 成人丝袜18视频在线观看| 亚洲欧美日韩一区二区| 8v天堂国产在线一区二区| 免费成人av在线| 国产精品久久久久久久久久免费看| 91麻豆高清视频| 免费一级欧美片在线观看| 欧美激情一区二区三区| 欧美唯美清纯偷拍| 国产精品99久久久久久宅男| 亚洲激情网站免费观看| 欧美白人最猛性xxxxx69交| 成人国产免费视频| 日本少妇一区二区| 国产精品美女久久福利网站| 国产精品福利影院| 精品国产乱码久久久久久久久| 国产成人精品一区二区三区网站观看| 亚洲日本在线天堂| 欧美一级xxx| 91在线云播放| 欧美在线你懂得| 国产精品一区在线观看乱码| 亚洲高清免费一级二级三级| 国产日韩欧美a| 日韩一级片网站| 色婷婷狠狠综合| 粉嫩av一区二区三区粉嫩| 午夜国产精品影院在线观看| 中文在线免费一区三区高中清不卡| 欧美视频一区二区| 色综合久久久久久久久久久| 国产一区二区剧情av在线| 日韩福利电影在线观看| 亚洲精品网站在线观看| 国产日韩欧美一区二区三区综合 | 中文字幕日韩一区二区| 欧美精品粉嫩高潮一区二区| 99精品热视频| 成人白浆超碰人人人人| 国产在线播放一区| 日本系列欧美系列| 天堂资源在线中文精品| 亚洲欧美视频在线观看| 国产精品久久久久久久蜜臀| 国产午夜亚洲精品午夜鲁丝片| 日韩欧美一区中文| 欧美精品丝袜中出| 欧美日韩国产综合视频在线观看| 一本色道a无线码一区v| 成人一道本在线| 高清视频一区二区| 国产成人精品免费网站| 国产资源在线一区| 国产一区二区91| 国产在线视频一区二区| 国产真实乱子伦精品视频| 蜜桃精品在线观看| 另类成人小视频在线| 蜜桃久久av一区| 激情久久久久久久久久久久久久久久| 麻豆视频一区二区| 看电影不卡的网站| 国产一区二区三区精品视频| 国产一区在线视频| 99精品黄色片免费大全| 亚洲va欧美va天堂v国产综合| 亚洲女同ⅹxx女同tv| 亚洲日本中文字幕区| 亚洲美女在线一区| 亚洲电影激情视频网站| 午夜视频在线观看一区二区| 日日摸夜夜添夜夜添精品视频 | 综合欧美亚洲日本| 亚洲乱码国产乱码精品精98午夜 | 亚洲精品免费在线播放| 洋洋成人永久网站入口| 午夜精品福利在线| 久久不见久久见中文字幕免费| 国产一区二区在线视频| 成人av在线网站| 欧美日韩国产一区| 久久只精品国产| 综合av第一页| 日本在线播放一区二区三区| 国产精品中文欧美| 在线看日本不卡| 精品噜噜噜噜久久久久久久久试看| 2019国产精品| 亚洲一区免费视频| 卡一卡二国产精品| 欧美电影在线免费观看| 久久亚洲一级片| 一区二区三区在线视频免费观看| 日韩**一区毛片| 成人白浆超碰人人人人| 欧美高清视频一二三区| 国产欧美精品区一区二区三区| 伊人一区二区三区| 国内外成人在线| 欧美色涩在线第一页| 国产三区在线成人av| 天天色天天操综合| 成年人国产精品| 精品欧美久久久| 亚洲成人动漫av| caoporn国产精品| 欧美第一区第二区| 亚洲午夜久久久久久久久久久 | 亚洲大片免费看| 久久99国产精品尤物| 色先锋资源久久综合| 精品国产一区二区亚洲人成毛片| 国产精品久久夜| 韩国av一区二区三区| 欧美丰满少妇xxxxx高潮对白 | 日本不卡在线视频| 91免费看片在线观看| 国产亚洲一区二区三区在线观看| 亚洲国产精品综合小说图片区| 成人免费毛片嘿嘿连载视频| 日韩欧美在线123| 三级亚洲高清视频| 91蝌蚪国产九色| 国产精品伦理一区二区| 国产一区不卡在线| 精品国产一区二区三区久久影院| 亚洲第一在线综合网站| 91精彩视频在线| 亚洲美女屁股眼交| 972aa.com艺术欧美| 亚洲精品水蜜桃| 久久久高清一区二区三区| 偷偷要91色婷婷| 在线观看欧美日本| 亚洲天堂中文字幕| 91亚洲永久精品| 中文字幕一区二区三区乱码在线| 国产99精品国产| 国产欧美一区二区精品秋霞影院| 国产一区91精品张津瑜| 亚洲精品一线二线三线无人区| 久久er99精品| 精品久久久久久久人人人人传媒 | 樱桃国产成人精品视频| 91在线看国产| 亚洲女人****多毛耸耸8|