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

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

?? smc-ultra.c

?? Linux Kernel 2.6.9 for OMAP1710
?? 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 General Public License, incorporated herein by reference.	The author may be reached as becker@scyld.com, or C/O	Scyld Computing Corporation	410 Severn Ave., Suite 210	Annapolis MD 21403	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_probe_isapnp()		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.	Alexander Sotirov : 1/20/01 Added support for ISAPnP cards	Note about the ISA PnP support:	This driver can not autoprobe for more than one SMC EtherEZ PnP card.	You have to configure the second card manually through the /proc/isapnp	interface and then load the module with an explicit io=0x___ option.*/static const char version[] =	"smc-ultra.c:v2.02 2/3/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/string.h>#include <linux/init.h>#include <linux/isapnp.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <asm/io.h>#include <asm/system.h>#include "8390.h"#define DRV_NAME "smc-ultra"/* 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};static int ultra_probe1(struct net_device *dev, int ioaddr);#ifdef __ISAPNP__static int ultra_probe_isapnp(struct net_device *dev);#endifstatic int ultra_open(struct net_device *dev);static void ultra_reset_8390(struct net_device *dev);static void ultra_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr,						int ring_page);static void ultra_block_input(struct net_device *dev, int count,						  struct sk_buff *skb, int ring_offset);static void ultra_block_output(struct net_device *dev, int count,							const unsigned char *buf, const int start_page);static void ultra_pio_get_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr,						int ring_page);static void ultra_pio_input(struct net_device *dev, int count,						  struct sk_buff *skb, int ring_offset);static void ultra_pio_output(struct net_device *dev, int count,							 const unsigned char *buf, const int start_page);static int ultra_close_card(struct net_device *dev);#ifdef __ISAPNP__static struct isapnp_device_id ultra_device_ids[] __initdata = {        {       ISAPNP_VENDOR('S','M','C'), ISAPNP_FUNCTION(0x8416),                ISAPNP_VENDOR('S','M','C'), ISAPNP_FUNCTION(0x8416),                (long) "SMC EtherEZ (8416)" },        { }	/* terminate list */};MODULE_DEVICE_TABLE(isapnp, ultra_device_ids);#endif#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. */#ifdef CONFIG_NET_POLL_CONTROLLERstatic void ultra_poll(struct net_device *dev){	disable_irq(dev->irq);	ei_interrupt(dev->irq, dev, NULL);	enable_irq(dev->irq);}#endif/*	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.*/static int __init do_ultra_probe(struct net_device *dev){	int i;	int base_addr = dev->base_addr;	int irq = dev->irq;	SET_MODULE_OWNER(dev);#ifdef CONFIG_NET_POLL_CONTROLLER	dev->poll_controller = &ultra_poll;#endif	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;#ifdef __ISAPNP__	/* Look for any installed ISAPnP cards */	if (isapnp_present() && (ultra_probe_isapnp(dev) == 0))		return 0;	printk(KERN_NOTICE "smc-ultra.c: No ISAPnP cards found, trying standard ones...\n");#endif	for (i = 0; ultra_portlist[i]; i++) {		dev->irq = irq;		if (ultra_probe1(dev, ultra_portlist[i]) == 0)			return 0;	}	return -ENODEV;}static void cleanup_card(struct net_device *dev){	/* NB: ultra_close_card() does free_irq */#ifdef __ISAPNP__	struct pnp_dev *idev = (struct pnp_dev *)ei_status.priv;	if (idev)		pnp_device_detach(idev);#endif	release_region(dev->base_addr - ULTRA_NIC_OFFSET, ULTRA_IO_EXTENT);}#ifndef MODULEstruct net_device * __init ultra_probe(int unit){	struct net_device *dev = alloc_ei_netdev();	int err;	if (!dev)		return ERR_PTR(-ENOMEM);	sprintf(dev->name, "eth%d", unit);	netdev_boot_setup_check(dev);	err = do_ultra_probe(dev);	if (err)		goto out;	err = register_netdev(dev);	if (err)		goto out1;	return dev;out1:	cleanup_card(dev);out:	free_netdev(dev);	return ERR_PTR(err);}#endifstatic int __init ultra_probe1(struct net_device *dev, int ioaddr){	int i, retval;	int checksum = 0;	const char *model_name;	unsigned char eeprom_irq = 0;	static unsigned version_printed;	/* 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;	if (!request_region(ioaddr, ULTRA_IO_EXTENT, DRV_NAME))		return -EBUSY;	/* Check the ID nibble. */	if ((idreg & 0xF0) != 0x20 			/* SMC Ultra */		&& (idreg & 0xF0) != 0x40) {		/* SMC EtherEZ */		retval = -ENODEV;		goto out;	}	/* 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) {		retval = -ENODEV;		goto out;	}	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");			retval =  -EAGAIN;			goto out;		}		dev->irq = irq;		eeprom_irq = 1;	}	/* 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;	ei_status.rmem_start = dev->mem_start + TX_PAGES*256;	dev->mem_end = ei_status.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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
xvideos.蜜桃一区二区| 99国产精品视频免费观看| 91精品国产91久久久久久最新毛片 | av电影天堂一区二区在线观看| 中文一区二区在线观看| av一区二区三区| 亚洲第一在线综合网站| 欧美高清激情brazzers| 奇米综合一区二区三区精品视频| 精品日产卡一卡二卡麻豆| 国产在线播放一区三区四| 国产精品久久免费看| 欧美伊人久久大香线蕉综合69 | 亚洲综合免费观看高清完整版 | 韩国成人在线视频| 亚洲天堂2014| 这里只有精品免费| 国产成人免费在线视频| 亚洲一区二区三区视频在线| 欧美一卡二卡三卡| 成人av网站在线观看| 午夜精品在线看| 国产亚洲一区二区三区在线观看| 色猫猫国产区一区二在线视频| 日韩va欧美va亚洲va久久| 国产无人区一区二区三区| 91久久国产综合久久| 黑人巨大精品欧美黑白配亚洲| 国产精品欧美一级免费| 欧美猛男男办公室激情| 岛国一区二区在线观看| 日韩av不卡一区二区| 17c精品麻豆一区二区免费| 777午夜精品视频在线播放| 国产成人精品亚洲午夜麻豆| 亚洲成av人片在www色猫咪| 中文av一区特黄| 欧美久久久久久久久久| av在线不卡网| 精品一区二区日韩| 亚洲高清不卡在线| 国产精品盗摄一区二区三区| 日韩欧美在线1卡| 欧美三级日本三级少妇99| 成人网在线播放| 日韩一级精品视频在线观看| 免费在线观看日韩欧美| 亚洲欧美日韩国产综合在线 | 日本一区二区三区四区在线视频 | 91美女视频网站| 国产精品中文字幕日韩精品| 日韩中文字幕亚洲一区二区va在线| 国产精品水嫩水嫩| 久久综合狠狠综合久久综合88 | 国产欧美日韩激情| 欧美mv和日韩mv的网站| 69堂精品视频| 欧美色男人天堂| 日本久久一区二区三区| 97精品国产露脸对白| 成人免费av网站| 国产传媒日韩欧美成人| 国产一区二区成人久久免费影院| 秋霞午夜av一区二区三区| 亚洲午夜久久久久久久久电影网| 亚洲欧美一区二区三区极速播放| 国产无一区二区| 久久毛片高清国产| 久久久久亚洲蜜桃| 精品99一区二区三区| 精品三级在线看| 欧美第一区第二区| 精品福利一区二区三区免费视频| 91精品国产91久久综合桃花| 欧美电影影音先锋| 538prom精品视频线放| 欧美日本视频在线| 91精品免费观看| 日韩视频永久免费| 精品国产一区二区三区久久久蜜月 | 偷拍自拍另类欧美| 亚洲成a天堂v人片| 日本视频在线一区| 免费xxxx性欧美18vr| 精品中文av资源站在线观看| 国产一区二区三区四区五区美女| 麻豆精品在线看| 国内精品伊人久久久久av一坑| 韩国精品在线观看| 大尺度一区二区| 色天天综合色天天久久| 欧美日本一区二区三区| 日韩欧美你懂的| 国产欧美一区二区三区在线看蜜臀| 国产欧美综合在线观看第十页| 国产精品天美传媒沈樵| 亚洲欧美日本在线| 日韩精品乱码免费| 国产精品综合网| 色综合婷婷久久| 欧美精品久久99| 精品国产一二三| 中文字幕一区免费在线观看| 亚洲一二三区在线观看| 奇米影视一区二区三区| 国产成人一级电影| 欧美性一二三区| 久久综合久久综合久久综合| 中文字幕亚洲电影| 日本中文字幕一区二区有限公司| 国产精品一二三四五| 91久久国产最好的精华液| 日韩午夜在线观看视频| 日本一区二区三区dvd视频在线| 亚洲欧美另类小说| 精品在线免费观看| 色综合中文字幕国产 | 国产精品久久久久久久岛一牛影视| 悠悠色在线精品| 久久精品国产久精国产爱| jlzzjlzz亚洲女人18| 欧美一区二区久久| 亚洲精品视频一区二区| 国产在线精品一区二区夜色| 在线观看国产日韩| 国产亚洲精品aa午夜观看| 亚洲自拍另类综合| 大尺度一区二区| 日韩精品综合一本久道在线视频| 亚洲视频电影在线| 国产精品一区一区| 在线不卡欧美精品一区二区三区| 欧美激情综合五月色丁香小说| 无码av免费一区二区三区试看 | 亚洲日本一区二区三区| 国产精品免费丝袜| 艳妇臀荡乳欲伦亚洲一区| 国产精品一区二区男女羞羞无遮挡| 国产精品久久综合| 中文字幕av一区二区三区| 性欧美大战久久久久久久久| 美女视频黄 久久| 色综合久久久网| 精品国产凹凸成av人导航| 一区二区三区四区激情| 奇米精品一区二区三区在线观看一| 91啪亚洲精品| 精品国产第一区二区三区观看体验| 亚洲美女免费视频| 国产精品白丝jk白祙喷水网站| 日韩欧美国产精品| 曰韩精品一区二区| 春色校园综合激情亚洲| 日韩精品中文字幕一区二区三区| 亚洲1区2区3区4区| 91捆绑美女网站| 国产亚洲精品aa| 久久99久久99| 欧美日韩一二三| 亚洲一区二区av电影| 懂色av中文一区二区三区| 欧美大胆一级视频| 亚洲欧美视频在线观看| 不卡区在线中文字幕| 久久久不卡影院| 狠狠色狠狠色综合| 欧美精品丝袜久久久中文字幕| 一区二区三区小说| 99免费精品视频| 久久久精品免费观看| 国内精品久久久久影院薰衣草| 欧美zozozo| 精品一区二区三区久久久| 欧美三级在线播放| 亚洲一区二区三区四区五区黄| 91香蕉视频在线| 亚洲同性gay激情无套| 国产成人精品影院| 久久这里只有精品6| 韩国成人福利片在线播放| 精品av久久707| 国产一区在线不卡| 久久五月婷婷丁香社区| 老司机精品视频导航| 日韩视频在线你懂得| 毛片不卡一区二区| 精品久久久久香蕉网| 国产98色在线|日韩| 中文字幕一区二| 色综合久久精品| 国产精品久久久久影院色老大| 91成人在线精品| 首页国产欧美日韩丝袜| 91精品国产综合久久久久久漫画 | 中文字幕综合网| 91久久精品一区二区三| 日韩精品电影在线观看| 欧美电影免费观看高清完整版在| 国产尤物一区二区在线| 日韩网站在线看片你懂的|