0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __DRIVERS_NET_MPC52XX_FEC_H__
0015 #define __DRIVERS_NET_MPC52XX_FEC_H__
0016
0017 #include <linux/phy.h>
0018
0019
0020
0021 #define FEC_RX_BUFFER_SIZE 1522
0022 #define FEC_RX_NUM_BD 256
0023 #define FEC_TX_NUM_BD 64
0024
0025 #define FEC_RESET_DELAY 50
0026
0027 #define FEC_WATCHDOG_TIMEOUT ((400*HZ)/1000)
0028
0029
0030
0031
0032
0033 struct mpc52xx_fec {
0034 u32 fec_id;
0035 u32 ievent;
0036 u32 imask;
0037
0038 u32 reserved0[1];
0039 u32 r_des_active;
0040 u32 x_des_active;
0041 u32 r_des_active_cl;
0042 u32 x_des_active_cl;
0043 u32 ivent_set;
0044 u32 ecntrl;
0045
0046 u32 reserved1[6];
0047 u32 mii_data;
0048 u32 mii_speed;
0049 u32 mii_status;
0050
0051 u32 reserved2[5];
0052 u32 mib_data;
0053 u32 mib_control;
0054
0055 u32 reserved3[6];
0056 u32 r_activate;
0057 u32 r_cntrl;
0058 u32 r_hash;
0059 u32 r_data;
0060 u32 ar_done;
0061 u32 r_test;
0062 u32 r_mib;
0063 u32 r_da_low;
0064 u32 r_da_high;
0065
0066 u32 reserved4[7];
0067 u32 x_activate;
0068 u32 x_cntrl;
0069 u32 backoff;
0070 u32 x_data;
0071 u32 x_status;
0072 u32 x_mib;
0073 u32 x_test;
0074 u32 fdxfc_da1;
0075 u32 fdxfc_da2;
0076 u32 paddr1;
0077 u32 paddr2;
0078 u32 op_pause;
0079
0080 u32 reserved5[4];
0081 u32 instr_reg;
0082 u32 context_reg;
0083 u32 test_cntrl;
0084 u32 acc_reg;
0085 u32 ones;
0086 u32 zeros;
0087 u32 iaddr1;
0088 u32 iaddr2;
0089 u32 gaddr1;
0090 u32 gaddr2;
0091 u32 random;
0092 u32 rand1;
0093 u32 tmp;
0094
0095 u32 reserved6[3];
0096 u32 fifo_id;
0097 u32 x_wmrk;
0098 u32 fcntrl;
0099 u32 r_bound;
0100 u32 r_fstart;
0101 u32 r_count;
0102 u32 r_lag;
0103 u32 r_read;
0104 u32 r_write;
0105 u32 x_count;
0106 u32 x_lag;
0107 u32 x_retry;
0108 u32 x_write;
0109 u32 x_read;
0110
0111 u32 reserved7[2];
0112 u32 fm_cntrl;
0113 u32 rfifo_data;
0114 u32 rfifo_status;
0115 u32 rfifo_cntrl;
0116 u32 rfifo_lrf_ptr;
0117 u32 rfifo_lwf_ptr;
0118 u32 rfifo_alarm;
0119 u32 rfifo_rdptr;
0120 u32 rfifo_wrptr;
0121 u32 tfifo_data;
0122 u32 tfifo_status;
0123 u32 tfifo_cntrl;
0124 u32 tfifo_lrf_ptr;
0125 u32 tfifo_lwf_ptr;
0126 u32 tfifo_alarm;
0127 u32 tfifo_rdptr;
0128 u32 tfifo_wrptr;
0129
0130 u32 reset_cntrl;
0131 u32 xmit_fsm;
0132
0133 u32 reserved8[3];
0134 u32 rdes_data0;
0135 u32 rdes_data1;
0136 u32 r_length;
0137 u32 x_length;
0138 u32 x_addr;
0139 u32 cdes_data;
0140 u32 status;
0141 u32 dma_control;
0142 u32 des_cmnd;
0143 u32 data;
0144
0145 u32 rmon_t_drop;
0146 u32 rmon_t_packets;
0147 u32 rmon_t_bc_pkt;
0148 u32 rmon_t_mc_pkt;
0149 u32 rmon_t_crc_align;
0150 u32 rmon_t_undersize;
0151 u32 rmon_t_oversize;
0152 u32 rmon_t_frag;
0153 u32 rmon_t_jab;
0154 u32 rmon_t_col;
0155 u32 rmon_t_p64;
0156 u32 rmon_t_p65to127;
0157 u32 rmon_t_p128to255;
0158 u32 rmon_t_p256to511;
0159 u32 rmon_t_p512to1023;
0160 u32 rmon_t_p1024to2047;
0161 u32 rmon_t_p_gte2048;
0162 u32 rmon_t_octets;
0163 u32 ieee_t_drop;
0164 u32 ieee_t_frame_ok;
0165 u32 ieee_t_1col;
0166 u32 ieee_t_mcol;
0167 u32 ieee_t_def;
0168 u32 ieee_t_lcol;
0169 u32 ieee_t_excol;
0170 u32 ieee_t_macerr;
0171 u32 ieee_t_cserr;
0172 u32 ieee_t_sqe;
0173 u32 t_fdxfc;
0174 u32 ieee_t_octets_ok;
0175
0176 u32 reserved9[2];
0177 u32 rmon_r_drop;
0178 u32 rmon_r_packets;
0179 u32 rmon_r_bc_pkt;
0180 u32 rmon_r_mc_pkt;
0181 u32 rmon_r_crc_align;
0182 u32 rmon_r_undersize;
0183 u32 rmon_r_oversize;
0184 u32 rmon_r_frag;
0185 u32 rmon_r_jab;
0186
0187 u32 rmon_r_resvd_0;
0188
0189 u32 rmon_r_p64;
0190 u32 rmon_r_p65to127;
0191 u32 rmon_r_p128to255;
0192 u32 rmon_r_p256to511;
0193 u32 rmon_r_p512to1023;
0194 u32 rmon_r_p1024to2047;
0195 u32 rmon_r_p_gte2048;
0196 u32 rmon_r_octets;
0197 u32 ieee_r_drop;
0198 u32 ieee_r_frame_ok;
0199 u32 ieee_r_crc;
0200 u32 ieee_r_align;
0201 u32 r_macerr;
0202 u32 r_fdxfc;
0203 u32 ieee_r_octets_ok;
0204
0205 u32 reserved10[7];
0206
0207 u32 reserved11[64];
0208 };
0209
0210 #define FEC_MIB_DISABLE 0x80000000
0211
0212 #define FEC_IEVENT_HBERR 0x80000000
0213 #define FEC_IEVENT_BABR 0x40000000
0214 #define FEC_IEVENT_BABT 0x20000000
0215 #define FEC_IEVENT_GRA 0x10000000
0216 #define FEC_IEVENT_TFINT 0x08000000
0217 #define FEC_IEVENT_MII 0x00800000
0218 #define FEC_IEVENT_LATE_COL 0x00200000
0219 #define FEC_IEVENT_COL_RETRY_LIM 0x00100000
0220 #define FEC_IEVENT_XFIFO_UN 0x00080000
0221 #define FEC_IEVENT_XFIFO_ERROR 0x00040000
0222 #define FEC_IEVENT_RFIFO_ERROR 0x00020000
0223
0224 #define FEC_IMASK_HBERR 0x80000000
0225 #define FEC_IMASK_BABR 0x40000000
0226 #define FEC_IMASK_BABT 0x20000000
0227 #define FEC_IMASK_GRA 0x10000000
0228 #define FEC_IMASK_MII 0x00800000
0229 #define FEC_IMASK_LATE_COL 0x00200000
0230 #define FEC_IMASK_COL_RETRY_LIM 0x00100000
0231 #define FEC_IMASK_XFIFO_UN 0x00080000
0232 #define FEC_IMASK_XFIFO_ERROR 0x00040000
0233 #define FEC_IMASK_RFIFO_ERROR 0x00020000
0234
0235
0236 #define FEC_IMASK_ENABLE (FEC_IMASK_HBERR | FEC_IMASK_BABR | \
0237 FEC_IMASK_BABT | FEC_IMASK_GRA | FEC_IMASK_LATE_COL | \
0238 FEC_IMASK_COL_RETRY_LIM | FEC_IMASK_XFIFO_UN | \
0239 FEC_IMASK_XFIFO_ERROR | FEC_IMASK_RFIFO_ERROR)
0240
0241 #define FEC_RCNTRL_MAX_FL_SHIFT 16
0242 #define FEC_RCNTRL_LOOP 0x01
0243 #define FEC_RCNTRL_DRT 0x02
0244 #define FEC_RCNTRL_MII_MODE 0x04
0245 #define FEC_RCNTRL_PROM 0x08
0246 #define FEC_RCNTRL_BC_REJ 0x10
0247 #define FEC_RCNTRL_FCE 0x20
0248
0249 #define FEC_TCNTRL_GTS 0x00000001
0250 #define FEC_TCNTRL_HBC 0x00000002
0251 #define FEC_TCNTRL_FDEN 0x00000004
0252 #define FEC_TCNTRL_TFC_PAUSE 0x00000008
0253 #define FEC_TCNTRL_RFC_PAUSE 0x00000010
0254
0255 #define FEC_ECNTRL_RESET 0x00000001
0256 #define FEC_ECNTRL_ETHER_EN 0x00000002
0257
0258 #define FEC_MII_DATA_ST 0x40000000
0259 #define FEC_MII_DATA_OP_RD 0x20000000
0260 #define FEC_MII_DATA_OP_WR 0x10000000
0261 #define FEC_MII_DATA_PA_MSK 0x0f800000
0262 #define FEC_MII_DATA_RA_MSK 0x007c0000
0263 #define FEC_MII_DATA_TA 0x00020000
0264 #define FEC_MII_DATA_DATAMSK 0x0000ffff
0265
0266 #define FEC_MII_READ_FRAME (FEC_MII_DATA_ST | FEC_MII_DATA_OP_RD | FEC_MII_DATA_TA)
0267 #define FEC_MII_WRITE_FRAME (FEC_MII_DATA_ST | FEC_MII_DATA_OP_WR | FEC_MII_DATA_TA)
0268
0269 #define FEC_MII_DATA_RA_SHIFT 0x12
0270 #define FEC_MII_DATA_PA_SHIFT 0x17
0271
0272 #define FEC_PADDR2_TYPE 0x8808
0273
0274 #define FEC_OP_PAUSE_OPCODE 0x00010000
0275
0276 #define FEC_FIFO_WMRK_256B 0x3
0277
0278 #define FEC_FIFO_STATUS_ERR 0x00400000
0279 #define FEC_FIFO_STATUS_UF 0x00200000
0280 #define FEC_FIFO_STATUS_OF 0x00100000
0281
0282 #define FEC_FIFO_CNTRL_FRAME 0x08000000
0283 #define FEC_FIFO_CNTRL_LTG_7 0x07000000
0284
0285 #define FEC_RESET_CNTRL_RESET_FIFO 0x02000000
0286 #define FEC_RESET_CNTRL_ENABLE_IS_RESET 0x01000000
0287
0288 #define FEC_XMIT_FSM_APPEND_CRC 0x02000000
0289 #define FEC_XMIT_FSM_ENABLE_CRC 0x01000000
0290
0291
0292 extern struct platform_driver mpc52xx_fec_mdio_driver;
0293
0294 #endif