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

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

?? fixup.c

?? 底層驅動開發
?? C
字號:
/* * Exceptions for specific devices. Usually work-arounds for fatal design flaws. */#include <linux/pci.h>#include <linux/init.h>#include "pci.h"static void __devinit pci_fixup_i450nx(struct pci_dev *d){	/*	 * i450NX -- Find and scan all secondary buses on all PXB's.	 */	int pxb, reg;	u8 busno, suba, subb;	printk(KERN_WARNING "PCI: Searching for i450NX host bridges on %s\n", pci_name(d));	reg = 0xd0;	for(pxb=0; pxb<2; pxb++) {		pci_read_config_byte(d, reg++, &busno);		pci_read_config_byte(d, reg++, &suba);		pci_read_config_byte(d, reg++, &subb);		DBG("i450NX PXB %d: %02x/%02x/%02x\n", pxb, busno, suba, subb);		if (busno)			pci_scan_bus(busno, &pci_root_ops, NULL);	/* Bus A */		if (suba < subb)			pci_scan_bus(suba+1, &pci_root_ops, NULL);	/* Bus B */	}	pcibios_last_bus = -1;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82451NX, pci_fixup_i450nx);static void __devinit pci_fixup_i450gx(struct pci_dev *d){	/*	 * i450GX and i450KX -- Find and scan all secondary buses.	 * (called separately for each PCI bridge found)	 */	u8 busno;	pci_read_config_byte(d, 0x4a, &busno);	printk(KERN_INFO "PCI: i440KX/GX host bridge %s: secondary bus %02x\n", pci_name(d), busno);	pci_scan_bus(busno, &pci_root_ops, NULL);	pcibios_last_bus = -1;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454GX, pci_fixup_i450gx);static void __devinit  pci_fixup_umc_ide(struct pci_dev *d){	/*	 * UM8886BF IDE controller sets region type bits incorrectly,	 * therefore they look like memory despite of them being I/O.	 */	int i;	printk(KERN_WARNING "PCI: Fixing base address flags for device %s\n", pci_name(d));	for(i=0; i<4; i++)		d->resource[i].flags |= PCI_BASE_ADDRESS_SPACE_IO;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8886BF, pci_fixup_umc_ide);static void __devinit  pci_fixup_ncr53c810(struct pci_dev *d){	/*	 * NCR 53C810 returns class code 0 (at least on some systems).	 * Fix class to be PCI_CLASS_STORAGE_SCSI	 */	if (!d->class) {		printk(KERN_WARNING "PCI: fixing NCR 53C810 class code for %s\n", pci_name(d));		d->class = PCI_CLASS_STORAGE_SCSI << 8;	}}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, pci_fixup_ncr53c810);static void __devinit pci_fixup_ide_bases(struct pci_dev *d){	int i;	/*	 * PCI IDE controllers use non-standard I/O port decoding, respect it.	 */	if ((d->class >> 8) != PCI_CLASS_STORAGE_IDE)		return;	DBG("PCI: IDE base address fixup for %s\n", pci_name(d));	for(i=0; i<4; i++) {		struct resource *r = &d->resource[i];		if ((r->start & ~0x80) == 0x374) {			r->start |= 2;			r->end = r->start;		}	}}DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases);static void __devinit  pci_fixup_ide_trash(struct pci_dev *d){	int i;	/*	 * Runs the fixup only for the first IDE controller	 * (Shai Fultheim - shai@ftcon.com)	 */	static int called = 0;	if (called)		return;	called = 1;	/*	 * There exist PCI IDE controllers which have utter garbage	 * in first four base registers. Ignore that.	 */	DBG("PCI: IDE base address trash cleared for %s\n", pci_name(d));	for(i=0; i<4; i++)		d->resource[i].start = d->resource[i].end = d->resource[i].flags = 0;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5513, pci_fixup_ide_trash);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_10, pci_fixup_ide_trash);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_11, pci_fixup_ide_trash);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_9, pci_fixup_ide_trash);static void __devinit  pci_fixup_latency(struct pci_dev *d){	/*	 *  SiS 5597 and 5598 chipsets require latency timer set to	 *  at most 32 to avoid lockups.	 */	DBG("PCI: Setting max latency to 32\n");	pcibios_max_latency = 32;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5597, pci_fixup_latency);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5598, pci_fixup_latency);static void __devinit pci_fixup_piix4_acpi(struct pci_dev *d){	/*	 * PIIX4 ACPI device: hardwired IRQ9	 */	d->irq = 9;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, pci_fixup_piix4_acpi);/* * Addresses issues with problems in the memory write queue timer in * certain VIA Northbridges.  This bugfix is per VIA's specifications, * except for the KL133/KM133: clearing bit 5 on those Northbridges seems * to trigger a bug in its integrated ProSavage video card, which * causes screen corruption.  We only clear bits 6 and 7 for that chipset, * until VIA can provide us with definitive information on why screen * corruption occurs, and what exactly those bits do. * * VIA 8363,8622,8361 Northbridges: *  - bits  5, 6, 7 at offset 0x55 need to be turned off * VIA 8367 (KT266x) Northbridges: *  - bits  5, 6, 7 at offset 0x95 need to be turned off * VIA 8363 rev 0x81/0x84 (KL133/KM133) Northbridges: *  - bits     6, 7 at offset 0x55 need to be turned off */#define VIA_8363_KL133_REVISION_ID 0x81#define VIA_8363_KM133_REVISION_ID 0x84static void __devinit pci_fixup_via_northbridge_bug(struct pci_dev *d){	u8 v;	u8 revision;	int where = 0x55;	int mask = 0x1f; /* clear bits 5, 6, 7 by default */	pci_read_config_byte(d, PCI_REVISION_ID, &revision);	if (d->device == PCI_DEVICE_ID_VIA_8367_0) {		/* fix pci bus latency issues resulted by NB bios error		   it appears on bug free^Wreduced kt266x's bios forces		   NB latency to zero */		pci_write_config_byte(d, PCI_LATENCY_TIMER, 0);		where = 0x95; /* the memory write queue timer register is 				different for the KT266x's: 0x95 not 0x55 */	} else if (d->device == PCI_DEVICE_ID_VIA_8363_0 &&			(revision == VIA_8363_KL133_REVISION_ID || 			revision == VIA_8363_KM133_REVISION_ID)) {			mask = 0x3f; /* clear only bits 6 and 7; clearing bit 5					causes screen corruption on the KL133/KM133 */	}	pci_read_config_byte(d, where, &v);	if (v & ~mask) {		printk(KERN_WARNING "Disabling VIA memory write queue (PCI ID %04x, rev %02x): [%02x] %02x & %02x -> %02x\n", \			d->device, revision, where, v, mask, v & mask);		v &= mask;		pci_write_config_byte(d, where, v);	}}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, pci_fixup_via_northbridge_bug);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8622, pci_fixup_via_northbridge_bug);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, pci_fixup_via_northbridge_bug);DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_via_northbridge_bug);/* * For some reasons Intel decided that certain parts of their * 815, 845 and some other chipsets must look like PCI-to-PCI bridges * while they are obviously not. The 82801 family (AA, AB, BAM/CAM, * BA/CA/DB and E) PCI bridges are actually HUB-to-PCI ones, according * to Intel terminology. These devices do forward all addresses from * system to PCI bus no matter what are their window settings, so they are * "transparent" (or subtractive decoding) from programmers point of view. */static void __devinit pci_fixup_transparent_bridge(struct pci_dev *dev){	if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI &&	    (dev->device & 0xff00) == 0x2400)		dev->transparent = 1;}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_fixup_transparent_bridge);/* * Fixup for C1 Halt Disconnect problem on nForce2 systems. * * From information provided by "Allen Martin" <AMartin@nvidia.com>: * * A hang is caused when the CPU generates a very fast CONNECT/HALT cycle * sequence.  Workaround is to set the SYSTEM_IDLE_TIMEOUT to 80 ns. * This allows the state-machine and timer to return to a proper state within * 80 ns of the CONNECT and probe appearing together.  Since the CPU will not * issue another HALT within 80 ns of the initial HALT, the failure condition * is avoided. */static void __init pci_fixup_nforce2(struct pci_dev *dev){	u32 val;	/*	 * Chip  Old value   New value	 * C17   0x1F0FFF01  0x1F01FF01	 * C18D  0x9F0FFF01  0x9F01FF01	 *	 * Northbridge chip version may be determined by	 * reading the PCI revision ID (0xC1 or greater is C18D).	 */	pci_read_config_dword(dev, 0x6c, &val);	/*	 * Apply fixup if needed, but don't touch disconnect state	 */	if ((val & 0x00FF0000) != 0x00010000) {		printk(KERN_WARNING "PCI: nForce2 C1 Halt Disconnect fixup\n");		pci_write_config_dword(dev, 0x6c, (val & 0xFF00FFFF) | 0x00010000);	}}DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2, pci_fixup_nforce2);/* Max PCI Express root ports */#define MAX_PCIEROOT	6static int quirk_aspm_offset[MAX_PCIEROOT << 3];#define GET_INDEX(a, b) ((((a) - PCI_DEVICE_ID_INTEL_MCH_PA) << 3) + ((b) & 7))static int quirk_pcie_aspm_read(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *value){	return raw_pci_ops->read(0, bus->number, devfn, where, size, value);}/* * Replace the original pci bus ops for write with a new one that will filter * the request to insure ASPM cannot be enabled. */static int quirk_pcie_aspm_write(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 value){	u8 offset;	offset = quirk_aspm_offset[GET_INDEX(bus->self->device, devfn)];	if ((offset) && (where == offset))		value = value & 0xfffffffc;		return raw_pci_ops->write(0, bus->number, devfn, where, size, value);}static struct pci_ops quirk_pcie_aspm_ops = {	.read = quirk_pcie_aspm_read,	.write = quirk_pcie_aspm_write,};/* * Prevents PCI Express ASPM (Active State Power Management) being enabled. * * Save the register offset, where the ASPM control bits are located, * for each PCI Express device that is in the device list of * the root port in an array for fast indexing. Replace the bus ops * with the modified one. */static void pcie_rootport_aspm_quirk(struct pci_dev *pdev){	int cap_base, i;	struct pci_bus  *pbus;	struct pci_dev *dev;	if ((pbus = pdev->subordinate) == NULL)		return;	/*	 * Check if the DID of pdev matches one of the six root ports. This	 * check is needed in the case this function is called directly by the	 * hot-plug driver.	 */	if ((pdev->device < PCI_DEVICE_ID_INTEL_MCH_PA) ||	    (pdev->device > PCI_DEVICE_ID_INTEL_MCH_PC1))		return;	if (list_empty(&pbus->devices)) {		/*		 * If no device is attached to the root port at power-up or		 * after hot-remove, the pbus->devices is empty and this code		 * will set the offsets to zero and the bus ops to parent's bus		 * ops, which is unmodified.	 	 */		for (i= GET_INDEX(pdev->device, 0); i <= GET_INDEX(pdev->device, 7); ++i)			quirk_aspm_offset[i] = 0;		pbus->ops = pbus->parent->ops;	} else {		/*		 * If devices are attached to the root port at power-up or		 * after hot-add, the code loops through the device list of		 * each root port to save the register offsets and replace the		 * bus ops.		 */		list_for_each_entry(dev, &pbus->devices, bus_list) {			/* There are 0 to 8 devices attached to this bus */			cap_base = pci_find_capability(dev, PCI_CAP_ID_EXP);			quirk_aspm_offset[GET_INDEX(pdev->device, dev->devfn)]= cap_base + 0x10;		}		pbus->ops = &quirk_pcie_aspm_ops;	}}DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_MCH_PA,	pcie_rootport_aspm_quirk );DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_MCH_PA1,	pcie_rootport_aspm_quirk );DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_MCH_PB,	pcie_rootport_aspm_quirk );DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_MCH_PB1,	pcie_rootport_aspm_quirk );DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_MCH_PC,	pcie_rootport_aspm_quirk );DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_MCH_PC1,	pcie_rootport_aspm_quirk );/* * Fixup to mark boot BIOS video selected by BIOS before it changes * * From information provided by "Jon Smirl" <jonsmirl@gmail.com> * * The standard boot ROM sequence for an x86 machine uses the BIOS * to select an initial video card for boot display. This boot video  * card will have it's BIOS copied to C0000 in system RAM.  * IORESOURCE_ROM_SHADOW is used to associate the boot video * card with this copy. On laptops this copy has to be used since * the main ROM may be compressed or combined with another image. * See pci_map_rom() for use of this flag. IORESOURCE_ROM_SHADOW * is marked here since the boot video device will be the only enabled * video device at this point. */static void __devinit pci_fixup_video(struct pci_dev *pdev){	struct pci_dev *bridge;	struct pci_bus *bus;	u16 config;	if ((pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)		return;	/* Is VGA routed to us? */	bus = pdev->bus;	while (bus) {		bridge = bus->self;		if (bridge) {			pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,						&config);			if (!(config & PCI_BRIDGE_CTL_VGA))				return;		}		bus = bus->parent;	}	pci_read_config_word(pdev, PCI_COMMAND, &config);	if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {		pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;		printk(KERN_DEBUG "Boot video device is %s\n", pci_name(pdev));	}}DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧日韩精品视频| 国产精品乱码人人做人人爱| 欧美成人vr18sexvr| 国产精品成人免费在线| 蜜臀av一区二区在线免费观看 | 久久毛片高清国产| 一区二区三区成人| 国产成人免费视频一区| 欧美吻胸吃奶大尺度电影| 久久精品人人做人人爽人人| 日韩av在线发布| 欧洲av在线精品| 国产欧美精品一区二区色综合| 亚洲亚洲精品在线观看| 不卡电影一区二区三区| 国产亚洲欧美日韩日本| 久久精品国产秦先生| 欧美日韩国产高清一区二区三区| 中文字幕亚洲电影| 国产伦精品一区二区三区在线观看| 5月丁香婷婷综合| 亚洲午夜一二三区视频| 色综合久久久久久久久| 国产精品色一区二区三区| 国产suv一区二区三区88区| 精品国产伦一区二区三区免费| 三级精品在线观看| 欧美区一区二区三区| 亚洲午夜精品在线| 在线观看av不卡| 亚洲一区二区三区四区五区中文| 成人免费黄色大片| 国产精品美女久久久久av爽李琼| 国产精品一区二区在线看| 日韩欧美专区在线| 久久99国内精品| 精品国产成人系列| 国产真实精品久久二三区| 久久婷婷久久一区二区三区| 国产精品一区二区三区乱码| 久久精品一区二区| 粉嫩高潮美女一区二区三区 | 国产一区二区不卡老阿姨| 欧美一级在线视频| 精品亚洲成a人在线观看| 日韩午夜在线观看| 久久99热这里只有精品| 久久一二三国产| 成人黄色综合网站| 亚洲欧美日韩一区二区| 在线一区二区三区做爰视频网站| 一区二区三区色| 欧美群妇大交群的观看方式| 精品一区二区三区的国产在线播放| 日韩美女视频在线| 成人午夜精品在线| 亚洲综合成人在线视频| 91精品国产91久久综合桃花| 国产美女娇喘av呻吟久久| 欧美高清在线精品一区| 91国偷自产一区二区开放时间| 午夜欧美一区二区三区在线播放| 精品国产一区二区三区久久久蜜月 | 亚洲第一综合色| 26uuu亚洲婷婷狠狠天堂| 成人黄色免费短视频| 午夜欧美视频在线观看| 国产亲近乱来精品视频| 在线观看免费成人| 久草在线在线精品观看| 日韩一区在线看| 欧美一级日韩不卡播放免费| 成人午夜碰碰视频| 日韩1区2区日韩1区2区| 国产精品国产精品国产专区不片| 色欧美片视频在线观看| 激情综合色播激情啊| 亚洲精品成人在线| 欧美精品一区二区三区视频| 色欧美乱欧美15图片| 国产一区二区三区久久悠悠色av| 怡红院av一区二区三区| 久久综合久久综合久久综合| 欧美性色aⅴ视频一区日韩精品| 久久精品国产免费| 亚洲va在线va天堂| 日韩一区欧美一区| 国产视频不卡一区| 日韩一级片网站| 欧美私人免费视频| 99国产一区二区三精品乱码| 久久精品国产亚洲a| 亚洲国产日韩一级| 一区二区三区欧美久久| 国产精品天干天干在观线| 日韩视频在线观看一区二区| 欧美日韩一区二区电影| 91蜜桃免费观看视频| 顶级嫩模精品视频在线看| 麻豆成人av在线| 日韩一区精品字幕| 亚洲综合999| 亚洲男同性视频| 综合激情成人伊人| 欧美韩国日本不卡| 久久综合av免费| 精品久久国产老人久久综合| 欧美一区国产二区| 制服丝袜日韩国产| 欧美久久久久久久久久| 欧美中文字幕一区| 欧美亚洲另类激情小说| 欧美性大战久久| 91久久人澡人人添人人爽欧美| 成人av网站免费观看| 成人av在线一区二区| 成人av电影在线观看| 4438成人网| 欧美性做爰猛烈叫床潮| 欧美亚洲禁片免费| 3d成人h动漫网站入口| 91麻豆精品国产自产在线观看一区| 91豆麻精品91久久久久久| 欧美色偷偷大香| 欧美精品黑人性xxxx| 欧美一区二区黄| 欧美一区二区在线免费观看| 日韩欧美一级特黄在线播放| 久久伊人中文字幕| 亚洲天堂成人在线观看| 一区二区三区91| 男人操女人的视频在线观看欧美| 久久精品国产99久久6| 国产精品99久久久久久似苏梦涵 | 中文一区在线播放| 亚洲免费观看高清完整版在线观看熊 | 成人av电影免费在线播放| 99久久精品免费| 欧美色男人天堂| 欧美成人aa大片| 国产精品天美传媒沈樵| 亚洲第一会所有码转帖| 蜜桃精品在线观看| 成人午夜av在线| 欧美网站一区二区| 久久久精品一品道一区| 亚洲色图制服诱惑| 蜜臀av性久久久久蜜臀aⅴ| 国产精品一区二区三区四区| 色悠久久久久综合欧美99| 欧美一区欧美二区| 国产精品久久久久久久久晋中| 亚洲福利国产精品| 国产精品综合av一区二区国产馆| 91麻豆国产福利在线观看| 欧美一区二区在线视频| 中文字幕一区日韩精品欧美| 亚洲一区在线观看网站| 国产电影一区在线| 欧美日韩一区二区三区视频| 久久久电影一区二区三区| 一区二区三区在线视频观看| 国产综合久久久久久久久久久久| 91污在线观看| 精品久久久久久久久久久久久久久 | 偷拍自拍另类欧美| 不卡视频在线观看| 精品国产91洋老外米糕| 亚洲第一av色| 岛国精品在线播放| 日韩美女在线视频| 亚洲第一精品在线| 91色|porny| 中文一区二区在线观看| 美女视频黄久久| 欧美片在线播放| 亚洲欧美一区二区三区孕妇| 国产精品影音先锋| 欧美大黄免费观看| 天堂影院一区二区| 色94色欧美sute亚洲线路二| 日本一区二区成人在线| 激情亚洲综合在线| 欧美变态tickle挠乳网站| 三级影片在线观看欧美日韩一区二区| 一本色道久久综合狠狠躁的推荐| 国产日韩综合av| 国产一二三精品| 26uuu精品一区二区在线观看| 日韩国产精品久久久久久亚洲| 一本大道久久精品懂色aⅴ| 国产农村妇女毛片精品久久麻豆| 韩国一区二区视频| 欧美成人女星排行榜| 理论片日本一区| 制服.丝袜.亚洲.中文.综合| 亚洲成精国产精品女| 精品视频资源站| 天堂午夜影视日韩欧美一区二区| 欧美日韩一本到|