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

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

?? smc-ultra.c

?? 基于組件方式開發操作系統的OSKIT源代碼
?? 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 <linux/init.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[] __initdata ={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};#else__initfunc(int 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;}#endif__initfunc(int 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 (load_8390_module("smc-ultra.c"))		return -ENOSYS;	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一区二区三区免费野_久草精品视频
午夜欧美视频在线观看| 成人动漫av在线| 色噜噜狠狠一区二区三区果冻| 成人黄色在线看| 欧美日韩国产另类一区| 久久―日本道色综合久久| 国产精品成人在线观看| 日本午夜一本久久久综合| 国产成都精品91一区二区三| 欧美羞羞免费网站| 国产精品免费久久| 久久91精品久久久久久秒播| 91蜜桃在线免费视频| 久久精品一区四区| 日韩激情中文字幕| 欧洲一区二区三区在线| 日本一区二区免费在线观看视频| 日本欧美一区二区在线观看| 91九色最新地址| 国产精品久99| 国产不卡免费视频| 久久久久久久综合| 精品一区二区三区在线视频| 欧美女孩性生活视频| 亚洲午夜久久久久久久久电影院| 成人97人人超碰人人99| 欧美激情一区二区三区不卡| 国产麻豆精品theporn| 欧美一二三四区在线| 亚洲国产精品久久久久婷婷884| 91麻豆自制传媒国产之光| 国产精品卡一卡二卡三| 国产在线观看免费一区| wwww国产精品欧美| 国产在线不卡一区| 中文字幕的久久| 成人免费视频一区二区| 国产欧美精品区一区二区三区 | 国产日韩av一区| 久久99精品久久久久久国产越南 | 欧美在线观看你懂的| 国精产品一区一区三区mba桃花 | 日韩欧美专区在线| 蜜桃视频在线观看一区| 欧美电影免费观看完整版| 久久精品国产精品亚洲红杏| 精品精品欲导航| 国内久久婷婷综合| 欧美激情中文字幕| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 国产69精品一区二区亚洲孕妇| 久久综合色8888| 成人晚上爱看视频| 亚洲激情校园春色| 91精品综合久久久久久| 久久不见久久见免费视频1| www欧美成人18+| 99精品热视频| 三级影片在线观看欧美日韩一区二区| 在线不卡中文字幕播放| 狠狠色综合播放一区二区| 国产色一区二区| 色婷婷国产精品久久包臀| 男人的天堂亚洲一区| 久久久久9999亚洲精品| 一本久道久久综合中文字幕| 热久久国产精品| 国产精品理论片| 7777精品久久久大香线蕉| 国产精品资源站在线| 一区二区三区精品在线观看| 欧美丰满高潮xxxx喷水动漫| 国产精品资源网| 亚洲va天堂va国产va久| 久久午夜电影网| 日本高清不卡aⅴ免费网站| 色婷婷综合久久久久中文| 国产人伦精品一区二区| 91久久精品国产91性色tv| 精品一区二区久久久| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩另类国产亚洲欧美一级| 国产一区二区三区精品欧美日韩一区二区三区 | 美女精品自拍一二三四| 久久综合色综合88| 国产亚洲精品超碰| 蜜臀av性久久久久蜜臀aⅴ| 韩国av一区二区| 久久久综合精品| 欧美综合一区二区三区| 色国产综合视频| 成人av网站在线| 日韩欧美国产系列| 美国一区二区三区在线播放| 亚洲欧美乱综合| 国产亚洲自拍一区| 日韩欧美精品在线视频| 欧美日韩在线三级| 色综合久久久久| eeuss鲁片一区二区三区| 精品亚洲免费视频| 蜜臀久久99精品久久久画质超高清| 最新高清无码专区| 国产精品―色哟哟| 久久综合色8888| 日韩欧美在线观看一区二区三区| 99riav一区二区三区| 丁香婷婷综合五月| 高清视频一区二区| 国产亚洲精品aa| 日韩三级在线免费观看| 欧美在线观看禁18| 欧美日韩一区二区在线观看 | 91麻豆免费视频| 九九**精品视频免费播放| 日韩电影在线免费观看| 亚洲美女区一区| 亚洲欧洲性图库| 欧美r级电影在线观看| 欧美美女bb生活片| 制服丝袜中文字幕一区| 在线中文字幕一区二区| 在线免费观看成人短视频| 高清shemale亚洲人妖| 波多野结衣精品在线| 国产激情偷乱视频一区二区三区 | 精品视频在线免费| 欧美日韩久久久| 欧美三区在线视频| 欧美日韩一区二区三区四区| 在线成人高清不卡| 88在线观看91蜜桃国自产| 日韩免费视频一区| 日韩一级黄色大片| 色狠狠色噜噜噜综合网| 日本成人在线不卡视频| 日韩国产成人精品| 成人黄页毛片网站| 久久激情五月激情| 亚洲一级不卡视频| 亚洲一区二区欧美日韩| 国产日本亚洲高清| 久久日韩粉嫩一区二区三区| 69av一区二区三区| 成人毛片在线观看| 色视频成人在线观看免| 久久99国产精品成人| 欧美zozozo| 欧美极品少妇xxxxⅹ高跟鞋| 国产拍揄自揄精品视频麻豆| 亚洲女人的天堂| 免费久久精品视频| 国产99一区视频免费| 欧洲另类一二三四区| 欧美一区二区国产| 中文字幕亚洲精品在线观看 | 亚洲国产综合在线| 日韩精品午夜视频| 波多野结衣亚洲| 欧美日韩性生活| 欧美国产成人精品| 国产精品成人在线观看| 日日摸夜夜添夜夜添亚洲女人| 国产成人免费网站| 在线观看欧美黄色| 中文字幕国产一区| 日韩高清在线一区| 91色porny蝌蚪| 久久午夜色播影院免费高清| 最新不卡av在线| 国产一区二区久久| 欧美中文字幕一区二区三区亚洲| 亚洲精品在线观看网站| 亚洲人成网站在线| 天天综合天天综合色| 国产69精品久久99不卡| 欧美日韩久久一区| 成人免费在线视频观看| 美腿丝袜亚洲综合| 成人午夜激情在线| 欧美在线free| 国产欧美日产一区| 国产激情偷乱视频一区二区三区| 成人免费毛片a| 久久久久国产免费免费| 日韩精品国产欧美| 一本久久综合亚洲鲁鲁五月天| 中文久久乱码一区二区| 亚洲美女屁股眼交| 国产mv日韩mv欧美| 久久综合色天天久久综合图片| 亚洲一区二区三区爽爽爽爽爽| 99天天综合性| 国产精品欧美一级免费| 亚洲国产视频一区| 国产a区久久久| 久久久99免费| 激情亚洲综合在线| 91精品国产入口在线| 日韩av在线播放中文字幕|