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

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

?? pci-vr41xx.c

?? linux-2.6.15.6
?? C
字號:
/* *  pci-vr41xx.c, PCI Control Unit routines for the NEC VR4100 series. * *  Copyright (C) 2001-2003 MontaVista Software Inc. *    Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com> *  Copyright (C) 2004-2005  Yoichi Yuasa <yuasa@hh.iij4u.or.jp> *  Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org) * *  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 *//* * Changes: *  MontaVista Software Inc. <yyuasa@mvista.com> or <source@mvista.com> *  - New creation, NEC VR4122 and VR4131 are supported. */#include <linux/init.h>#include <linux/pci.h>#include <linux/types.h>#include <asm/cpu.h>#include <asm/io.h>#include <asm/vr41xx/pci.h>#include <asm/vr41xx/vr41xx.h>#include "pci-vr41xx.h"extern struct pci_ops vr41xx_pci_ops;static void __iomem *pciu_base;#define pciu_read(offset)		readl(pciu_base + (offset))#define pciu_write(offset, value)	writel((value), pciu_base + (offset))static struct pci_master_address_conversion pci_master_memory1 = {	.bus_base_address	= PCI_MASTER_MEM1_BUS_BASE_ADDRESS,	.address_mask		= PCI_MASTER_MEM1_ADDRESS_MASK,	.pci_base_address	= PCI_MASTER_MEM1_PCI_BASE_ADDRESS,};static struct pci_target_address_conversion pci_target_memory1 = {	.address_mask		= PCI_TARGET_MEM1_ADDRESS_MASK,	.bus_base_address	= PCI_TARGET_MEM1_BUS_BASE_ADDRESS,};static struct pci_master_address_conversion pci_master_io = {	.bus_base_address	= PCI_MASTER_IO_BUS_BASE_ADDRESS,	.address_mask		= PCI_MASTER_IO_ADDRESS_MASK,	.pci_base_address	= PCI_MASTER_IO_PCI_BASE_ADDRESS,};static struct pci_mailbox_address pci_mailbox = {	.base_address		= PCI_MAILBOX_BASE_ADDRESS,};static struct pci_target_address_window pci_target_window1 = {	.base_address		= PCI_TARGET_WINDOW1_BASE_ADDRESS,};static struct resource pci_mem_resource = {	.name   = "PCI Memory resources",	.start  = PCI_MEM_RESOURCE_START,	.end    = PCI_MEM_RESOURCE_END,	.flags  = IORESOURCE_MEM,};static struct resource pci_io_resource = {	.name   = "PCI I/O resources",	.start  = PCI_IO_RESOURCE_START,	.end    = PCI_IO_RESOURCE_END,	.flags  = IORESOURCE_IO,};static struct pci_controller_unit_setup vr41xx_pci_controller_unit_setup = {	.master_memory1				= &pci_master_memory1,	.target_memory1				= &pci_target_memory1,	.master_io				= &pci_master_io,	.exclusive_access			= CANNOT_LOCK_FROM_DEVICE,	.wait_time_limit_from_irdy_to_trdy	= 0,	.mailbox				= &pci_mailbox,	.target_window1				= &pci_target_window1,	.master_latency_timer			= 0x80,	.retry_limit				= 0,	.arbiter_priority_control		= PCI_ARBITRATION_MODE_FAIR,	.take_away_gnt_mode			= PCI_TAKE_AWAY_GNT_DISABLE,};static struct pci_controller vr41xx_pci_controller = {	.pci_ops        = &vr41xx_pci_ops,	.mem_resource	= &pci_mem_resource,	.io_resource	= &pci_io_resource,};void __init vr41xx_pciu_setup(struct pci_controller_unit_setup *setup){	vr41xx_pci_controller_unit_setup = *setup;}static int __init vr41xx_pciu_init(void){	struct pci_controller_unit_setup *setup;	struct pci_master_address_conversion *master;	struct pci_target_address_conversion *target;	struct pci_mailbox_address *mailbox;	struct pci_target_address_window *window;	unsigned long vtclock, pci_clock_max;	uint32_t val;	setup = &vr41xx_pci_controller_unit_setup;	if (request_mem_region(PCIU_BASE, PCIU_SIZE, "PCIU") == NULL)		return -EBUSY;	pciu_base = ioremap(PCIU_BASE, PCIU_SIZE);	if (pciu_base == NULL) {		release_mem_region(PCIU_BASE, PCIU_SIZE);		return -EBUSY;	}	/* Disable PCI interrupt */	vr41xx_disable_pciint();	/* Supply VTClock to PCIU */	vr41xx_supply_clock(PCIU_CLOCK);	/* Dummy write, waiting for supply of VTClock. */	vr41xx_disable_pciint();	/* Select PCI clock */	if (setup->pci_clock_max != 0)		pci_clock_max = setup->pci_clock_max;	else		pci_clock_max = PCI_CLOCK_MAX;	vtclock = vr41xx_get_vtclock_frequency();	if (vtclock < pci_clock_max)		pciu_write(PCICLKSELREG, EQUAL_VTCLOCK);	else if ((vtclock / 2) < pci_clock_max)		pciu_write(PCICLKSELREG, HALF_VTCLOCK);	else if (current_cpu_data.processor_id >= PRID_VR4131_REV2_1 &&	         (vtclock / 3) < pci_clock_max)		pciu_write(PCICLKSELREG, ONE_THIRD_VTCLOCK);	else if ((vtclock / 4) < pci_clock_max)		pciu_write(PCICLKSELREG, QUARTER_VTCLOCK);	else {		printk(KERN_ERR "PCI Clock is over 33MHz.\n");		return -EINVAL;	}	/* Supply PCI clock by PCI bus */	vr41xx_supply_clock(PCI_CLOCK);	if (setup->master_memory1 != NULL) {		master = setup->master_memory1;		val = IBA(master->bus_base_address) |		      MASTER_MSK(master->address_mask) |		      WINEN |		      PCIA(master->pci_base_address);		pciu_write(PCIMMAW1REG, val);	} else {		val = pciu_read(PCIMMAW1REG);		val &= ~WINEN;		pciu_write(PCIMMAW1REG, val);	}	if (setup->master_memory2 != NULL) {		master = setup->master_memory2;		val = IBA(master->bus_base_address) |		      MASTER_MSK(master->address_mask) |		      WINEN |		      PCIA(master->pci_base_address);		pciu_write(PCIMMAW2REG, val);	} else {		val = pciu_read(PCIMMAW2REG);		val &= ~WINEN;		pciu_write(PCIMMAW2REG, val);	}	if (setup->target_memory1 != NULL) {		target = setup->target_memory1;		val = TARGET_MSK(target->address_mask) |		      WINEN |		      ITA(target->bus_base_address);		pciu_write(PCITAW1REG, val);	} else {		val = pciu_read(PCITAW1REG);		val &= ~WINEN;		pciu_write(PCITAW1REG, val);	}	if (setup->target_memory2 != NULL) {		target = setup->target_memory2;		val = TARGET_MSK(target->address_mask) |		      WINEN |		      ITA(target->bus_base_address);		pciu_write(PCITAW2REG, val);	} else {		val = pciu_read(PCITAW2REG);		val &= ~WINEN;		pciu_write(PCITAW2REG, val);	}	if (setup->master_io != NULL) {		master = setup->master_io;		val = IBA(master->bus_base_address) |		      MASTER_MSK(master->address_mask) |		      WINEN |		      PCIIA(master->pci_base_address);		pciu_write(PCIMIOAWREG, val);	} else {		val = pciu_read(PCIMIOAWREG);		val &= ~WINEN;		pciu_write(PCIMIOAWREG, val);	}	if (setup->exclusive_access == CANNOT_LOCK_FROM_DEVICE)		pciu_write(PCIEXACCREG, UNLOCK);	else		pciu_write(PCIEXACCREG, 0);	if (current_cpu_data.cputype == CPU_VR4122)		pciu_write(PCITRDYVREG, TRDYV(setup->wait_time_limit_from_irdy_to_trdy));	pciu_write(LATTIMEREG, MLTIM(setup->master_latency_timer));	if (setup->mailbox != NULL) {		mailbox = setup->mailbox;		val = MBADD(mailbox->base_address) | TYPE_32BITSPACE |		      MSI_MEMORY | PREF_APPROVAL;		pciu_write(MAILBAREG, val);	}	if (setup->target_window1) {		window = setup->target_window1;		val = PMBA(window->base_address) | TYPE_32BITSPACE |		      MSI_MEMORY | PREF_APPROVAL;		pciu_write(PCIMBA1REG, val);	}	if (setup->target_window2) {		window = setup->target_window2;		val = PMBA(window->base_address) | TYPE_32BITSPACE |		      MSI_MEMORY | PREF_APPROVAL;		pciu_write(PCIMBA2REG, val);	}	val = pciu_read(RETVALREG);	val &= ~RTYVAL_MASK;	val |= RTYVAL(setup->retry_limit);	pciu_write(RETVALREG, val);	val = pciu_read(PCIAPCNTREG);	val &= ~(TKYGNT | PAPC);	switch (setup->arbiter_priority_control) {	case PCI_ARBITRATION_MODE_ALTERNATE_0:		val |= PAPC_ALTERNATE_0;		break;	case PCI_ARBITRATION_MODE_ALTERNATE_B:		val |= PAPC_ALTERNATE_B;		break;	default:		val |= PAPC_FAIR;		break;	}	if (setup->take_away_gnt_mode == PCI_TAKE_AWAY_GNT_ENABLE)		val |= TKYGNT_ENABLE;	pciu_write(PCIAPCNTREG, val);	pciu_write(COMMANDREG, PCI_COMMAND_IO | PCI_COMMAND_MEMORY |	                       PCI_COMMAND_MASTER | PCI_COMMAND_PARITY |			       PCI_COMMAND_SERR);	/* Clear bus error */	pciu_read(BUSERRADREG);	pciu_write(PCIENREG, PCIU_CONFIG_DONE);	if (setup->mem_resource != NULL)		vr41xx_pci_controller.mem_resource = setup->mem_resource;	if (setup->io_resource != NULL) {		vr41xx_pci_controller.io_resource = setup->io_resource;	} else {		set_io_port_base(IO_PORT_BASE);		ioport_resource.start = IO_PORT_RESOURCE_START;		ioport_resource.end = IO_PORT_RESOURCE_END;	}	register_pci_controller(&vr41xx_pci_controller);	return 0;}arch_initcall(vr41xx_pciu_init);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美主播一区二区三区| 亚洲成在人线免费| 56国语精品自产拍在线观看| 96av麻豆蜜桃一区二区| 国产福利一区二区| 国产一区二区三区综合| 久久精品噜噜噜成人88aⅴ| 午夜欧美电影在线观看| 一区二区三区欧美视频| 亚洲电影中文字幕在线观看| 亚洲一区二区三区三| 亚洲一区二区在线免费观看视频 | 精品国产乱码久久久久久1区2区| 欧美日韩一区二区三区在线| 欧美吻胸吃奶大尺度电影| 欧美性videosxxxxx| 欧美精品丝袜久久久中文字幕| 精品视频在线免费看| 欧美精品1区2区| 日韩一区二区三区电影在线观看| 日韩欧美一区二区久久婷婷| 久久免费国产精品| 国产精品日韩成人| 一区二区三区免费看视频| 午夜欧美在线一二页| 久久av中文字幕片| av欧美精品.com| 欧美日韩免费在线视频| 欧美一级国产精品| 国产精品视频免费看| 亚洲黄网站在线观看| 国产欧美久久久精品影院| 亚洲视频一二区| 日本中文字幕一区二区有限公司| 久久99精品国产麻豆婷婷| 国产精品白丝av| 欧美综合在线视频| 欧美精品一区二区三区一线天视频| 久久亚洲综合色| 亚洲精品国产精品乱码不99| 日本不卡一二三区黄网| 毛片基地黄久久久久久天堂| 国产一区二区中文字幕| 欧美日韩一区二区三区高清| 精品国产一区久久| 午夜成人免费电影| 99久久精品久久久久久清纯| 日韩三级伦理片妻子的秘密按摩| 国产精品福利一区| 日韩高清一区二区| 91在线无精精品入口| 欧美xxxxxxxxx| 亚洲最快最全在线视频| 国产乱一区二区| 欧美理论电影在线| 亚洲精选视频免费看| 国产精品亚洲视频| 日韩精品一区二区三区swag| 最新热久久免费视频| 亚洲一级电影视频| 国内久久婷婷综合| 国产精品系列在线播放| 日本福利一区二区| 91在线国产福利| 欧美一区二区精美| 国产精品乱人伦一区二区| 中文字幕一区二区三区四区 | 久久免费偷拍视频| 亚洲图片另类小说| 日本少妇一区二区| 99热精品一区二区| 日韩精品一区二区三区在线| 国产精品久久久久精k8 | 91麻豆福利精品推荐| 日韩午夜激情视频| 亚洲天天做日日做天天谢日日欢| 日韩国产一区二| 91免费精品国自产拍在线不卡| 欧美喷潮久久久xxxxx| 中文欧美字幕免费| 免费视频最近日韩| 色欧美88888久久久久久影院| 日韩欧美国产1| 亚洲高清免费在线| 国产一二精品视频| 欧美日韩精品电影| 国产精品欧美久久久久一区二区| 琪琪久久久久日韩精品| 欧美亚洲国产一区在线观看网站 | 亚洲午夜在线视频| 成人激情小说乱人伦| 在线观看日韩电影| 国产亚洲制服色| 午夜电影网一区| 色综合天天综合狠狠| 久久综合资源网| 久久国产尿小便嘘嘘尿| 狠狠色丁香婷婷综合| 欧洲一区二区三区在线| 樱花草国产18久久久久| gogogo免费视频观看亚洲一| 26uuu成人网一区二区三区| 日韩中文字幕av电影| 91精品办公室少妇高潮对白| 国产精品久久久久aaaa| 国产成人在线观看免费网站| 久久久亚洲午夜电影| 美腿丝袜亚洲综合| 精品国产免费视频| 国模少妇一区二区三区| 久久精品欧美一区二区三区麻豆| 精品影院一区二区久久久| 欧美一区二区黄| 日韩av电影天堂| 欧美大片在线观看一区二区| 欧美aaaaa成人免费观看视频| 色婷婷av久久久久久久| 中文字幕亚洲区| 91色porny在线视频| 欧美日韩国产精品自在自线| 国产精品国产馆在线真实露脸| 91玉足脚交白嫩脚丫在线播放| 亚洲欧美日韩一区二区三区在线观看| 国产99久久久久| 亚洲美女淫视频| 欧美精选一区二区| 极品销魂美女一区二区三区| 成人免费视频一区二区| 1区2区3区精品视频| 欧美亚州韩日在线看免费版国语版| 亚洲午夜免费电影| 精品sm捆绑视频| 99久久免费精品高清特色大片| 欧美精品一区二区三区视频| 成人黄色一级视频| 亚洲丝袜自拍清纯另类| 91精品国产综合久久福利| 一区二区三区四区在线播放| 国产精品18久久久久久久久| 国产精品欧美久久久久一区二区| 精品无人码麻豆乱码1区2区| 一色桃子久久精品亚洲| 69堂精品视频| 成人av免费网站| 日本91福利区| 国产精品超碰97尤物18| 91麻豆国产福利在线观看| 韩国午夜理伦三级不卡影院| 欧美丝袜丝交足nylons图片| 亚洲欧美在线视频观看| 欧美一级黄色片| 色av一区二区| 夫妻av一区二区| 日产国产欧美视频一区精品| 亚洲视频一区二区在线| 制服丝袜中文字幕一区| 精品视频999| 成人久久视频在线观看| 日韩av电影免费观看高清完整版 | av在线播放不卡| 蜜桃av一区二区三区电影| 亚洲欧美日韩一区| 亚洲精品一区二区三区香蕉| 欧美最猛黑人xxxxx猛交| 国产成人av网站| 精品一区二区三区免费观看| 亚洲一区二区三区国产| 国产色一区二区| 日韩精品中文字幕一区二区三区 | 日韩理论在线观看| 国产精品视频看| 精品日产卡一卡二卡麻豆| 激情文学综合插| 蜜臀久久99精品久久久画质超高清| 欧美大片在线观看一区二区| 色视频一区二区| 在线亚洲一区观看| 99久久精品免费看国产免费软件| 国产v综合v亚洲欧| 国产主播一区二区| 狠狠色丁香九九婷婷综合五月 | 91久久精品国产91性色tv| 北条麻妃国产九九精品视频| 国产精品中文有码| 国产精一品亚洲二区在线视频| 另类欧美日韩国产在线| 日韩精品亚洲一区二区三区免费| 亚洲一区二区三区在线看| 亚洲美女偷拍久久| 亚洲国产精品久久久久秋霞影院| 一区二区三区四区不卡在线| 亚洲人亚洲人成电影网站色| 综合色中文字幕| 国产精品久久久久精k8| 亚洲精品日日夜夜| 亚洲午夜成aⅴ人片| 丝袜国产日韩另类美女| 日本欧美韩国一区三区| 久久国产精品无码网站| 国产伦精品一区二区三区视频青涩 |