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

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

?? ide-timing.h

?? 2410的硬盤塊設備源碼
?? H
字號:
#ifndef _IDE_TIMING_H#define _IDE_TIMING_H/* * $Id: ide-timing.h,v 1.6 2001/12/23 22:47:56 vojtech Exp $ * *  Copyright (c) 1999-2001 Vojtech Pavlik *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so either by * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail: * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic */#include <linux/kernel.h>#include <linux/hdreg.h>#define XFER_PIO_5		0x0d#define XFER_UDMA_SLOW		0x4fstruct ide_timing {	short mode;	short setup;	/* t1 */	short act8b;	/* t2 for 8-bit io */	short rec8b;	/* t2i for 8-bit io */	short cyc8b;	/* t0 for 8-bit io */	short active;	/* t2 or tD */	short recover;	/* t2i or tK */	short cycle;	/* t0 */	short udma;	/* t2CYCTYP/2 */};/* * PIO 0-5, MWDMA 0-2 and UDMA 0-6 timings (in nanoseconds). * These were taken from ATA/ATAPI-6 standard, rev 0a, except * for PIO 5, which is a nonstandard extension and UDMA6, which * is currently supported only by Maxtor drives.  */static struct ide_timing ide_timing[] = {	{ XFER_UDMA_6,     0,   0,   0,   0,   0,   0,   0,  15 },	{ XFER_UDMA_5,     0,   0,   0,   0,   0,   0,   0,  20 },	{ XFER_UDMA_4,     0,   0,   0,   0,   0,   0,   0,  30 },	{ XFER_UDMA_3,     0,   0,   0,   0,   0,   0,   0,  45 },	{ XFER_UDMA_2,     0,   0,   0,   0,   0,   0,   0,  60 },	{ XFER_UDMA_1,     0,   0,   0,   0,   0,   0,   0,  80 },	{ XFER_UDMA_0,     0,   0,   0,   0,   0,   0,   0, 120 },	{ XFER_UDMA_SLOW,  0,   0,   0,   0,   0,   0,   0, 150 },                                          	{ XFER_MW_DMA_2,  25,   0,   0,   0,  70,  25, 120,   0 },	{ XFER_MW_DMA_1,  45,   0,   0,   0,  80,  50, 150,   0 },	{ XFER_MW_DMA_0,  60,   0,   0,   0, 215, 215, 480,   0 },                                          	{ XFER_SW_DMA_2,  60,   0,   0,   0, 120, 120, 240,   0 },	{ XFER_SW_DMA_1,  90,   0,   0,   0, 240, 240, 480,   0 },	{ XFER_SW_DMA_0, 120,   0,   0,   0, 480, 480, 960,   0 },	{ XFER_PIO_5,     20,  50,  30, 100,  50,  30, 100,   0 },	{ XFER_PIO_4,     25,  70,  25, 120,  70,  25, 120,   0 },	{ XFER_PIO_3,     30,  80,  70, 180,  80,  70, 180,   0 },	{ XFER_PIO_2,     30, 290,  40, 330, 100,  90, 240,   0 },	{ XFER_PIO_1,     50, 290,  93, 383, 125, 100, 383,   0 },	{ XFER_PIO_0,     70, 290, 240, 600, 165, 150, 600,   0 },	{ XFER_PIO_SLOW, 120, 290, 240, 960, 290, 240, 960,   0 },	{ -1 }};#define IDE_TIMING_SETUP	0x01#define IDE_TIMING_ACT8B	0x02#define IDE_TIMING_REC8B	0x04#define IDE_TIMING_CYC8B	0x08#define IDE_TIMING_8BIT		0x0e#define IDE_TIMING_ACTIVE	0x10#define IDE_TIMING_RECOVER	0x20#define IDE_TIMING_CYCLE	0x40#define IDE_TIMING_UDMA		0x80#define IDE_TIMING_ALL		0xff#define FIT(v,vmin,vmax)	max_t(short,min_t(short,v,vmax),vmin)#define ENOUGH(v,unit)		(((v)-1)/(unit)+1)#define EZ(v,unit)		((v)?ENOUGH(v,unit):0)#define XFER_MODE	0xf0#define XFER_UDMA_133	0x48#define XFER_UDMA_100	0x44#define XFER_UDMA_66	0x42#define XFER_UDMA	0x40#define XFER_MWDMA	0x20#define XFER_SWDMA	0x10#define XFER_EPIO	0x01#define XFER_PIO	0x00static short ide_find_best_mode(ide_drive_t *drive, int map){	struct hd_driveid *id = drive->id;	short best = 0;	if (!id)		return XFER_PIO_SLOW;	if ((map & XFER_UDMA) && (id->field_valid & 4)) {	/* Want UDMA and UDMA bitmap valid */		if ((map & XFER_UDMA_133) == XFER_UDMA_133)			if ((best = (id->dma_ultra & 0x0040) ? XFER_UDMA_6 : 0)) return best;		if ((map & XFER_UDMA_100) == XFER_UDMA_100)			if ((best = (id->dma_ultra & 0x0020) ? XFER_UDMA_5 : 0)) return best;		if ((map & XFER_UDMA_66) == XFER_UDMA_66)			if ((best = (id->dma_ultra & 0x0010) ? XFER_UDMA_4 :                	    	    (id->dma_ultra & 0x0008) ? XFER_UDMA_3 : 0)) return best;                if ((best = (id->dma_ultra & 0x0004) ? XFER_UDMA_2 :                	    (id->dma_ultra & 0x0002) ? XFER_UDMA_1 :                	    (id->dma_ultra & 0x0001) ? XFER_UDMA_0 : 0)) return best;	}	if ((map & XFER_MWDMA) && (id->field_valid & 2)) {	/* Want MWDMA and drive has EIDE fields */		if ((best = (id->dma_mword & 0x0004) ? XFER_MW_DMA_2 :                	    (id->dma_mword & 0x0002) ? XFER_MW_DMA_1 :                	    (id->dma_mword & 0x0001) ? XFER_MW_DMA_0 : 0)) return best;	}	if (map & XFER_SWDMA) {					/* Want SWDMA */ 		if (id->field_valid & 2) {			/* EIDE SWDMA */			if ((best = (id->dma_1word & 0x0004) ? XFER_SW_DMA_2 :      				    (id->dma_1word & 0x0002) ? XFER_SW_DMA_1 :				    (id->dma_1word & 0x0001) ? XFER_SW_DMA_0 : 0)) return best;		}		if (id->capability & 1) {			/* Pre-EIDE style SWDMA */			if ((best = (id->tDMA == 2) ? XFER_SW_DMA_2 :				    (id->tDMA == 1) ? XFER_SW_DMA_1 :				    (id->tDMA == 0) ? XFER_SW_DMA_0 : 0)) return best;		}	}	if ((map & XFER_EPIO) && (id->field_valid & 2)) {	/* EIDE PIO modes */		if ((best = (drive->id->eide_pio_modes & 4) ? XFER_PIO_5 :			    (drive->id->eide_pio_modes & 2) ? XFER_PIO_4 :			    (drive->id->eide_pio_modes & 1) ? XFER_PIO_3 : 0)) return best;	}		return  (drive->id->tPIO == 2) ? XFER_PIO_2 :		(drive->id->tPIO == 1) ? XFER_PIO_1 :		(drive->id->tPIO == 0) ? XFER_PIO_0 : XFER_PIO_SLOW;}static void ide_timing_quantize(struct ide_timing *t, struct ide_timing *q, int T, int UT){	q->setup   = EZ(t->setup   * 1000,  T);	q->act8b   = EZ(t->act8b   * 1000,  T);	q->rec8b   = EZ(t->rec8b   * 1000,  T);	q->cyc8b   = EZ(t->cyc8b   * 1000,  T);	q->active  = EZ(t->active  * 1000,  T);	q->recover = EZ(t->recover * 1000,  T);	q->cycle   = EZ(t->cycle   * 1000,  T);	q->udma    = EZ(t->udma    * 1000, UT);}static void ide_timing_merge(struct ide_timing *a, struct ide_timing *b, struct ide_timing *m, unsigned int what){	if (what & IDE_TIMING_SETUP  ) m->setup   = max(a->setup,   b->setup);	if (what & IDE_TIMING_ACT8B  ) m->act8b   = max(a->act8b,   b->act8b);	if (what & IDE_TIMING_REC8B  ) m->rec8b   = max(a->rec8b,   b->rec8b);	if (what & IDE_TIMING_CYC8B  ) m->cyc8b   = max(a->cyc8b,   b->cyc8b);	if (what & IDE_TIMING_ACTIVE ) m->active  = max(a->active,  b->active);	if (what & IDE_TIMING_RECOVER) m->recover = max(a->recover, b->recover);	if (what & IDE_TIMING_CYCLE  ) m->cycle   = max(a->cycle,   b->cycle);	if (what & IDE_TIMING_UDMA   ) m->udma    = max(a->udma,    b->udma);}static struct ide_timing* ide_timing_find_mode(short speed){	struct ide_timing *t;	for (t = ide_timing; t->mode != speed; t++)		if (t->mode < 0)			return NULL;	return t; }static int ide_timing_compute(ide_drive_t *drive, short speed, struct ide_timing *t, int T, int UT){	struct hd_driveid *id = drive->id;	struct ide_timing *s, p;/* * Find the mode. */	if (!(s = ide_timing_find_mode(speed)))		return -EINVAL;/* * If the drive is an EIDE drive, it can tell us it needs extended * PIO/MWDMA cycle timing. */	if (id && id->field_valid & 2) {	/* EIDE drive */		memset(&p, 0, sizeof(p));		switch (speed & XFER_MODE) {			case XFER_PIO:				if (speed <= XFER_PIO_2) p.cycle = p.cyc8b = id->eide_pio;						    else p.cycle = p.cyc8b = id->eide_pio_iordy;				break;			case XFER_MWDMA:				p.cycle = id->eide_dma_min;				break;		}		ide_timing_merge(&p, t, t, IDE_TIMING_CYCLE | IDE_TIMING_CYC8B);	}/* * Convert the timing to bus clock counts. */	ide_timing_quantize(s, t, T, UT);/* * Even in DMA/UDMA modes we still use PIO access for IDENTIFY, S.M.A.R.T * and some other commands. We have to ensure that the DMA cycle timing is * slower/equal than the fastest PIO timing. */	if ((speed & XFER_MODE) != XFER_PIO) {		ide_timing_compute(drive, ide_find_best_mode(drive, XFER_PIO | XFER_EPIO), &p, T, UT);		ide_timing_merge(&p, t, t, IDE_TIMING_ALL);	}/* * Lenghten active & recovery time so that cycle time is correct. */	if (t->act8b + t->rec8b < t->cyc8b) {		t->act8b += (t->cyc8b - (t->act8b + t->rec8b)) / 2;		t->rec8b = t->cyc8b - t->act8b;	}	if (t->active + t->recover < t->cycle) {		t->active += (t->cycle - (t->active + t->recover)) / 2;		t->recover = t->cycle - t->active;	}	return 0;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕中文字幕在线一区 | 日本一区二区三区电影| 91黄视频在线观看| 国产精品99久久久久久久女警 | 91丝袜国产在线播放| 久久er精品视频| 国产一区二区三区黄视频| 久99久精品视频免费观看| 精品一区二区精品| 国产精一区二区三区| 国产精品亚洲а∨天堂免在线| 国产在线观看一区二区| 国产剧情一区在线| kk眼镜猥琐国模调教系列一区二区| 99久久精品国产导航| 一本色道**综合亚洲精品蜜桃冫 | 18涩涩午夜精品.www| 亚洲人亚洲人成电影网站色| 亚洲女子a中天字幕| 亚洲成人av中文| 蜜臀久久久99精品久久久久久| 免费观看久久久4p| 韩国三级在线一区| av激情综合网| 欧美日韩精品一区二区三区四区| 91精品国模一区二区三区| 精品国产在天天线2019| 国产三级精品在线| 综合av第一页| 视频一区国产视频| 国产乱码精品一区二区三区av| a在线播放不卡| 欧美日韩国产一区| www一区二区| 最新成人av在线| 日本午夜精品一区二区三区电影| 国产美女av一区二区三区| 97精品视频在线观看自产线路二| 欧美日韩高清在线播放| 久久久99久久| 亚洲国产精品嫩草影院| 国产精品一区二区x88av| 91香蕉视频mp4| 日韩精品一区在线观看| 亚洲色图视频网站| 久久国产人妖系列| 99久久99久久综合| 欧美一区日韩一区| 国产精品美女久久久久久2018| 亚洲五码中文字幕| 国产xxx精品视频大全| 欧美另类videos死尸| 久久免费的精品国产v∧| 亚洲理论在线观看| 国产一区在线看| 欧美伊人久久大香线蕉综合69| 26uuu精品一区二区| 亚洲宅男天堂在线观看无病毒| 黄网站免费久久| 欧美性猛交一区二区三区精品| 国产亚洲女人久久久久毛片| 午夜成人免费电影| 91免费观看在线| 久久久久久综合| 青青草原综合久久大伊人精品优势| 91视频在线看| 国产日韩欧美一区二区三区综合| 日韩专区一卡二卡| 91极品美女在线| 亚洲欧美综合色| 国产精品一卡二| 欧美一区二区三区色| 亚洲免费高清视频在线| 国产精品911| 精品欧美一区二区久久| 午夜私人影院久久久久| av在线免费不卡| 国产肉丝袜一区二区| 久久av资源网| 欧美电影精品一区二区| 丝袜美腿成人在线| 精品视频免费在线| 亚洲毛片av在线| 成人av资源在线观看| 久久亚洲二区三区| 久久99国产精品久久| 日韩视频永久免费| 日韩av中文在线观看| 欧美精品在线观看一区二区| 亚洲一区av在线| 日本精品视频一区二区| 国产精品久久夜| 成人免费视频一区| 国产清纯白嫩初高生在线观看91 | 亚洲欧美自拍偷拍| 成人午夜免费电影| 国产欧美精品区一区二区三区 | 亚洲成人综合视频| 欧美亚洲一区二区在线观看| 亚洲欧美日韩久久精品| 99精品国产视频| 综合久久久久久| 99久久精品久久久久久清纯| 国产精品国产馆在线真实露脸| 大胆欧美人体老妇| 亚洲欧美在线视频| 91啪亚洲精品| 亚洲激情自拍偷拍| 欧美在线色视频| 日韩在线一二三区| 日韩一区二区三区观看| 久久成人av少妇免费| 精品国产乱码久久久久久影片| 国产一区二区日韩精品| 国产欧美日韩亚州综合| 91麻豆免费视频| 亚洲二区在线视频| 欧美一区二区女人| 国内精品国产成人| 国产欧美在线观看一区| 成人黄色av电影| 亚洲精品乱码久久久久久久久 | 欧美另类变人与禽xxxxx| 美女脱光内衣内裤视频久久网站| 精品女同一区二区| 粉嫩一区二区三区在线看| 亚洲欧洲性图库| 欧美日韩国产在线观看| 国产一区二区三区四| 成人欧美一区二区三区在线播放| 在线观看不卡一区| 久久爱另类一区二区小说| 中文字幕不卡在线观看| 色呦呦网站一区| 日本91福利区| 中文乱码免费一区二区| 欧美日韩精品三区| 国产乱码精品一区二区三区av | 一区二区三国产精华液| 欧美丰满美乳xxx高潮www| 国产精品18久久久久久久网站| 亚洲视频在线观看三级| 67194成人在线观看| 成人一级片网址| 婷婷成人综合网| 国产精品伦一区| 欧美人与性动xxxx| 国产成人aaaa| 香蕉成人啪国产精品视频综合网 | 亚洲第一会所有码转帖| 精品国产免费视频| 色综合色综合色综合| 美女精品自拍一二三四| 18欧美乱大交hd1984| 欧美成人a∨高清免费观看| 91影院在线观看| 国内偷窥港台综合视频在线播放| 亚洲女同一区二区| 精品久久一区二区| 欧洲激情一区二区| 懂色av一区二区三区免费看| 五月天欧美精品| 国产精品久久久久久亚洲毛片| 欧美一区欧美二区| 日本韩国精品在线| 成人一区二区视频| 久久国产综合精品| 亚洲国产视频直播| 国产精品国产三级国产aⅴ入口| 欧美成人欧美edvon| 欧美视频在线一区二区三区| 国产一区二区三区免费看| 天涯成人国产亚洲精品一区av| 18成人在线观看| 国产女人18水真多18精品一级做| 欧美一个色资源| 欧美亚洲日本国产| 波多野结衣中文一区| 久久国产剧场电影| 日韩电影一区二区三区四区| 亚洲人成在线播放网站岛国| 欧美激情综合五月色丁香| 精品久久久久久久一区二区蜜臀| 欧美日韩一区二区三区四区五区| 不卡影院免费观看| 国产一区二区三区免费播放| 毛片基地黄久久久久久天堂| 香蕉成人啪国产精品视频综合网| 亚洲精品视频自拍| 亚洲欧洲精品成人久久奇米网| 国产亚洲成av人在线观看导航| 精品国产电影一区二区| 欧美一级理论性理论a| 欧美视频三区在线播放| 一本色道久久综合亚洲精品按摩 | 日韩美一区二区三区| 69久久夜色精品国产69蝌蚪网| 欧美日韩一区高清| 欧美无人高清视频在线观看| 欧美在线你懂得|