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

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

?? ide-iops.c

?? ep9315平臺下硬盤驅動的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * linux/drivers/ide/ide-iops.c	Version 0.37	Mar 05, 2003 * *  Copyright (C) 2000-2002	Andre Hedrick <andre@linux-ide.org> *  Copyright (C) 2003		Red Hat <alan@redhat.com> * * */#include <linux/config.h>#define __NO_VERSION__#include <linux/module.h>#include <linux/types.h>#include <linux/string.h>#include <linux/kernel.h>#include <linux/timer.h>#include <linux/mm.h>#include <linux/interrupt.h>#include <linux/major.h>#include <linux/errno.h>#include <linux/genhd.h>#include <linux/blkpg.h>#include <linux/slab.h>#include <linux/pci.h>#include <linux/delay.h>#include <linux/hdreg.h>#include <linux/ide.h>#include <asm/byteorder.h>#include <asm/irq.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/bitops.h>/* *	IDE operator we assign to an unplugged device so that *	we don't trash new hardware assigned the same resources */ static u8 ide_unplugged_inb (unsigned long port){	return 0xFF;}static u16 ide_unplugged_inw (unsigned long port){	return 0xFFFF;}static void ide_unplugged_insw (unsigned long port, void *addr, u32 count){}static u32 ide_unplugged_inl (unsigned long port){	return 0xFFFFFFFF;}static void ide_unplugged_insl (unsigned long port, void *addr, u32 count){}static void ide_unplugged_outb (u8 addr, unsigned long port){}static void ide_unplugged_outbsync (ide_drive_t *drive, u8 addr, unsigned long port){}static void ide_unplugged_outw (u16 addr, unsigned long port){}static void ide_unplugged_outsw (unsigned long port, void *addr, u32 count){}static void ide_unplugged_outl (u32 addr, unsigned long port){}static void ide_unplugged_outsl (unsigned long port, void *addr, u32 count){}void unplugged_hwif_iops (ide_hwif_t *hwif){	hwif->OUTB	= ide_unplugged_outb;	hwif->OUTBSYNC	= ide_unplugged_outbsync;	hwif->OUTW	= ide_unplugged_outw;	hwif->OUTL	= ide_unplugged_outl;	hwif->OUTSW	= ide_unplugged_outsw;	hwif->OUTSL	= ide_unplugged_outsl;	hwif->INB	= ide_unplugged_inb;	hwif->INW	= ide_unplugged_inw;	hwif->INL	= ide_unplugged_inl;	hwif->INSW	= ide_unplugged_insw;	hwif->INSL	= ide_unplugged_insl;}EXPORT_SYMBOL(unplugged_hwif_iops);/* *	Conventional PIO operations for ATA devices */static u8 ide_inb (unsigned long port){#if defined( CONFIG_ARCH_EDB7312 )	return IN_BYTE(port);#elif defined( CONFIG_ARCH_EP93XX )	return (u8) ep93xx_pcmcia_ide_inb(port);#else	return (u8) inb(port);#endif}static u16 ide_inw (unsigned long port){#ifdef CONFIG_ARCH_EP93XX	return (u16) ep93xx_pcmcia_ide_inw(port);#else	return (u16) inw(port);#endif}static void ide_insw (unsigned long port, void *addr, u32 count){#ifdef CONFIG_ARCH_EP93XX	return ep93xx_pcmcia_ide_insw(port, addr, count);#else	return insw(port, addr, count);#endif}static u32 ide_inl (unsigned long port){	return (u32) inl(port);}static void ide_insl (unsigned long port, void *addr, u32 count){	insl(port, addr, count);}static void ide_outb (u8 addr, unsigned long port){#if defined( CONFIG_ARCH_EDB7312 )	OUT_BYTE(addr, port);#elif defined( CONFIG_ARCH_EP93XX )	ep93xx_pcmcia_ide_outb(addr, port);#else	outb(addr, port);#endif}static void ide_outbsync (ide_drive_t *drive, u8 addr, unsigned long port){#ifdef CONFIG_ARCH_EP93XX	ep93xx_pcmcia_ide_outb(addr, port);#else	outb(addr, port);#endif}static void ide_outw (u16 addr, unsigned long port){#ifdef CONFIG_ARCH_EP93XX	ep93xx_pcmcia_ide_outw(addr, port);#else	outw(addr, port);#endif}static void ide_outsw (unsigned long port, void *addr, u32 count){#ifdef CONFIG_ARCH_EP93XX	ep93xx_pcmcia_ide_outsw(port, addr, count);#else	outsw(port, addr, count);#endif}static void ide_outl (u32 addr, unsigned long port){	outl(addr, port);}static void ide_outsl (unsigned long port, void *addr, u32 count){	outsl(port, addr, count);}void default_hwif_iops (ide_hwif_t *hwif){	hwif->OUTB	= ide_outb;	hwif->OUTBSYNC	= ide_outbsync;	hwif->OUTW	= ide_outw;	hwif->OUTL	= ide_outl;	hwif->OUTSW	= ide_outsw;	hwif->OUTSL	= ide_outsl;	hwif->INB	= ide_inb;	hwif->INW	= ide_inw;	hwif->INL	= ide_inl;	hwif->INSW	= ide_insw;	hwif->INSL	= ide_insl;}EXPORT_SYMBOL(default_hwif_iops);/* *	MMIO operations, typically used for SATA controllers */static u8 ide_mm_inb (unsigned long port){	return (u8) readb(port);}static u16 ide_mm_inw (unsigned long port){	return (u16) readw(port);}static void ide_mm_insw (unsigned long port, void *addr, u32 count){	__ide_mm_insw(port, addr, count);}static u32 ide_mm_inl (unsigned long port){	return (u32) readl(port);}static void ide_mm_insl (unsigned long port, void *addr, u32 count){	__ide_mm_insl(port, addr, count);}static void ide_mm_outb (u8 value, unsigned long port){	writeb(value, port);}static void ide_mm_outbsync (ide_drive_t *drive, u8 value, unsigned long port){	writeb(value, port);	}static void ide_mm_outw (u16 value, unsigned long port){	writew(value, port);}static void ide_mm_outsw (unsigned long port, void *addr, u32 count){	__ide_mm_outsw(port, addr, count);}static void ide_mm_outl (u32 value, unsigned long port){	writel(value, port);}static void ide_mm_outsl (unsigned long port, void *addr, u32 count){	__ide_mm_outsl(port, addr, count);}void default_hwif_mmiops (ide_hwif_t *hwif){	hwif->OUTB	= ide_mm_outb;	/* Most systems will need to override OUTBSYNC, alas however	   this one is controller specific! */	hwif->OUTBSYNC	= ide_mm_outbsync;	hwif->OUTW	= ide_mm_outw;	hwif->OUTL	= ide_mm_outl;	hwif->OUTSW	= ide_mm_outsw;	hwif->OUTSL	= ide_mm_outsl;	hwif->INB	= ide_mm_inb;	hwif->INW	= ide_mm_inw;	hwif->INL	= ide_mm_inl;	hwif->INSW	= ide_mm_insw;	hwif->INSL	= ide_mm_insl;}EXPORT_SYMBOL(default_hwif_mmiops);void default_hwif_transport (ide_hwif_t *hwif){	hwif->ata_input_data		= ata_input_data;	hwif->ata_output_data		= ata_output_data;	hwif->atapi_input_bytes		= atapi_input_bytes;	hwif->atapi_output_bytes	= atapi_output_bytes;}EXPORT_SYMBOL(default_hwif_transport);u32 read_24 (ide_drive_t *drive){	u8 hcyl = HWIF(drive)->INB(IDE_HCYL_REG);	u8 lcyl = HWIF(drive)->INB(IDE_LCYL_REG);	u8 sect = HWIF(drive)->INB(IDE_SECTOR_REG);	return (hcyl<<16)|(lcyl<<8)|sect;}EXPORT_SYMBOL(read_24);void SELECT_DRIVE (ide_drive_t *drive){	if (HWIF(drive)->selectproc)		HWIF(drive)->selectproc(drive);	HWIF(drive)->OUTB(drive->select.all, IDE_SELECT_REG);}EXPORT_SYMBOL(SELECT_DRIVE);void SELECT_INTERRUPT (ide_drive_t *drive){	if (HWIF(drive)->intrproc)		HWIF(drive)->intrproc(drive);	else		HWIF(drive)->OUTB(drive->ctl|2, IDE_CONTROL_REG);}EXPORT_SYMBOL(SELECT_INTERRUPT);void SELECT_MASK (ide_drive_t *drive, int mask){	if (HWIF(drive)->maskproc)		HWIF(drive)->maskproc(drive, mask);}EXPORT_SYMBOL(SELECT_MASK);void QUIRK_LIST (ide_drive_t *drive){	if (HWIF(drive)->quirkproc)		drive->quirk_list = HWIF(drive)->quirkproc(drive);}EXPORT_SYMBOL(QUIRK_LIST);/* * Some localbus EIDE interfaces require a special access sequence * when using 32-bit I/O instructions to transfer data.  We call this * the "vlb_sync" sequence, which consists of three successive reads * of the sector count register location, with interrupts disabled * to ensure that the reads all happen together. */void ata_vlb_sync (ide_drive_t *drive, ide_ioreg_t port){	(void) HWIF(drive)->INB(port);	(void) HWIF(drive)->INB(port);	(void) HWIF(drive)->INB(port);}EXPORT_SYMBOL(ata_vlb_sync);/* * This is used for most PIO data transfers *from* the IDE interface */void ata_input_data (ide_drive_t *drive, void *buffer, u32 wcount){	ide_hwif_t *hwif	= HWIF(drive);	u8 io_32bit		= drive->io_32bit;	if (io_32bit) {		if (io_32bit & 2) {			unsigned long flags;			local_irq_save(flags);			ata_vlb_sync(drive, IDE_NSECTOR_REG);			hwif->INSL(IDE_DATA_REG, buffer, wcount);			local_irq_restore(flags);		} else			hwif->INSL(IDE_DATA_REG, buffer, wcount);	} else {		hwif->INSW(IDE_DATA_REG, buffer, wcount<<1);	}}EXPORT_SYMBOL(ata_input_data);/* * This is used for most PIO data transfers *to* the IDE interface */void ata_output_data (ide_drive_t *drive, void *buffer, u32 wcount){	ide_hwif_t *hwif	= HWIF(drive);	u8 io_32bit		= drive->io_32bit;	if (io_32bit) {		if (io_32bit & 2) {			unsigned long flags;			local_irq_save(flags);			ata_vlb_sync(drive, IDE_NSECTOR_REG);			hwif->OUTSL(IDE_DATA_REG, buffer, wcount);			local_irq_restore(flags);		} else			hwif->OUTSL(IDE_DATA_REG, buffer, wcount);	} else {		hwif->OUTSW(IDE_DATA_REG, buffer, wcount<<1);	}}EXPORT_SYMBOL(ata_output_data);/* * The following routines are mainly used by the ATAPI drivers. * * These routines will round up any request for an odd number of bytes, * so if an odd bytecount is specified, be sure that there's at least one * extra byte allocated for the buffer. */void atapi_input_bytes (ide_drive_t *drive, void *buffer, u32 bytecount){	ide_hwif_t *hwif = HWIF(drive);	++bytecount;#if defined(CONFIG_ATARI) || defined(CONFIG_Q40)	if (MACH_IS_ATARI || MACH_IS_Q40) {		/* Atari has a byte-swapped IDE interface */		insw_swapw(IDE_DATA_REG, buffer, bytecount / 2);		return;	}#endif /* CONFIG_ATARI || CONFIG_Q40 */	hwif->ata_input_data(drive, buffer, bytecount / 4);	if ((bytecount & 0x03) >= 2)		hwif->INSW(IDE_DATA_REG, ((u8 *)buffer)+(bytecount & ~0x03), 1);}EXPORT_SYMBOL(atapi_input_bytes);void atapi_output_bytes (ide_drive_t *drive, void *buffer, u32 bytecount){	ide_hwif_t *hwif = HWIF(drive);	++bytecount;#if defined(CONFIG_ATARI) || defined(CONFIG_Q40)	if (MACH_IS_ATARI || MACH_IS_Q40) {		/* Atari has a byte-swapped IDE interface */		outsw_swapw(IDE_DATA_REG, buffer, bytecount / 2);		return;	}#endif /* CONFIG_ATARI || CONFIG_Q40 */	hwif->ata_output_data(drive, buffer, bytecount / 4);	if ((bytecount & 0x03) >= 2)		hwif->OUTSW(IDE_DATA_REG, ((u8*)buffer)+(bytecount & ~0x03), 1);}EXPORT_SYMBOL(atapi_output_bytes);/* * Beginning of Taskfile OPCODE Library and feature sets. */void ide_fix_driveid (struct hd_driveid *id)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
3d成人动漫网站| 亚洲成精国产精品女| 亚洲欧美电影一区二区| 日本亚洲三级在线| 99久久婷婷国产综合精品电影 | 国产在线视频一区二区| 97久久久精品综合88久久| 日韩一区二区电影| 亚洲午夜久久久久久久久电影网| 激情综合一区二区三区| 欧美日韩一区精品| 亚洲三级在线看| 国产激情精品久久久第一区二区 | 在线欧美一区二区| 欧美极品aⅴ影院| 国模少妇一区二区三区| 91精品国产黑色紧身裤美女| 一区二区三区四区视频精品免费 | 精品污污网站免费看| 中文字幕二三区不卡| 精品亚洲成a人在线观看| 欧美在线综合视频| 亚洲欧美日韩成人高清在线一区| 国产精品99久久久久久宅男| 日韩欧美中文字幕公布| 日本最新不卡在线| 欧美日韩高清一区| 亚洲一区二区在线免费看| 9久草视频在线视频精品| 国产无一区二区| 国产91对白在线观看九色| 久久久久国色av免费看影院| 狠狠狠色丁香婷婷综合久久五月| 日韩欧美你懂的| 精品亚洲国内自在自线福利| 日韩精品一区二区三区老鸭窝| 奇米影视7777精品一区二区| 欧美一卡二卡在线观看| 日韩av一区二区三区| 欧美一区二区国产| 国产一区二区在线电影| 国产亚洲欧美日韩在线一区| 成人精品免费视频| 亚洲婷婷综合久久一本伊一区| 91麻豆精品一区二区三区| 伊人夜夜躁av伊人久久| 欧美日韩一区三区四区| 日本亚洲天堂网| 久久综合狠狠综合久久激情| 成人免费电影视频| 亚洲视频在线一区| 欧美日韩一级黄| 精品亚洲国产成人av制服丝袜| 国产日韩欧美综合在线| 91美女在线看| 午夜在线成人av| 欧美一二三区在线| 国产激情精品久久久第一区二区| 最好看的中文字幕久久| 在线播放中文字幕一区| 国产一区啦啦啦在线观看| 亚洲欧洲日产国码二区| 欧美日韩国产另类一区| 国产一二精品视频| 亚洲一区av在线| 久久久www免费人成精品| 99久久777色| 秋霞电影网一区二区| 国产精品系列在线| 9191精品国产综合久久久久久 | 色八戒一区二区三区| 欧美bbbbb| 国产精品狼人久久影院观看方式| 欧美系列一区二区| 成人一区在线看| 欧美aaaaaa午夜精品| 亚洲欧洲国产日韩| 欧美一级夜夜爽| 一本到不卡免费一区二区| 激情深爱一区二区| 夜夜爽夜夜爽精品视频| 国产色产综合色产在线视频| 欧美一区二区在线不卡| 91亚洲国产成人精品一区二区三 | 成人一区在线观看| 免费成人美女在线观看| 亚洲美女视频在线| 久久精品夜色噜噜亚洲a∨| 欧美日韩你懂得| av不卡在线播放| 国内成人精品2018免费看| 亚洲国产精品视频| 亚洲欧美综合色| 久久久高清一区二区三区| 日韩一区二区三区四区五区六区| 色8久久精品久久久久久蜜| 国产成人在线观看| 精品一区二区免费看| 日本免费在线视频不卡一不卡二| 亚洲精品免费视频| 18成人在线视频| 国产精品色婷婷久久58| 久久久久久免费网| 亚洲精品在线网站| 精品免费国产二区三区| 日韩一级在线观看| 日韩欧美一二区| 日韩欧美久久久| 欧美电影免费提供在线观看| 制服丝袜亚洲色图| 欧美一区二区观看视频| 欧美一级片免费看| 日韩午夜激情免费电影| 欧美一级视频精品观看| 制服丝袜成人动漫| 日韩一区二区高清| 久久亚洲综合av| 国产精品婷婷午夜在线观看| 久久久精品黄色| 国产精品欧美精品| 综合久久国产九一剧情麻豆| 国产精品九色蝌蚪自拍| 成人欧美一区二区三区小说| 亚洲欧美在线另类| 亚洲免费毛片网站| 午夜精品一区在线观看| 日本在线不卡一区| 精品一区二区三区视频在线观看 | 国产午夜精品一区二区三区嫩草 | 亚洲精品久久久久久国产精华液| 亚洲婷婷国产精品电影人久久| 亚洲精品国产精华液| 香蕉影视欧美成人| 九九国产精品视频| 国产91精品在线观看| 97国产一区二区| 欧美视频一区二区在线观看| 欧美日韩在线免费视频| 91精品国产91热久久久做人人| 日韩免费一区二区| 国产精品嫩草影院com| 一区二区三区在线观看欧美| 日本最新不卡在线| 成人av网站大全| 欧美日韩一卡二卡三卡 | 国产电影精品久久禁18| 成人美女在线视频| 欧美精品亚洲一区二区在线播放| 欧美日韩激情一区| 国产喷白浆一区二区三区| 亚洲一区二区偷拍精品| 精品一区二区成人精品| 99r国产精品| 欧美哺乳videos| 亚洲免费av高清| 国产一区中文字幕| 欧美日韩亚洲高清一区二区| 精品国产sm最大网站免费看| 亚洲男人都懂的| 精品一区二区三区在线视频| 一本大道av伊人久久综合| 欧美成人精品高清在线播放| 亚洲另类在线视频| 国产一区二区三区在线看麻豆| 91一区二区在线| 国产日韩精品久久久| 午夜视频一区二区| 99精品久久只有精品| 精品欧美一区二区三区精品久久| 亚洲美腿欧美偷拍| 成人av电影在线| 日韩精品最新网址| 亚洲国产aⅴ天堂久久| 国产91在线观看丝袜| 欧美日韩国产片| 一区二区三区91| 懂色av噜噜一区二区三区av| 欧美绝品在线观看成人午夜影视 | 久久综合色之久久综合| 亚洲无人区一区| 成人天堂资源www在线| 日韩午夜中文字幕| 亚洲午夜精品一区二区三区他趣| 大白屁股一区二区视频| 欧美精品一区视频| 青青国产91久久久久久| 欧美日韩精品免费观看视频| 一区二区三区欧美亚洲| 99国产精品99久久久久久| 国产精品三级av| 高清在线观看日韩| 欧美国产精品专区| 国产激情偷乱视频一区二区三区| 久久综合九色综合欧美98| 毛片基地黄久久久久久天堂| 777午夜精品视频在线播放| 亚洲一区二区av在线| 欧美日韩国产精选| 日日骚欧美日韩| 91精品国产91久久综合桃花|