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

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

?? epia.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/*         epia.c    (c) 1997-8  Grant R. Guenther <grant@torque.net>                              Under the terms of the GNU General Public License.        epia.c is a low-level protocol driver for Shuttle Technologies 	EPIA parallel to IDE adapter chip.  This device is now obsolete	and has been replaced with the EPAT chip, which is supported	by epat.c, however, some devices based on EPIA are still	available.*//* Changes:        1.01    GRG 1998.05.06 init_proto, release_proto	1.02    GRG 1998.06.17 support older versions of EPIA*/#define EPIA_VERSION      "1.02"#include <linux/module.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/kernel.h>#include <linux/types.h>#include <linux/wait.h>#include <asm/io.h>#include "paride.h"/* mode codes:  0  nybble reads on port 1, 8-bit writes                1  5/3 reads on ports 1 & 2, 8-bit writes                2  8-bit reads and writes                3  8-bit EPP mode		4  16-bit EPP		5  32-bit EPP*/#define j44(a,b)                (((a>>4)&0x0f)+(b&0xf0))#define j53(a,b)                (((a>>3)&0x1f)+((b<<4)&0xe0))/* cont =  0   IDE register file   cont =  1   IDE control registers*/static int cont_map[2] = { 0, 0x80 };static int epia_read_regr( PIA *pi, int cont, int regr ){       int     a, b, r;	regr += cont_map[cont];        switch (pi->mode)  {        case 0: r = regr^0x39;                w0(r); w2(1); w2(3); w0(r);                a = r1(); w2(1); b = r1(); w2(4);                return j44(a,b);        case 1: r = regr^0x31;                w0(r); w2(1); w0(r&0x37);                 w2(3); w2(5); w0(r|0xf0);                a = r1(); b = r2(); w2(4);                return j53(a,b);        case 2: r = regr^0x29;                w0(r); w2(1); w2(0X21); w2(0x23);                 a = r0(); w2(4);                return a;	case 3:	case 4:        case 5: w3(regr); w2(0x24); a = r4(); w2(4);                return a;        }        return -1;}       static void epia_write_regr( PIA *pi, int cont, int regr, int val){       int  r;	regr += cont_map[cont];        switch (pi->mode)  {        case 0:        case 1:        case 2: r = regr^0x19;                w0(r); w2(1); w0(val); w2(3); w2(4);                break;	case 3:	case 4:        case 5: r = regr^0x40;                w3(r); w4(val); w2(4);                break;        }}#define WR(r,v)         epia_write_regr(pi,0,r,v)#define RR(r)           (epia_read_regr(pi,0,r))/* The use of register 0x84 is entirely unclear - it seems to control   some EPP counters ...  currently we know about 3 different block   sizes:  the standard 512 byte reads and writes, 12 byte writes and    2048 byte reads (the last two being used in the CDrom drivers.*/static void epia_connect ( PIA *pi  ){       pi->saved_r0 = r0();        pi->saved_r2 = r2();        w2(4); w0(0xa0); w0(0x50); w0(0xc0); w0(0x30); w0(0xa0); w0(0);        w2(1); w2(4);        if (pi->mode >= 3) {                 w0(0xa); w2(1); w2(4); w0(0x82); w2(4); w2(0xc); w2(4);                w2(0x24); w2(0x26); w2(4);        }        WR(0x86,8);  }static void epia_disconnect ( PIA *pi ){       /* WR(0x84,0x10); */        w0(pi->saved_r0);        w2(1); w2(4);        w0(pi->saved_r0);        w2(pi->saved_r2);} static void epia_read_block( PIA *pi, char * buf, int count ){       int     k, ph, a, b;        switch (pi->mode) {        case 0: w0(0x81); w2(1); w2(3); w0(0xc1);                ph = 1;                for (k=0;k<count;k++) {                        w2(2+ph); a = r1();                        w2(4+ph); b = r1();                        buf[k] = j44(a,b);                        ph = 1 - ph;                }                 w0(0); w2(4);                break;        case 1: w0(0x91); w2(1); w0(0x10); w2(3);                 w0(0x51); w2(5); w0(0xd1);                 ph = 1;                for (k=0;k<count;k++) {                        w2(4+ph);                        a = r1(); b = r2();                        buf[k] = j53(a,b);                        ph = 1 - ph;                }                w0(0); w2(4);                break;        case 2: w0(0x89); w2(1); w2(0x23); w2(0x21);                 ph = 1;                for (k=0;k<count;k++) {                        w2(0x24+ph);                        buf[k] = r0();                        ph = 1 - ph;                }                w2(6); w2(4);                break;        case 3: if (count > 512) WR(0x84,3);		w3(0); w2(0x24);                for (k=0;k<count;k++) buf[k] = r4();                w2(4); WR(0x84,0);                break;        case 4: if (count > 512) WR(0x84,3);		w3(0); w2(0x24);		for (k=0;k<count/2;k++) ((u16 *)buf)[k] = r4w();                w2(4); WR(0x84,0);                break;        case 5: if (count > 512) WR(0x84,3);		w3(0); w2(0x24);                for (k=0;k<count/4;k++) ((u32 *)buf)[k] = r4l();                w2(4); WR(0x84,0);                break;        }}static void epia_write_block( PIA *pi, char * buf, int count ){       int     ph, k, last, d;        switch (pi->mode) {        case 0:        case 1:        case 2: w0(0xa1); w2(1); w2(3); w2(1); w2(5);                ph = 0;  last = 0x8000;                for (k=0;k<count;k++) {                        d = buf[k];                        if (d != last) { last = d; w0(d); }                        w2(4+ph);                        ph = 1 - ph;                }                w2(7); w2(4);                break;        case 3: if (count < 512) WR(0x84,1);		w3(0x40);                for (k=0;k<count;k++) w4(buf[k]);		if (count < 512) WR(0x84,0);                break;        case 4: if (count < 512) WR(0x84,1);		w3(0x40);                for (k=0;k<count/2;k++) w4w(((u16 *)buf)[k]);		if (count < 512) WR(0x84,0);                break;        case 5: if (count < 512) WR(0x84,1);		w3(0x40);                for (k=0;k<count/4;k++) w4l(((u32 *)buf)[k]);		if (count < 512) WR(0x84,0);                break;        }}static int epia_test_proto( PIA *pi, char * scratch, int verbose ){       int     j, k, f;	int	e[2] = {0,0};        epia_connect(pi);        for (j=0;j<2;j++) {            WR(6,0xa0+j*0x10);            for (k=0;k<256;k++) {                WR(2,k^0xaa);                WR(3,k^0x55);                if (RR(2) != (k^0xaa)) e[j]++;                }	    WR(2,1); WR(3,1);            }        epia_disconnect(pi);        f = 0;        epia_connect(pi);        WR(0x84,8);        epia_read_block(pi,scratch,512);        for (k=0;k<256;k++) {            if ((scratch[2*k] & 0xff) != ((k+1) & 0xff)) f++;            if ((scratch[2*k+1] & 0xff) != ((-2-k) & 0xff)) f++;        }        WR(0x84,0);        epia_disconnect(pi);        if (verbose)  {            printk("%s: epia: port 0x%x, mode %d, test=(%d,%d,%d)\n",                   pi->device,pi->port,pi->mode,e[0],e[1],f);        }                return (e[0] && e[1]) || f;}static void epia_log_adapter( PIA *pi, char * scratch, int verbose ){       char    *mode_string[6] = {"4-bit","5/3","8-bit",				   "EPP-8","EPP-16","EPP-32"};        printk("%s: epia %s, Shuttle EPIA at 0x%x, ",                pi->device,EPIA_VERSION,pi->port);        printk("mode %d (%s), delay %d\n",pi->mode,		mode_string[pi->mode],pi->delay);}static struct pi_protocol epia = {	.owner		= THIS_MODULE,	.name		= "epia",	.max_mode	= 6,	.epp_first	= 3,	.default_delay	= 1,	.max_units	= 1,	.write_regr	= epia_write_regr,	.read_regr	= epia_read_regr,	.write_block	= epia_write_block,	.read_block	= epia_read_block,	.connect	= epia_connect,	.disconnect	= epia_disconnect,	.test_proto	= epia_test_proto,	.log_adapter	= epia_log_adapter,};static int __init epia_init(void){	return pi_register(&epia)-1;}static void __exit epia_exit(void){	pi_unregister(&epia);}MODULE_LICENSE("GPL");module_init(epia_init)module_exit(epia_exit)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产999精品久久久久久| 99久久亚洲一区二区三区青草| 亚洲国产成人在线| 欧美亚洲日本国产| 国产精品白丝av| 午夜视频一区二区| 亚洲色图在线视频| 国产片一区二区三区| 91麻豆精品国产91久久久更新时间| 国产aⅴ综合色| 蜜乳av一区二区| 亚洲大尺度视频在线观看| 国产精品污www在线观看| 日韩一级黄色大片| 欧美日韩午夜在线视频| 99久久99久久久精品齐齐| 国产麻豆精品一区二区| 免费成人在线观看视频| 亚洲一区二区三区三| 国产精品久久福利| 久久久久88色偷偷免费| 欧美精品一区二区三区久久久| 欧美精品三级在线观看| 一本久道中文字幕精品亚洲嫩| 粉嫩aⅴ一区二区三区四区五区| 美女视频一区在线观看| 日韩黄色免费电影| 亚洲18女电影在线观看| 亚洲一卡二卡三卡四卡| 亚洲六月丁香色婷婷综合久久| 国产精品污www在线观看| 国产午夜精品久久| 久久精品一区二区| 国产嫩草影院久久久久| 国产日本一区二区| 国产欧美一区二区三区鸳鸯浴 | 成人看片黄a免费看在线| 极品尤物av久久免费看| 捆绑变态av一区二区三区| 奇米影视一区二区三区小说| 五月婷婷欧美视频| 日韩在线观看一区二区| 日韩av在线发布| 麻豆成人久久精品二区三区红 | 免费人成精品欧美精品| 亚洲成人精品在线观看| 三级欧美韩日大片在线看| 天堂一区二区在线| 青青草国产精品97视觉盛宴| 另类调教123区| 国产精品综合网| eeuss国产一区二区三区| 97成人超碰视| 欧美美女一区二区在线观看| 制服丝袜中文字幕一区| 日韩免费观看高清完整版| 欧美zozo另类异族| 国产精品网站在线| 亚洲男同1069视频| 亚洲h动漫在线| 激情伊人五月天久久综合| 国产精品一卡二| 99视频超级精品| 欧美日韩成人综合| 精品成a人在线观看| 中文字幕一区在线观看视频| 一区二区在线看| 免费视频最近日韩| 成人免费va视频| 欧美精品99久久久**| 精品国产青草久久久久福利| 国产精品无圣光一区二区| 亚洲精品成a人| 日本成人在线网站| 国产jizzjizz一区二区| 欧美日韩免费高清一区色橹橹 | 国产精品国产三级国产a| 亚洲午夜精品在线| 狠狠色丁香久久婷婷综合_中 | 国产乱码精品一区二区三区忘忧草| 国产a级毛片一区| 欧美日韩在线播| 久久精品日韩一区二区三区| 亚洲精品欧美在线| 韩国精品主播一区二区在线观看| 91香蕉视频污在线| 欧美大片在线观看一区二区| 成人免费在线播放视频| 日韩和的一区二区| 成人av资源在线观看| 884aa四虎影成人精品一区| 中文字幕精品—区二区四季| 日韩中文字幕91| 成人久久视频在线观看| 日韩一区二区三区三四区视频在线观看 | 91免费在线看| 精品成人私密视频| 日韩精品一二三| 91色porny| 国产视频视频一区| 免费看精品久久片| 色久综合一二码| 亚洲国产精品激情在线观看| 免费成人在线影院| 欧美日韩黄色影视| 一区二区在线观看视频| 国产成人精品免费| 日韩午夜av一区| 亚洲激情av在线| 成人18视频在线播放| 久久久久国产精品免费免费搜索| 日韩国产一二三区| 欧美军同video69gay| 一区二区在线观看视频| www.欧美色图| 亚洲国产高清在线观看视频| 精品一区免费av| 日韩免费成人网| 日韩av成人高清| 欧美久久久久久蜜桃| 一区二区三区国产豹纹内裤在线| 成人av集中营| 国产精品三级电影| 成人午夜伦理影院| 国产精品久99| av一区二区不卡| 亚洲视频中文字幕| 99久久777色| 亚洲人成网站精品片在线观看| 成人免费毛片嘿嘿连载视频| 国产日韩三级在线| 国产精品亚洲人在线观看| 久久久精品影视| 成人免费观看av| 国产精品久久一级| 成人av小说网| 亚洲视频免费观看| 91福利在线免费观看| 亚洲一二三区不卡| 欧美日韩高清一区二区三区| 亚洲成人自拍一区| 欧美美女网站色| 麻豆91在线看| 国产欧美1区2区3区| 国产成人丝袜美腿| 中文字幕av一区二区三区免费看| 粉嫩av一区二区三区| 国产精品国模大尺度视频| 97精品久久久午夜一区二区三区| 亚洲欧美一区二区三区国产精品 | 国产午夜精品在线观看| 国产成人精品影院| 国产精品久久久久久久久免费桃花| youjizz久久| 日韩va欧美va亚洲va久久| 日韩三区在线观看| 国产美女视频一区| 亚洲日本va午夜在线影院| 在线视频国内自拍亚洲视频| 亚洲国产成人av| 日韩免费高清视频| 成人自拍视频在线观看| 亚洲理论在线观看| 欧美一区三区四区| 国产乱码精品一品二品| 亚洲美女屁股眼交3| 3d成人h动漫网站入口| 国内精品视频一区二区三区八戒| 国产精品美女久久久久久2018| 91成人免费在线视频| 美女网站在线免费欧美精品| 国产精品婷婷午夜在线观看| 在线免费观看一区| 裸体在线国模精品偷拍| 国产精品乱人伦| 欧美日韩夫妻久久| 国产精品原创巨作av| 亚洲一区二区三区四区在线免费观看| 日韩欧美精品三级| 91麻豆免费在线观看| 婷婷国产在线综合| 国产欧美va欧美不卡在线| 欧美日韩国产123区| 成人中文字幕在线| 日韩制服丝袜av| 亚洲日本在线看| 精品国产第一区二区三区观看体验| 91在线观看高清| 国产一区二三区| 亚洲韩国精品一区| 欧美国产精品久久| 91麻豆精品国产综合久久久久久| 99国产精品久久| 国产一区二区免费看| 午夜国产精品影院在线观看| 欧美国产精品一区| 久久夜色精品一区| 日韩一级视频免费观看在线| 91国产成人在线| www.日韩av|