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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ne2k-pci.c

?? linux和2410結(jié)合開發(fā) 用他可以生成2410所需的zImage文件
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* ne2k-pci.c: A NE2000 clone on PCI bus driver for Linux. *//*	A Linux device driver for PCI NE2000 clones.	Authors and other copyright holders:	1992-2000 by Donald Becker, NE2000 core and various modifications.	1995-1998 by Paul Gortmaker, core modifications and PCI support.	Copyright 1993 assigned to the United States Government as represented	by the Director, National Security Agency.	This software may be used and distributed according to the terms of	the GNU General Public License (GPL), incorporated herein by reference.	Drivers based on or derived from this code fall under the GPL and must	retain the authorship, copyright and license notice.  This file is not	a complete program and may only be used when the entire operating	system is licensed under the GPL.	The author may be reached as becker@scyld.com, or C/O	Scyld Computing Corporation	410 Severn Ave., Suite 210	Annapolis MD 21403	Issues remaining:	People are making PCI ne2000 clones! Oh the horror, the horror...	Limited full-duplex support.*/#define DRV_NAME	"ne2k-pci"#define DRV_VERSION	"1.02"#define DRV_RELDATE	"10/19/2000"/* The user-configurable values.   These may be modified when a driver module is loaded.*/static int debug = 1;			/* 1 normal messages, 0 quiet .. 7 verbose. */#define MAX_UNITS 8				/* More are supported, limit only on options *//* Used to pass the full-duplex flag, etc. */static int full_duplex[MAX_UNITS];static int options[MAX_UNITS];/* Force a non std. amount of memory.  Units are 256 byte pages. *//* #define PACKETBUF_MEMSIZE	0x40 */#include <linux/module.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/errno.h>#include <linux/pci.h>#include <linux/init.h>#include <linux/ethtool.h>#include <asm/system.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/uaccess.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include "8390.h"/* These identify the driver base version and may not be removed. */static char version[] __devinitdata =KERN_INFO DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " D. Becker/P. Gortmaker\n"KERN_INFO "  http://www.scyld.com/network/ne2k-pci.html\n";#if defined(__powerpc__)#define inl_le(addr)  le32_to_cpu(inl(addr))#define inw_le(addr)  le16_to_cpu(inw(addr))#define insl insl_ns#define outsl outsl_ns#endif#define PFX DRV_NAME ": "MODULE_AUTHOR("Donald Becker / Paul Gortmaker");MODULE_DESCRIPTION("PCI NE2000 clone driver");MODULE_LICENSE("GPL");MODULE_PARM(debug, "i");MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");MODULE_PARM_DESC(debug, "PCI NE2000 debug level (1-2)");MODULE_PARM_DESC(options, "PCI NE2000: Bit 5: full duplex");MODULE_PARM_DESC(full_duplex, "PCI NE2000 full duplex setting(s) (1)");/* Some defines that people can play with if so inclined. *//* Use 32 bit data-movement operations instead of 16 bit. */#define USE_LONGIO/* Do we implement the read before write bugfix ? *//* #define NE_RW_BUGFIX *//* Flags.  We rename an existing ei_status field to store flags! *//* Thus only the low 8 bits are usable for non-init-time flags. */#define ne2k_flags reg0enum {	ONLY_16BIT_IO=8, ONLY_32BIT_IO=4,	/* Chip can do only 16/32-bit xfers. */	FORCE_FDX=0x20,						/* User override. */	REALTEK_FDX=0x40, HOLTEK_FDX=0x80,	STOP_PG_0x60=0x100,};enum ne2k_pci_chipsets {	CH_RealTek_RTL_8029 = 0,	CH_Winbond_89C940,	CH_Compex_RL2000,	CH_KTI_ET32P2,	CH_NetVin_NV5000SC,	CH_Via_86C926,	CH_SureCom_NE34,	CH_Winbond_W89C940F,	CH_Holtek_HT80232,	CH_Holtek_HT80229,};static struct {	char *name;	int flags;} pci_clone_list[] __devinitdata = {	{"RealTek RTL-8029", REALTEK_FDX},	{"Winbond 89C940", 0},	{"Compex RL2000", 0},	{"KTI ET32P2", 0},	{"NetVin NV5000SC", 0},	{"Via 86C926", ONLY_16BIT_IO},	{"SureCom NE34", 0},	{"Winbond W89C940F", 0},	{"Holtek HT80232", ONLY_16BIT_IO | HOLTEK_FDX},	{"Holtek HT80229", ONLY_32BIT_IO | HOLTEK_FDX | STOP_PG_0x60 },	{0,}};static struct pci_device_id ne2k_pci_tbl[] __devinitdata = {	{ 0x10ec, 0x8029, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_RealTek_RTL_8029 },	{ 0x1050, 0x0940, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Winbond_89C940 },	{ 0x11f6, 0x1401, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Compex_RL2000 },	{ 0x8e2e, 0x3000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_KTI_ET32P2 },	{ 0x4a14, 0x5000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_NetVin_NV5000SC },	{ 0x1106, 0x0926, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Via_86C926 },	{ 0x10bd, 0x0e34, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_SureCom_NE34 },	{ 0x1050, 0x5a5a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Winbond_W89C940F },	{ 0x12c3, 0x0058, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Holtek_HT80232 },	{ 0x12c3, 0x5598, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_Holtek_HT80229 },	{ 0, }};MODULE_DEVICE_TABLE(pci, ne2k_pci_tbl);/* ---- No user-serviceable parts below ---- */#define NE_BASE	 (dev->base_addr)#define NE_CMD	 	0x00#define NE_DATAPORT	0x10	/* NatSemi-defined port window offset. */#define NE_RESET	0x1f	/* Issue a read to reset, a write to clear. */#define NE_IO_EXTENT	0x20#define NESM_START_PG	0x40	/* First page of TX buffer */#define NESM_STOP_PG	0x80	/* Last page +1 of RX ring */static int ne2k_pci_open(struct net_device *dev);static int ne2k_pci_close(struct net_device *dev);static void ne2k_pci_reset_8390(struct net_device *dev);static void ne2k_pci_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr,			  int ring_page);static void ne2k_pci_block_input(struct net_device *dev, int count,			  struct sk_buff *skb, int ring_offset);static void ne2k_pci_block_output(struct net_device *dev, const int count,		const unsigned char *buf, const int start_page);static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);/* There is no room in the standard 8390 structure for extra info we need,   so we build a meta/outer-wrapper structure.. */struct ne2k_pci_card {	struct net_device *dev;	struct pci_dev *pci_dev;};/*  NEx000-clone boards have a Station Address (SA) PROM (SAPROM) in the packet  buffer memory space.  By-the-spec NE2000 clones have 0x57,0x57 in bytes  0x0e,0x0f of the SAPROM, while other supposed NE2000 clones must be  detected by their SA prefix.  Reading the SAPROM from a word-wide card with the 8390 set in byte-wide  mode results in doubled values, which can be detected and compensated for.  The probe is also responsible for initializing the card and filling  in the 'dev' and 'ei_status' structures.*/static int __devinit ne2k_pci_init_one (struct pci_dev *pdev,				     const struct pci_device_id *ent){	struct net_device *dev;	int i;	unsigned char SA_prom[32];	int start_page, stop_page;	int irq, reg0, chip_idx = ent->driver_data;	static unsigned int fnd_cnt;	long ioaddr;	int flags = pci_clone_list[chip_idx].flags;/* when built into the kernel, we only print version if device is found */#ifndef MODULE	static int printed_version;	if (!printed_version++)		printk(version);#endif	fnd_cnt++;	i = pci_enable_device (pdev);	if (i)		return i;	ioaddr = pci_resource_start (pdev, 0);	irq = pdev->irq;	if (!ioaddr || ((pci_resource_flags (pdev, 0) & IORESOURCE_IO) == 0)) {		printk (KERN_ERR PFX "no I/O resource at PCI BAR #0\n");		return -ENODEV;	}	if (request_region (ioaddr, NE_IO_EXTENT, DRV_NAME) == NULL) {		printk (KERN_ERR PFX "I/O resource 0x%x @ 0x%lx busy\n",			NE_IO_EXTENT, ioaddr);		return -EBUSY;	}	reg0 = inb(ioaddr);	if (reg0 == 0xFF)		goto err_out_free_res;	/* Do a preliminary verification that we have a 8390. */	{		int regd;		outb(E8390_NODMA+E8390_PAGE1+E8390_STOP, ioaddr + E8390_CMD);		regd = inb(ioaddr + 0x0d);		outb(0xff, ioaddr + 0x0d);		outb(E8390_NODMA+E8390_PAGE0, ioaddr + E8390_CMD);		inb(ioaddr + EN0_COUNTER0); /* Clear the counter by reading. */		if (inb(ioaddr + EN0_COUNTER0) != 0) {			outb(reg0, ioaddr);			outb(regd, ioaddr + 0x0d);	/* Restore the old values. */			goto err_out_free_res;		}	}	dev = alloc_etherdev(0);	if (!dev) {		printk (KERN_ERR PFX "cannot allocate ethernet device\n");		goto err_out_free_res;	}	SET_MODULE_OWNER(dev);	/* Reset card. Who knows what dain-bramaged state it was left in. */	{		unsigned long reset_start_time = jiffies;		outb(inb(ioaddr + NE_RESET), ioaddr + NE_RESET);		/* This looks like a horrible timing loop, but it should never take		   more than a few cycles.		*/		while ((inb(ioaddr + EN0_ISR) & ENISR_RESET) == 0)			/* Limit wait: '2' avoids jiffy roll-over. */			if (jiffies - reset_start_time > 2) {				printk(KERN_ERR PFX "Card failure (no reset ack).\n");				goto err_out_free_netdev;			}		outb(0xff, ioaddr + EN0_ISR);		/* Ack all intr. */	}	/* Read the 16 bytes of station address PROM.	   We must first initialize registers, similar to NS8390_init(eifdev, 0).	   We can't reliably read the SAPROM address without this.	   (I learned the hard way!). */	{		struct {unsigned char value, offset; } program_seq[] = {			{E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD}, /* Select page 0*/			{0x49,	EN0_DCFG},	/* Set word-wide access. */			{0x00,	EN0_RCNTLO},	/* Clear the count regs. */			{0x00,	EN0_RCNTHI},			{0x00,	EN0_IMR},	/* Mask completion irq. */			{0xFF,	EN0_ISR},			{E8390_RXOFF, EN0_RXCR},	/* 0x20  Set to monitor */			{E8390_TXOFF, EN0_TXCR},	/* 0x02  and loopback mode. */			{32,	EN0_RCNTLO},			{0x00,	EN0_RCNTHI},			{0x00,	EN0_RSARLO},	/* DMA starting at 0x0000. */			{0x00,	EN0_RSARHI},			{E8390_RREAD+E8390_START, E8390_CMD},		};		for (i = 0; i < sizeof(program_seq)/sizeof(program_seq[0]); i++)			outb(program_seq[i].value, ioaddr + program_seq[i].offset);	}	/* Note: all PCI cards have at least 16 bit access, so we don't have	   to check for 8 bit cards.  Most cards permit 32 bit access. */	if (flags & ONLY_32BIT_IO) {		for (i = 0; i < 4 ; i++)			((u32 *)SA_prom)[i] = le32_to_cpu(inl(ioaddr + NE_DATAPORT));	} else		for(i = 0; i < 32 /*sizeof(SA_prom)*/; i++)			SA_prom[i] = inb(ioaddr + NE_DATAPORT);	/* We always set the 8390 registers for word mode. */	outb(0x49, ioaddr + EN0_DCFG);	start_page = NESM_START_PG;	stop_page = flags & STOP_PG_0x60 ? 0x60 : NESM_STOP_PG;	/* Set up the rest of the parameters. */	dev->irq = irq;	dev->base_addr = ioaddr;	pci_set_drvdata(pdev, dev);	/* Allocate dev->priv and fill in 8390 specific dev fields. */	if (ethdev_init(dev)) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av电影免费在线播放| 久久精品国产久精国产| 91亚洲精品久久久蜜桃网站| 中文字幕一区在线观看| 色视频成人在线观看免| 亚洲成人激情综合网| 欧美喷水一区二区| 国内不卡的二区三区中文字幕 | 色又黄又爽网站www久久| 亚洲欧美激情插| 88在线观看91蜜桃国自产| 国产一区二区三区在线看麻豆| 欧美激情综合网| 在线观看国产精品网站| 久久草av在线| 日韩美女视频一区| 337p亚洲精品色噜噜狠狠| 国内成人免费视频| 一区二区三区四区在线免费观看 | 成人app在线观看| 亚洲国产一区二区视频| 精品盗摄一区二区三区| 97精品视频在线观看自产线路二| 亚洲第一精品在线| 国产人妖乱国产精品人妖| 欧美性受极品xxxx喷水| 国产一区二区剧情av在线| 中文字幕欧美一| 欧美一区二区三区小说| 成人av一区二区三区| 天天av天天翘天天综合网色鬼国产| 久久亚洲免费视频| 91久久人澡人人添人人爽欧美| 视频一区国产视频| 国产精品久久午夜夜伦鲁鲁| 日韩视频一区二区在线观看| 99视频在线精品| 韩国欧美国产一区| 亚洲国产视频直播| 国产精品成人在线观看| 欧美成人综合网站| 欧美在线|欧美| 成人综合婷婷国产精品久久蜜臀| 日韩av中文在线观看| 亚洲欧美日韩久久| 国产片一区二区三区| 91精品国产入口| 欧美亚洲图片小说| www.亚洲人| 国产成人综合视频| 精品无人码麻豆乱码1区2区| 午夜精品久久久久久久99樱桃| 国产精品三级在线观看| 欧美tickle裸体挠脚心vk| 欧美老人xxxx18| 色婷婷综合久久久中文一区二区 | 欧美日韩和欧美的一区二区| 国产日韩欧美a| 欧美成人aa大片| 欧美日韩国产大片| 色综合亚洲欧洲| 日韩精品乱码免费| 欧美日韩视频在线一区二区| a美女胸又www黄视频久久| 国内久久精品视频| 久久国产日韩欧美精品| 免费一级片91| 日本女优在线视频一区二区| 亚洲国产成人av网| 亚洲国产一区二区三区 | kk眼镜猥琐国模调教系列一区二区| 激情综合色播激情啊| 日本不卡视频在线| 日本不卡视频一二三区| 琪琪一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 日本免费新一区视频| 日韩精品成人一区二区三区| 丝袜美腿一区二区三区| 日韩国产欧美一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 午夜精品久久久久| 久久精品国产精品青草| 久久66热re国产| 亚洲一区在线观看视频| 亚洲男女毛片无遮挡| 综合分类小说区另类春色亚洲小说欧美| 亚洲国产成人自拍| 亚洲欧美日韩国产综合| 亚洲一区二区三区中文字幕在线 | 91麻豆精品久久久久蜜臀| 欧美高清你懂得| 欧美一区二区福利在线| 欧美精品一区二区三区高清aⅴ| 2021国产精品久久精品| 国产精品色婷婷| 亚洲一区二区三区四区中文字幕| 日本欧美韩国一区三区| 国产麻豆视频一区| 91在线播放网址| 884aa四虎影成人精品一区| 欧美精品一区二区高清在线观看| 国产欧美一区二区精品性| 亚洲精品视频免费看| 日本麻豆一区二区三区视频| 国产精品一级片在线观看| 91在线视频播放地址| 欧美夫妻性生活| 中文字幕精品一区二区精品绿巨人 | 亚洲成a人v欧美综合天堂| 麻豆视频一区二区| 波多野结衣一区二区三区| 精品视频色一区| 2017欧美狠狠色| 亚洲色图在线播放| 久久国产精品99精品国产| 波多野结衣的一区二区三区| 欧美嫩在线观看| 国产亚洲综合av| 欧美综合天天夜夜久久| 欧美mv日韩mv| 亚洲美女一区二区三区| 国产综合一区二区| 欧美亚洲一区二区三区四区| 久久久亚洲国产美女国产盗摄| 亚洲精品国产视频| 国产精品一区在线| 91精品国产入口在线| 亚洲天堂成人网| 国模冰冰炮一区二区| 欧美亚洲日本国产| 国产精品日产欧美久久久久| 亚洲国产aⅴ天堂久久| 国产成人自拍高清视频在线免费播放| 欧美日韩亚洲另类| 自拍av一区二区三区| 国产麻豆视频精品| 日韩一区二区免费电影| 一区二区三区四区激情| 国产高清在线观看免费不卡| 欧美一区二区三区免费大片 | 欧美精品一区二区不卡| 日日摸夜夜添夜夜添国产精品 | 最新久久zyz资源站| 美女尤物国产一区| 欧美日韩国产一区| 一区二区在线观看视频| 成人免费视频一区二区| www久久精品| 狠狠色丁香久久婷婷综合_中| 欧美久久久久久久久中文字幕| 亚洲激情自拍偷拍| 99精品视频中文字幕| 国产精品免费视频观看| 国产毛片精品视频| 精品国产一区二区三区忘忧草 | www.av精品| 欧美国产日韩精品免费观看| 国产剧情一区二区| 精品盗摄一区二区三区| 久久精品二区亚洲w码| 7777精品伊人久久久大香线蕉完整版| 亚洲黄色免费电影| 在线区一区二视频| 一区二区高清免费观看影视大全 | 三级影片在线观看欧美日韩一区二区| 91国偷自产一区二区开放时间 | 欧美日韩在线播放三区| 亚洲激情五月婷婷| 在线电影一区二区三区| 欧美不卡一区二区三区| 免费在线观看成人| 日韩欧美国产三级电影视频| 奇米一区二区三区av| 欧美一级久久久| 九一九一国产精品| 久久久久97国产精华液好用吗| 国产精品一区二区男女羞羞无遮挡 | 性久久久久久久久久久久| 欧美日韩视频在线观看一区二区三区| 性欧美疯狂xxxxbbbb| 日韩欧美在线影院| 国产自产视频一区二区三区| 国产性天天综合网| 91麻豆精品一区二区三区| 亚洲一级二级在线| 欧美丰满一区二区免费视频| 麻豆精品新av中文字幕| 欧美国产精品中文字幕| 色先锋资源久久综合| 日本午夜精品视频在线观看| 26uuuu精品一区二区| 国产 日韩 欧美大片| 一区二区三区色| 日韩美女视频一区二区在线观看| 国产精品一品视频| 亚洲在线视频网站| 国产在线一区二区| 国产精品国产自产拍在线| 91福利在线导航|