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

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

?? ide3.c

?? ucos在三星s3c44b0上的ide程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*將IDE硬盤與44B0相接,接著把此IDE3.C放入KERNEL一起編譯完成後,開啟便能抓到此硬盤 *  linux/drivers/ide/ide.c		Version 6.31	June 9, 2000 * *  Copyright (C) 1994-1998  Linus Torvalds & authors (see below) *//* *  Mostly written by Mark Lord  <mlord@pobox.com> *                and Gadi Oxman <gadio@netvision.net.il> *                and Andre Hedrick <andre@linux-ide.org> * *  See linux/MAINTAINERS for address of current maintainer. * * This is the multiple IDE interface driver, as evolved from hd.c. * It supports up to MAX_HWIFS IDE interfaces, on one or more IRQs (usually 14 & 15). * There can be up to two drives per interface, as per the ATA-2 spec. * * Primary:    ide0, port 0x1f0; major=3;  hda is minor=0; hdb is minor=64 * Secondary:  ide1, port 0x170; major=22; hdc is minor=0; hdd is minor=64 * Tertiary:   ide2, port 0x???; major=33; hde is minor=0; hdf is minor=64 * Quaternary: ide3, port 0x???; major=34; hdg is minor=0; hdh is minor=64 * ... * *  From hd.c: *  | *  | It traverses the request-list, using interrupts to jump between functions. *  | As nearly all functions can be called within interrupts, we may not sleep. *  | Special care is recommended.  Have Fun! *  | *  | modified by Drew Eckhardt to check nr of hd's from the CMOS. *  | *  | Thanks to Branko Lankester, lankeste@fwi.uva.nl, who found a bug *  | in the early extended-partition checks and added DM partitions. *  | *  | Early work on error handling by Mika Liljeberg (liljeber@cs.Helsinki.FI). *  | *  | IRQ-unmask, drive-id, multiple-mode, support for ">16 heads", *  | and general streamlining by Mark Lord (mlord@pobox.com). * *  October, 1994 -- Complete line-by-line overhaul for linux 1.1.x, by: * *	Mark Lord	(mlord@pobox.com)		(IDE Perf.Pkg) *	Delman Lee	(delman@ieee.org)		("Mr. atdisk2") *	Scott Snyder	(snyder@fnald0.fnal.gov)	(ATAPI IDE cd-rom) * *  This was a rewrite of just about everything from hd.c, though some original *  code is still sprinkled about.  Think of it as a major evolution, with *  inspiration from lots of linux users, esp.  hamish@zot.apana.org.au * *  Version 1.0 ALPHA	initial code, primary i/f working okay *  Version 1.3 BETA	dual i/f on shared irq tested & working! *  Version 1.4 BETA	added auto probing for irq(s) *  Version 1.5 BETA	added ALPHA (untested) support for IDE cd-roms, *  ... * Version 5.50		allow values as small as 20 for idebus= * Version 5.51		force non io_32bit in drive_cmd_intr() *			change delay_10ms() to delay_50ms() to fix problems * Version 5.52		fix incorrect invalidation of removable devices *			add "hdx=slow" command line option * Version 5.60		start to modularize the driver; the disk and ATAPI *			 drivers can be compiled as loadable modules. *			move IDE probe code to ide-probe.c *			move IDE disk code to ide-disk.c *			add support for generic IDE device subdrivers *			add m68k code from Geert Uytterhoeven *			probe all interfaces by default *			add ioctl to (re)probe an interface * Version 6.00		use per device request queues *			attempt to optimize shared hwgroup performance *			add ioctl to manually adjust bandwidth algorithms *			add kerneld support for the probe module *			fix bug in ide_error() *			fix bug in the first ide_get_lock() call for Atari *			don't flush leftover data for ATAPI devices * Version 6.01		clear hwgroup->active while the hwgroup sleeps *			support HDIO_GETGEO for floppies * Version 6.02		fix ide_ack_intr() call *			check partition table on floppies * Version 6.03		handle bad status bit sequencing in ide_wait_stat() * Version 6.10		deleted old entries from this list of updates *			replaced triton.c with ide-dma.c generic PCI DMA *			added support for BIOS-enabled UltraDMA *			rename all "promise" things to "pdc4030" *			fix EZ-DRIVE handling on small disks * Version 6.11		fix probe error in ide_scan_devices() *			fix ancient "jiffies" polling bugs *			mask all hwgroup interrupts on each irq entry * Version 6.12		integrate ioctl and proc interfaces *			fix parsing of "idex=" command line parameter * Version 6.13		add support for ide4/ide5 courtesy rjones@orchestream.com * Version 6.14		fixed IRQ sharing among PCI devices * Version 6.15		added SMP awareness to IDE drivers * Version 6.16		fixed various bugs; even more SMP friendly * Version 6.17		fix for newest EZ-Drive problem * Version 6.18		default unpartitioned-disk translation now "BIOS LBA" * Version 6.19		Re-design for a UNIFORM driver for all platforms, *			  model based on suggestions from Russell King and *			  Geert Uytterhoeven *			Promise DC4030VL now supported. *			add support for ide6/ide7 *			delay_50ms() changed to ide_delay_50ms() and exported. * Version 6.20		Added/Fixed Generic ATA-66 support and hwif detection. *			Added hdx=flash to allow for second flash disk *			  detection w/o the hang loop. *			Added support for ide8/ide9 *			Added idex=ata66 for the quirky chipsets that are *			  ATA-66 compliant, but have yet to determine a method *			  of verification of the 80c cable presence. *			  Specifically Promise's PDC20262 chipset. * Version 6.21		Fixing/Fixed SMP spinlock issue with insight from an old *			  hat that clarified original low level driver design. * Version 6.30		Added SMP support; fixed multmode issues.  -ml * Version 6.31		Debug Share INTR's and request queue streaming *			Native ATA-100 support *			Prep for Cascades Project * *  Some additional driver compile-time options are in ./include/linux/ide.h * *  To do, in likely order of completion: *	- modify kernel to obtain BIOS geometry for drives on 2nd/3rd/4th i/f * */#define	REVISION	"Revision: 6.31"#define	VERSION		"Id: ide.c 6.31 2000/06/09"#undef REALLY_SLOW_IO		/* most systems can safely undef this */#define _IDE_C			/* Tell ide.h it's really us */#include <linux/config.h>#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>#ifndef MODULE#include <linux/init.h>#endif /* MODULE */#include <linux/pci.h>#include <linux/delay.h>#include <linux/ide.h>#include <linux/devfs_fs_kernel.h>#include <linux/completion.h>#include <linux/reboot.h>#include <asm/byteorder.h>#include <asm/irq.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/bitops.h>#include "ide_modes.h"#ifdef CONFIG_KMOD#include <linux/kmod.h>#endif /* CONFIG_KMOD */#ifdef CONFIG_IDE_TASKFILE_IO#  define __TASKFILE__IO#else /* CONFIG_IDE_TASKFILE_IO */#  undef __TASKFILE__IO#endif /* CONFIG_IDE_TASKFILE_IO */#ifdef __TASKFILE__IO#else /* !__TASKFILE__IO */#endif /* __TASKFILE__IO *//* default maximum number of failures */#define IDE_DEFAULT_MAX_FAILURES 	1static const byte ide_hwif_to_major[] = { IDE0_MAJOR, IDE1_MAJOR, IDE2_MAJOR, IDE3_MAJOR, IDE4_MAJOR, IDE5_MAJOR, IDE6_MAJOR, IDE7_MAJOR, IDE8_MAJOR, IDE9_MAJOR };static int	idebus_parameter; /* holds the "idebus=" parameter */static int	system_bus_speed; /* holds what we think is VESA/PCI bus speed */static int	initializing;     /* set while initializing built-in drivers */#ifdef CONFIG_BLK_DEV_IDEPCIstatic int	ide_scan_direction;	/* THIS was formerly 2.2.x pci=reverse */#endif /* CONFIG_BLK_DEV_IDEPCI */#if defined(__mc68000__) || defined(CONFIG_APUS)/* * ide_lock is used by the Atari code to obtain access to the IDE interrupt, * which is shared between several drivers. */static int	ide_lock;#endif /* __mc68000__ || CONFIG_APUS */int noautodma = 0;/* * ide_modules keeps track of the available IDE chipset/probe/driver modules. */ide_module_t *ide_modules;ide_module_t *ide_probe;/* * This is declared extern in ide.h, for access by other IDE modules: */ide_hwif_t	ide_hwifs[MAX_HWIFS];	/* master data repository */#if (DISK_RECOVERY_TIME > 0)/* * For really screwy hardware (hey, at least it *can* be used with Linux) * we can enforce a minimum delay time between successive operations. */static unsigned long read_timer (void){	unsigned long t, flags;	int i;	__save_flags(flags);	/* local CPU only */	__cli();		/* local CPU only */	t = jiffies * 11932;    	outb_p(0, 0x43);	i = inb_p(0x40);	i |= inb(0x40) << 8;	__restore_flags(flags);	/* local CPU only */	return (t - i);}#endif /* DISK_RECOVERY_TIME */static inline void set_recovery_timer (ide_hwif_t *hwif){#if (DISK_RECOVERY_TIME > 0)	hwif->last_time = read_timer();#endif /* DISK_RECOVERY_TIME */}/* * Do not even *think* about calling this! */static void init_hwif_data (unsigned int index){	unsigned int unit;	ide_hwif_t *hwif = &ide_hwifs[index];	/* bulk initialize hwif & drive info with zeros */	memset(hwif, 0, sizeof(ide_hwif_t));	/* fill in any non-zero initial values */	hwif->index     = index;	hwif->noprobe	= 1;	hwif->major	= ide_hwif_to_major[index];	hwif->name[0]	= 'i';	hwif->name[1]	= 'd';	hwif->name[2]	= 'e';	hwif->name[3]	= '0' + index;	hwif->bus_state = BUSSTATE_ON;	for (unit = 0; unit < MAX_DRIVES; ++unit) {		ide_drive_t *drive = &hwif->drives[unit];		drive->media			= ide_disk;		drive->select.all		= (unit<<4)|0xa0;		drive->hwif			= hwif;		drive->ctl			= 0x08;		drive->ready_stat		= READY_STAT;		drive->bad_wstat		= BAD_W_STAT;		drive->special.b.recalibrate	= 1;		drive->special.b.set_geometry	= 1;		drive->name[0]			= 'h';		drive->name[1]			= 'd';		drive->name[2]			= 'a' + (index * MAX_DRIVES) + unit;		drive->max_failures		= IDE_DEFAULT_MAX_FAILURES;		init_waitqueue_head(&drive->wqueue);	}}/* * Old compatability function - initialise ports using ide_default_io_base */static void ide_old_init_default_hwifs(void){	unsigned int index;	ide_ioreg_t base;	ide_hwif_t *hwif;	for (index = 0; index < MAX_HWIFS; index++) {		hwif = &ide_hwifs[index];		base = ide_default_io_base(index);		if (base) {			ide_init_hwif_ports(&hwif->hw, base, 0, &hwif->hw.irq);			hwif->noprobe = 0;		}	}}/* * init_ide_data() sets reasonable default values into all fields * of all instances of the hwifs and drives, but only on the first call. * Subsequent calls have no effect (they don't wipe out anything). * * This routine is normally called at driver initialization time, * but may also be called MUCH earlier during kernel "command-line" * parameter processing.  As such, we cannot depend on any other parts * of the kernel (such as memory allocation) to be functioning yet. * * This is too bad, as otherwise we could dynamically allocate the * ide_drive_t structs as needed, rather than always consuming memory * for the max possible number (MAX_HWIFS * MAX_DRIVES) of them. */#define MAGIC_COOKIE 0x12345678static void __init init_ide_data (void){	unsigned int index;	static unsigned long magic_cookie = MAGIC_COOKIE;	if (magic_cookie != MAGIC_COOKIE)		return;		/* already initialized */	magic_cookie = 0;	/* Initialise all interface structures */	for (index = 0; index < MAX_HWIFS; ++index)		init_hwif_data(index);	/* Add default hw interfaces */	ide_old_init_default_hwifs();	ide_init_default_hwifs();#ifdef CONFIG_BLK_DEV_HD	/* Check for any clashes with hd.c driver */	for (index = 0; index < MAX_HWIFS; ++index)		if (ide_hwifs[index].hw.io_ports[IDE_DATA_OFFSET] == HD_DATA)			hwif->noprobe = 1; /* may be overridden by ide_setup() */#endif /* CONFIG_BLK_DEV_HD */	idebus_parameter = 0;	system_bus_speed = 0;}/* * CompactFlash cards and their brethern pretend to be removable hard disks, except: *	(1) they never have a slave unit, and *	(2) they don't have doorlock mechanisms. * This test catches them, and is invoked elsewhere when setting appropriate config bits. * * FIXME: This treatment is probably applicable for *all* PCMCIA (PC CARD) devices, * so in linux 2.3.x we should change this to just treat all PCMCIA drives this way, * and get rid of the model-name tests below (too big of an interface change for 2.2.x). * At that time, we might also consider parameterizing the timeouts and retries, * since these are MUCH faster than mechanical drives.	-M.Lord */int drive_is_flashcard (ide_drive_t *drive){	struct hd_driveid *id = drive->id;	if (drive->removable && id != NULL) {		if (id->config == 0x848a) return 1;	/* CompactFlash */		if (!strncmp(id->model, "KODAK ATA_FLASH", 15)	/* Kodak */		 || !strncmp(id->model, "Hitachi CV", 10)	/* Hitachi */		 || !strncmp(id->model, "SunDisk SDCFB", 13)	/* SunDisk */		 || !strncmp(id->model, "HAGIWARA HPC", 12)	/* Hagiwara */		 || !strncmp(id->model, "LEXAR ATA_FLASH", 15)	/* Lexar */		 || !strncmp(id->model, "ATA_FLASH", 9))	/* Simple Tech */		{			return 1;	/* yes, it is a flash memory card */		}	}	return 0;	/* no, it is not a flash memory card */}/* * ide_system_bus_speed() returns what we think is the system VESA/PCI * bus speed (in MHz).  This is used for calculating interface PIO timings. * The default is 40 for known PCI systems, 50 otherwise. * The "idebus=xx" parameter can be used to override this value. * The actual value to be used is computed/displayed the first time through. */int ide_system_bus_speed (void){	if (!system_bus_speed) {		if (idebus_parameter)			system_bus_speed = idebus_parameter;	/* user supplied value */#ifdef CONFIG_PCI		else if (pci_present())			system_bus_speed = 33;	/* safe default value for PCI */#endif /* CONFIG_PCI */		else			system_bus_speed = 50;	/* safe default value for VESA and PCI */		printk("ide: Assuming %dMHz system bus speed for PIO modes%s\n", system_bus_speed,			idebus_parameter ? "" : "; override with idebus=xx");	}	return system_bus_speed;}#if SUPPORT_VLB_SYNC/* * 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. */static inline void do_vlb_sync (ide_ioreg_t port) {	(void) inb (port);	(void) inb (port);	(void) inb (port);}#endif /* SUPPORT_VLB_SYNC *//* * This is used for most PIO data transfers *from* the IDE interface

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品一区二| 国产99久久精品| 亚洲九九爱视频| 国产精品久久久久久亚洲毛片 | 99久久久久久| 91在线视频播放地址| www.色精品| 91视频在线看| 91久久精品网| 欧美日韩亚洲综合一区二区三区| 欧美专区日韩专区| 欧美日韩精品欧美日韩精品一| 欧美日韩精品欧美日韩精品 | 欧美综合天天夜夜久久| 成人av动漫网站| 99精品久久99久久久久| 91亚洲大成网污www| 一本大道av一区二区在线播放| 色婷婷亚洲精品| 欧美日韩午夜精品| 日韩视频在线你懂得| 26uuu成人网一区二区三区| 国产日产精品一区| 中文字幕一区不卡| 亚洲国产精品一区二区www在线| 婷婷综合久久一区二区三区| 六月丁香婷婷久久| 丁香六月综合激情| 色诱视频网站一区| 在线不卡中文字幕播放| 精品999久久久| 中文字幕一区二区三区色视频| 一区二区国产盗摄色噜噜| 丝袜美腿亚洲一区| 国产精品影视在线观看| 色综合一区二区| 91精品国产一区二区| 国产亚洲美州欧州综合国| 日韩毛片精品高清免费| 视频在线观看一区二区三区| 国产精品一区2区| 色成年激情久久综合| 日韩你懂的在线观看| 亚洲午夜久久久久久久久电影网| 婷婷亚洲久悠悠色悠在线播放| 九九久久精品视频| 91视频www| 天天影视色香欲综合网老头| 久久国产精品72免费观看| 成人高清免费观看| 制服丝袜激情欧洲亚洲| 国产欧美精品一区二区色综合朱莉| 又紧又大又爽精品一区二区| 久久超碰97中文字幕| 99精品视频在线观看| 在线成人免费视频| 亚洲日本va午夜在线影院| 久久国产剧场电影| 97久久人人超碰| 精品成人佐山爱一区二区| 亚洲综合丝袜美腿| 国产99精品在线观看| 69久久夜色精品国产69蝌蚪网| 国产精品夫妻自拍| 麻豆国产欧美日韩综合精品二区 | 激情另类小说区图片区视频区| 色综合视频一区二区三区高清| 精品毛片乱码1区2区3区| av电影在线观看不卡| 久久99国产精品免费| 97se亚洲国产综合自在线不卡 | 国产精品久久免费看| 蜜臀a∨国产成人精品| 久久天天做天天爱综合色| 亚洲一线二线三线视频| 成人午夜激情视频| 日韩免费电影一区| 视频一区视频二区中文字幕| 99在线精品一区二区三区| 久久精品网站免费观看| 蜜臀av性久久久久av蜜臀妖精| 91国偷自产一区二区开放时间| 国产精品乱子久久久久| 国内成人精品2018免费看| 91精品国产品国语在线不卡| 亚洲不卡一区二区三区| 91国内精品野花午夜精品| 中文字幕在线不卡国产视频| 国产成人三级在线观看| 久久午夜色播影院免费高清| 另类成人小视频在线| 91精品国产91久久久久久一区二区| 一区二区三区欧美久久| 色综合欧美在线视频区| 1区2区3区欧美| 亚洲精品国产第一综合99久久| 日韩欧美国产精品| 亚洲一区二区av电影| 色哟哟一区二区在线观看| 国产精品国产a| av午夜精品一区二区三区| 国产蜜臀97一区二区三区| 国产成人福利片| 中文字幕av在线一区二区三区| 国产精品一区久久久久| 国产午夜亚洲精品羞羞网站| 国产精品一二三区在线| 国产三级一区二区| 成人一区在线看| 国产精品久久福利| 94-欧美-setu| 高清在线不卡av| 中文字幕一区二区三区在线播放 | 日本一区二区免费在线| 风间由美中文字幕在线看视频国产欧美| 亚洲精品一区二区三区香蕉| 国产精品一级黄| 国产精品欧美久久久久一区二区| 成人va在线观看| 自拍偷拍国产亚洲| 国产福利不卡视频| 极品销魂美女一区二区三区| 91精品国产综合久久久久久 | 成人美女视频在线看| 国产精品久久网站| 欧美综合一区二区三区| 青青国产91久久久久久| 精品91自产拍在线观看一区| 成人午夜激情视频| 夜夜揉揉日日人人青青一国产精品 | 国产乱码精品1区2区3区| 国产精品三级久久久久三级| 色综合久久88色综合天天免费| 亚洲国产欧美在线人成| 日韩精品中文字幕在线一区| 国产成人精品www牛牛影视| 亚洲伦在线观看| 欧美一二三区在线观看| 成人午夜在线视频| 亚洲成人免费av| 国产三级欧美三级日产三级99 | 制服丝袜中文字幕亚洲| 日韩精品一区二区三区中文不卡 | 久久国产夜色精品鲁鲁99| 久久免费视频色| 99久久精品99国产精品| 五月综合激情婷婷六月色窝| www国产成人| 一道本成人在线| 韩国欧美一区二区| 亚洲黄色录像片| 精品国产伦一区二区三区观看方式 | 久久99精品网久久| **欧美大码日韩| 日韩精品一区二| 色吧成人激情小说| 精品制服美女久久| 一二三区精品视频| 国产日韩欧美精品在线| 欧美日韩日日骚| 成人av网站在线| 美洲天堂一区二卡三卡四卡视频| 日韩一区在线免费观看| 日韩一区二区三区视频在线观看| thepron国产精品| 日本成人在线视频网站| 亚洲欧美另类久久久精品| 欧美成人精品3d动漫h| 欧美中文字幕一二三区视频| 国产成人综合在线播放| 视频一区二区三区入口| 成人免费在线观看入口| 精品国产电影一区二区| 夜夜嗨av一区二区三区四季av| 精品剧情在线观看| 91在线精品一区二区| 日韩不卡一区二区三区| 亚洲人午夜精品天堂一二香蕉| 久久久99久久| 日韩一级二级三级| 欧美三日本三级三级在线播放| 成人高清免费观看| 国产一二三精品| 蜜桃av噜噜一区| 三级欧美在线一区| 亚洲妇熟xx妇色黄| 日韩理论片一区二区| 中文字幕精品在线不卡| 欧美电影免费观看高清完整版| 欧美日韩国产首页在线观看| 色偷偷成人一区二区三区91 | 丰满亚洲少妇av| 狠狠色丁香久久婷婷综合丁香| 日欧美一区二区| 亚洲第一在线综合网站| 亚洲欧美电影一区二区| 综合精品久久久| 中文字幕一区二区三区不卡 | 日韩电影在线免费看| 亚洲第一搞黄网站|