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

📄 uec.h

📁 from wangkj@yahoo.com 电路原理图和详细说明: amd.9966.org或者 arm.9966.org 都是原创,包括boot, loader,u-boot,linu
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2006 Freescale Semiconductor, Inc. * * Dave Liu <daveliu@freescale.com> * based on source code of Shlomi Gridish * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#ifndef __UEC_H__#define __UEC_H__#define MAX_TX_THREADS				8#define MAX_RX_THREADS				8#define MAX_TX_QUEUES				8#define MAX_RX_QUEUES				8#define MAX_PREFETCHED_BDS			4#define MAX_IPH_OFFSET_ENTRY			8#define MAX_ENET_INIT_PARAM_ENTRIES_RX		9#define MAX_ENET_INIT_PARAM_ENTRIES_TX		8/* UEC UPSMR (Protocol Specific Mode Register) */#define UPSMR_ECM	0x04000000 /* Enable CAM Miss               */#define UPSMR_HSE	0x02000000 /* Hardware Statistics Enable    */#define UPSMR_PRO	0x00400000 /* Promiscuous                   */#define UPSMR_CAP	0x00200000 /* CAM polarity                  */#define UPSMR_RSH	0x00100000 /* Receive Short Frames          */#define UPSMR_RPM	0x00080000 /* Reduced Pin Mode interfaces   */#define UPSMR_R10M	0x00040000 /* RGMII/RMII 10 Mode            */#define UPSMR_RLPB	0x00020000 /* RMII Loopback Mode            */#define UPSMR_TBIM	0x00010000 /* Ten-bit Interface Mode        */#define UPSMR_RMM	0x00001000 /* RMII/RGMII Mode               */#define UPSMR_CAM	0x00000400 /* CAM Address Matching          */#define UPSMR_BRO	0x00000200 /* Broadcast Address             */#define UPSMR_RES1	0x00002000 /* Reserved feild - must be 1    */#define UPSMR_INIT_VALUE	(UPSMR_HSE | UPSMR_RES1)/* UEC MACCFG1 (MAC Configuration 1 Register) */#define MACCFG1_FLOW_RX			0x00000020 /* Flow Control Rx */#define MACCFG1_FLOW_TX			0x00000010 /* Flow Control Tx */#define MACCFG1_ENABLE_SYNCHED_RX	0x00000008 /* Enable Rx Sync  */#define MACCFG1_ENABLE_RX		0x00000004 /* Enable Rx       */#define MACCFG1_ENABLE_SYNCHED_TX	0x00000002 /* Enable Tx Sync  */#define MACCFG1_ENABLE_TX		0x00000001 /* Enable Tx       */#define MACCFG1_INIT_VALUE		(0)/* UEC MACCFG2 (MAC Configuration 2 Register) */#define MACCFG2_PREL				0x00007000#define MACCFG2_PREL_SHIFT			(31 - 19)#define MACCFG2_PREL_MASK			0x0000f000#define MACCFG2_SRP				0x00000080#define MACCFG2_STP				0x00000040#define MACCFG2_RESERVED_1			0x00000020 /* must be set  */#define MACCFG2_LC				0x00000010 /* Length Check */#define MACCFG2_MPE				0x00000008#define MACCFG2_FDX				0x00000001 /* Full Duplex  */#define MACCFG2_FDX_MASK			0x00000001#define MACCFG2_PAD_CRC				0x00000004#define MACCFG2_CRC_EN				0x00000002#define MACCFG2_PAD_AND_CRC_MODE_NONE		0x00000000#define MACCFG2_PAD_AND_CRC_MODE_CRC_ONLY	0x00000002#define MACCFG2_PAD_AND_CRC_MODE_PAD_AND_CRC	0x00000004#define MACCFG2_INTERFACE_MODE_NIBBLE		0x00000100#define MACCFG2_INTERFACE_MODE_BYTE		0x00000200#define MACCFG2_INTERFACE_MODE_MASK		0x00000300#define MACCFG2_INIT_VALUE	(MACCFG2_PREL | MACCFG2_RESERVED_1 | \				 MACCFG2_LC | MACCFG2_PAD_CRC | MACCFG2_FDX)/* UEC Event Register*/#define UCCE_MPD				0x80000000#define UCCE_SCAR				0x40000000#define UCCE_GRA				0x20000000#define UCCE_CBPR				0x10000000#define UCCE_BSY				0x08000000#define UCCE_RXC				0x04000000#define UCCE_TXC				0x02000000#define UCCE_TXE				0x01000000#define UCCE_TXB7				0x00800000#define UCCE_TXB6				0x00400000#define UCCE_TXB5				0x00200000#define UCCE_TXB4				0x00100000#define UCCE_TXB3				0x00080000#define UCCE_TXB2				0x00040000#define UCCE_TXB1				0x00020000#define UCCE_TXB0				0x00010000#define UCCE_RXB7				0x00008000#define UCCE_RXB6				0x00004000#define UCCE_RXB5				0x00002000#define UCCE_RXB4				0x00001000#define UCCE_RXB3				0x00000800#define UCCE_RXB2				0x00000400#define UCCE_RXB1				0x00000200#define UCCE_RXB0				0x00000100#define UCCE_RXF7				0x00000080#define UCCE_RXF6				0x00000040#define UCCE_RXF5				0x00000020#define UCCE_RXF4				0x00000010#define UCCE_RXF3				0x00000008#define UCCE_RXF2				0x00000004#define UCCE_RXF1				0x00000002#define UCCE_RXF0				0x00000001#define UCCE_TXB	(UCCE_TXB7 | UCCE_TXB6 | UCCE_TXB5 | UCCE_TXB4 | \			 UCCE_TXB3 | UCCE_TXB2 | UCCE_TXB1 | UCCE_TXB0)#define UCCE_RXB	(UCCE_RXB7 | UCCE_RXB6 | UCCE_RXB5 | UCCE_RXB4 | \			 UCCE_RXB3 | UCCE_RXB2 | UCCE_RXB1 | UCCE_RXB0)#define UCCE_RXF	(UCCE_RXF7 | UCCE_RXF6 | UCCE_RXF5 | UCCE_RXF4 | \			 UCCE_RXF3 | UCCE_RXF2 | UCCE_RXF1 | UCCE_RXF0)#define UCCE_OTHER	(UCCE_SCAR | UCCE_GRA  | UCCE_CBPR | UCCE_BSY  | \			 UCCE_RXC  | UCCE_TXC  | UCCE_TXE)/* UEC TEMODR Register*/#define TEMODER_SCHEDULER_ENABLE		0x2000#define TEMODER_IP_CHECKSUM_GENERATE		0x0400#define TEMODER_PERFORMANCE_OPTIMIZATION_MODE1	0x0200#define TEMODER_RMON_STATISTICS			0x0100#define TEMODER_NUM_OF_QUEUES_SHIFT		(15-15)#define TEMODER_INIT_VALUE			0xc000/* UEC REMODR Register*/#define REMODER_RX_RMON_STATISTICS_ENABLE	0x00001000#define REMODER_RX_EXTENDED_FEATURES		0x80000000#define REMODER_VLAN_OPERATION_TAGGED_SHIFT	(31-9 )#define REMODER_VLAN_OPERATION_NON_TAGGED_SHIFT	(31-10)#define REMODER_RX_QOS_MODE_SHIFT		(31-15)#define REMODER_RMON_STATISTICS			0x00001000#define REMODER_RX_EXTENDED_FILTERING		0x00000800#define REMODER_NUM_OF_QUEUES_SHIFT		(31-23)#define REMODER_DYNAMIC_MAX_FRAME_LENGTH	0x00000008#define REMODER_DYNAMIC_MIN_FRAME_LENGTH	0x00000004#define REMODER_IP_CHECKSUM_CHECK		0x00000002#define REMODER_IP_ADDRESS_ALIGNMENT		0x00000001#define REMODER_INIT_VALUE			0/* BMRx - Bus Mode Register */#define BMR_GLB					0x20#define BMR_BO_BE				0x10#define BMR_DTB_SECONDARY_BUS			0x02#define BMR_BDB_SECONDARY_BUS			0x01#define BMR_SHIFT				24#define BMR_INIT_VALUE				(BMR_GLB | BMR_BO_BE)/* UEC UCCS (Ethernet Status Register) */#define UCCS_BPR				0x02#define UCCS_PAU				0x02#define UCCS_MPD				0x01/* UEC MIIMCFG (MII Management Configuration Register) */#define MIIMCFG_RESET_MANAGEMENT		0x80000000#define MIIMCFG_NO_PREAMBLE			0x00000010#define MIIMCFG_CLOCK_DIVIDE_SHIFT		(31 - 31)#define MIIMCFG_CLOCK_DIVIDE_MASK		0x0000000f#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_4	0x00000001#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_6	0x00000002#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_8	0x00000003#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_10	0x00000004#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_14	0x00000005#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_20	0x00000006#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_28	0x00000007#define MIIMCFG_MNGMNT_CLC_DIV_INIT_VALUE	\	MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_10/* UEC MIIMCOM (MII Management Command Register) */#define MIIMCOM_SCAN_CYCLE			0x00000002 /* Scan cycle */#define MIIMCOM_READ_CYCLE			0x00000001 /* Read cycle *//* UEC MIIMADD (MII Management Address Register) */#define MIIMADD_PHY_ADDRESS_SHIFT		(31 - 23)#define MIIMADD_PHY_REGISTER_SHIFT		(31 - 31)/* UEC MIIMCON (MII Management Control Register) */#define MIIMCON_PHY_CONTROL_SHIFT		(31 - 31)#define MIIMCON_PHY_STATUS_SHIFT		(31 - 31)/* UEC MIIMIND (MII Management Indicator Register) */#define MIIMIND_NOT_VALID			0x00000004#define MIIMIND_SCAN				0x00000002#define MIIMIND_BUSY				0x00000001/* UEC UTBIPAR (Ten Bit Interface Physical Address Register) */#define UTBIPAR_PHY_ADDRESS_SHIFT		(31 - 31)#define UTBIPAR_PHY_ADDRESS_MASK		0x0000001f/* UEC UESCR (Ethernet Statistics Control Register) */#define UESCR_AUTOZ				0x8000#define UESCR_CLRCNT				0x4000#define UESCR_MAXCOV_SHIFT			(15 -  7)#define UESCR_SCOV_SHIFT			(15 - 15)/****** Tx data struct collection ******//* Tx thread data, each Tx thread has one this struct.*/typedef struct uec_thread_data_tx {	u8   res0[136];} __attribute__ ((packed)) uec_thread_data_tx_t;/* Tx thread parameter, each Tx thread has one this struct.*/typedef struct uec_thread_tx_pram {	u8   res0[64];} __attribute__ ((packed)) uec_thread_tx_pram_t;/* Send queue queue-descriptor, each Tx queue has one this QD*/typedef struct uec_send_queue_qd {	u32    bd_ring_base; /* pointer to BD ring base address */	u8     res0[0x8];	u32    last_bd_completed_address; /* last entry in BD ring */	u8     res1[0x30];} __attribute__ ((packed)) uec_send_queue_qd_t;/* Send queue memory region */typedef struct uec_send_queue_mem_region {	uec_send_queue_qd_t   sqqd[MAX_TX_QUEUES];} __attribute__ ((packed)) uec_send_queue_mem_region_t;/* Scheduler struct*/typedef struct uec_scheduler {	u16  cpucount0;        /* CPU packet counter */	u16  cpucount1;        /* CPU packet counter */	u16  cecount0;         /* QE  packet counter */	u16  cecount1;         /* QE  packet counter */	u16  cpucount2;        /* CPU packet counter */	u16  cpucount3;        /* CPU packet counter */	u16  cecount2;         /* QE  packet counter */	u16  cecount3;         /* QE  packet counter */	u16  cpucount4;        /* CPU packet counter */	u16  cpucount5;        /* CPU packet counter */	u16  cecount4;         /* QE  packet counter */	u16  cecount5;         /* QE  packet counter */	u16  cpucount6;        /* CPU packet counter */	u16  cpucount7;        /* CPU packet counter */	u16  cecount6;         /* QE  packet counter */	u16  cecount7;         /* QE  packet counter */	u32  weightstatus[MAX_TX_QUEUES]; /* accumulated weight factor */	u32  rtsrshadow;       /* temporary variable handled by QE */	u32  time;             /* temporary variable handled by QE */	u32  ttl;              /* temporary variable handled by QE */	u32  mblinterval;      /* max burst length interval        */	u16  nortsrbytetime;   /* normalized value of byte time in tsr units */	u8   fracsiz;	u8   res0[1];	u8   strictpriorityq;  /* Strict Priority Mask register */	u8   txasap;           /* Transmit ASAP register        */	u8   extrabw;          /* Extra BandWidth register      */	u8   oldwfqmask;       /* temporary variable handled by QE */	u8   weightfactor[MAX_TX_QUEUES]; /**< weight factor for queues */	u32  minw;             /* temporary variable handled by QE */	u8   res1[0x70-0x64];} __attribute__ ((packed)) uec_scheduler_t;/* Tx firmware counters*/typedef struct uec_tx_firmware_statistics_pram {	u32  sicoltx;            /* single collision */	u32  mulcoltx;           /* multiple collision */	u32  latecoltxfr;        /* late collision */	u32  frabortduecol;      /* frames aborted due to tx collision */	u32  frlostinmactxer;    /* frames lost due to internal MAC error tx */	u32  carriersenseertx;   /* carrier sense error */	u32  frtxok;             /* frames transmitted OK */	u32  txfrexcessivedefer;	u32  txpkts256;          /* total packets(including bad) 256~511 B */	u32  txpkts512;          /* total packets(including bad) 512~1023B */	u32  txpkts1024;         /* total packets(including bad) 1024~1518B */	u32  txpktsjumbo;        /* total packets(including bad)  >1024 */} __attribute__ ((packed)) uec_tx_firmware_statistics_pram_t;/* Tx global parameter table*/typedef struct uec_tx_global_pram {	u16  temoder;	u8   res0[0x38-0x02];	u32  sqptr;	u32  schedulerbasepointer;	u32  txrmonbaseptr;	u32  tstate;	u8   iphoffset[MAX_IPH_OFFSET_ENTRY];	u32  vtagtable[0x8];	u32  tqptr;	u8   res2[0x80-0x74];} __attribute__ ((packed)) uec_tx_global_pram_t;/****** Rx data struct collection ******//* Rx thread data, each Rx thread has one this struct.*/typedef struct uec_thread_data_rx {	u8   res0[40];} __attribute__ ((packed)) uec_thread_data_rx_t;/* Rx thread parameter, each Rx thread has one this struct.*/typedef struct uec_thread_rx_pram {	u8   res0[128];} __attribute__ ((packed)) uec_thread_rx_pram_t;/* Rx firmware counters*/typedef struct uec_rx_firmware_statistics_pram {	u32   frrxfcser;         /* frames with crc error */	u32   fraligner;         /* frames with alignment error */	u32   inrangelenrxer;    /* in range length error */	u32   outrangelenrxer;   /* out of range length error */	u32   frtoolong;         /* frame too long */	u32   runt;              /* runt */	u32   verylongevent;     /* very long event */	u32   symbolerror;       /* symbol error */	u32   dropbsy;           /* drop because of BD not ready */	u8    res0[0x8];	u32   mismatchdrop;      /* drop because of MAC filtering */	u32   underpkts;         /* total frames less than 64 octets */	u32   pkts256;           /* total frames(including bad)256~511 B */	u32   pkts512;           /* total frames(including bad)512~1023 B */	u32   pkts1024;          /* total frames(including bad)1024~1518 B */	u32   pktsjumbo;         /* total frames(including bad) >1024 B */	u32   frlossinmacer;	u32   pausefr;           /* pause frames */	u8    res1[0x4];	u32   removevlan;	u32   replacevlan;	u32   insertvlan;} __attribute__ ((packed)) uec_rx_firmware_statistics_pram_t;

⌨️ 快捷键说明

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