⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sunhme.h

📁 powerpc内核mpc8241linux系统下net驱动程序
💻 H
📖 第 1 页 / 共 3 页
字号:
struct hmeal_tcvregs {	volatile unsigned int bb_clock; /* Bit bang clock register          */	volatile unsigned int bb_data;  /* Bit bang data register           */	volatile unsigned int bb_oenab; /* Bit bang output enable           */	volatile unsigned int frame;    /* Frame control/data register      */	volatile unsigned int cfg;      /* MIF config register              */	volatile unsigned int int_mask; /* MIF interrupt mask               */	volatile unsigned int status;   /* MIF status                       */	volatile unsigned int smachine; /* MIF state machine                */};/* Frame commands. */#define FRAME_WRITE           0x50020000#define FRAME_READ            0x60020000/* Transceiver config register */#define TCV_CFG_PSELECT       0x00000001 /* Select PHY                      */#define TCV_CFG_PENABLE       0x00000002 /* Enable MIF polling              */#define TCV_CFG_BENABLE       0x00000004 /* Enable the "bit banger" oh baby */#define TCV_CFG_PREGADDR      0x000000f8 /* Address of poll register        */#define TCV_CFG_MDIO0         0x00000100 /* MDIO zero, data/attached        */#define TCV_CFG_MDIO1         0x00000200 /* MDIO one,  data/attached        */#define TCV_CFG_PDADDR        0x00007c00 /* Device PHY address polling      *//* Here are some PHY addresses. */#define TCV_PADDR_ETX         0          /* Internal transceiver            */#define TCV_PADDR_ITX         1          /* External transceiver            *//* Transceiver status register */#define TCV_STAT_BASIC        0xffff0000 /* The "basic" part                */#define TCV_STAT_NORMAL       0x0000ffff /* The "non-basic" part            *//* Inside the Happy Meal transceiver is the physical layer, they use an * implementations for National Semiconductor, part number DP83840VCE. * You can retrieve the data sheets and programming docs for this beast * from http://www.national.com/ * * The DP83840 is capable of both 10 and 100Mbps ethernet, in both * half and full duplex mode.  It also supports auto negotiation. * * But.... THIS THING IS A PAIN IN THE ASS TO PROGRAM! * Debugging eeprom burnt code is more fun than programming this chip! *//* First, the DP83840 register numbers. */#define DP83840_BMCR            0x00        /* Basic mode control register */#define DP83840_BMSR            0x01        /* Basic mode status register  */#define DP83840_PHYSID1         0x02        /* PHYS ID 1                   */#define DP83840_PHYSID2         0x03        /* PHYS ID 2                   */#define DP83840_ADVERTISE       0x04        /* Advertisement control reg   */#define DP83840_LPA             0x05        /* Link partner ability reg    */#define DP83840_EXPANSION       0x06        /* Expansion register          */#define DP83840_DCOUNTER        0x12        /* Disconnect counter          */#define DP83840_FCSCOUNTER      0x13        /* False carrier counter       */#define DP83840_NWAYTEST        0x14        /* N-way auto-neg test reg     */#define DP83840_RERRCOUNTER     0x15        /* Receive error counter       */#define DP83840_SREVISION       0x16        /* Silicon revision            */#define DP83840_CSCONFIG        0x17        /* CS configuration            */#define DP83840_LBRERROR        0x18        /* Lpback, rx, bypass error    */#define DP83840_PHYADDR         0x19        /* PHY address                 */#define DP83840_RESERVED        0x1a        /* Unused...                   */#define DP83840_TPISTATUS       0x1b        /* TPI status for 10mbps       */#define DP83840_NCONFIG         0x1c        /* Network interface config    *//* Basic mode control register. */#define BMCR_RESV               0x007f  /* Unused...                   */#define BMCR_CTST               0x0080  /* Collision test              */#define BMCR_FULLDPLX           0x0100  /* Full duplex                 */#define BMCR_ANRESTART          0x0200  /* Auto negotiation restart    */#define BMCR_ISOLATE            0x0400  /* Disconnect DP83840 from MII */#define BMCR_PDOWN              0x0800  /* Powerdown the DP83840       */#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */#define BMCR_LOOPBACK           0x4000  /* TXD loopback bits           */#define BMCR_RESET              0x8000  /* Reset the DP83840           *//* Basic mode status register. */#define BMSR_ERCAP              0x0001  /* Ext-reg capability          */#define BMSR_JCD                0x0002  /* Jabber detected             */#define BMSR_LSTATUS            0x0004  /* Link status                 */#define BMSR_ANEGCAPABLE        0x0008  /* Able to do auto-negotiation */#define BMSR_RFAULT             0x0010  /* Remote fault detected       */#define BMSR_ANEGCOMPLETE       0x0020  /* Auto-negotiation complete   */#define BMSR_RESV               0x07c0  /* Unused...                   */#define BMSR_10HALF             0x0800  /* Can do 10mbps, half-duplex  */#define BMSR_10FULL             0x1000  /* Can do 10mbps, full-duplex  */#define BMSR_100HALF            0x2000  /* Can do 100mbps, half-duplex */#define BMSR_100FULL            0x4000  /* Can do 100mbps, full-duplex */#define BMSR_100BASE4           0x8000  /* Can do 100mbps, 4k packets  *//* Advertisement control register. */#define ADVERTISE_SLCT          0x001f  /* Selector bits               */#define ADVERTISE_CSMA          0x0001  /* Only selector supported     */#define ADVERTISE_10HALF        0x0020  /* Try for 10mbps half-duplex  */#define ADVERTISE_10FULL        0x0040  /* Try for 10mbps full-duplex  */#define ADVERTISE_100HALF       0x0080  /* Try for 100mbps half-duplex */#define ADVERTISE_100FULL       0x0100  /* Try for 100mbps full-duplex */#define ADVERTISE_100BASE4      0x0200  /* Try for 100mbps 4k packets  */#define ADVERTISE_RESV          0x1c00  /* Unused...                   */#define ADVERTISE_RFAULT        0x2000  /* Say we can detect faults    */#define ADVERTISE_LPACK         0x4000  /* Ack link partners response  */#define ADVERTISE_NPAGE         0x8000  /* Next page bit               */#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \                       ADVERTISE_100HALF | ADVERTISE_100FULL)/* Link partner ability register. */#define LPA_SLCT                0x001f  /* Same as advertise selector  */#define LPA_10HALF              0x0020  /* Can do 10mbps half-duplex   */#define LPA_10FULL              0x0040  /* Can do 10mbps full-duplex   */#define LPA_100HALF             0x0080  /* Can do 100mbps half-duplex  */#define LPA_100FULL             0x0100  /* Can do 100mbps full-duplex  */#define LPA_100BASE4            0x0200  /* Can do 100mbps 4k packets   */#define LPA_RESV                0x1c00  /* Unused...                   */#define LPA_RFAULT              0x2000  /* Link partner faulted        */#define LPA_LPACK               0x4000  /* Link partner acked us       */#define LPA_NPAGE               0x8000  /* Next page bit               *//* Expansion register for auto-negotiation. */#define EXPANSION_NWAY          0x0001  /* Can do N-way auto-nego      */#define EXPANSION_LCWP          0x0002  /* Got new RX page code word   */#define EXPANSION_ENABLENPAGE   0x0004  /* This enables npage words    */#define EXPANSION_NPCAPABLE     0x0008  /* Link partner supports npage */#define EXPANSION_MFAULTS       0x0010  /* Multiple faults detected    */#define EXPANSION_RESV          0xffe0  /* Unused...                   *//* N-way test register. */#define NWAYTEST_RESV1          0x00ff  /* Unused...                   */#define NWAYTEST_LOOPBACK       0x0100  /* Enable loopback for N-way   */#define NWAYTEST_RESV2          0xfe00  /* Unused...                   *//* The Carrier Sense config register. */#define CSCONFIG_RESV1          0x0001  /* Unused...                   */#define CSCONFIG_LED4           0x0002  /* Pin for full-dplx LED4      */#define CSCONFIG_LED1           0x0004  /* Pin for conn-status LED1    */#define CSCONFIG_RESV2          0x0008  /* Unused...                   */#define CSCONFIG_TCVDISAB       0x0010  /* Turns off the transceiver   */#define CSCONFIG_DFBYPASS       0x0020  /* Bypass disconnect function  */#define CSCONFIG_GLFORCE        0x0040  /* Good link force for 100mbps */#define CSCONFIG_CLKTRISTATE    0x0080  /* Tristate 25m clock          */#define CSCONFIG_RESV3          0x0700  /* Unused...                   */#define CSCONFIG_ENCODE         0x0800  /* 1=MLT-3, 0=binary           */#define CSCONFIG_RENABLE        0x1000  /* Repeater mode enable        */#define CSCONFIG_TCDISABLE      0x2000  /* Disable timeout counter     */#define CSCONFIG_RESV4          0x4000  /* Unused...                   */#define CSCONFIG_NDISABLE       0x8000  /* Disable NRZI                *//* Loopback, receive, bypass error register. */#define LBRERROR_EBUFFER        0x0001  /* Show elasticity buf errors  */#define LBRERROR_PACKET         0x0002  /* Show packet errors          */#define LBRERROR_LINK           0x0004  /* Show link errors            */#define LBRERROR_END            0x0008  /* Show premature end errors   */#define LBRERROR_CODE           0x0010  /* Show code errors            */#define LBRERROR_RESV1          0x00e0  /* Unused...                   */#define LBRERROR_LBACK          0x0300  /* Remote and twister loopback */#define LBRERROR_10TX           0x0400  /* Transceiver loopback 10mbps */#define LBRERROR_ENDEC          0x0800  /* ENDEC loopback 10mbps       */#define LBRERROR_ALIGN          0x1000  /* Bypass symbol alignment     */#define LBRERROR_SCRAMBLER      0x2000  /* Bypass (de)scrambler        */#define LBRERROR_ENCODER        0x4000  /* Bypass 4B5B/5B4B encoders   */#define LBRERROR_BEBUF          0x8000  /* Bypass elasticity buffers   *//* Physical address register. */#define PHYADDR_ADDRESS         0x001f  /* The address itself          */#define PHYADDR_DISCONNECT      0x0020  /* Disconnect status           */#define PHYADDR_10MBPS          0x0040  /* 1=10mbps, 0=100mbps         */#define PHYADDR_RESV            0xff80  /* Unused...                   *//* TPI status register for 10mbps. */#define TPISTATUS_RESV1         0x01ff  /* Unused...                   */#define TPISTATUS_SERIAL        0x0200  /* Enable 10mbps serial mode   */#define TPISTATUS_RESV2         0xfc00  /* Unused...                   *//* Network interface config register. */#define NCONFIG_JENABLE         0x0001  /* Jabber enable               */#define NCONFIG_RESV1           0x0002  /* Unused...                   */#define NCONFIG_SQUELCH         0x0004  /* Use low squelch             */#define NCONFIG_UTP             0x0008  /* 1=UTP, 0=STP                */#define NCONFIG_HBEAT           0x0010  /* Heart-beat enable           */#define NCONFIG_LDISABLE        0x0020  /* Disable the link            */#define NCONFIG_RESV2           0xffc0  /* Unused...                   *//* Happy Meal descriptor rings and such. * All descriptor rings must be aligned on a 2K boundry. * All receive buffers must be 64 byte aligned. */struct happy_meal_rxd {	unsigned int rx_flags;	unsigned int rx_addr;};#define RXFLAG_OWN         0x80000000 /* 1 = hardware, 0 = software */#define RXFLAG_OVERFLOW    0x40000000 /* 1 = buffer overflow        */#define RXFLAG_SIZE        0x3fff0000 /* Size of the buffer         */#define RXFLAG_CSUM        0x0000ffff /* HW computed checksum       */struct happy_meal_txd {	unsigned int tx_flags;	unsigned int tx_addr;};#define TXFLAG_OWN         0x80000000 /* 1 = hardware, 0 = software */#define TXFLAG_SOP         0x40000000 /* 1 = start of packet        */#define TXFLAG_EOP         0x20000000 /* 1 = end of packet          */#define TXFLAG_CSENABLE    0x10000000 /* 1 = enable hw-checksums    */#define TXFLAG_CSLOCATION  0x0ff00000 /* Where to stick the csum    */#define TXFLAG_CSBUFBEGIN  0x000fc000 /* Where to begin checksum    */#define TXFLAG_SIZE        0x00003fff /* Size of the packet         */#define TX_RING_SIZE       32         /* Must be >16 and <255, multiple of 16  */#define RX_RING_SIZE       32         /* see ERX_CFG_SIZE* for possible values */#define TX_RING_MAXSIZE    256#define RX_RING_MAXSIZE    256/* 34 byte offset for checksum computation.  This works because ip_input() will clear out * the skb->csum and skb->ip_summed fields and recompute the csum if IP options are * present in the header.  34 == (ethernet header len) + sizeof(struct iphdr) */#define ERX_CFG_DEFAULT(off) (ERX_CFG_DMAENABLE|((off)<<3)|ERX_CFG_SIZE32|(0x22<<16))#define NEXT_RX(num)       (((num) + 1) & (RX_RING_SIZE - 1))#define NEXT_TX(num)       (((num) + 1) & (TX_RING_SIZE - 1))#define PREV_RX(num)       (((num) - 1) & (RX_RING_SIZE - 1))#define PREV_TX(num)       (((num) - 1) & (TX_RING_SIZE - 1))#define TX_BUFFS_AVAIL(hp)                                    \        (((hp)->tx_old <= (hp)->tx_new) ?                     \	  (hp)->tx_old + (TX_RING_SIZE - 1) - (hp)->tx_new :  \			    (hp)->tx_old - (hp)->tx_new - 1)#define RX_OFFSET          2#define RX_BUF_ALLOC_SIZE  (1546 + RX_OFFSET + 64)#define RX_COPY_THRESHOLD  256struct hmeal_init_block {	struct happy_meal_rxd happy_meal_rxd[RX_RING_MAXSIZE];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -