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

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

?? davicom.c

?? GRUB 0.93的源代碼。有人說可以當一個很小的操作系統了
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*      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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕二三区不卡| 国产精品青草久久| av电影天堂一区二区在线观看| 亚洲一区在线观看网站| 国产欧美精品一区| 精品少妇一区二区三区| 欧美日韩一区成人| av不卡免费在线观看| 九色|91porny| 日韩精品亚洲一区二区三区免费| 1000精品久久久久久久久| 久久综合一区二区| 日韩精品一区二区三区中文不卡 | 狠狠色丁香婷综合久久| 亚洲一区二区欧美激情| ...xxx性欧美| 国产精品另类一区| 国产女人18毛片水真多成人如厕| 欧美本精品男人aⅴ天堂| 欧美蜜桃一区二区三区| 在线一区二区三区四区| 91免费版pro下载短视频| 成人黄色片在线观看| 国产大陆亚洲精品国产| 久久99精品一区二区三区三区| 天天免费综合色| 午夜欧美视频在线观看| 亚洲综合在线视频| 一片黄亚洲嫩模| 亚洲综合久久久久| 亚洲福中文字幕伊人影院| 一区二区三区中文字幕在线观看| 综合中文字幕亚洲| 亚洲日本一区二区| 自拍偷在线精品自拍偷无码专区| 中文字幕中文字幕在线一区 | 久久久国产一区二区三区四区小说| 制服丝袜av成人在线看| 欧美疯狂性受xxxxx喷水图片| 欧美日韩色综合| 欧美精品久久一区| 精品乱码亚洲一区二区不卡| 精品国产1区2区3区| 国产三级久久久| 国产精品私人影院| 亚洲人精品午夜| 亚洲一区二区四区蜜桃| 日本午夜精品一区二区三区电影| 蜜臀久久久久久久| 国产最新精品免费| 成人国产精品免费| 一本色道久久综合亚洲精品按摩 | 欧美日韩第一区日日骚| 欧美一区二区三区爱爱| 2024国产精品视频| 国产精品嫩草影院av蜜臀| 亚洲精品欧美专区| 午夜私人影院久久久久| 久久成人久久爱| 成人深夜视频在线观看| 在线中文字幕不卡| 91麻豆精品国产91久久久久久久久| 欧美大片在线观看| 国产精品每日更新| 亚洲va欧美va天堂v国产综合| 免费一区二区视频| 成人黄色小视频| 欧美日韩电影在线| 国产女主播一区| 一区二区高清免费观看影视大全| 日本色综合中文字幕| 成人在线综合网站| 欧美日本免费一区二区三区| 2020国产精品| 亚洲在线观看免费| 国产精品主播直播| 欧美亚洲一区三区| 国产亚洲一区二区三区| 亚洲成人7777| 国产不卡一区视频| 欧美大白屁股肥臀xxxxxx| 国产精品麻豆久久久| 天天色综合天天| 97se狠狠狠综合亚洲狠狠| 欧美一二三四区在线| 日韩伦理免费电影| 国产一区视频导航| 欧美性大战xxxxx久久久| 国产亚洲一区二区三区| 视频一区在线播放| 成人avav影音| 2022国产精品视频| 视频一区二区三区中文字幕| 成人福利视频在线| 日韩免费高清视频| 亚洲午夜一区二区| 91在线精品一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 亚洲精品国产成人久久av盗摄| 国产精品资源站在线| 91精品综合久久久久久| 亚洲精品高清在线| 成人免费不卡视频| 久久久精品国产免大香伊| 日本视频一区二区三区| 在线观看日韩电影| 成人免费一区二区三区视频| 久久99精品一区二区三区| 欧美美女黄视频| 夜夜操天天操亚洲| 99精品视频在线观看| 国产日韩欧美麻豆| 国模冰冰炮一区二区| 日韩一区和二区| 石原莉奈在线亚洲二区| 欧洲另类一二三四区| 亚洲欧美电影一区二区| 成人美女在线视频| 国产日韩欧美精品电影三级在线| 激情久久五月天| 日韩免费高清av| 麻豆成人91精品二区三区| 51精品秘密在线观看| 亚洲成人综合视频| 欧美日韩精品电影| 视频一区二区三区入口| 欧美日韩精品福利| 日韩综合小视频| 777久久久精品| 日韩高清不卡一区二区三区| 91精品免费在线观看| 秋霞午夜鲁丝一区二区老狼| 欧美一区二区视频在线观看| 蜜臀久久99精品久久久画质超高清| 欧美熟乱第一页| 亚洲成国产人片在线观看| 欧美日韩黄色一区二区| 图片区小说区区亚洲影院| 欧美精品日韩精品| 另类中文字幕网| 国产视频一区在线观看| 国产.欧美.日韩| 国产精品国产自产拍在线| 不卡的av网站| 一区二区在线观看免费| 欧美日韩在线精品一区二区三区激情| 亚洲图片一区二区| 亚洲欧洲99久久| 色综合色综合色综合色综合色综合| 亚洲精品久久久蜜桃| 4438x亚洲最大成人网| 精品一区二区影视| 国产精品久久久久影院| 91豆麻精品91久久久久久| 亚欧色一区w666天堂| 精品免费日韩av| 高清国产午夜精品久久久久久| 亚洲六月丁香色婷婷综合久久 | 亚洲高清免费在线| 欧美精品v日韩精品v韩国精品v| 日本人妖一区二区| 久久人人超碰精品| 91麻豆精品在线观看| 青青草国产精品97视觉盛宴| 久久久久久电影| 欧美亚洲动漫另类| 激情六月婷婷久久| 一区二区三区四区不卡在线 | 成人精品小蝌蚪| 亚洲va韩国va欧美va精品 | 亚洲丝袜精品丝袜在线| 欧美日韩国产片| 国产美女在线观看一区| 亚洲欧美成aⅴ人在线观看| 欧美一区二区三区视频免费播放| 国产成人在线色| 午夜视频一区二区三区| 国产免费久久精品| 欧美日本免费一区二区三区| 国产乱码精品一区二区三区忘忧草| 亚洲日本va午夜在线影院| 欧美电影免费观看完整版| 91啪亚洲精品| 久久不见久久见中文字幕免费| 亚洲天堂精品视频| 欧美成人精品1314www| 一本到三区不卡视频| 国产一区亚洲一区| 天涯成人国产亚洲精品一区av| 中文字幕国产一区二区| 日韩视频国产视频| 91久久国产最好的精华液| 国产一区二区三区观看| 午夜精品久久久久久久久久久| 中文字幕二三区不卡| 欧美电影免费观看高清完整版| 91美女在线视频| 成人污视频在线观看| 精品一区二区免费看| 手机精品视频在线观看|