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

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

?? pci.c

?? 根據添加了fs2410平臺的arch目錄
?? C
字號:
/* * Carsten Langgaard, carstenl@mips.com * Copyright (C) 1999,2000 MIPS Technologies, Inc.  All rights reserved. * *  This program is free software; you can distribute it and/or modify it *  under the terms of the GNU General Public License (Version 2) as *  published by the Free Software Foundation. * *  This program is distributed in the hope 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. * * MIPS boards specific PCI support. * */#include <linux/config.h>#ifdef CONFIG_PCI#include <linux/types.h>#include <linux/pci.h>#include <linux/kernel.h>#include <linux/init.h>#include <asm/mips-boards/generic.h>#include <asm/gt64120.h>#ifdef CONFIG_MIPS_MALTA#include <asm/mips-boards/malta.h>#endif#define PCI_ACCESS_READ  0#define PCI_ACCESS_WRITE 1static intmips_pcibios_config_access(unsigned char access_type, struct pci_dev *dev,                           unsigned char where, u32 *data){	unsigned char bus = dev->bus->number;	unsigned char dev_fn = dev->devfn;        u32 intr;	if ((bus == 0) && (dev_fn >= PCI_DEVFN(31,0)))	        return -1; /* Because of a bug in the galileo (for slot 31). */	/* Clear cause register bits */	GT_WRITE(GT_INTRCAUSE_OFS, ~(GT_INTRCAUSE_MASABORT0_BIT | 	                             GT_INTRCAUSE_TARABORT0_BIT));	/* Setup address */	GT_WRITE(GT_PCI0_CFGADDR_OFS, 		 (bus         << GT_PCI0_CFGADDR_BUSNUM_SHF)   |		 (dev_fn      << GT_PCI0_CFGADDR_FUNCTNUM_SHF) |		 ((where / 4) << GT_PCI0_CFGADDR_REGNUM_SHF)   |		 GT_PCI0_CFGADDR_CONFIGEN_BIT);	if (access_type == PCI_ACCESS_WRITE) {	        if (bus == 0 && dev_fn == 0) {		        /* 			 * Galileo is acting differently than other devices. 			 */		        GT_WRITE(GT_PCI0_CFGDATA_OFS, *data);		} else {		        GT_PCI_WRITE(GT_PCI0_CFGDATA_OFS, *data);		}	} else {	        if (bus == 0 && dev_fn == 0) {		        /* 			 * Galileo is acting differently than other devices. 			 */		        GT_READ(GT_PCI0_CFGDATA_OFS, *data);		} else {		        GT_PCI_READ(GT_PCI0_CFGDATA_OFS, *data);		}	}	/* Check for master or target abort */	GT_READ(GT_INTRCAUSE_OFS, intr);	if (intr & (GT_INTRCAUSE_MASABORT0_BIT | GT_INTRCAUSE_TARABORT0_BIT))	{	        /* Error occured */	        /* Clear bits */	        GT_WRITE( GT_INTRCAUSE_OFS, ~(GT_INTRCAUSE_MASABORT0_BIT | 					      GT_INTRCAUSE_TARABORT0_BIT) );		return -1;	}	return 0;}/* * We can't address 8 and 16 bit words directly.  Instead we have to * read/write a 32bit word and mask/modify the data we actually want. */static intmips_pcibios_read_config_byte (struct pci_dev *dev, int where, u8 *val){	u32 data = 0;	if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data))		return -1;	*val = (data >> ((where & 3) << 3)) & 0xff;	return PCIBIOS_SUCCESSFUL;}static intmips_pcibios_read_config_word (struct pci_dev *dev, int where, u16 *val){	u32 data = 0;	if (where & 1)		return PCIBIOS_BAD_REGISTER_NUMBER;	if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data))	       return -1;	*val = (data >> ((where & 3) << 3)) & 0xffff;	return PCIBIOS_SUCCESSFUL;}static intmips_pcibios_read_config_dword (struct pci_dev *dev, int where, u32 *val){	u32 data = 0;	if (where & 3)		return PCIBIOS_BAD_REGISTER_NUMBER;		if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data))		return -1;	*val = data;	return PCIBIOS_SUCCESSFUL;}static intmips_pcibios_write_config_byte (struct pci_dev *dev, int where, u8 val){	u32 data = 0;       	if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data))		return -1;	data = (data & ~(0xff << ((where & 3) << 3))) |	       (val << ((where & 3) << 3));	if (mips_pcibios_config_access(PCI_ACCESS_WRITE, dev, where, &data))		return -1;	return PCIBIOS_SUCCESSFUL;}static intmips_pcibios_write_config_word (struct pci_dev *dev, int where, u16 val){        u32 data = 0;	if (where & 1)		return PCIBIOS_BAD_REGISTER_NUMBER;               if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data))	       return -1;	data = (data & ~(0xffff << ((where & 3) << 3))) | 	       (val << ((where & 3) << 3));	if (mips_pcibios_config_access(PCI_ACCESS_WRITE, dev, where, &data))	       return -1;	return PCIBIOS_SUCCESSFUL;}static intmips_pcibios_write_config_dword(struct pci_dev *dev, int where, u32 val){	if (where & 3)		return PCIBIOS_BAD_REGISTER_NUMBER;	if (mips_pcibios_config_access(PCI_ACCESS_WRITE, dev, where, &val))	       return -1;	return PCIBIOS_SUCCESSFUL;}struct pci_ops mips_pci_ops = {	mips_pcibios_read_config_byte,        mips_pcibios_read_config_word,	mips_pcibios_read_config_dword,	mips_pcibios_write_config_byte,	mips_pcibios_write_config_word,	mips_pcibios_write_config_dword};void __init pcibios_init(void){#ifdef CONFIG_MIPS_MALTA	struct pci_dev *pdev;	unsigned char reg_val;#endif	printk("PCI: Probing PCI hardware on host bus 0.\n");	pci_scan_bus(0, &mips_pci_ops, NULL);	/* 	 * Due to a bug in the Galileo system controller, we need to setup 	 * the PCI BAR for the Galileo internal registers.	 * This should be done in the bios/bootprom and will be fixed in	 * a later revision of YAMON (the MIPS boards boot prom).	 */	GT_WRITE(GT_PCI0_CFGADDR_OFS,		 (0 << GT_PCI0_CFGADDR_BUSNUM_SHF)   |  /* Local bus */		 (0 << GT_PCI0_CFGADDR_DEVNUM_SHF)   |  /* GT64120 device */		 (0 << GT_PCI0_CFGADDR_FUNCTNUM_SHF) |  /* Function 0 */		 ((0x20/4) << GT_PCI0_CFGADDR_REGNUM_SHF) |  /* BAR 4 */		 GT_PCI0_CFGADDR_CONFIGEN_BIT );	/* Perform the write */	GT_WRITE( GT_PCI0_CFGDATA_OFS, PHYSADDR(MIPS_GT_BASE)); #ifdef CONFIG_MIPS_MALTA	pci_for_each_dev(pdev) {		if ((pdev->vendor == PCI_VENDOR_ID_INTEL)		    && (pdev->device == PCI_DEVICE_ID_INTEL_82371AB)		    && (PCI_SLOT(pdev->devfn) == 0x0a)) {			/*			 * IDE Decode enable.			 */			pci_read_config_byte(pdev, 0x41, &reg_val);        		pci_write_config_byte(pdev, 0x41, reg_val | 0x80);			pci_read_config_byte(pdev, 0x43, &reg_val);        		pci_write_config_byte(pdev, 0x43, reg_val | 0x80);		}		if ((pdev->vendor == PCI_VENDOR_ID_INTEL)		    && (pdev->device == PCI_DEVICE_ID_INTEL_82371AB_0)		    && (PCI_SLOT(pdev->devfn) == 0x0a)) {			/*			 * Set top of main memory accessible by ISA or DMA			 * devices to 16 Mb.			 */			pci_read_config_byte(pdev, 0x69, &reg_val);			pci_write_config_byte(pdev, 0x69, reg_val | 0xf0);		}	}	/* 	 * Activate Floppy Controller in the SMSC FDC37M817 Super I/O 	 * Controller.	 * This should be done in the bios/bootprom and will be fixed in         * a later revision of YAMON (the MIPS boards boot prom).	 */	/* Entering config state. */	SMSC_WRITE(SMSC_CONFIG_ENTER, SMSC_CONFIG_REG);        	/* Activate floppy controller. */	SMSC_WRITE(SMSC_CONFIG_DEVNUM, SMSC_CONFIG_REG);	SMSC_WRITE(SMSC_CONFIG_DEVNUM_FLOPPY, SMSC_DATA_REG);	SMSC_WRITE(SMSC_CONFIG_ACTIVATE, SMSC_CONFIG_REG);	SMSC_WRITE(SMSC_CONFIG_ACTIVATE_ENABLE, SMSC_DATA_REG);	/* Exit config state. */	SMSC_WRITE(SMSC_CONFIG_EXIT, SMSC_CONFIG_REG);#endif}int __initpcibios_enable_device(struct pci_dev *dev){	/* Not needed, since we enable all devices at startup.  */	return 0;}void __initpcibios_align_resource(void *data, struct resource *res, unsigned long size){}char * __initpcibios_setup(char *str){	/* Nothing to do for now.  */	return str;}struct pci_fixup pcibios_fixups[] = {	{ 0 }};void __initpcibios_update_resource(struct pci_dev *dev, struct resource *root,                        struct resource *res, int resource){	unsigned long where, size;	u32 reg;	where = PCI_BASE_ADDRESS_0 + (resource * 4);	size = res->end - res->start;	pci_read_config_dword(dev, where, &reg);	reg = (reg & size) | (((u32)(res->start - root->start)) & ~size);	pci_write_config_dword(dev, where, reg);}/* *  Called after each bus is probed, but before its children *  are examined. */void __init pcibios_fixup_bus(struct pci_bus *b){	pci_read_bridge_bases(b);}unsigned __init int pcibios_assign_all_busses(void){	return 1;}#endif /* CONFIG_PCI */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本到高清视频免费精品| 国产91清纯白嫩初高中在线观看| 最新日韩av在线| 国产欧美日韩精品在线| 国产亚洲欧美一级| 久久精品亚洲精品国产欧美kt∨| 精品国产sm最大网站| 久久久精品黄色| 中文字幕免费观看一区| 国产精品人人做人人爽人人添| 国产欧美日韩在线看| 国产精品久久久久久久午夜片 | 日本麻豆一区二区三区视频| 亚洲国产精品一区二区久久| 三级精品在线观看| 美女视频网站久久| 国产黑丝在线一区二区三区| 99久久精品免费| 日本道在线观看一区二区| 欧美视频一二三区| 精品嫩草影院久久| 欧美激情一区二区三区不卡| 亚洲精品久久久久久国产精华液| 亚洲一区二区三区在线播放| 免费成人性网站| 成人免费av资源| 欧洲亚洲精品在线| 日韩欧美二区三区| ...xxx性欧美| 久久国产精品无码网站| 成人av免费观看| 欧美精品tushy高清| 国产欧美一区二区精品忘忧草| 亚洲三级免费电影| 美女免费视频一区| 91丝袜呻吟高潮美腿白嫩在线观看| 91精品综合久久久久久| 中文字幕欧美区| 美美哒免费高清在线观看视频一区二区 | 中文字幕精品一区二区三区精品| 一区二区三区小说| 黑人巨大精品欧美一区| 一本大道综合伊人精品热热| 精品卡一卡二卡三卡四在线| 一区二区三区四区在线播放| 国产乱码精品一品二品| 9191成人精品久久| 国产自产高清不卡| 欧美日韩精品三区| 久久久久久夜精品精品免费| 亚洲色图欧洲色图| 国产精品一区二区黑丝| 制服丝袜成人动漫| 中文字幕综合网| 国产精品一二三四| 精品少妇一区二区三区在线播放| 亚洲精品一二三四区| 国产福利精品导航| 精品国产网站在线观看| 日韩精品久久理论片| 色菇凉天天综合网| 国产精品九色蝌蚪自拍| 国产一区免费电影| 精品国产一区二区国模嫣然| 日韩电影在线看| 欧美精品一二三| 亚洲国产婷婷综合在线精品| 日本久久电影网| 亚洲欧洲99久久| 99视频在线精品| 日本一区二区三区视频视频| 国产一区二区中文字幕| 精品少妇一区二区三区在线播放 | 色综合天天性综合| 国产日产欧美一区| 高清免费成人av| 国产精品欧美一区喷水| 成人综合婷婷国产精品久久蜜臀 | 国产精品嫩草影院av蜜臀| 韩国中文字幕2020精品| 久久网这里都是精品| 国内精品嫩模私拍在线| 国产夜色精品一区二区av| 国产成人免费视频一区| 国产精品久久毛片a| 91老师片黄在线观看| 一区二区三区中文字幕精品精品| 欧美在线高清视频| 午夜不卡av在线| 日韩限制级电影在线观看| 激情国产一区二区| 中文字幕不卡三区| 色8久久人人97超碰香蕉987| 舔着乳尖日韩一区| 精品国产凹凸成av人网站| 不卡的av在线播放| 亚洲卡通欧美制服中文| 欧美日韩国产精选| 国产在线乱码一区二区三区| 国产精品麻豆久久久| 色婷婷av一区二区三区gif| 亚洲1区2区3区4区| 欧美成人三级在线| av午夜精品一区二区三区| 午夜激情综合网| 国产欧美日韩综合| 欧美日韩mp4| 国产成人亚洲精品青草天美| 亚洲男人的天堂av| 欧美精品一区二区三区蜜桃| 91丨porny丨国产入口| 麻豆精品新av中文字幕| 成人欧美一区二区三区白人| 欧美一区二区三区思思人| 成年人国产精品| 麻豆精品视频在线观看免费| 亚洲久草在线视频| 久久久久久久性| 制服丝袜日韩国产| 一本色道久久综合亚洲91 | 中文字幕av不卡| 欧美日本不卡视频| 成人免费高清视频在线观看| 另类小说一区二区三区| 亚洲男人的天堂一区二区| 国产欧美日韩在线看| 日韩午夜在线观看视频| 在线观看视频一区二区欧美日韩| 国产精品一区二区无线| 丝袜美腿高跟呻吟高潮一区| 亚洲私人黄色宅男| 国产无遮挡一区二区三区毛片日本| 欧美巨大另类极品videosbest| 色狠狠色狠狠综合| 成人av在线网| 国产精品一级黄| 国内不卡的二区三区中文字幕| 性欧美大战久久久久久久久| 亚洲激情图片小说视频| 国产精品视频你懂的| www国产精品av| 精品国产乱码久久久久久牛牛| 欧美日韩一区成人| 欧美在线观看视频一区二区三区| 91免费看视频| 99久久婷婷国产| 91色视频在线| 色综合久久88色综合天天 | 性久久久久久久| 一区二区三区欧美日| 亚洲精品成人少妇| 国产精品久久久久久久浪潮网站| 中文在线资源观看网站视频免费不卡| 久久综合九色综合欧美亚洲| 久久伊人中文字幕| 337p日本欧洲亚洲大胆精品| 日韩一区二区在线观看视频| 欧美成人aa大片| 国产亚洲一二三区| 国产精品久久久一区麻豆最新章节| 国产偷v国产偷v亚洲高清 | 91福利在线导航| 91福利精品第一导航| 欧美性猛交xxxx黑人交| 欧美日韩免费电影| 日韩欧美一级二级三级| 久久夜色精品一区| 国产精品久久久久影院色老大| 国产精品久久国产精麻豆99网站| 亚洲精品福利视频网站| 日韩国产高清在线| 国产精品资源在线观看| 国产二区国产一区在线观看| 99re热这里只有精品免费视频| 91国产免费看| 精品国产乱码久久久久久牛牛 | 欧洲av在线精品| 日韩无一区二区| 中文字幕巨乱亚洲| 亚洲午夜免费电影| 精品一区二区久久久| 在线精品视频一区二区三四| 欧美电影影音先锋| 欧美国产亚洲另类动漫| 有坂深雪av一区二区精品| 美女性感视频久久| 91伊人久久大香线蕉| 51精品国自产在线| 中文字幕亚洲一区二区va在线| 亚洲国产精品久久不卡毛片 | 日韩电影在线观看电影| 国产91色综合久久免费分享| 欧美日韩成人一区二区| 亚洲国产精华液网站w| 日韩成人精品在线| 99麻豆久久久国产精品免费优播| 91精品国产麻豆| 亚洲免费在线电影| 国产呦萝稀缺另类资源| 在线成人av网站|