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

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

?? via-agp.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/* * VIA AGPGART routines.  */#include <linux/types.h>#include <linux/module.h>#include <linux/pci.h>#include <linux/init.h>#include <linux/agp_backend.h>#include "agp.h"static struct pci_device_id agp_via_pci_table[];#define VIA_GARTCTRL	0x80#define VIA_APSIZE	0x84#define VIA_ATTBASE	0x88#define VIA_AGP3_GARTCTRL	0x90#define VIA_AGP3_APSIZE		0x94#define VIA_AGP3_ATTBASE	0x98#define VIA_AGPSEL		0xfdstatic int via_fetch_size(void){	int i;	u8 temp;	struct aper_size_info_8 *values;	values = A_SIZE_8(agp_bridge->driver->aperture_sizes);	pci_read_config_byte(agp_bridge->dev, VIA_APSIZE, &temp);	for (i = 0; i < agp_bridge->driver->num_aperture_sizes; i++) {		if (temp == values[i].size_value) {			agp_bridge->previous_size =			    agp_bridge->current_size = (void *) (values + i);			agp_bridge->aperture_size_idx = i;			return values[i].size;		}	}	return 0;}static int via_configure(void){	u32 temp;	struct aper_size_info_8 *current_size;	current_size = A_SIZE_8(agp_bridge->current_size);	/* aperture size */	pci_write_config_byte(agp_bridge->dev, VIA_APSIZE,			      current_size->size_value);	/* address to map too */	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);	/* GART control register */	pci_write_config_dword(agp_bridge->dev, VIA_GARTCTRL, 0x0000000f);	/* attbase - aperture GATT base */	pci_write_config_dword(agp_bridge->dev, VIA_ATTBASE,			    (agp_bridge->gatt_bus_addr & 0xfffff000) | 3);	return 0;}static void via_cleanup(void){	struct aper_size_info_8 *previous_size;	previous_size = A_SIZE_8(agp_bridge->previous_size);	pci_write_config_byte(agp_bridge->dev, VIA_APSIZE,			      previous_size->size_value);	/* Do not disable by writing 0 to VIA_ATTBASE, it screws things up	 * during reinitialization.	 */}static void via_tlbflush(struct agp_memory *mem){	pci_write_config_dword(agp_bridge->dev, VIA_GARTCTRL, 0x0000008f);	pci_write_config_dword(agp_bridge->dev, VIA_GARTCTRL, 0x0000000f);}static struct aper_size_info_8 via_generic_sizes[7] ={	{256, 65536, 6, 0},	{128, 32768, 5, 128},	{64, 16384, 4, 192},	{32, 8192, 3, 224},	{16, 4096, 2, 240},	{8, 2048, 1, 248},	{4, 1024, 0, 252}};static int via_fetch_size_agp3(void){	int i;	u16 temp;	struct aper_size_info_16 *values;	values = A_SIZE_16(agp_bridge->driver->aperture_sizes);	pci_read_config_word(agp_bridge->dev, VIA_AGP3_APSIZE, &temp);	temp &= 0xfff;	for (i = 0; i < agp_bridge->driver->num_aperture_sizes; i++) {		if (temp == values[i].size_value) {			agp_bridge->previous_size =				agp_bridge->current_size = (void *) (values + i);			agp_bridge->aperture_size_idx = i;			return values[i].size;		}	}	return 0;}static int via_configure_agp3(void){	u32 temp;	struct aper_size_info_16 *current_size;    	current_size = A_SIZE_16(agp_bridge->current_size);	/* address to map too */	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);	/* attbase - aperture GATT base */	pci_write_config_dword(agp_bridge->dev, VIA_AGP3_ATTBASE,		agp_bridge->gatt_bus_addr & 0xfffff000);	/* 1. Enable GTLB in RX90<7>, all AGP aperture access needs to fetch 	 *    translation table first.	 * 2. Enable AGP aperture in RX91<0>. This bit controls the enabling of the	 *    graphics AGP aperture for the AGP3.0 port.	 */	pci_read_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, &temp);	pci_write_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, temp | (3<<7));			return 0;}static void via_cleanup_agp3(void){	struct aper_size_info_16 *previous_size;	previous_size = A_SIZE_16(agp_bridge->previous_size);	pci_write_config_byte(agp_bridge->dev, VIA_APSIZE, previous_size->size_value);}static void via_tlbflush_agp3(struct agp_memory *mem){	u32 temp;	pci_read_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, &temp);	pci_write_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, temp & ~(1<<7));	pci_write_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, temp);}struct agp_bridge_driver via_agp3_driver = {	.owner			= THIS_MODULE,	.aperture_sizes		= agp3_generic_sizes,	.size_type		= U8_APER_SIZE,	.num_aperture_sizes	= 10,	.configure		= via_configure_agp3,	.fetch_size		= via_fetch_size_agp3,	.cleanup		= via_cleanup_agp3,	.tlb_flush		= via_tlbflush_agp3,	.mask_memory		= agp_generic_mask_memory,	.masks			= NULL,	.agp_enable		= agp_generic_enable,	.cache_flush		= global_cache_flush,	.create_gatt_table	= agp_generic_create_gatt_table,	.free_gatt_table	= agp_generic_free_gatt_table,	.insert_memory		= agp_generic_insert_memory,	.remove_memory		= agp_generic_remove_memory,	.alloc_by_type		= agp_generic_alloc_by_type,	.free_by_type		= agp_generic_free_by_type,	.agp_alloc_page		= agp_generic_alloc_page,	.agp_destroy_page	= agp_generic_destroy_page,};struct agp_bridge_driver via_driver = {	.owner			= THIS_MODULE,	.aperture_sizes		= via_generic_sizes,	.size_type		= U8_APER_SIZE,	.num_aperture_sizes	= 7,	.configure		= via_configure,	.fetch_size		= via_fetch_size,	.cleanup		= via_cleanup,	.tlb_flush		= via_tlbflush,	.mask_memory		= agp_generic_mask_memory,	.masks			= NULL,	.agp_enable		= agp_generic_enable,	.cache_flush		= global_cache_flush,	.create_gatt_table	= agp_generic_create_gatt_table,	.free_gatt_table	= agp_generic_free_gatt_table,	.insert_memory		= agp_generic_insert_memory,	.remove_memory		= agp_generic_remove_memory,	.alloc_by_type		= agp_generic_alloc_by_type,	.free_by_type		= agp_generic_free_by_type,	.agp_alloc_page		= agp_generic_alloc_page,	.agp_destroy_page	= agp_generic_destroy_page,};static struct agp_device_ids via_agp_device_ids[] __devinitdata ={	{		.device_id	= PCI_DEVICE_ID_VIA_82C597_0,		.chipset_name	= "Apollo VP3",	},	{		.device_id	= PCI_DEVICE_ID_VIA_82C598_0,		.chipset_name	= "Apollo MVP3",	},	{		.device_id	= PCI_DEVICE_ID_VIA_8501_0,		.chipset_name	= "Apollo MVP4",	},	/* VT8601 */	{		.device_id	= PCI_DEVICE_ID_VIA_8601_0,		.chipset_name	= "Apollo ProMedia/PLE133Ta",	},	/* VT82C693A / VT28C694T */	{		.device_id	= PCI_DEVICE_ID_VIA_82C691_0,		.chipset_name	= "Apollo Pro 133",	},	{		.device_id	= PCI_DEVICE_ID_VIA_8371_0,		.chipset_name	= "KX133",	},	/* VT8633 */	{		.device_id	= PCI_DEVICE_ID_VIA_8633_0,		.chipset_name	= "Pro 266",	},	{		.device_id	= PCI_DEVICE_ID_VIA_XN266,		.chipset_name	= "Apollo Pro266",	},	/* VT8361 */	{		.device_id	= PCI_DEVICE_ID_VIA_8361,		.chipset_name	= "KLE133",	},	/* VT8365 / VT8362 */	{		.device_id	= PCI_DEVICE_ID_VIA_8363_0,		.chipset_name	= "Twister-K/KT133x/KM133",	},	/* VT8753A */	{		.device_id	= PCI_DEVICE_ID_VIA_8753_0,		.chipset_name	= "P4X266",	},	/* VT8366 */	{		.device_id	= PCI_DEVICE_ID_VIA_8367_0,		.chipset_name	= "KT266/KY266x/KT333",	},	/* VT8633 (for CuMine/ Celeron) */	{		.device_id	= PCI_DEVICE_ID_VIA_8653_0,		.chipset_name	= "Pro266T",	},	/* KM266 / PM266 */	{		.device_id	= PCI_DEVICE_ID_VIA_XM266,		.chipset_name	= "PM266/KM266",	},	/* CLE266 */	{		.device_id	= PCI_DEVICE_ID_VIA_862X_0,		.chipset_name	= "CLE266",	},	{		.device_id	= PCI_DEVICE_ID_VIA_8377_0,		.chipset_name	= "KT400/KT400A/KT600",	},	/* VT8604 / VT8605 / VT8603	 * (Apollo Pro133A chipset with S3 Savage4) */	{		.device_id	= PCI_DEVICE_ID_VIA_8605_0,		.chipset_name	= "ProSavage PM133/PL133/PN133"	},	/* P4M266x/P4N266 */	{		.device_id	= PCI_DEVICE_ID_VIA_8703_51_0,		.chipset_name	= "P4M266x/P4N266",	},	/* VT8754 */	{		.device_id	= PCI_DEVICE_ID_VIA_8754C_0,		.chipset_name	= "PT800",	},	/* P4X600 */	{		.device_id	= PCI_DEVICE_ID_VIA_8763_0,		.chipset_name	= "P4X600"	},	/* KM400 */	{		.device_id	= PCI_DEVICE_ID_VIA_8378_0,		.chipset_name	= "KM400/KM400A",	},	/* PT880 */	{		.device_id	= PCI_DEVICE_ID_VIA_PT880,		.chipset_name	= "PT880",	},	/* PT890 */	{		.device_id	= PCI_DEVICE_ID_VIA_8783_0,		.chipset_name	= "PT890",	},	/* PM800/PN800/PM880/PN880 */	{		.device_id	= PCI_DEVICE_ID_VIA_PX8X0_0,		.chipset_name	= "PM800/PN800/PM880/PN880",	},	/* KT880 */	{		.device_id	= PCI_DEVICE_ID_VIA_3269_0,		.chipset_name	= "KT880",	},	/* KTxxx/Px8xx */	{		.device_id	= PCI_DEVICE_ID_VIA_83_87XX_1,		.chipset_name	= "VT83xx/VT87xx/KTxxx/Px8xx",	},	/* P4M800 */	{		.device_id	= PCI_DEVICE_ID_VIA_3296_0,		.chipset_name	= "P4M800",	},	{ }, /* dummy final entry, always present */};/* * VIA's AGP3 chipsets do magick to put the AGP bridge compliant * with the same standards version as the graphics card. */static void check_via_agp3 (struct agp_bridge_data *bridge){	u8 reg;	pci_read_config_byte(bridge->dev, VIA_AGPSEL, &reg);	/* Check AGP 2.0 compatibility mode. */	if ((reg & (1<<1))==0)		bridge->driver = &via_agp3_driver;}static int __devinit agp_via_probe(struct pci_dev *pdev,				   const struct pci_device_id *ent){	struct agp_device_ids *devs = via_agp_device_ids;	struct agp_bridge_data *bridge;	int j = 0;	u8 cap_ptr;	cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP);	if (!cap_ptr)		return -ENODEV;	j = ent - agp_via_pci_table;	printk (KERN_INFO PFX "Detected VIA %s chipset\n", devs[j].chipset_name);	bridge = agp_alloc_bridge();	if (!bridge)		return -ENOMEM;	bridge->dev = pdev;	bridge->capndx = cap_ptr;	bridge->driver = &via_driver;	/*	 * Garg, there are KT400s with KT266 IDs.	 */	if (pdev->device == PCI_DEVICE_ID_VIA_8367_0) {		/* Is there a KT400 subsystem ? */		if (pdev->subsystem_device == PCI_DEVICE_ID_VIA_8377_0) {			printk(KERN_INFO PFX "Found KT400 in disguise as a KT266.\n");			check_via_agp3(bridge);		}	}	/* If this is an AGP3 bridge, check which mode its in and adjust. */	get_agp_version(bridge);	if (bridge->major_version >= 3)		check_via_agp3(bridge);	/* Fill in the mode register */	pci_read_config_dword(pdev,			bridge->capndx+PCI_AGP_STATUS, &bridge->mode);	pci_set_drvdata(pdev, bridge);	return agp_add_bridge(bridge);}static void __devexit agp_via_remove(struct pci_dev *pdev){	struct agp_bridge_data *bridge = pci_get_drvdata(pdev);	agp_remove_bridge(bridge);	agp_put_bridge(bridge);}/* must be the same order as name table above */static struct pci_device_id agp_via_pci_table[] = {#define ID(x) \	{						\	.class		= (PCI_CLASS_BRIDGE_HOST << 8),	\	.class_mask	= ~0,				\	.vendor		= PCI_VENDOR_ID_VIA,		\	.device		= x,				\	.subvendor	= PCI_ANY_ID,			\	.subdevice	= PCI_ANY_ID,			\	}	ID(PCI_DEVICE_ID_VIA_82C597_0),	ID(PCI_DEVICE_ID_VIA_82C598_0),	ID(PCI_DEVICE_ID_VIA_8501_0),	ID(PCI_DEVICE_ID_VIA_8601_0),	ID(PCI_DEVICE_ID_VIA_82C691_0),	ID(PCI_DEVICE_ID_VIA_8371_0),	ID(PCI_DEVICE_ID_VIA_8633_0),	ID(PCI_DEVICE_ID_VIA_XN266),	ID(PCI_DEVICE_ID_VIA_8361),	ID(PCI_DEVICE_ID_VIA_8363_0),	ID(PCI_DEVICE_ID_VIA_8753_0),	ID(PCI_DEVICE_ID_VIA_8367_0),	ID(PCI_DEVICE_ID_VIA_8653_0),	ID(PCI_DEVICE_ID_VIA_XM266),	ID(PCI_DEVICE_ID_VIA_862X_0),	ID(PCI_DEVICE_ID_VIA_8377_0),	ID(PCI_DEVICE_ID_VIA_8605_0),	ID(PCI_DEVICE_ID_VIA_8703_51_0),	ID(PCI_DEVICE_ID_VIA_8754C_0),	ID(PCI_DEVICE_ID_VIA_8763_0),	ID(PCI_DEVICE_ID_VIA_8378_0),	ID(PCI_DEVICE_ID_VIA_PT880),	ID(PCI_DEVICE_ID_VIA_8783_0),	ID(PCI_DEVICE_ID_VIA_PX8X0_0),	ID(PCI_DEVICE_ID_VIA_3269_0),	ID(PCI_DEVICE_ID_VIA_83_87XX_1),	ID(PCI_DEVICE_ID_VIA_3296_0),	{ }};MODULE_DEVICE_TABLE(pci, agp_via_pci_table);static struct pci_driver agp_via_pci_driver = {	.name		= "agpgart-via",	.id_table	= agp_via_pci_table,	.probe		= agp_via_probe,	.remove		= agp_via_remove,};static int __init agp_via_init(void){	return pci_module_init(&agp_via_pci_driver);}static void __exit agp_via_cleanup(void){	pci_unregister_driver(&agp_via_pci_driver);}module_init(agp_via_init);module_exit(agp_via_cleanup);MODULE_LICENSE("GPL and additional rights");MODULE_AUTHOR("Dave Jones <davej@codemonkey.org.uk>");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品区一区二区| 亚洲蜜桃精久久久久久久| 中文字幕国产一区二区| 亚洲黄网站在线观看| 国模少妇一区二区三区| 欧美日韩中字一区| 国产精品网站在线观看| 久久精品国产999大香线蕉| 91麻豆swag| 国产精品视频一二三| 国内精品写真在线观看| 欧美精品一区二区在线播放| 国产精品乱码人人做人人爱| 国产呦精品一区二区三区网站| 欧美情侣在线播放| 一区二区三区四区在线免费观看| 成人久久18免费网站麻豆 | 午夜精品久久久久久久99水蜜桃| 成人综合日日夜夜| 久久综合九色综合97_久久久| 亚洲a一区二区| 欧美日韩一级黄| 亚洲乱码精品一二三四区日韩在线| 成人精品鲁一区一区二区| 久久久久国产精品麻豆| 久久av资源网| 精品国产91久久久久久久妲己| 日本中文一区二区三区| 欧美三级欧美一级| 五月婷婷色综合| 欧美少妇bbb| 亚洲成人精品在线观看| 欧美日韩高清在线| 天堂在线亚洲视频| 欧美精品久久久久久久久老牛影院| 亚洲自拍偷拍欧美| 欧美日韩成人一区| 日韩av午夜在线观看| 日韩一区二区高清| 国产一区二区在线观看视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色综合久久中文综合久久97| 亚洲欧美日韩国产另类专区| 欧美在线观看视频一区二区 | 91久久精品日日躁夜夜躁欧美| ...中文天堂在线一区| 91在线精品秘密一区二区| 亚洲日本va午夜在线影院| 日本高清成人免费播放| 亚洲午夜视频在线| 91精品婷婷国产综合久久| 秋霞电影一区二区| 久久久久国产精品麻豆ai换脸| 成人国产免费视频| 亚洲国产精品麻豆| 9191久久久久久久久久久| 国内精品自线一区二区三区视频| 亚洲国产精品v| 日本韩国视频一区二区| 免费美女久久99| 国产婷婷色一区二区三区在线| 99久久国产综合精品色伊| 亚洲成人激情社区| 欧美精品一区二区三区一线天视频| 成人h动漫精品| 五月天丁香久久| 久久九九久精品国产免费直播| 色综合欧美在线视频区| 美国毛片一区二区三区| 亚洲欧洲日产国码二区| 欧美精品在线一区二区三区| 国产一区二区在线观看视频| 洋洋成人永久网站入口| 久久免费的精品国产v∧| 在线中文字幕一区二区| 美女www一区二区| 一区二区三区欧美| 26uuu精品一区二区三区四区在线| 97精品国产露脸对白| 精品亚洲免费视频| 亚洲香蕉伊在人在线观| 国产午夜精品美女毛片视频| 中文字幕一区免费在线观看| 欧美日韩亚洲高清一区二区| 不卡视频在线观看| 激情图片小说一区| 亚洲午夜在线电影| 国产精品电影院| 久久精品人人做人人爽97 | 99国产精品久| 激情文学综合插| 日本va欧美va欧美va精品| 亚洲女子a中天字幕| 中文字幕电影一区| 精品日韩在线一区| 在线不卡a资源高清| 91丝袜呻吟高潮美腿白嫩在线观看| 国产一区二区三区四| 美女免费视频一区二区| 亚洲成在人线在线播放| 亚洲精品国产一区二区精华液| 国产精品你懂的在线欣赏| 久久嫩草精品久久久精品| 日韩精品一区二区三区视频| 欧美美女一区二区在线观看| 欧美性受极品xxxx喷水| 色88888久久久久久影院按摩| av在线播放一区二区三区| 成人小视频免费观看| 国产成人夜色高潮福利影视| 国内精品伊人久久久久av影院| 另类欧美日韩国产在线| 久久成人免费日本黄色| 久久av资源站| 国产乱国产乱300精品| 国产综合久久久久影院| 国产剧情av麻豆香蕉精品| 精品一区二区三区av| 国产真实乱偷精品视频免| 狠狠色丁香久久婷婷综| 黑人精品欧美一区二区蜜桃| 极品美女销魂一区二区三区| 国产一区二三区| 成人精品亚洲人成在线| 成人高清伦理免费影院在线观看| 成人精品视频.| 色综合天天性综合| 欧美色电影在线| 日韩一区二区免费电影| 久久影院电视剧免费观看| 欧美激情中文不卡| 亚洲青青青在线视频| 亚洲国产精品视频| 久久国产精品无码网站| 顶级嫩模精品视频在线看| 91丝袜美腿高跟国产极品老师| 欧美日韩一区小说| 精品国产亚洲一区二区三区在线观看| 国产视频不卡一区| 一区二区欧美精品| 日本va欧美va欧美va精品| 国产成人综合网站| 日本大香伊一区二区三区| 日韩午夜激情av| 国产精品毛片大码女人| 亚洲6080在线| 国产v综合v亚洲欧| 欧美午夜不卡视频| 久久一二三国产| 亚洲精品视频在线观看网站| 蜜桃一区二区三区四区| a在线播放不卡| 欧美一区二区三区白人| 国产精品美女一区二区| 日本不卡高清视频| 成人性视频免费网站| 欧美久久久久久蜜桃| 国产日韩三级在线| 丝袜美腿一区二区三区| www.66久久| 欧美成人vr18sexvr| 亚洲丝袜精品丝袜在线| 久久精品国产77777蜜臀| 一本久道中文字幕精品亚洲嫩| 日韩免费成人网| 亚洲一区二区精品3399| 国产98色在线|日韩| 欧美老年两性高潮| 《视频一区视频二区| 韩国三级中文字幕hd久久精品| 色天使久久综合网天天| 国产欧美一区二区三区网站| 人人狠狠综合久久亚洲| 91一区二区在线| 欧美国产日韩在线观看| 看电影不卡的网站| 欧美日韩精品一区二区三区蜜桃| 国产精品日产欧美久久久久| 国产乱国产乱300精品| 日韩一级完整毛片| 亚洲电影欧美电影有声小说| 99国内精品久久| 久久久99久久| 韩国欧美国产1区| 欧美电影免费观看高清完整版 | 婷婷夜色潮精品综合在线| 91碰在线视频| 国产精品久久看| 国产精品资源在线观看| 精品少妇一区二区三区免费观看| 亚洲国产美女搞黄色| 色网综合在线观看| 综合亚洲深深色噜噜狠狠网站| 国产激情一区二区三区| 精品国产乱码久久久久久牛牛| 人人爽香蕉精品| 日韩欧美一区在线观看| 老司机免费视频一区二区三区| 欧美日本韩国一区| 日韩成人免费电影|