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

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

?? smc-ultra.c

?? GNU Mach 微內核源代碼, 基于美國卡內基美隆大學的 Mach 研究項目
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* smc-ultra.c: A SMC Ultra ethernet driver for linux. *//*	This is a driver for the SMC Ultra and SMC EtherEZ ISA ethercards.	Written 1993-1998 by Donald Becker.	Copyright 1993 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 Public License, incorporated herein by reference.	The author may be reached as becker@CESDIS.gsfc.nasa.gov, or C/O	Center of Excellence in Space Data and Information Sciences		Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771	This driver uses the cards in the 8390-compatible mode.	Most of the run-time complexity is handled by the generic code in	8390.c.  The code in this file is responsible for		ultra_probe()	 	Detecting and initializing the card.		ultra_probe1()			ultra_open()		The card-specific details of starting, stopping		ultra_reset_8390()	and resetting the 8390 NIC core.		ultra_close()		ultra_block_input()		Routines for reading and writing blocks of		ultra_block_output()	packet buffer memory.		ultra_pio_input()		ultra_pio_output()	This driver enables the shared memory only when doing the actual data	transfers to avoid a bug in early version of the card that corrupted	data transferred by a AHA1542.	This driver now supports the programmed-I/O (PIO) data transfer mode of	the EtherEZ. It does not use the non-8390-compatible "Altego" mode.	That support (if available) is in smc-ez.c.	Changelog:	Paul Gortmaker	: multiple card support for module users.	Donald Becker	: 4/17/96 PIO support, minor potential problems avoided.	Donald Becker	: 6/6/96 correctly set auto-wrap bit.*/static const char *version =	"smc-ultra.c:v2.02 2/3/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";#include <linux/module.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/errno.h>#include <linux/string.h>#include <asm/io.h>#include <asm/system.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include "8390.h"/* A zero-terminated list of I/O addresses to be probed. */static unsigned int ultra_portlist[] ={0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380, 0};int ultra_probe(struct device *dev);int ultra_probe1(struct device *dev, int ioaddr);static int ultra_open(struct device *dev);static void ultra_reset_8390(struct device *dev);static void ultra_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr,						int ring_page);static void ultra_block_input(struct device *dev, int count,						  struct sk_buff *skb, int ring_offset);static void ultra_block_output(struct device *dev, int count,							const unsigned char *buf, const int start_page);static void ultra_pio_get_hdr(struct device *dev, struct e8390_pkt_hdr *hdr,						int ring_page);static void ultra_pio_input(struct device *dev, int count,						  struct sk_buff *skb, int ring_offset);static void ultra_pio_output(struct device *dev, int count,							 const unsigned char *buf, const int start_page);static int ultra_close_card(struct device *dev);#define START_PG		0x00	/* First page of TX buffer */#define ULTRA_CMDREG	0		/* Offset to ASIC command register. */#define	 ULTRA_RESET	0x80	/* Board reset, in ULTRA_CMDREG. */#define	 ULTRA_MEMENB	0x40	/* Enable the shared memory. */#define IOPD	0x02			/* I/O Pipe Data (16 bits), PIO operation. */#define IOPA	0x07			/* I/O Pipe Address for PIO operation. */#define ULTRA_NIC_OFFSET  16	/* NIC register offset from the base_addr. */#define ULTRA_IO_EXTENT 32#define EN0_ERWCNT		0x08	/* Early receive warning count. *//*	Probe for the Ultra.  This looks like a 8013 with the station	address PROM at I/O ports <base>+8 to <base>+13, with a checksum	following.*/#ifdef HAVE_DEVLISTstruct netdev_entry ultra_drv ={"ultra", ultra_probe1, NETCARD_IO_EXTENT, netcard_portlist};#elseint ultra_probe(struct device *dev){	int i;	int base_addr = dev ? dev->base_addr : 0;	if (base_addr > 0x1ff)		/* Check a single specified location. */		return ultra_probe1(dev, base_addr);	else if (base_addr != 0)	/* Don't probe at all. */		return ENXIO;	for (i = 0; ultra_portlist[i]; i++) {		int ioaddr = ultra_portlist[i];		if (check_region(ioaddr, ULTRA_IO_EXTENT))			continue;		if (ultra_probe1(dev, ioaddr) == 0)			return 0;	}	return ENODEV;}#endifint ultra_probe1(struct device *dev, int ioaddr){	int i;	int checksum = 0;	const char *model_name;	unsigned char eeprom_irq = 0;	static unsigned version_printed = 0;	/* Values from various config regs. */	unsigned char num_pages, irqreg, addr, piomode;	unsigned char idreg = inb(ioaddr + 7);	unsigned char reg4 = inb(ioaddr + 4) & 0x7f;	/* Check the ID nibble. */	if ((idreg & 0xF0) != 0x20 			/* SMC Ultra */		&& (idreg & 0xF0) != 0x40) 		/* SMC EtherEZ */		return ENODEV;	/* Select the station address register set. */	outb(reg4, ioaddr + 4);	for (i = 0; i < 8; i++)		checksum += inb(ioaddr + 8 + i);	if ((checksum & 0xff) != 0xFF)		return ENODEV;	if (dev == NULL)		dev = init_etherdev(0, 0);	if (ei_debug  &&  version_printed++ == 0)		printk(version);	model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";	printk("%s: %s at %#3x,", dev->name, model_name, ioaddr);	for (i = 0; i < 6; i++)		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));	/* Switch from the station address to the alternate register set and	   read the useful registers there. */	outb(0x80 | reg4, ioaddr + 4);	/* Enabled FINE16 mode to avoid BIOS ROM width mismatches @ reboot. */	outb(0x80 | inb(ioaddr + 0x0c), ioaddr + 0x0c);	piomode = inb(ioaddr + 0x8);	addr = inb(ioaddr + 0xb);	irqreg = inb(ioaddr + 0xd);	/* Switch back to the station address register set so that the MS-DOS driver	   can find the card after a warm boot. */	outb(reg4, ioaddr + 4);	if (dev->irq < 2) {		unsigned char irqmap[] = {0, 9, 3, 5, 7, 10, 11, 15};		int irq;		/* The IRQ bits are split. */		irq = irqmap[((irqreg & 0x40) >> 4) + ((irqreg & 0x0c) >> 2)];		if (irq == 0) {			printk(", failed to detect IRQ line.\n");			return -EAGAIN;		}		dev->irq = irq;		eeprom_irq = 1;	}	/* Allocate dev->priv and fill in 8390 specific dev fields. */	if (ethdev_init(dev)) {		printk (", no memory for dev->priv.\n");                return -ENOMEM;        }	/* OK, we are certain this is going to work.  Setup the device. */	request_region(ioaddr, ULTRA_IO_EXTENT, model_name);	/* The 8390 isn't at the base address, so fake the offset */	dev->base_addr = ioaddr+ULTRA_NIC_OFFSET;	{		int addr_tbl[4] = {0x0C0000, 0x0E0000, 0xFC0000, 0xFE0000};		short num_pages_tbl[4] = {0x20, 0x40, 0x80, 0xff};		dev->mem_start = ((addr & 0x0f) << 13) + addr_tbl[(addr >> 6) & 3] ;		num_pages = num_pages_tbl[(addr >> 4) & 3];	}	ei_status.name = model_name;	ei_status.word16 = 1;	ei_status.tx_start_page = START_PG;	ei_status.rx_start_page = START_PG + TX_PAGES;	ei_status.stop_page = num_pages;	dev->rmem_start = dev->mem_start + TX_PAGES*256;	dev->mem_end = dev->rmem_end		= dev->mem_start + (ei_status.stop_page - START_PG)*256;	if (piomode) {		printk(",%s IRQ %d programmed-I/O mode.\n",			   eeprom_irq ? "EEPROM" : "assigned ", dev->irq);		ei_status.block_input = &ultra_pio_input;		ei_status.block_output = &ultra_pio_output;		ei_status.get_8390_hdr = &ultra_pio_get_hdr;	} else {		printk(",%s IRQ %d memory %#lx-%#lx.\n", eeprom_irq ? "" : "assigned ",			   dev->irq, dev->mem_start, dev->mem_end-1);		ei_status.block_input = &ultra_block_input;		ei_status.block_output = &ultra_block_output;		ei_status.get_8390_hdr = &ultra_get_8390_hdr;	}	ei_status.reset_8390 = &ultra_reset_8390;	dev->open = &ultra_open;	dev->stop = &ultra_close_card;	NS8390_init(dev, 0);	return 0;}static intultra_open(struct device *dev)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区忘忧草| 国产白丝网站精品污在线入口| 亚洲成人中文在线| 久久99精品一区二区三区三区| a级精品国产片在线观看| 日韩欧美久久久| 伊人婷婷欧美激情| 成人性生交大片免费看中文| 日韩一区二区三区免费观看 | 欧美老肥妇做.爰bbww| 国产精品水嫩水嫩| 精品亚洲成av人在线观看| 欧美无砖砖区免费| 亚洲黄色av一区| 9久草视频在线视频精品| 国产片一区二区| 另类调教123区| 67194成人在线观看| 亚洲第一成年网| 欧美在线不卡一区| 一区二区三区四区乱视频| av在线一区二区| 国产精品成人一区二区艾草 | 亚洲日本护士毛茸茸| 国产一区久久久| 欧美精品一区男女天堂| 久久精品国产精品亚洲综合| 日韩午夜电影av| 另类小说欧美激情| 久久综合九色综合97_久久久| 老司机精品视频在线| 日韩一区二区精品葵司在线| 日本亚洲最大的色成网站www| 91精品国产色综合久久ai换脸 | 95精品视频在线| 亚洲欧洲av在线| 在线观看一区二区精品视频| 亚洲亚洲精品在线观看| 欧美日韩国产色站一区二区三区| 亚洲成人av一区| 欧美精品99久久久**| 免费av成人在线| 亚洲精品一区二区三区99| 丁香六月综合激情| 成人免费在线播放视频| 在线精品视频免费播放| 青青草伊人久久| 久久久精品免费观看| 99国产精品99久久久久久| 夜夜精品浪潮av一区二区三区| 欧美日韩国产首页| 国产原创一区二区三区| 久久久久成人黄色影片| 91香蕉视频在线| 日韩精品免费专区| 久久精品人人做人人爽97| 91最新地址在线播放| 亚洲午夜电影在线观看| 精品国产青草久久久久福利| 丁香五精品蜜臀久久久久99网站 | 欧美二区三区的天堂| 裸体健美xxxx欧美裸体表演| 国产日韩av一区| 欧美日韩中文字幕精品| 韩国成人福利片在线播放| 亚洲色图欧洲色图| 日韩视频免费直播| 97久久人人超碰| 久久成人羞羞网站| 亚洲日本在线观看| 欧美大白屁股肥臀xxxxxx| 9人人澡人人爽人人精品| 另类成人小视频在线| 一区二区三区四区五区视频在线观看| 日韩精品在线一区二区| 在线观看日韩电影| 国产福利精品一区二区| 天堂久久久久va久久久久| 国产精品毛片高清在线完整版 | 国产精品伦理在线| 555www色欧美视频| 色综合亚洲欧洲| 国产成人av电影在线播放| 婷婷夜色潮精品综合在线| 国产精品色噜噜| 精品国产乱码久久久久久影片| 一本大道久久a久久精二百| 国产一区二区三区免费看| 午夜精品久久久久影视| 自拍偷拍亚洲欧美日韩| 国产婷婷色一区二区三区四区| 欧美精品久久久久久久久老牛影院 | 成人免费毛片片v| 麻豆国产精品777777在线| 亚洲电影第三页| 亚洲精品国产无天堂网2021| 欧美国产精品一区| 久久网站热最新地址| 日韩一区二区三区高清免费看看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美激情一区不卡| 久久综合一区二区| 日韩精品一区二区三区中文精品| 欧美日韩精品欧美日韩精品一| 色婷婷综合在线| 91丝袜国产在线播放| av中文字幕不卡| 97国产一区二区| 色天天综合色天天久久| 91丨九色丨蝌蚪丨老版| yourporn久久国产精品| 成人免费看视频| 不卡影院免费观看| 91亚洲精品乱码久久久久久蜜桃| 99精品国产99久久久久久白柏| 成人国产精品免费观看动漫| 国产成人免费视| 成人美女视频在线看| www.av亚洲| 色综合久久综合中文综合网| 91电影在线观看| 欧美色视频一区| 欧美一区二区三区婷婷月色| 欧美大片一区二区三区| 国产婷婷一区二区| 亚洲少妇最新在线视频| 午夜精品福利在线| 天堂成人免费av电影一区| 精品一区二区在线视频| 东方欧美亚洲色图在线| 日本韩国精品在线| 欧美一区二区三区在线电影| 久久在线观看免费| 国产精品国产精品国产专区不片| 亚洲精品伦理在线| 日韩av一级片| 国产激情偷乱视频一区二区三区| aaa亚洲精品| 欧美色图激情小说| 久久免费午夜影院| 又紧又大又爽精品一区二区| 日韩影院在线观看| 成人精品电影在线观看| 欧美在线免费视屏| 久久久久久久性| 一区二区三区高清不卡| 精品一区二区三区在线视频| eeuss鲁一区二区三区| 欧美二区乱c少妇| 国产精品第五页| 日本欧美一区二区三区乱码| av影院午夜一区| 91麻豆精品国产91久久久久久久久 | 精品999久久久| 亚洲综合一区二区精品导航| 精品在线免费观看| 欧美在线免费视屏| 亚洲国产成人在线| 人人爽香蕉精品| 99国产欧美久久久精品| 精品久久久久香蕉网| 亚洲精品ww久久久久久p站| 紧缚奴在线一区二区三区| 欧美中文字幕一区| 国产精品人妖ts系列视频| 麻豆专区一区二区三区四区五区| 99riav久久精品riav| 久久久久久久久久看片| 日韩中文字幕亚洲一区二区va在线| 福利一区二区在线| 7799精品视频| 一区二区三区在线视频观看| 国产九九视频一区二区三区| 欧美乱妇15p| 一区二区三区四区亚洲| av不卡在线观看| 国产欧美日韩另类一区| 久久99热99| 欧美一区二视频| 丝袜亚洲另类丝袜在线| 色拍拍在线精品视频8848| 中文av字幕一区| 国产露脸91国语对白| 欧美精品一区二区三区在线播放| 香蕉加勒比综合久久| 欧美影视一区在线| 亚洲人成网站影音先锋播放| 成人小视频在线观看| 久久视频一区二区| 精品中文av资源站在线观看| 日韩精品一区二区在线| 久久精品国产亚洲aⅴ| 欧美一区二区三区人| 日韩中文字幕麻豆| 日韩欧美中文字幕一区| 免费在线观看一区| 日韩你懂的在线播放| 久久99久久久欧美国产| 欧美精品一区二区不卡| 国产精品综合视频|