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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? davicom.c

?? GRUB 0.93的源代碼。有人說(shuō)可以當(dāng)一個(gè)很小的操作系統(tǒng)了
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*      DAVICOM DM9009/DM9102/DM9102A Etherboot Driver	V1.00    This driver was ported from Marty Conner's Tulip Etherboot driver.     Thanks Marty Connor (mdc@thinguin.org)     You can get Tulip driver source file from this URL:    "http://etherboot.sourceforge..net/#Distribution"        This davicom etherboot driver supports DM9009/DM9102/DM9102A/    DM9102A+DM9801/DM9102A+DM9802 NICs.    This software may be used and distributed according to the terms    of the GNU Public License, incorporated herein by reference.*//*********************************************************************//* Revision History                                                  *//*********************************************************************//*  19 OCT 2000  Sten     1.00			Different half and full duplex mode			Do the different programming for DM9801/DM9802  12 OCT 2000  Sten     0.90			This driver was ported from tulip driver and it 			has the following difference.			Changed symbol tulip/TULIP to davicom/DAVICOM			Deleted some code that did not use in this driver.			Used chain-strcture to replace ring structure			for both TX/RX descriptor.			Allocated two tx descriptor.			According current media mode to set operating 			register(CR6)*//*********************************************************************//* Declarations                                                      *//*********************************************************************/#include "etherboot.h"#include "nic.h"#include "pci.h"#include "cards.h"#undef DAVICOM_DEBUG#undef DAVICOM_DEBUG_WHERE#define TX_TIME_OUT       2*TICKS_PER_SECtypedef unsigned char  u8;typedef   signed char  s8;typedef unsigned short u16;typedef   signed short s16;typedef unsigned int   u32;typedef   signed int   s32;/* Register offsets for davicom device */enum davicom_offsets {   CSR0=0,     CSR1=0x08,  CSR2=0x10,  CSR3=0x18,  CSR4=0x20,  CSR5=0x28,   CSR6=0x30,  CSR7=0x38,  CSR8=0x40,  CSR9=0x48, CSR10=0x50, CSR11=0x58,  CSR12=0x60, CSR13=0x68, CSR14=0x70, CSR15=0x78, CSR16=0x80, CSR20=0xA0};/* EEPROM Address width definitions */#define EEPROM_ADDRLEN 6#define EEPROM_SIZE    32              /* 1 << EEPROM_ADDRLEN *//* Used to be 128, but we only need to read enough to get the MAC   address at bytes 20..25 *//* Data Read from the EEPROM */static unsigned char ee_data[EEPROM_SIZE];/* The EEPROM commands include the alway-set leading bit. */#define EE_WRITE_CMD    (5 << addr_len)#define EE_READ_CMD     (6 << addr_len)#define EE_ERASE_CMD    (7 << addr_len)/* EEPROM_Ctrl bits. */#define EE_SHIFT_CLK    0x02    /* EEPROM shift clock. */#define EE_CS           0x01    /* EEPROM chip select. */#define EE_DATA_WRITE   0x04    /* EEPROM chip data in. */#define EE_WRITE_0      0x01#define EE_WRITE_1      0x05#define EE_DATA_READ    0x08    /* EEPROM chip data out. */#define EE_ENB          (0x4800 | EE_CS)/* Sten 10/11 for phyxcer */#define PHY_DATA_0	0x0#define PHY_DATA_1	0x20000#define MDCLKH		0x10000/* Delay between EEPROM clock transitions.  Even at 33Mhz current PCI   implementations don't overrun the EEPROM clock.  We add a bus   turn-around to insure that this remains true.  */#define eeprom_delay()  inl(ee_addr)/* helpful macro if on a big_endian machine for changing byte order.   not strictly needed on Intel */#define le16_to_cpu(val) (val)/* transmit and receive descriptor format */struct txdesc {  volatile unsigned long   status;         /* owner, status */  unsigned long   buf1sz:11,      /* size of buffer 1 */    buf2sz:11,                    /* size of buffer 2 */    control:10;                   /* control bits */  const unsigned char *buf1addr;  /* buffer 1 address */  const unsigned char *buf2addr;  /* buffer 2 address */};struct rxdesc {  volatile unsigned long   status;         /* owner, status */  unsigned long   buf1sz:11,      /* size of buffer 1 */    buf2sz:11,                    /* size of buffer 2 */    control:10;                   /* control bits */  unsigned char   *buf1addr;      /* buffer 1 address */  unsigned char   *buf2addr;      /* buffer 2 address */};/* Size of transmit and receive buffers */#define BUFLEN 1536/*********************************************************************//* Global Storage                                                    *//*********************************************************************//* PCI Bus parameters */static unsigned short vendor, dev_id;static unsigned long ioaddr;/* Note: transmit and receive buffers must be longword aligned and   longword divisable *//* transmit descriptor and buffer */#define NTXD 2static struct txdesc txd[NTXD] __attribute__ ((aligned(4)));#ifdef	USE_LOWMEM_BUFFER#define txb ((char *)0x10000 - BUFLEN)#elsestatic unsigned char txb[BUFLEN] __attribute__ ((aligned(4)));#endif/* receive descriptor(s) and buffer(s) */#define NRXD 4static struct rxdesc rxd[NRXD] __attribute__ ((aligned(4)));#ifdef	USE_LOWMEM_BUFFER#define rxb ((char *)0x10000 - NRXD * BUFLEN - BUFLEN)#elsestatic unsigned char rxb[NRXD * BUFLEN] __attribute__ ((aligned(4)));#endifstatic int rxd_tail;static int TxPtr;/*********************************************************************//* Function Prototypes                                               *//*********************************************************************/static void whereami(const char *str);static int read_eeprom(unsigned long ioaddr, int location, int addr_len);struct nic *davicom_probe(struct nic *nic, unsigned short *io_addrs,			struct pci_device *pci);static void davicom_init_chain(struct nic *nic);	/* Sten 10/9 */static void davicom_reset(struct nic *nic);static void davicom_transmit(struct nic *nic, const char *d, unsigned int t,			   unsigned int s, const char *p);static int davicom_poll(struct nic *nic);static void davicom_disable(struct nic *nic);static void whereami (const char *str);#ifdef	DAVICOM_DEBUGstatic void davicom_more(void);#endif /* DAVICOM_DEBUG */static void davicom_wait(unsigned int nticks);static int phy_read(int);static void phy_write(int, u16);static void phy_write_1bit(u32, u32);static int phy_read_1bit(u32);static void davicom_media_chk(struct nic *);/*********************************************************************//* Utility Routines                                                  *//*********************************************************************/static inline void whereami (const char *str){#ifdef	DAVICOM_DEBUG_WHERE  printf("%s\n", str);  /* sleep(2); */#endif}#ifdef	DAVICOM_DEBUGstatic void davicom_more(){  printf("\n\n-- more --");  while (!iskey())    /* wait */;  getchar();  printf("\n\n");}#endif /* DAVICOM_DEBUG */static void davicom_wait(unsigned int nticks){  unsigned int to = currticks() + nticks;  while (currticks() < to)    /* wait */ ;}/*********************************************************************//* For DAVICOM phyxcer register by MII interface		     *//*********************************************************************//*  Read a word data from phy register*/static int phy_read(int location){ int i, phy_addr=1; u16 phy_data; u32 io_dcr9; whereami("phy_read\n"); io_dcr9 = ioaddr + CSR9; /* Send 33 synchronization clock to Phy controller */ for (i=0; i<34; i++)     phy_write_1bit(io_dcr9, PHY_DATA_1); /* Send start command(01) to Phy */ phy_write_1bit(io_dcr9, PHY_DATA_0); phy_write_1bit(io_dcr9, PHY_DATA_1); /* Send read command(10) to Phy */ phy_write_1bit(io_dcr9, PHY_DATA_1); phy_write_1bit(io_dcr9, PHY_DATA_0); /* Send Phy addres */ for (i=0x10; i>0; i=i>>1)     phy_write_1bit(io_dcr9, phy_addr&i ? PHY_DATA_1: PHY_DATA_0);    /* Send register addres */ for (i=0x10; i>0; i=i>>1)     phy_write_1bit(io_dcr9, location&i ? PHY_DATA_1: PHY_DATA_0); /* Skip transition state */ phy_read_1bit(io_dcr9); /* read 16bit data */ for (phy_data=0, i=0; i<16; i++) {   phy_data<<=1;   phy_data|=phy_read_1bit(io_dcr9); } return phy_data;}/*  Write a word to Phy register*/static void phy_write(int location, u16 phy_data){ u16 i, phy_addr=1; u32 io_dcr9;  whereami("phy_write\n"); io_dcr9 = ioaddr + CSR9; /* Send 33 synchronization clock to Phy controller */ for (i=0; i<34; i++)   phy_write_1bit(io_dcr9, PHY_DATA_1); /* Send start command(01) to Phy */ phy_write_1bit(io_dcr9, PHY_DATA_0); phy_write_1bit(io_dcr9, PHY_DATA_1); /* Send write command(01) to Phy */ phy_write_1bit(io_dcr9, PHY_DATA_0); phy_write_1bit(io_dcr9, PHY_DATA_1); /* Send Phy addres */ for (i=0x10; i>0; i=i>>1)   phy_write_1bit(io_dcr9, phy_addr&i ? PHY_DATA_1: PHY_DATA_0); /* Send register addres */ for (i=0x10; i>0; i=i>>1)   phy_write_1bit(io_dcr9, location&i ? PHY_DATA_1: PHY_DATA_0); /* written trasnition */ phy_write_1bit(io_dcr9, PHY_DATA_1); phy_write_1bit(io_dcr9, PHY_DATA_0); /* Write a word data to PHY controller */ for (i=0x8000; i>0; i>>=1)   phy_write_1bit(io_dcr9, phy_data&i ? PHY_DATA_1: PHY_DATA_0);}/*  Write one bit data to Phy Controller*/static void phy_write_1bit(u32 ee_addr, u32 phy_data){ whereami("phy_write_1bit\n"); outl(phy_data, ee_addr);                        /* MII Clock Low */ eeprom_delay(); outl(phy_data|MDCLKH, ee_addr);                 /* MII Clock High */ eeprom_delay(); outl(phy_data, ee_addr);                        /* MII Clock Low */ eeprom_delay();}/*  Read one bit phy data from PHY controller*/static int phy_read_1bit(u32 ee_addr){ int phy_data; whereami("phy_read_1bit\n"); outl(0x50000, ee_addr); eeprom_delay(); phy_data=(inl(ee_addr)>>19) & 0x1; outl(0x40000, ee_addr); eeprom_delay(); return phy_data;}/*  DM9801/DM9802 present check and program */static void HPNA_process(void){ if ( (phy_read(3) & 0xfff0) == 0xb900 ) {   if ( phy_read(31) == 0x4404 ) {     /* DM9801 present */     if (phy_read(3) == 0xb901)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av一区二区三区在线观看| 国产精品99久久久| 日韩美女视频19| 国产欧美日韩亚州综合| 精品对白一区国产伦| 日韩欧美国产小视频| 91精品国产高清一区二区三区 | 91成人免费网站| 99精品国产热久久91蜜凸| 成人手机电影网| www.日韩av| 99re在线精品| 99久久er热在这里只有精品15 | 欧美一区在线视频| 欧美日韩不卡一区| 日韩视频一区二区| 精品国产一区二区三区久久久蜜月 | 欧美亚洲一区三区| 欧美日韩国产一区| 日韩视频一区二区三区| 精品少妇一区二区三区日产乱码| 亚洲精品在线一区二区| 久久久欧美精品sm网站| 亚洲国产精品t66y| 亚洲精品一卡二卡| 偷拍亚洲欧洲综合| 韩国av一区二区三区在线观看| 韩国女主播一区| av网站免费线看精品| 日本精品裸体写真集在线观看| 欧美日韩国产综合一区二区三区| 日韩欧美aaaaaa| 国产精品久久久久影视| 亚洲最色的网站| 久久精品国产亚洲aⅴ| 国产激情一区二区三区| 91麻豆国产香蕉久久精品| 欧美日韩精品三区| 亚洲一区在线观看免费观看电影高清| 青草av.久久免费一区| 国内精品国产成人| 99久久精品国产麻豆演员表| 欧美三级电影在线观看| xnxx国产精品| 亚洲欧美日韩电影| 日本不卡一区二区三区| 国产91对白在线观看九色| 欧美午夜一区二区三区免费大片| 日韩欧美你懂的| 综合激情成人伊人| 奇米影视在线99精品| 99国产精品国产精品毛片| 666欧美在线视频| 国产精品你懂的| 午夜精品久久一牛影视| 风流少妇一区二区| 7777精品伊人久久久大香线蕉的| 国产视频一区二区在线| 亚洲成人免费视频| 成人永久免费视频| 日韩丝袜美女视频| 亚洲精品免费在线| 国产一区二区不卡在线| 欧美偷拍一区二区| 国产精品视频yy9299一区| 日日夜夜精品视频天天综合网| 国产69精品一区二区亚洲孕妇| 欧美精品高清视频| 亚洲欧美综合网| 精品无人码麻豆乱码1区2区 | 蜜臀av一区二区在线观看| 99九九99九九九视频精品| 日韩视频免费观看高清完整版在线观看 | 成人午夜激情视频| 精品国产乱码久久| 精品久久人人做人人爰| 亚洲一区二区三区四区在线免费观看 | 欧美日韩高清不卡| 国产精品视频你懂的| 精品中文字幕一区二区| 久久精品国内一区二区三区| 久久久久久久久蜜桃| 国产精品18久久久久| 国产福利精品导航| 日韩丝袜情趣美女图片| 一级日本不卡的影视| 国产成人午夜高潮毛片| 91精品国产一区二区人妖| 日韩亚洲欧美在线| 久久综合九色综合97_久久久| 一区二区免费在线播放| 日韩av中文字幕一区二区| 中文字幕中文乱码欧美一区二区| 日韩一区二区三| 欧美日韩精品专区| 6080午夜不卡| 亚洲一区二区视频| 欧美国产精品久久| 欧美久久久久久久久| 国产调教视频一区| 日本三级亚洲精品| 日本黄色一区二区| 中文字幕亚洲一区二区av在线| 国产一区视频在线看| 日韩欧美一二三四区| 亚洲第一精品在线| 色综合一区二区三区| 国产日韩欧美不卡| 精品亚洲国产成人av制服丝袜 | 日本久久电影网| 最新成人av在线| 亚洲一区二区三区四区不卡| 欧美午夜片在线看| 亚洲欧美激情插 | 4438成人网| 亚洲一区二区三区中文字幕| 色系网站成人免费| 亚洲欧美激情插 | 精彩视频一区二区| www.爱久久.com| 日韩一区二区免费视频| 日韩专区欧美专区| 成人一级黄色片| 亚洲免费观看高清完整版在线| 欧美精品一二三区| 色偷偷久久一区二区三区| 日本一区二区三区视频视频| 亚洲一区二区三区小说| 精品国内二区三区| 国产成人免费在线视频| 一区二区三区高清| 蜜臀av一区二区在线观看 | 欧美中文字幕不卡| 99久久精品久久久久久清纯| 国产成人无遮挡在线视频| 欧美日韩不卡一区二区| 亚洲大片在线观看| 欧美一区二区黄色| 伦理电影国产精品| 欧美xxxxx牲另类人与| 久久超碰97人人做人人爱| 在线成人免费视频| 国产丶欧美丶日本不卡视频| 欧美极品另类videosde| 99久久久久久| 亚洲一线二线三线视频| 欧美精品在欧美一区二区少妇| 麻豆freexxxx性91精品| 欧美一激情一区二区三区| 成人午夜视频在线观看| 国产精品18久久久久久久网站| 91精品国产综合久久久久| 蜜桃久久精品一区二区| 久久精品在这里| 97成人超碰视| 午夜欧美大尺度福利影院在线看| 久久久午夜电影| 在线一区二区三区四区五区 | 国产女同互慰高潮91漫画| 成人手机电影网| 日韩高清一区在线| 久久只精品国产| 91丝袜美腿高跟国产极品老师| 亚洲成人777| 久久久久一区二区三区四区| 91一区一区三区| 亚洲国产一区二区a毛片| 国产亚洲女人久久久久毛片| 色综合久久天天| 麻豆精品一区二区av白丝在线| 国产欧美日韩亚州综合| 欧美日本国产一区| 另类小说欧美激情| 午夜精品福利一区二区三区蜜桃| 国产午夜精品一区二区三区四区| 亚洲超碰97人人做人人爱| 亚洲国产精品一区二区久久恐怖片 | 亚洲午夜电影在线| 日韩黄色免费电影| 国产999精品久久久久久绿帽| 91啪亚洲精品| 欧美美女bb生活片| 欧美极品美女视频| 丝袜亚洲另类欧美综合| 国产超碰在线一区| 欧美狂野另类xxxxoooo| 国产日产欧美精品一区二区三区| 美女视频黄久久| 国产在线播放一区三区四| 在线免费观看成人短视频| 欧美电影精品一区二区| 日韩不卡一区二区三区 | 69久久夜色精品国产69蝌蚪网| 欧美视频在线播放| 中文字幕高清不卡| 奇米综合一区二区三区精品视频| 99国内精品久久| 五月天欧美精品| 亚洲欧美影音先锋| 久久久久亚洲综合|