via_rhine.h
来自「eCos操作系统源码」· C头文件 代码 · 共 470 行 · 第 1/2 页
H
470 行
#define RHINE_IMR_INIT (RHINE_IMR_PTX | RHINE_IMR_PRX | RHINE_IMR_RU)#define RHINE_BCR0_MAGIC_INIT 0x00#define RHINE_BCR1_POT2 0x04#define RHINE_BCR1_POT1 0x02#define RHINE_BCR1_MAGIC_INIT (RHINE_BCR1_POT1|RHINE_BCR1_POT2)#define RHINE_MIICR_MAUTO 0x80#define RHINE_MIICR_RCMD 0x40#define RHINE_MIICR_WCMD 0x20#define RHINE_MIICR_MDPM 0x10#define RHINE_MIICR_MOUT 0x08#define RHINE_MIICR_MDO 0x04#define RHINE_MIICR_MDI 0x02#define RHINE_MIICR_MDC 0x01#define RHINE_MIISR_GPIO1POL 0x80#define RHINE_MIISR_MFDC 0x20#define RHINE_MIISR_PHYOPT 0x10#define RHINE_MIISR_MIIERR 0x08#define RHINE_MIISR_MRERR 0x04#define RHINE_MIISR_LNKFL 0x02#define RHINE_MIISR_SPEED 0x01#define RHINE_EECSR_EEPR 0x80#define RHINE_EECSR_EMBP 0x40#define RHINE_EECSR_LOAD 0x20#define RHINE_EECSR_DPM 0x10#define RHINE_EECSR_ECS 0x08#define RHINE_EECSR_ECK 0x04#define RHINE_EECSR_EDI 0x02#define RHINE_EECSR_EDO 0x01#define RHINE_CFGA_EELOAD 0x80#define RHINE_CFGA_JUMPER 0x40#define RHINE_CFGA_MMIEN 0x20#define RHINE_CFGA_MIIOPT 0x10#define RHINE_CFGA_AUTOOPT 0x08#define RHINE_CFGA_GPIO2I 0x04#define RHINE_CFGA_GPIO2O 0x02#define RHINE_CFGA_GPIO2OE 0x01#define RHINE_CFGB_QPKTDIS 0x80#define RHINE_CFGB_TRACEN 0x40#define RHINE_CFGB_MRDM 0x20#define RHINE_CFGB_TXARBIT 0x10#define RHINE_CFGB_RXARBIT 0x08#define RHINE_CFGB_MWWAIT 0x04#define RHINE_CFGB_MRWAIT 0x02#define RHINE_CFGB_LATMEN 0x01#define RHINE_CFGC_BROPT 0x40#define RHINE_CFGC_DLYEN 0x20#define RHINE_CFGC_BTSEL 0x08#define RHINE_CFGC_BPS2 0x04#define RHINE_CFGC_BPS1 0x02#define RHINE_CFGC_BPS0 0x01#define RHINE_CFGD_GPIOEN 0x80#define RHINE_CFGD_DIAG 0x40#define RHINE_CFGD_MRDLEN 0x20#define RHINE_CFGD_MAGIC 0x10#define RHINE_CFGD_CRANDOM 0x08#define RHINE_CFGD_CAP 0x04#define RHINE_CFGD_MBA 0x02#define RHINE_CFGD_BAKOPT 0x01//----------------------------------------------------------------------------// Receive buffer Descriptor#define RHINE_RDES0 0x00 // frame length, status registers#define RHINE_RDES1 0x04 // receive length#define RHINE_RDES2 0x08 // rx data buffer#define RHINE_RDES3 0x0c // next#define RHINE_RD_SIZE 0x10#define RHINE_RDES0_OWN 0x80000000#define RHINE_RDES0_FLNG_mask 0x07ff0000#define RHINE_RDES0_FLNG_shift 16#define RHINE_RDES0_RXOK 0x00008000#define RHINE_RDES0_RES1 0x00004000#define RHINE_RDES0_MAR 0x00002000#define RHINE_RDES0_BAR 0x00001000#define RHINE_RDES0_PHY 0x00000800#define RHINE_RDES0_CHN 0x00000400#define RHINE_RDES0_STP 0x00000200#define RHINE_RDES0_EDP 0x00000100#define RHINE_RDES0_BUFF 0x00000080#define RHINE_RDES0_SERR 0x00000040#define RHINE_RDES0_RUNT 0x00000020#define RHINE_RDES0_LONG 0x00000010#define RHINE_RDES0_FOV 0x00000008#define RHINE_RDES0_FAE 0x00000004#define RHINE_RDES0_CRC 0x00000002#define RHINE_RDES0_RERR 0x00000001#define RHINE_RD_RLEN_IC 0x00800000#define RHINE_RD_RLEN_C 0x00008000#define RHINE_RD_RLEN_RLEN_mask 0x000007ff//----------------------------------------------------------------------------// Transmit buffer Descriptor#define RHINE_TDES0 0x00 // status & own#define RHINE_TDES1 0x04 // tx config & length#define RHINE_TDES2 0x08 // tx data buffer#define RHINE_TDES3 0x0c // next#define RHINE_TD_SIZE 0x10#define RHINE_TDES0_OWN 0x80000000#define RHINE_TDES0_TXOK 0x00008000#define RHINE_TDES0_JAB 0x00004000#define RHINE_TDES0_SERR 0x00002000#define RHINE_TDES0_RES1 0x00001000#define RHINE_TDES0_RES2 0x00000800#define RHINE_TDES0_CRS 0x00000400#define RHINE_TDES0_OWC 0x00000200#define RHINE_TDES0_ABT 0x00000100#define RHINE_TDES0_CDH 0x00000080#define RHINE_TDES0_NCR_mask 0x00000038#define RHINE_TDES0_NCR_shift 3#define RHINE_TDES0_RES3 0x00000004#define RHINE_TDES0_UDF 0x00000002#define RHINE_TDES0_DFR 0x00000001#define RHINE_TDES1_TCR_mask 0x00ff0000#define RHINE_TDES1_TCR_shift 16#define RHINE_TDES1_IC 0x00800000#define RHINE_TDES1_EDP 0x00400000#define RHINE_TDES1_STP 0x00200000#define RHINE_TDES1_CRC 0x00010000#define RHINE_TDES1_C 0x00008000#define RHINE_TDES1_TLNG_mask 0x000007ff// ------------------------------------------------------------------------#define MII_BMCR 0#define MII_BMSR 1#define MII_BMCR_RENEGOTIATE 0x3300#define MII_BMSR_AN_COMPLETE 0x0020#define MII_BMSR_LINK 0x0004// ------------------------------------------------------------------------#ifdef KEEP_STATISTICSstruct via_rhine_stats { unsigned int tx_good ; unsigned int tx_max_collisions ; unsigned int tx_late_collisions ; unsigned int tx_underrun ; unsigned int tx_carrier_loss ; unsigned int tx_deferred ; unsigned int tx_sqetesterrors ; unsigned int tx_single_collisions; unsigned int tx_mult_collisions ; unsigned int tx_total_collisions ; unsigned int rx_good ; unsigned int rx_crc_errors ; unsigned int rx_align_errors ; unsigned int rx_resource_errors ; unsigned int rx_overrun_errors ; unsigned int rx_collisions ; unsigned int rx_short_frames ; unsigned int rx_too_long_frames ; unsigned int rx_symbol_errors ; unsigned int interrupts ; unsigned int rx_count ; unsigned int rx_deliver ; unsigned int rx_resource ; unsigned int rx_restart ; unsigned int tx_count ; unsigned int tx_complete ; unsigned int tx_dropped ;};#endiftypedef struct rhine_priv_data { int index; cyg_uint8 // (split up for atomic byte access) found:1, // was hardware discovered? mac_addr_ok:1, // can we bring up? active:1, // has this if been brung up? hardwired_esa:1, // set if ESA is hardwired via CDL spare1:4; int txbusy; // A packet has been sent unsigned long txkey; // Used to ack when packet sent unsigned char* base; // Base address of controller IO region cyg_vector_t interrupt; // Interrupt vector used by controller unsigned char esa[6]; // Controller ESA // Function to configure the ESA - may fetch ESA from EPROM or // RedBoot config option. void (*config_esa)(struct rhine_priv_data* cpd); void *ndp; // Network Device Pointer cyg_handle_t interrupt_handle; cyg_interrupt interrupt_object; int devid; int phys_id; // ID of physical MII controller cyg_uint8* rx_buffers; // ptr to base of buffer mem cyg_uint8* rx_ring; // ptr to base of rx ring memory int rx_ring_cnt; // number of entries in ring int rx_ring_log_cnt; // log of above int rx_ring_next; // index of next full ring entry cyg_uint8* tx_buffers; cyg_uint8* tx_ring; int tx_ring_cnt; int tx_ring_log_cnt; int tx_ring_free; // index of next free ring entry int tx_ring_alloc; // index of first controller owned ring int tx_ring_owned; // number of controller owned ring entries int rxpacket;#ifdef KEEP_STATISTICS struct via_rhine_stats stats;#endif} rhine_priv_data;// ------------------------------------------------------------------------#endif CYGONCE_DEVS_ETH_VIA_RHINE_H// EOF via_rhine.h
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?