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

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

?? pata_via.c

?? their RouterBoard 1xx and 5xx series devices. The original Mikrotik code
?? C
?? 第 1 頁 / 共 2 頁
字號:
}static void via_set_piomode(struct ata_port *ap, struct ata_device *adev){	const struct via_isa_bridge *config = ap->host->private_data;	int set_ast = (config->flags & VIA_BAD_AST) ? 0 : 1;	int mode = config->flags & VIA_UDMA;	static u8 tclock[5] = { 1, 1, 2, 3, 4 };	static u8 udma[5] = { 0, 33, 66, 100, 133 };	via_do_set_mode(ap, adev, adev->pio_mode, tclock[mode], set_ast, udma[mode]);}static void via_set_dmamode(struct ata_port *ap, struct ata_device *adev){	const struct via_isa_bridge *config = ap->host->private_data;	int set_ast = (config->flags & VIA_BAD_AST) ? 0 : 1;	int mode = config->flags & VIA_UDMA;	static u8 tclock[5] = { 1, 1, 2, 3, 4 };	static u8 udma[5] = { 0, 33, 66, 100, 133 };	via_do_set_mode(ap, adev, adev->dma_mode, tclock[mode], set_ast, udma[mode]);}static struct scsi_host_template via_sht = {	ATA_BMDMA_SHT(DRV_NAME),};static struct ata_port_operations via_port_ops = {	.inherits	= &ata_bmdma_port_ops,	.cable_detect	= via_cable_detect,	.set_piomode	= via_set_piomode,	.set_dmamode	= via_set_dmamode,	.prereset	= via_pre_reset,};static struct ata_port_operations via_port_ops_noirq = {	.inherits	= &via_port_ops,	.sff_data_xfer	= ata_sff_data_xfer_noirq,};/** *	via_config_fifo		-	set up the FIFO *	@pdev: PCI device *	@flags: configuration flags * *	Set the FIFO properties for this device if necessary. Used both on *	set up and on and the resume path */static void via_config_fifo(struct pci_dev *pdev, unsigned int flags){	u8 enable;	/* 0x40 low bits indicate enabled channels */	pci_read_config_byte(pdev, 0x40 , &enable);	enable &= 3;	if (flags & VIA_SET_FIFO) {		static const u8 fifo_setting[4] = {0x00, 0x60, 0x00, 0x20};		u8 fifo;		pci_read_config_byte(pdev, 0x43, &fifo);		/* Clear PREQ# until DDACK# for errata */		if (flags & VIA_BAD_PREQ)			fifo &= 0x7F;		else			fifo &= 0x9f;		/* Turn on FIFO for enabled channels */		fifo |= fifo_setting[enable];		pci_write_config_byte(pdev, 0x43, fifo);	}}/** *	via_init_one		-	discovery callback *	@pdev: PCI device *	@id: PCI table info * *	A VIA IDE interface has been discovered. Figure out what revision *	and perform configuration work before handing it to the ATA layer */static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id){	/* Early VIA without UDMA support */	static const struct ata_port_info via_mwdma_info = {		.flags = ATA_FLAG_SLAVE_POSS,		.pio_mask = 0x1f,		.mwdma_mask = 0x07,		.port_ops = &via_port_ops	};	/* Ditto with IRQ masking required */	static const struct ata_port_info via_mwdma_info_borked = {		.flags = ATA_FLAG_SLAVE_POSS,		.pio_mask = 0x1f,		.mwdma_mask = 0x07,		.port_ops = &via_port_ops_noirq,	};	/* VIA UDMA 33 devices (and borked 66) */	static const struct ata_port_info via_udma33_info = {		.flags = ATA_FLAG_SLAVE_POSS,		.pio_mask = 0x1f,		.mwdma_mask = 0x07,		.udma_mask = ATA_UDMA2,		.port_ops = &via_port_ops	};	/* VIA UDMA 66 devices */	static const struct ata_port_info via_udma66_info = {		.flags = ATA_FLAG_SLAVE_POSS,		.pio_mask = 0x1f,		.mwdma_mask = 0x07,		.udma_mask = ATA_UDMA4,		.port_ops = &via_port_ops	};	/* VIA UDMA 100 devices */	static const struct ata_port_info via_udma100_info = {		.flags = ATA_FLAG_SLAVE_POSS,		.pio_mask = 0x1f,		.mwdma_mask = 0x07,		.udma_mask = ATA_UDMA5,		.port_ops = &via_port_ops	};	/* UDMA133 with bad AST (All current 133) */	static const struct ata_port_info via_udma133_info = {		.flags = ATA_FLAG_SLAVE_POSS,		.pio_mask = 0x1f,		.mwdma_mask = 0x07,		.udma_mask = ATA_UDMA6,	/* FIXME: should check north bridge */		.port_ops = &via_port_ops	};	const struct ata_port_info *ppi[] = { NULL, NULL };	struct pci_dev *isa = NULL;	const struct via_isa_bridge *config;	static int printed_version;	u8 enable;	u32 timing;	int rc;	if (!printed_version++)		dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");	rc = pcim_enable_device(pdev);	if (rc)		return rc;	/* To find out how the IDE will behave and what features we	   actually have to look at the bridge not the IDE controller */	for (config = via_isa_bridges; config->id; config++)		if ((isa = pci_get_device(PCI_VENDOR_ID_VIA +			!!(config->flags & VIA_BAD_ID),			config->id, NULL))) {			if (isa->revision >= config->rev_min &&			    isa->revision <= config->rev_max)				break;			pci_dev_put(isa);		}	if (!config->id) {		printk(KERN_WARNING "via: Unknown VIA SouthBridge, disabling.\n");		return -ENODEV;	}	pci_dev_put(isa);	if (!(config->flags & VIA_NO_ENABLES)) {		/* 0x40 low bits indicate enabled channels */		pci_read_config_byte(pdev, 0x40 , &enable);		enable &= 3;		if (enable == 0)			return -ENODEV;	}	/* Initialise the FIFO for the enabled channels. */	via_config_fifo(pdev, config->flags);	/* Clock set up */	switch(config->flags & VIA_UDMA) {		case VIA_UDMA_NONE:			if (config->flags & VIA_NO_UNMASK)				ppi[0] = &via_mwdma_info_borked;			else				ppi[0] = &via_mwdma_info;			break;		case VIA_UDMA_33:			ppi[0] = &via_udma33_info;			break;		case VIA_UDMA_66:			ppi[0] = &via_udma66_info;			/* The 66 MHz devices require we enable the clock */			pci_read_config_dword(pdev, 0x50, &timing);			timing |= 0x80008;			pci_write_config_dword(pdev, 0x50, timing);			break;		case VIA_UDMA_100:			ppi[0] = &via_udma100_info;			break;		case VIA_UDMA_133:			ppi[0] = &via_udma133_info;			break;		default:			WARN_ON(1);			return -ENODEV;	}	if (config->flags & VIA_BAD_CLK66) {		/* Disable the 66MHz clock on problem devices */		pci_read_config_dword(pdev, 0x50, &timing);		timing &= ~0x80008;		pci_write_config_dword(pdev, 0x50, timing);	}	/* We have established the device type, now fire it up */	return ata_pci_sff_init_one(pdev, ppi, &via_sht, (void *)config);}#ifdef CONFIG_PM/** *	via_reinit_one		-	reinit after resume *	@pdev; PCI device * *	Called when the VIA PATA device is resumed. We must then *	reconfigure the fifo and other setup we may have altered. In *	addition the kernel needs to have the resume methods on PCI *	quirk supported. */static int via_reinit_one(struct pci_dev *pdev){	u32 timing;	struct ata_host *host = dev_get_drvdata(&pdev->dev);	const struct via_isa_bridge *config = host->private_data;	int rc;	rc = ata_pci_device_do_resume(pdev);	if (rc)		return rc;	via_config_fifo(pdev, config->flags);	if ((config->flags & VIA_UDMA) == VIA_UDMA_66) {		/* The 66 MHz devices require we enable the clock */		pci_read_config_dword(pdev, 0x50, &timing);		timing |= 0x80008;		pci_write_config_dword(pdev, 0x50, timing);	}	if (config->flags & VIA_BAD_CLK66) {		/* Disable the 66MHz clock on problem devices */		pci_read_config_dword(pdev, 0x50, &timing);		timing &= ~0x80008;		pci_write_config_dword(pdev, 0x50, timing);	}	ata_host_resume(host);	return 0;}#endifstatic const struct pci_device_id via[] = {	{ PCI_VDEVICE(VIA, 0x0571), },	{ PCI_VDEVICE(VIA, 0x0581), },	{ PCI_VDEVICE(VIA, 0x1571), },	{ PCI_VDEVICE(VIA, 0x3164), },	{ PCI_VDEVICE(VIA, 0x5324), },	{ },};static struct pci_driver via_pci_driver = {	.name 		= DRV_NAME,	.id_table	= via,	.probe 		= via_init_one,	.remove		= ata_pci_remove_one,#ifdef CONFIG_PM	.suspend	= ata_pci_device_suspend,	.resume		= via_reinit_one,#endif};static int __init via_init(void){	return pci_register_driver(&via_pci_driver);}static void __exit via_exit(void){	pci_unregister_driver(&via_pci_driver);}MODULE_AUTHOR("Alan Cox");MODULE_DESCRIPTION("low-level driver for VIA PATA");MODULE_LICENSE("GPL");MODULE_DEVICE_TABLE(pci, via);MODULE_VERSION(DRV_VERSION);module_init(via_init);module_exit(via_exit);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线观看视频在线观看| 亚洲日本在线观看| 亚洲国产成人自拍| 五月激情六月综合| eeuss鲁片一区二区三区 | 性做久久久久久免费观看| 国产真实乱子伦精品视频| 在线欧美日韩精品| 国产欧美精品一区二区色综合朱莉| 一区二区三区精品在线观看| 国产福利一区二区三区视频在线| 欧美一区二区三区色| 国产精品美女久久久久久久网站| 首页国产丝袜综合| 欧美丝袜丝交足nylons图片| 136国产福利精品导航| 狠狠色综合日日| 日韩视频在线你懂得| 亚洲自拍与偷拍| 色综合视频在线观看| 亚洲国产精品成人综合| 韩国女主播成人在线观看| 555www色欧美视频| 亚洲国产日韩一级| 在线观看91精品国产入口| 亚洲欧美日韩久久精品| 丁香激情综合五月| 久久久久久久久岛国免费| 免费观看在线综合| 日韩欧美高清dvd碟片| 日韩二区三区在线观看| 欧美精品日韩一本| 日韩电影在线看| 91麻豆精品91久久久久同性| 午夜国产精品一区| 91麻豆精品91久久久久久清纯| 亚洲一区影音先锋| 欧美高清你懂得| 另类小说欧美激情| 精品国产免费久久 | 久久综合久久综合久久综合| 裸体健美xxxx欧美裸体表演| 欧美大片一区二区| 精品一区二区精品| 国产欧美日韩综合精品一区二区| 国产成人自拍网| 椎名由奈av一区二区三区| 色吧成人激情小说| 亚洲成人7777| 精品国产91洋老外米糕| 国产suv精品一区二区883| 亚洲婷婷综合色高清在线| 欧美性高清videossexo| 五月婷婷激情综合| 欧美大片在线观看| 99免费精品视频| 天天免费综合色| www久久精品| 色综合天天天天做夜夜夜夜做| 一个色综合网站| 日韩欧美久久一区| 成人高清视频在线| 亚洲一区二区三区不卡国产欧美| 日韩亚洲欧美成人一区| 国产成人免费网站| 亚洲国产日产av| 久久综合久久综合亚洲| 在线亚洲一区二区| 狠狠狠色丁香婷婷综合久久五月| 国产精品国产自产拍高清av王其 | 日韩一区在线播放| 777xxx欧美| 成人性生交大片免费| 亚洲成a人v欧美综合天堂下载| 精品国产一区二区三区久久影院| 91视频.com| 国产一区二区三区日韩| 亚洲国产精品久久一线不卡| 亚洲国产高清aⅴ视频| 91精品视频网| 在线视频你懂得一区二区三区| 精久久久久久久久久久| 午夜欧美视频在线观看| 中文字幕国产一区| 欧美va亚洲va国产综合| 欧美亚洲日本国产| 成人妖精视频yjsp地址| 蜜桃免费网站一区二区三区| 亚洲精品高清在线| 中文字幕不卡三区| 欧美大肚乱孕交hd孕妇| 91理论电影在线观看| 国产精品一区二区x88av| 五月天亚洲婷婷| 亚洲免费伊人电影| 国产亚洲成aⅴ人片在线观看 | 欧美精品一区二区在线播放| 欧美日韩久久一区| 色婷婷亚洲综合| 成熟亚洲日本毛茸茸凸凹| 激情图片小说一区| 日本免费在线视频不卡一不卡二| 尤物在线观看一区| 亚洲天堂av老司机| 国产精品麻豆欧美日韩ww| 久久久久久黄色| 精品第一国产综合精品aⅴ| 欧美精品日韩精品| 欧美理论片在线| 欧美日韩和欧美的一区二区| 一本色道久久综合精品竹菊| 不卡的av在线播放| 成人91在线观看| 菠萝蜜视频在线观看一区| 丁香激情综合五月| 成人福利电影精品一区二区在线观看 | 这里只有精品免费| 欧美裸体bbwbbwbbw| 制服丝袜国产精品| 日韩一区二区视频| 精品国产乱码久久久久久久久| 日韩一区二区在线播放| 精品国产一区二区三区久久影院 | 国产成a人无v码亚洲福利| 激情另类小说区图片区视频区| 免费观看日韩av| 国内精品国产成人| 粉嫩aⅴ一区二区三区四区五区| 成人精品视频一区二区三区尤物| 99精品一区二区| 在线观看网站黄不卡| 91精品国产综合久久久久久久久久 | 91视频免费播放| 在线观看免费一区| 日韩一区二区电影网| 久久久久久久国产精品影院| 中文幕一区二区三区久久蜜桃| 国产精品国产三级国产| 夜夜亚洲天天久久| 久久国产婷婷国产香蕉| 国产精品亚洲成人| 色综合久久中文综合久久牛| 欧美制服丝袜第一页| 欧美成人精品1314www| 欧美国产日韩一二三区| 一个色综合av| 国产在线视频精品一区| www.亚洲国产| 宅男噜噜噜66一区二区66| 国产日韩成人精品| 一区二区免费在线| 看电影不卡的网站| av综合在线播放| 日韩欧美另类在线| 亚洲日本中文字幕区| 麻豆免费看一区二区三区| av电影天堂一区二区在线观看| 欧美日韩免费视频| 国产女人18毛片水真多成人如厕 | 中文字幕日韩一区| 免费xxxx性欧美18vr| 99re8在线精品视频免费播放| 在线成人免费视频| 最好看的中文字幕久久| 狠狠色伊人亚洲综合成人| 色婷婷久久一区二区三区麻豆| 欧美变态tickle挠乳网站| 一区二区三区四区激情| 国产精品18久久久久久久久久久久| 色猫猫国产区一区二在线视频| 精品福利二区三区| 日本怡春院一区二区| 91久久久免费一区二区| 久久久99免费| 美日韩一级片在线观看| 91精彩视频在线| 中文字幕乱码久久午夜不卡| 美美哒免费高清在线观看视频一区二区| av动漫一区二区| 中文字幕成人av| 国产精品亚洲一区二区三区妖精| 日韩一区二区三区视频| 一区二区不卡在线视频 午夜欧美不卡在 | av男人天堂一区| 久久精品综合网| 美女mm1313爽爽久久久蜜臀| 欧美日韩精品专区| 一区二区三区在线视频播放| 成人av网站在线观看免费| 久久影院视频免费| 日韩国产欧美在线观看| 欧美私模裸体表演在线观看| 亚洲视频一区在线观看| av亚洲精华国产精华| 国产精品免费久久| 成人a级免费电影| 欧美激情在线免费观看| 国产精品99久| 国产精品蜜臀在线观看| 99久久精品国产一区|