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

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

?? ppw9xring0init.c

?? simple MIPS EJTAG u-boot loader
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*****************************************************************************//* *      ppw9xring0init.c  --  Parport direct access under Win9x using Ring0 hack (init routines). * *      Copyright (C) 1998-2000  Thomas Sailer (sailer@ife.ee.ethz.ch) * *      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., 675 Mass Ave, Cambridge, MA 02139, USA. * *  Please note that the GPL allows you to use the driver, NOT the radio. *  In order to use the radio, you need a license from the communications *  authority of your country. * *//*****************************************************************************/#if defined(HAVE_SYS_IO_H)#include <sys/io.h>#elif defined(HAVE_ASM_IO_H)#include <asm/io.h>#endif#include <errno.h>#include <string.h>#include "parport.h"/* ---------------------------------------------------------------------- */#ifndef HAVE_IOPL#ifdef HAVE_WINDOWS_H#include <windows.h>extern inline int iopl(unsigned int level){        OSVERSIONINFO info;        info.dwOSVersionInfoSize = sizeof(info);        if (GetVersionEx(&info) &&            (info.dwPlatformId == VER_PLATFORM_WIN32s ||             info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS))                return 0;        return 1;}#elseextern inline int iopl(unsigned int level){        return 0;}#endif#endif/* ---------------------------------------------------------------------- *//* LPT registers *//* ECP specific registers */#define LPTREG_ECONTROL       0x402#define LPTREG_CONFIGB        0x401#define LPTREG_CONFIGA        0x400#define LPTREG_TFIFO          0x400#define LPTREG_DFIFO          0x400#define LPTREG_AFIFO          0x000#define LPTREG_DSR            0x001#define LPTREG_DCR            0x002/* EPP specific registers */#define LPTREG_EPPDATA        0x004#define LPTREG_EPPADDR        0x003/* standard registers */#define LPTREG_CONTROL        0x002#define LPTREG_STATUS         0x001#define LPTREG_DATA           0x000/* ECP config A */#define LPTCFGA_INTRISALEVEL  0x80#define LPTCFGA_IMPIDMASK     0x70#define LPTCFGA_IMPID16BIT    0x00#define LPTCFGA_IMPID8BIT     0x10#define LPTCFGA_IMPID32BIT    0x20#define LPTCFGA_NOPIPELINE    0x04#define LPTCFGA_PWORDCOUNT    0x03/* ECP config B */#define LPTCFGB_COMPRESS      0x80#define LPTCFGB_INTRVALUE     0x40#define LPTCFGB_IRQMASK       0x38#define LPTCFGB_IRQ5          0x38#define LPTCFGB_IRQ15         0x30#define LPTCFGB_IRQ14         0x28#define LPTCFGB_IRQ11         0x20#define LPTCFGB_IRQ10         0x18#define LPTCFGB_IRQ9          0x10#define LPTCFGB_IRQ7          0x08#define LPTCFGB_IRQJUMPER     0x00#define LPTCFGB_DMAMASK       0x07#define LPTCFGB_DMA7          0x07#define LPTCFGB_DMA6          0x06#define LPTCFGB_DMA5          0x05#define LPTCFGB_DMAJUMPER16   0x04#define LPTCFGB_DMA3          0x03#define LPTCFGB_DMA2          0x02#define LPTCFGB_DMA1          0x01#define LPTCFGB_DMAJUMPER8    0x00/* ECP ECR */#define LPTECR_MODEMASK       0xe0#define LPTECR_MODESPP        0x00#define LPTECR_MODEPS2        0x20#define LPTECR_MODESPPFIFO    0x40#define LPTECR_MODEECP        0x60#define LPTECR_MODEECPEPP     0x80#define LPTECR_MODETEST       0xc0#define LPTECR_MODECFG        0xe0#define LPTECR_NERRINTRDIS    0x10#define LPTECR_DMAEN          0x08#define LPTECR_SERVICEINTR    0x04#define LPTECR_FIFOFULL       0x02#define LPTECR_FIFOEMPTY      0x01/* ---------------------------------------------------------------------- */extern unsigned int pp_w9xring0_iobase;extern unsigned int pp_w9xring0_flags;extern const struct parport_ops parport_w9xring0_ops, parport_w9xring0_emul_ops;extern unsigned char ring0_inb(unsigned int port);extern void ring0_outb(unsigned char val, unsigned int port);extern void ring0_outsb(unsigned int port, const unsigned char *bp, unsigned int count);extern void ring0_insb(unsigned int port, unsigned char *bp, unsigned int count);extern int pp_w9xring0_epp_clear_timeout(void);#define FLAGS_PCSPP              (1<<0)#define FLAGS_PCPS2              (1<<1)#define FLAGS_PCEPP              (1<<2)#define FLAGS_PCECR              (1<<3)  /* ECR Register Exists */#define FLAGS_PCECP              (1<<4)#define FLAGS_PCECPEPP           (1<<5)#define FLAGS_PCECPPS2           (1<<6)/* ---------------------------------------------------------------------- */#if 0#ifndef EPPEMULstatic int detect_epp(void){	/* pulse PROGRAM low, reset FPGA just to be safe */	ring0_outb(LPTCTRL_ADDRSTB, iobase+LPTREG_CONTROL);	usleep(10);	ring0_outb(LPTCTRL_PROGRAM, iobase+LPTREG_CONTROL);	/* start of ordinary test */	if (!epp_clear_timeout())		return -1;	ring0_outb(ring0_inb(iobase + LPTREG_CONTROL) | 0x20, iobase + LPTREG_CONTROL);	ring0_outb(ring0_inb(iobase + LPTREG_CONTROL) | 0x10, iobase + LPTREG_CONTROL);	epp_clear_timeout();	ring0_inb(iobase + LPTREG_EPPDATA);	/* udelay(30); */	if (ring0_inb(iobase + LPTREG_STATUS) & LPTSTAT_EPPTIMEOUT) {		epp_clear_timeout();		return 0;	}	/*return -1;*/	lprintf(3, "warning: no EPP timeout\n");	return 0;}#endif /* !EPPEMUL */static int detect_ecr(void){	unsigned char r, oc, oec;	oec = ring0_inb(iobase + LPTREG_ECONTROL);	oc = ring0_inb(iobase + LPTREG_CONTROL);	if ((oc & 3) == (oec & 3)) {		ring0_outb(oc ^ 2, iobase + LPTREG_CONTROL);		r = ring0_inb(iobase + LPTREG_CONTROL);		if ((ring0_inb(iobase + LPTREG_ECONTROL) & 2) == (r & 2)) {			ring0_outb(oc, iobase + LPTREG_CONTROL);			return -1;		}	}	if ((oec & 3) != 1)		return -1;	ring0_outb(0x34, iobase + LPTREG_ECONTROL);	r = ring0_inb(iobase + LPTREG_ECONTROL);	ring0_outb(oc, iobase + LPTREG_CONTROL);	ring0_outb(oec, iobase + LPTREG_ECONTROL);	return -(r != 0x35);}int detect_port(void){	ring0_outb(LPTCTRL_ADDRSTB, iobase+LPTREG_CONTROL);	pp_w9xring0_epp_clear_timeout();  /* prevent lockup of some SMSC IC's */	/* this routine is mostly copied from Linux Kernel parport */	ring0_outb(0xc, iobase+LPTREG_ECONTROL);	ring0_outb(0xc, iobase+LPTREG_CONTROL);	ring0_outb(0xaa, iobase+LPTREG_DATA);	if (ring0_inb(iobase+LPTREG_DATA) != 0xaa)		goto fail_spp;	ring0_outb(0x55, iobase+LPTREG_DATA);	if (ring0_inb(iobase+LPTREG_DATA) != 0x55)		goto fail_spp;#ifdef EPPEMUL	/* tentatively enable PS/2 mode if ECP port */	ring0_outb(0x20, iobase + LPTREG_ECONTROL);	ring0_outb(LPTCTRL_PROGRAM, iobase+LPTREG_CONTROL);	if ((ring0_inb(iobase+LPTREG_CONTROL) & 0x3f) != LPTCTRL_PROGRAM)		goto fail_ps2;	ring0_outb(LPTCTRL_PROGRAM | LPTCTRL_W9XRING0ION, iobase+LPTREG_CONTROL);	if ((ring0_inb(iobase+LPTREG_CONTROL) & 0x3f) != (LPTCTRL_PROGRAM | LPTCTRL_W9XRING0ION))		goto fail_ps2;	return 0;  fail_ps2:	lprintf(3, "parport (PS/2 bidir) test failed\n");	return -1;#else /* !EPPEMUL */	if (!detect_ecr()) {		ring0_outb(0x80, iobase + LPTREG_ECONTROL);		lprintf(3, "parport SMSC style ECP+EPP detected\n");		return 0;	}	if (!detect_epp())		return 0;	/* goto fail_epp; */  fail_epp:	lprintf(3, "parport (EPP) test failed\n");	return -1;#endif /* !EPPEMUL */  fail_spp:	lprintf(3, "parport (SPP) test failed\n");	return -1;}/* ---------------------------------------------------------------------- *//* * ECP routines */static void ecp_port_cap(void){	static const char *pwordstr[8] = { "2 bytes", "1 byte", "4 bytes", "3?", "4?", 					   "5?", "6?", "7?" };	static const char *irqstr[8] = { "jumpered", "7", "9", "10", "11", "14", "15", "5" };	static const char *dmastr[8] = { "jumpered 8bit", "1", "2", "3", "jumpered 16bit", "5", "6", "7" };	unsigned char cnfga, cnfgb;	unsigned int cnt, fwcnt, wthr = ~0, frcnt, rthr = ~0;	ring0_outb(0x30, iobase + LPTREG_ECONTROL); /* PS/2 mode */	ring0_outb(0xf0, iobase + LPTREG_ECONTROL); /* config mode */	cnfga = ring0_inb(iobase + LPTREG_CONFIGA);	cnfgb = ring0_inb(iobase + LPTREG_CONFIGB);	ring0_outb(cnfgb & 0x7f, iobase + LPTREG_CONFIGB);  /* disable compression */	ring0_outb(0x30, iobase + LPTREG_ECONTROL); /* PS/2 mode */	ring0_outb(0x04, iobase + LPTREG_DCR); /* w9xring0ion=output */	ring0_outb(0xd0, iobase + LPTREG_ECONTROL); /* test mode */	for (cnt = 0; cnt < 1024 && !(ring0_inb(iobase + LPTREG_ECONTROL) & 0x02); cnt++)		ring0_outb(0, iobase + LPTREG_TFIFO);	ring0_outb(0xd0, iobase + LPTREG_ECONTROL); /* test mode, clear serviceintr */	for (fwcnt = 0; fwcnt < 1024 && !(ring0_inb(iobase + LPTREG_ECONTROL) & 0x01); fwcnt++) {		ring0_inb(iobase + LPTREG_TFIFO);		if (ring0_inb(iobase + LPTREG_ECONTROL) & 0x04) {			wthr = fwcnt;			ring0_outb(0xd0, iobase + LPTREG_ECONTROL); /* test mode, clear serviceintr */		}	}	ring0_outb(0x24, iobase + LPTREG_DCR); /* w9xring0ion=input */	ring0_outb(0xd0, iobase + LPTREG_ECONTROL); /* test mode */	for (cnt = 0; cnt < 1024 && !(ring0_inb(iobase + LPTREG_ECONTROL) & 0x02); cnt++)		ring0_outb(0, iobase + LPTREG_TFIFO);	ring0_outb(0xd0, iobase + LPTREG_ECONTROL); /* test mode, clear serviceintr */	for (frcnt = 0; frcnt < 1024 && !(ring0_inb(iobase + LPTREG_ECONTROL) & 0x01); frcnt++) {		ring0_inb(iobase + LPTREG_TFIFO);		if (ring0_inb(iobase + LPTREG_ECONTROL) & 0x04) {			rthr = frcnt;			ring0_outb(0xd0, iobase + LPTREG_ECONTROL); /* test mode, clear serviceintr */		}	}	ring0_outb(0x30, iobase + LPTREG_ECONTROL); /* PS/2 mode */	ring0_outb(0x04, iobase + LPTREG_DCR); /* w9xring0ion=output */	lprintf(3, "ECP capabilities: %s int, PWord %s, %sextra tx pipe, IRQ %s, DMA %s\n"		"Tx: FIFO size %d threshold %d  Rx: FIFO size %d threshold %d\n",		(cnfga & 0x80) ? "level" : "edge", pwordstr[(cnfga >> 4) & 7],		(cnfga & 0x04) ? "no" : "", irqstr[(cnfgb >> 3) & 7], dmastr[cnfgb & 7],		fwcnt, wthr, frcnt, rthr);}int detect_port_ecp(void){	epp_clear_timeout();  /* prevent lockup of some SMSC IC's */	/* this routine is mostly copied from Linux Kernel parport */	ring0_outb(0xc, iobase+LPTREG_ECONTROL);	ring0_outb(0xc, iobase+LPTREG_CONTROL);	ring0_outb(0xaa, iobase+LPTREG_DATA);	if (ring0_inb(iobase+LPTREG_DATA) != 0xaa)		goto fail_spp;	ring0_outb(0x55, iobase+LPTREG_DATA);	if (ring0_inb(iobase+LPTREG_DATA) != 0x55)		goto fail_spp;	/* check for ECP ECR mode */	if (detect_ecr())		goto fail_ecp;	ecp_port_cap();	return 0;  fail_ecp:	lprintf(0, "parport (ECP) test failed\n");	return -1;  fail_spp:	lprintf(0, "parport (SPP) test failed\n");	return -1;}#endif/* ---------------------------------------------------------------------- */static int parport_spp(void){	pp_w9xring0_epp_clear_timeout();  /* prevent lockup of some SMSC IC's */	/* this routine is mostly copied from Linux Kernel parport */	ring0_outb(0xc, pp_w9xring0_iobase+LPTREG_ECONTROL);	ring0_outb(0xc, pp_w9xring0_iobase+LPTREG_CONTROL);	ring0_outb(0xaa, pp_w9xring0_iobase+LPTREG_DATA);	if (ring0_inb(pp_w9xring0_iobase+LPTREG_DATA) != 0xaa)		return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区成人| 一区二区激情小说| 亚洲一卡二卡三卡四卡五卡| 男男视频亚洲欧美| 91黄色小视频| 中文字幕va一区二区三区| 免费一级片91| 欧美视频精品在线观看| 亚洲欧美在线观看| 成人免费高清视频在线观看| 日韩你懂的在线播放| 亚洲bt欧美bt精品777| 色哦色哦哦色天天综合| 国产精品三级视频| 国产精品一区在线| 欧美精品一区男女天堂| 青青草精品视频| 欧美精品99久久久**| 亚洲aⅴ怡春院| 欧美日韩国产在线观看| 一区二区三区不卡在线观看 | 成人av在线播放网址| 日韩欧美精品在线| 秋霞电影网一区二区| 在线观看91av| 日本一不卡视频| 欧美卡1卡2卡| 麻豆成人久久精品二区三区小说| 欧美精品亚洲一区二区在线播放| 午夜成人免费视频| 欧美精选一区二区| 青青草国产精品97视觉盛宴| 日韩一二三区不卡| 国内偷窥港台综合视频在线播放| 26uuu亚洲综合色欧美| 精彩视频一区二区| 久久蜜臀精品av| 风间由美性色一区二区三区| 亚洲欧洲美洲综合色网| 色猫猫国产区一区二在线视频| 亚洲精品国产一区二区三区四区在线| 91麻豆免费观看| 亚洲一二三四区| 欧美日韩黄色一区二区| 久久国产夜色精品鲁鲁99| 欧美大片在线观看一区二区| 国产精品一区三区| 自拍偷拍欧美激情| 欧美日韩一区三区四区| 久久精品99国产精品| 日本一区二区三区高清不卡| 91香蕉视频污| 天堂久久久久va久久久久| 26uuu色噜噜精品一区二区| 不卡在线观看av| 亚洲国产综合人成综合网站| 日韩精品一区二区三区中文不卡 | 亚洲天堂福利av| 欧美嫩在线观看| 久久精品国产在热久久| 国产精品日韩成人| 4438x成人网最大色成网站| 国产精选一区二区三区| 亚洲女同女同女同女同女同69| 欧美老女人第四色| 成人av动漫网站| 日韩不卡手机在线v区| 国产日韩欧美在线一区| 欧美色精品在线视频| 国产精品资源在线看| 亚洲成av人片在线观看无码| 久久网站最新地址| 欧美日韩国产经典色站一区二区三区 | 亚洲少妇最新在线视频| 欧美r级在线观看| 欧美亚洲图片小说| 国产精品一二三| 天天av天天翘天天综合网色鬼国产 | 精品国产一区二区三区忘忧草 | 成人丝袜18视频在线观看| 人人超碰91尤物精品国产| 亚洲人快播电影网| 久久亚洲精精品中文字幕早川悠里| 91久久久免费一区二区| 欧美在线观看一二区| 国产乱一区二区| 蜜桃久久久久久久| 亚洲福利一区二区| 国产精品久久久久久久久免费桃花 | 一区视频在线播放| 久久久久综合网| 欧美一区二区在线看| 欧美午夜一区二区| 91猫先生在线| 成人午夜免费视频| 激情图片小说一区| 久久99精品久久久| 奇米四色…亚洲| 视频一区国产视频| 午夜私人影院久久久久| 亚洲精品免费视频| 亚洲三级在线播放| 国产精品不卡在线| 国产精品久久久久久久久免费丝袜| 国产亚洲成aⅴ人片在线观看| 精品三级av在线| 日韩欧美在线123| 欧美日本乱大交xxxxx| 欧美日韩美少妇| 欧美日韩免费在线视频| 欧美偷拍一区二区| 欧美日韩精品欧美日韩精品| 欧美图区在线视频| 69成人精品免费视频| 制服丝袜日韩国产| 欧美精品久久99久久在免费线 | 欧美一级免费大片| 日韩欧美资源站| 日韩精品一区在线| 久久久www免费人成精品| 久久精品欧美日韩| 国产精品黄色在线观看| 日韩美女啊v在线免费观看| 亚洲欧洲日产国产综合网| 尤物在线观看一区| 亚洲v中文字幕| 精久久久久久久久久久| 成人午夜私人影院| 日本高清视频一区二区| 欧美三级乱人伦电影| 91精品国产一区二区三区| 欧美va日韩va| 成人免费小视频| 亚洲成人免费电影| 久久99久久99小草精品免视看| 国产不卡视频在线播放| 色综合久久久久久久久久久| 欧美精品日韩一区| 国产三区在线成人av| 亚洲免费观看在线视频| 日韩影院在线观看| 国产精品一卡二卡在线观看| 在线影院国内精品| 久久综合久久综合九色| 亚洲视频一二区| 另类中文字幕网| 色综合天天综合色综合av| 69堂成人精品免费视频| 国产精品福利一区| 日韩电影免费一区| 不卡一卡二卡三乱码免费网站| 欧美男女性生活在线直播观看| 久久久精品天堂| 亚洲成年人影院| aa级大片欧美| 精品国产一区二区在线观看| 亚洲在线中文字幕| 福利91精品一区二区三区| 欧美裸体bbwbbwbbw| 国产精品夫妻自拍| 国内精品写真在线观看| 欧美在线看片a免费观看| 国产亚洲成年网址在线观看| 日韩va亚洲va欧美va久久| 国产xxx精品视频大全| 717成人午夜免费福利电影| 亚洲日韩欧美一区二区在线| 亚洲国产精品影院| 中文字幕一区二区三区色视频| 国产精品免费免费| 日韩成人免费在线| 一本大道久久a久久综合| 久久这里只有精品视频网| 天堂久久一区二区三区| 色综合久久久久网| 欧美国产精品一区| 久久99国内精品| 欧美日韩高清一区| 日韩一级片网站| 99re热这里只有精品免费视频| 精品乱人伦小说| 日本不卡高清视频| 欧美日韩不卡在线| 亚洲线精品一区二区三区| 懂色av一区二区三区免费观看| 欧美高清性hdvideosex| 亚洲在线成人精品| 色成年激情久久综合| 自拍偷在线精品自拍偷无码专区| 成人性视频免费网站| 国产农村妇女毛片精品久久麻豆| 国产最新精品免费| 久久久一区二区| 国产99久久久精品| 国产精品久久久久久一区二区三区| 国产精品91一区二区| 国产日韩亚洲欧美综合| 国产精品资源在线| 国产精品你懂的在线欣赏| 94-欧美-setu|