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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dm9000.c

?? linux下的DM9000的驅(qū)動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)****************************************************                               GuangZhou ZHIYUAN Electronics Co.,LTD.**                                     graduate school**                                 http://www.zyinside.com****--------------File Info-------------------------------------------------------------------------------** File name:           dm9000.c** Last modified Date:  2005-05-12** Last Version:        1.0** Descriptions:        DM9000E driver**------------------------------------------------------------------------------------------------------** Created by:          Chenmingji** Created date:        2005-05-12** Version:             1.0** Descriptions:        The original version****------------------------------------------------------------------------------------------------------** Modified by:		Yehaoben** Modified date:	2005-12-20** Version:** Descriptions:	DM9000E driver**********************************************************************************************************/#define IN_DM9000#include "config.h"#include "dm9000.h"#define DW8		(0x0)#define DW16		(0x1)#define DW32		(0x2)#define WAIT		(0x1<<2)#define UBLB		(0x1<<3)#define B7_BWCON	(DW16|WAIT|UBLB) #define B6_BWCON	(DW32|UBLB)  #define B5_BWCON	(DW16|WAIT|UBLB)  #define B4_BWCON	(DW16|WAIT|UBLB)  #define B3_BWCON	(DW16|WAIT)  #define B2_BWCON	(DW16|WAIT|UBLB)  #define B1_BWCON	(DW16|WAIT|UBLB)  #define B3_TACS		(0X3)//0:0CLOCK 1:1CLOCK 2:2CLOCK 3:4CLOCK#define B3_TCOS		(0X3)//0:0CLOCK 1:1CLOCK 2:2CLOCK 3:4CLOCK#define B3_TACC		(0X7)//0:1CLOCK 1:2CLOCK 2:3CLOCK 3:4CLOCK 4:6CLOCK 5:8CLOCK 6:10CLOCK 7:14CLOCK#define B3_TCOH		(0X3)//0:0CLOCK 1:1CLOCK 2:2CLOCK 3:4CLOCK#define B3_TCAH		(0X3)//0:0CLOCK 1:1CLOCK 2:2CLOCK 3:4CLOCK#define DM9000_REG00	0x00#define DM9000_REG05	0x0c		/*DISCARD LONG\CRC_ERR\mutilcast\Promiscuous,Pass Runt,RX not enable *///0x30	/* SKIP_CRC/SKIP_LONG */#define DM9000_REG08	0x37#define DM9000_REG09	0x38#define DM9000_REG0A	0xff #define DM9000_REGFF	0x83	/* IMR return auto;TX lunch;RX lunch*//********************************************************************************************************              function announce********************************************************************************************************/static int net_init(struct net_device *dev);static int net_open(struct net_device *dev);static int net_release(struct net_device *dev); static int net_config(struct net_device *dev, struct ifmap *map);static int net_tx(struct sk_buff *skb, struct net_device *dev);static void net_irq_handle(int irq, void *dev_id, struct pt_regs *regs);static int net_set_mac_address(struct net_device *dev, void *addr);int  net_init_module(void);void net_cleanup(void);static void net_tasklet(unsigned long);/********************************************************************************************************              define announce********************************************************************************************************/static struct net_device *DM9000Dev;module_init(net_init_module);module_exit(net_cleanup);DECLARE_TASKLET(ZLG_net_tasklet, net_tasklet, (unsigned long)(&DM9000Dev));MODULE_LICENSE("Proprietary");MODULE_DESCRIPTION("GUANGZHOU ZHIYUAN ELECTRONICS Co.,LTD.\ngraduate school\nhttp://www.zyinside.com");MODULE_SUPPORTED_DEVICE("Linux 2.4.18 MagicARM2410 DM9000");MODULE_AUTHOR("Yehaoben");/***********************************************************************************************************                  "全局和靜態(tài)變量在這里定義"         **        global variables and static variables define here********************************************************************************************************/static unsigned int usage;static u32 PinSel0Save;static board_info_t NetDriverInfo[1];/********************************************************************************************************/static struct net_device net_net ={    init:           net_init,};/*********************************************************************************************************** Function name:           ior**** Descriptions:            read a reg form dm9000 **** input parameters:        board_info_t *db    ;dm9000 status struct**                          reg                 ;reg address of dm9000** Returned value:          uint8               ;reg value **         ** Used global variables:   None** Calling modules:         None**** Created by:              Yehaoben** Created Date:            2004/02/02**-------------------------------------------------------------------------------------------------------** Modified by:** Modified date:**------------------------------------------------------------------------------------------------------********************************************************************************************************/static uint8 ior(board_info_t *db, uint8 reg){       unsigned int i;    unsigned int rt;    outb(reg, db->ioaddr);    for (i = 0; i < BUS_DELAY; i++)    {    }    rt = inb(db->io_data);    for (i = 0; i < BUS_DELAY; i++)    {    }        return rt;}/*********************************************************************************************************** Function name:           iow**** Descriptions:            write a value to a dm9000 reg  **** input parameters:        board_info_t *db    ;dm9000 status struct**                          reg                 ;reg address of dm9000**                          value               ;reg value ** Returned value:          None **         ** Used global variables:   None** Calling modules:         None**** Created by:              Yehaoben** Created Date:            2004/02/02**-------------------------------------------------------------------------------------------------------** Modified by:** Modified date:**------------------------------------------------------------------------------------------------------********************************************************************************************************/        static void iow(board_info_t *db, uint8 reg, uint8 value){    unsigned int i;        outb(reg, db->ioaddr);    for(i = 0; i<BUS_DELAY; i++)    {    }        outb(value, db->io_data);    for(i = 0; i<BUS_DELAY; i++)    {    }}/*********************************************************************************************************** Function name:           phy_write**** Descriptions:            write a value to PHY device reg   **** input parameters:        board_info_t *db    ;dm9000 status struct**                          reg                 ;reg address of PHY device**                          value               ;reg value  ** Returned value:          None **         ** Used global variables:   None** Calling modules:         None**** Created by:              Yehaoben** Created Date:            2004/02/02**-------------------------------------------------------------------------------------------------------** Modified by:** Modified date:**------------------------------------------------------------------------------------------------------********************************************************************************************************/        static void phy_write(board_info_t *db, uint8 reg, uint16 value){    /* Fill the phyxcer register into REG_0C */    iow(db, 0xc, DM9000_PHY | reg);    /* Fill the written data into REG_0D & REG_0E */    iow(db, 0xd, (value & 0xff));    iow(db, 0xe, ( (value >> 8) & 0xff));    iow(db, 0xb, 0xa);      /* Issue phyxcer write command */    udelay(500);            /* Wait write complete */    iow(db, 0xb, 0x0);      /* Clear phyxcer write command */}/*********************************************************************************************************** Function name:           set_PHY_mode**** Descriptions:            set the PHY device working   **** input parameters:        board_info_t *db    ;dm9000 status struct**                            ** Returned value:          None **         ** Used global variables:   None** Calling modules:         None**** Created by:              Yehaoben** Created Date:            2004/02/02**-------------------------------------------------------------------------------------------------------** Modified by:** Modified date:**------------------------------------------------------------------------------------------------------********************************************************************************************************/        static void set_PHY_mode(board_info_t *db){    unsigned int phy_reg4 = 0x01e1, phy_reg0=0x1000;    if ( !(db->op_mode & DM9000_AUTO))    {        switch(db->op_mode)        {            case DM9000_10MHD:                phy_reg4 = 0x21; /* 10M HALF DUPLEX*/                phy_reg0 = 0x0000;                 break;            case DM9000_10MFD:                phy_reg4 = 0x41; /* 10M FULL DUPLEX*/                phy_reg0 = 0x1100;                 break;            case DM9000_100MHD:                phy_reg4 = 0x81; /* 100M HALF DUPLEX*/                phy_reg0 = 0x2000;                 break;            case DM9000_100MFD:                phy_reg4 = 0x101;/* 100M HALF DUPLEX */                 phy_reg0 = 0x3100;                 break;            default:                break;        }        phy_write(db, 4, phy_reg4); /* Set PHY media mode */        phy_write(db, 0, phy_reg0); /*  Tmp */    }    iow(db, 0x1e, 0x01);            /* Let GPIO0 output */    iow(db, 0x1f, 0x00);            /* Enable PHY */}/*********************************************************************************************************** Function name: device_init** Descriptions:  device init** Input: dev:    information of device**        ** Output: 0:     OK**         other: errno** Created by:    Chenmingji** Created Date:  2005-05-12**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        static int device_init(struct net_device *dev){    unsigned long flag;    uint8   i;        uint8 temp[16];        board_info_t *db = dev->priv;	db->ioaddr = IOaddress0;    db->io_data = IOaddress0 + 4;            local_irq_save(flag);    /* 硬件復(fù)位復(fù)位 */    Hardware_Initial0();    /* RESET device */    /*Hardware Reset*/    Hardware_Reset_Clr0();    udelay(500);    Hardware_Reset_Set0();    udelay(500);    Hardware_Reset_Clr0();    udelay(500);    	    /*software reset*/    iow(db, 0, 1);             udelay(500);              /* delay 100us */           // printk(KERN_ERR "%d\n",ior(db, 0x28));   // printk(KERN_ERR "%d\n",ior(db, 0x29));        /* I/O mode */    db->io_mode = ior(db, 0xfe) >> 6; /* ISR bit7:6 keeps I/O mode *///read the io mode (8/16/32bits)    //printk(KERN_ERR "%d\n",db->io_mode);    /* NIC Type: FASTETHER, HOMERUN, LONGRUN */    db->nic_type = FASTETHER_NIC; //identify_nic(db);   //just check for dm9801 or dm9802    /* GPIO0 on pre-activate PHY */    iow(db, 0x1f, 0x00);       /*REG_1F bit0 activate internal phyxcer*/    /* Set PHY */    db->op_mode = DM9000_AUTO;//may set it to be each one of DM9000_PHY_mode type.    set_PHY_mode(db);    /* Init needed register value */    db->reg0 = DM9000_REG00;    if ((db->nic_type != FASTETHER_NIC) && (db->op_mode & DM9000_1M_HPNA) )//for dm9801 or dm9802    {        db->reg0 |= DM9000_EXT_MII;    }        /* User passed argument */    db->reg5 = DM9000_REG05;    db->reg8 = DM9000_REG08;    db->reg9 = DM9000_REG09;    db->rega = DM9000_REG0A;    /* Program operating register */    iow(db, 0x00, db->reg0);/* DISCARD LONG\CRC_ERR\mutilcast\Promiscuous\WatchDog,Pass Runt,RX not enable */    iow(db, 0x02, 0X14);     /* TX Polling clear *///??????????????enable the PAD //OLD VALUE IS 0X00    iow(db, 0x08, 0x3f);     /* Less 3Kb, 600us */    iow(db, 0x09, db->reg9); /* Flow Control : High/Low Water */    iow(db, 0x0a, db->rega); /* Flow Control */    iow(db, 0x2f, 0);        /* Special Mode */    iow(db, 0x01, 0x2c);     /* clear TX status *///clear wakeup status; clear TX2END and TX1END    iow(db, 0xfe, 0x0f);         /* Clear interrupt status */    /* Set address filter table */    for(i = 0; i < 6; i++)    {        db->nic_mac[i] = MyMacID[i];    }    for(i = 0; i < 6; i++)    {        iow(db, 0x10 + i, db->nic_mac[i]);  //將芯片物理地址寫入到MAC寄存器    }    /* Activate DM9000 */    iow(db, 0x05, db->reg5 | 1); /* RX enable */    iow(db, 0xff, DM9000_REGFF);     /* Enable TX/RX interrupt mask */    //udelay(5000);     local_irq_restore(flag);    return 0;}/*********************************************************************************************************** Function name: net_init** Descriptions:  net device init** Input: dev:    information of device**        ** Output: 0:     OK**         other: errno** Created by:    Chenmingji** Created Date:  2005-05-12**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        static int net_init(struct net_device *dev){    ether_setup(dev); /* assign some of the fields */    strcpy(dev->name, "eth0");    dev->open            = net_open;    dev->stop            = net_release;    dev->set_config      = net_config;    dev->hard_start_xmit = net_tx;    dev->set_mac_address = net_set_mac_address;    dev->flags           &= ~(IFF_LOOPBACK | IFF_MULTICAST);    dev->priv            = NetDriverInfo;    dev->base_addr       = IOaddress0,    dev->irq             = NET_IRQ,    //dev->watchdog_timeo  = NET_TIMEOUT;        memcpy(dev->dev_addr, MyMacID, dev->addr_len);    SET_MODULE_OWNER(dev);    return 0;}/*********************************************************************************************************** Function name: net_config** Descriptions:  config device** Input: dev:    information of device**        map:    config data** Output: 0:     OK**         other: errno** Created by:    Chenmingji** Created Date:  2005-05-12**-------------------------------------------------------------------------------------------------------** Modified by:** Modified Date: **------------------------------------------------------------------------------------------------------********************************************************************************************************/        static int net_config(struct net_device *dev, struct ifmap *map){    return -EBUSY;}/*********************************************************************************************************** Function name: net_set_mac_address** Descriptions:  set mac address

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久噜噜噜久噜久久综合| 国产精品伦理在线| 成人福利视频网站| 日韩av网站在线观看| 中文字幕一区二区三区在线不卡| 欧美日韩的一区二区| 成人av集中营| 久久精品国产999大香线蕉| 亚洲欧美日韩国产手机在线 | 亚洲国产日韩在线一区模特| 久久综合九色综合97_久久久| 欧美体内she精高潮| av日韩在线网站| 国产suv精品一区二区883| 老司机一区二区| 亚洲国产精品久久人人爱蜜臀| 国产精品久久久久影视| 2020国产成人综合网| 欧美丰满一区二区免费视频| 91成人免费在线视频| 91视频观看视频| av一二三不卡影片| 粉嫩高潮美女一区二区三区| 捆绑变态av一区二区三区| 亚洲午夜久久久久久久久电影院| 日韩一区在线看| 国产精品网站在线| 欧美韩国一区二区| 国产亚洲欧美色| 国产欧美日韩亚州综合| 久久女同性恋中文字幕| 精品免费日韩av| 精品久久人人做人人爽| 日韩亚洲欧美成人一区| 日韩一区二区在线观看视频播放| 欧美日韩精品欧美日韩精品一| 精品视频一区三区九区| 欧美日韩一级视频| 欧美日韩小视频| 91精品国产麻豆| 91精品国产综合久久精品图片| 欧美日韩国产天堂| 日韩欧美高清一区| 久久综合九色综合97_久久久| 欧美tk—视频vk| 久久久久久9999| 久久久精品综合| 国产精品伦一区| 亚洲综合久久av| 午夜a成v人精品| 另类小说图片综合网| 精品写真视频在线观看| 高清国产一区二区| 91麻豆精品秘密| 欧美日韩一卡二卡三卡| 日韩欧美另类在线| 国产免费久久精品| 亚洲人成网站影音先锋播放| 亚洲伦在线观看| 无码av免费一区二区三区试看| 日本一不卡视频| 国产一区二区视频在线播放| 成人午夜视频在线| 欧美午夜电影网| 精品福利二区三区| 亚洲日本成人在线观看| 99久久国产综合色|国产精品| 色婷婷久久久亚洲一区二区三区| 欧美美女一区二区在线观看| 欧美成人aa大片| 亚洲婷婷综合色高清在线| 亚洲18影院在线观看| 国产剧情一区在线| 色综合中文综合网| 国产亚洲欧美日韩在线一区| 自拍偷拍亚洲欧美日韩| 亚洲成av人片在线| 国产精品羞羞答答xxdd| 欧美在线观看你懂的| 日韩午夜精品电影| 国产精品久久久久影院| 日韩二区三区四区| 成人成人成人在线视频| 欧美美女直播网站| 国产精品麻豆一区二区| 日本成人在线一区| proumb性欧美在线观看| 91精品国产综合久久福利 | 日韩二区在线观看| av一区二区三区四区| 欧美一级爆毛片| 尤物在线观看一区| 国产高清视频一区| 欧美一区二区免费| 亚洲欧美日韩一区二区三区在线观看| 美日韩一区二区| 在线观看免费成人| 久久久久亚洲蜜桃| 蜜桃视频一区二区| 色欧美片视频在线观看| 久久久五月婷婷| 蜜桃一区二区三区四区| 欧美日韩中文国产| 国产精品高清亚洲| 国产乱码字幕精品高清av| 欧美日韩国产综合草草| 国产精品成人在线观看| 国产在线观看一区二区| 在线电影院国产精品| 亚洲精品国产无套在线观| 成人综合婷婷国产精品久久免费| 日韩欧美在线一区二区三区| 午夜免费欧美电影| 欧美自拍偷拍午夜视频| 综合电影一区二区三区 | 91麻豆精品国产自产在线观看一区| 国产精品久久久久久久岛一牛影视 | 夜夜嗨av一区二区三区四季av| 国产精品88888| 久久这里只有精品6| 蜜桃视频第一区免费观看| 欧美另类z0zxhd电影| 亚洲午夜久久久久久久久电影院| 91麻豆免费看| 亚洲男同1069视频| 一本大道久久a久久精二百| 国产精品―色哟哟| 成人免费va视频| 欧美国产一区在线| 成人app在线| 国产三级精品视频| 国产suv一区二区三区88区| 国产清纯美女被跳蛋高潮一区二区久久w | 国内精品伊人久久久久av一坑 | 欧美韩国一区二区| 高清beeg欧美| 国产精品每日更新在线播放网址| 国产精品一区二区三区乱码| 国产亚洲综合色| 国产超碰在线一区| 国产精品无人区| av中文字幕亚洲| 亚洲天堂a在线| 欧美系列亚洲系列| 免费人成精品欧美精品| 日韩一区二区三区免费看 | gogo大胆日本视频一区| 亚洲欧洲在线观看av| 欧美又粗又大又爽| 丝袜亚洲另类丝袜在线| 日韩欧美国产wwwww| 国产激情一区二区三区四区 | 另类小说视频一区二区| 精品动漫一区二区三区在线观看| 国产一区二区在线观看视频| 国产农村妇女毛片精品久久麻豆 | 欧美另类z0zxhd电影| 美女一区二区视频| 久久精品男人天堂av| av在线不卡网| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩亚洲高清一区二区| 久久国产麻豆精品| 国产精品乱人伦中文| 在线看日韩精品电影| 免费一区二区视频| 中日韩av电影| 欧美少妇xxx| 国产麻豆精品久久一二三| 国产精品大尺度| 日韩一区二区免费视频| 国产成人免费xxxxxxxx| 亚洲国产精品一区二区久久恐怖片| 制服丝袜日韩国产| bt7086福利一区国产| 午夜精品福利一区二区三区av| 久久久91精品国产一区二区精品| 99在线热播精品免费| 免费看欧美女人艹b| 中文字幕一区二区三| 在线播放欧美女士性生活| 粉嫩绯色av一区二区在线观看| 亚洲第一主播视频| 久久精品视频在线看| 欧美日韩国产小视频| 成人精品鲁一区一区二区| 日日夜夜免费精品| 国产精品国产三级国产有无不卡| 7777精品伊人久久久大香线蕉完整版| 高清在线观看日韩| 久久精品国产精品青草| 亚洲一区二区三区影院| 国产日韩欧美精品在线| 91精品国产免费| 色88888久久久久久影院野外| 韩国女主播一区二区三区| 亚洲一级二级三级在线免费观看| 国产亚洲欧美日韩在线一区| 67194成人在线观看| 一本久久a久久免费精品不卡|