File indexing completed on 2025-05-11 08:23:59
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef _XILINX_TEMAC_
0014 #define _XILINX_TEMAC_
0015 #include <rtems/irq.h>
0016
0017
0018 #define XILTEMAC_DRIVER_PREFIX "xiltemac"
0019
0020 #define DRIVER_PREFIX XILTEMAC_DRIVER_PREFIX
0021
0022
0023
0024
0025 #define XTE_DISR_OFFSET 0x00000000
0026 #define XTE_DIPR_OFFSET 0x00000004
0027 #define XTE_DIER_OFFSET 0x00000008
0028 #define XTE_DIIR_OFFSET 0x00000018
0029 #define XTE_DGIE_OFFSET 0x0000001C
0030 #define XTE_IPISR_OFFSET 0x00000020
0031 #define XTE_IPIER_OFFSET 0x00000028
0032 #define XTE_DSR_OFFSET 0x00000040
0033
0034
0035
0036 #define XTE_PFIFO_TX_BASE_OFFSET 0x00002000
0037 #define XTE_PFIFO_TX_VACANCY_OFFSET 0x00002004
0038 #define XTE_PFIFO_TX_DATA_OFFSET 0x00002100
0039
0040
0041
0042 #define XTE_PFIFO_RX_BASE_OFFSET 0x00002010
0043 #define XTE_PFIFO_RX_VACANCY_OFFSET 0x00002014
0044 #define XTE_PFIFO_RX_DATA_OFFSET 0x00002200
0045
0046
0047
0048 #define XTE_PFIFO_COUNT_MASK 0x00FFFFFF
0049
0050
0051
0052 #define XTE_DMA_SEND_OFFSET 0x00002300
0053 #define XTE_DMA_RECV_OFFSET 0x00002340
0054
0055
0056
0057 #define XTE_CR_OFFSET 0x00001000
0058 #define XTE_TPLR_OFFSET 0x00001004
0059 #define XTE_TSR_OFFSET 0x00001008
0060 #define XTE_RPLR_OFFSET 0x0000100C
0061 #define XTE_RSR_OFFSET 0x00001010
0062 #define XTE_IFGP_OFFSET 0x00001014
0063 #define XTE_TPPR_OFFSET 0x00001018
0064
0065
0066
0067
0068
0069
0070
0071 #define XTE_HOST_IPIF_OFFSET 0x00003000
0072
0073 #define XTE_ERXC0_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000200)
0074 #define XTE_ERXC1_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000240)
0075 #define XTE_ETXC_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000280)
0076 #define XTE_EFCC_OFFSET (XTE_HOST_IPIF_OFFSET + 0x000002C0)
0077 #define XTE_ECFG_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000300)
0078 #define XTE_EGMIC_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000320)
0079 #define XTE_EMC_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000340)
0080 #define XTE_EUAW0_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000380)
0081 #define XTE_EUAW1_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000384)
0082 #define XTE_EMAW0_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000388)
0083 #define XTE_EMAW1_OFFSET (XTE_HOST_IPIF_OFFSET + 0x0000038C)
0084 #define XTE_EAFM_OFFSET (XTE_HOST_IPIF_OFFSET + 0x00000390)
0085 #define XTE_EIRS_OFFSET (XTE_HOST_IPIF_OFFSET + 0x000003A0)
0086 #define XTE_EIREN_OFFSET (XTE_HOST_IPIF_OFFSET + 0x000003A4)
0087 #define XTE_EMIID_OFFSET (XTE_HOST_IPIF_OFFSET + 0x000003B0)
0088 #define XTE_EMIIC_OFFSET (XTE_HOST_IPIF_OFFSET + 0x000003B4)
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100 #define XTE_DXR_SEND_FIFO_MASK 0x00000040
0101 #define XTE_DXR_RECV_FIFO_MASK 0x00000020
0102 #define XTE_DXR_RECV_DMA_MASK 0x00000010
0103 #define XTE_DXR_SEND_DMA_MASK 0x00000008
0104 #define XTE_DXR_CORE_MASK 0x00000004
0105 #define XTE_DXR_DPTO_MASK 0x00000002
0106 #define XTE_DXR_TERR_MASK 0x00000001
0107
0108
0109
0110
0111
0112 #define XTE_IPXR_XMIT_DONE_MASK 0x00000001
0113 #define XTE_IPXR_RECV_DONE_MASK 0x00000002
0114 #define XTE_IPXR_AUTO_NEG_MASK 0x00000004
0115 #define XTE_IPXR_RECV_REJECT_MASK 0x00000008
0116 #define XTE_IPXR_XMIT_SFIFO_EMPTY_MASK 0x00000010
0117 #define XTE_IPXR_RECV_LFIFO_EMPTY_MASK 0x00000020
0118 #define XTE_IPXR_XMIT_LFIFO_FULL_MASK 0x00000040
0119 #define XTE_IPXR_RECV_LFIFO_OVER_MASK 0x00000080
0120
0121
0122
0123 #define XTE_IPXR_RECV_LFIFO_UNDER_MASK 0x00000100
0124 #define XTE_IPXR_XMIT_SFIFO_OVER_MASK 0x00000200
0125 #define XTE_IPXR_XMIT_SFIFO_UNDER_MASK 0x00000400
0126 #define XTE_IPXR_XMIT_LFIFO_OVER_MASK 0x00000800
0127 #define XTE_IPXR_XMIT_LFIFO_UNDER_MASK 0x00001000
0128 #define XTE_IPXR_RECV_PFIFO_ABORT_MASK 0x00002000
0129
0130 #define XTE_IPXR_RECV_LFIFO_ABORT_MASK 0x00004000
0131
0132
0133 #define XTE_IPXR_RECV_DROPPED_MASK \
0134 (XTE_IPXR_RECV_REJECT_MASK | \
0135 XTE_IPXR_RECV_PFIFO_ABORT_MASK | \
0136 XTE_IPXR_RECV_LFIFO_ABORT_MASK)
0137
0138 #define XTE_IPXR_XMIT_ERROR_MASK \
0139 (XTE_IPXR_XMIT_SFIFO_OVER_MASK | \
0140 XTE_IPXR_XMIT_SFIFO_UNDER_MASK | \
0141 XTE_IPXR_XMIT_LFIFO_OVER_MASK | \
0142 XTE_IPXR_XMIT_LFIFO_UNDER_MASK)
0143
0144
0145 #define XTE_IPXR_RECV_ERROR_MASK \
0146 (XTE_IPXR_RECV_DROPPED_MASK | \
0147 XTE_IPXR_RECV_LFIFO_UNDER_MASK)
0148
0149
0150 #define XTE_IPXR_FIFO_FATAL_ERROR_MASK \
0151 (XTE_IPXR_XMIT_SFIFO_OVER_MASK | \
0152 XTE_IPXR_XMIT_SFIFO_UNDER_MASK | \
0153 XTE_IPXR_XMIT_LFIFO_OVER_MASK | \
0154 XTE_IPXR_XMIT_LFIFO_UNDER_MASK | \
0155 XTE_IPXR_RECV_LFIFO_UNDER_MASK)
0156
0157
0158
0159
0160
0161
0162
0163 #define XTE_DSR_RESET_MASK 0x0000000A
0164
0165
0166
0167
0168
0169 #define XTE_DGIE_ENABLE_MASK 0x80000000
0170
0171
0172
0173
0174
0175 #define XTE_CR_HTRST_MASK 0x00000008
0176 #define XTE_CR_BCREJ_MASK 0x00000004
0177
0178 #define XTE_CR_MCREJ_MASK 0x00000002
0179
0180 #define XTE_CR_HDUPLEX_MASK 0x00000001
0181
0182
0183
0184
0185 #define XTE_TPLR_TXPL_MASK 0x00003FFF
0186
0187
0188
0189
0190 #define XTE_TSR_TXED_MASK 0x80000000
0191 #define XTE_TSR_PFIFOU_MASK 0x40000000
0192 #define XTE_TSR_TXA_MASK 0x3E000000
0193 #define XTE_TSR_TXLC_MASK 0x01000000
0194 #define XTE_TSR_TPCF_MASK 0x00000001
0195
0196
0197 #define XTE_TSR_ERROR_MASK \
0198 (XTE_TSR_TXED_MASK | \
0199 XTE_TSR_PFIFOU_MASK | \
0200 XTE_TSR_TXLC_MASK)
0201
0202
0203
0204
0205
0206 #define XTE_RPLR_RXPL_MASK 0x00003FFF
0207
0208
0209
0210
0211 #define XTE_RSR_RPCF_MASK 0x00000001
0212
0213
0214
0215
0216 #define XTE_IFG_IFGD_MASK 0x000000FF
0217
0218
0219
0220
0221 #define XTE_TPPR_TPPD_MASK 0x0000FFFF
0222
0223
0224
0225
0226 #define XTE_ERXC1_RXRST_MASK 0x80000000
0227 #define XTE_ERXC1_RXJMBO_MASK 0x40000000
0228 #define XTE_ERXC1_RXFCS_MASK 0x20000000
0229 #define XTE_ERXC1_RXEN_MASK 0x10000000
0230 #define XTE_ERXC1_RXVLAN_MASK 0x08000000
0231 #define XTE_ERXC1_RXHD_MASK 0x04000000
0232 #define XTE_ERXC1_RXLT_MASK 0x02000000
0233 #define XTE_ERXC1_ERXC1_MASK 0x0000FFFF
0234
0235
0236
0237
0238
0239
0240
0241 #define XTE_ETXC_TXRST_MASK 0x80000000
0242 #define XTE_ETXC_TXJMBO_MASK 0x40000000
0243 #define XTE_ETXC_TXFCS_MASK 0x20000000
0244 #define XTE_ETXC_TXEN_MASK 0x10000000
0245 #define XTE_ETXC_TXVLAN_MASK 0x08000000
0246 #define XTE_ETXC_TXHD_MASK 0x04000000
0247 #define XTE_ETXC_TXIFG_MASK 0x02000000
0248
0249
0250
0251
0252 #define XTE_EFCC_TXFLO_MASK 0x40000000
0253 #define XTE_EFCC_RXFLO_MASK 0x20000000
0254
0255
0256
0257
0258 #define XTE_ECFG_LINKSPD_MASK 0xC0000000
0259 #define XTE_ECFG_RGMII_MASK 0x20000000
0260 #define XTE_ECFG_SGMII_MASK 0x10000000
0261 #define XTE_ECFG_1000BASEX_MASK 0x08000000
0262 #define XTE_ECFG_HOSTEN_MASK 0x04000000
0263 #define XTE_ECFG_TX16BIT 0x02000000
0264 #define XTE_ECFG_RX16BIT 0x01000000
0265
0266 #define XTE_ECFG_LINKSPD_10 0x00000000
0267
0268 #define XTE_ECFG_LINKSPD_100 0x40000000
0269
0270 #define XTE_ECFG_LINKSPD_1000 0x80000000
0271
0272
0273
0274
0275 #define XTE_EGMIC_RGLINKSPD_MASK 0xC0000000
0276 #define XTE_EGMIC_SGLINKSPD_MASK 0x0000000C
0277 #define XTE_EGMIC_RGSTATUS_MASK 0x00000002
0278 #define XTE_EGMIC_RGHALFDUPLEX_MASK 0x00000001
0279
0280 #define XTE_EGMIC_RGLINKSPD_10 0x00000000
0281
0282 #define XTE_EGMIC_RGLINKSPD_100 0x40000000
0283
0284 #define XTE_EGMIC_RGLINKSPD_1000 0x80000000
0285
0286 #define XTE_EGMIC_SGLINKSPD_10 0x00000000
0287
0288 #define XTE_EGMIC_SGLINKSPD_100 0x00000004
0289
0290 #define XTE_EGMIC_SGLINKSPD_1000 0x00000008
0291
0292
0293
0294
0295 #define XTE_EMC_MDIO_MASK 0x00000040
0296 #define XTE_EMC_CLK_DVD_MAX 0x3F
0297
0298
0299
0300
0301 #define XTE_EUAW1_MASK 0x0000FFFF
0302
0303
0304
0305
0306
0307
0308
0309 #define XTE_EMAW1_CAMRNW_MASK 0x00800000
0310 #define XTE_EMAW1_CAMADDR_MASK 0x00030000
0311 #define XTE_EUAW1_MASK 0x0000FFFF
0312
0313
0314
0315 #define XTE_EMAW1_CAMMADDR_SHIFT_MASK 16
0316
0317
0318
0319
0320
0321
0322 #define XTE_EAFM_EPPRM_MASK 0x80000000
0323
0324
0325
0326
0327 #define XTE_EMIID_MIIMWRDATA_MASK 0x0000FFFF
0328
0329
0330
0331
0332 #define XTE_EMIID_MIIMDECADDR_MASK 0x0000FFFF
0333
0334
0335 struct XilTemacStats
0336 {
0337 volatile uint32_t iInterrupts;
0338
0339 volatile uint32_t iRxInterrupts;
0340 volatile uint32_t iRxRejectedInterrupts;
0341 volatile uint32_t iRxRejectedInvalidFrame;
0342 volatile uint32_t iRxRejectedDataFifoFull;
0343 volatile uint32_t iRxRejectedLengthFifoFull;
0344 volatile uint32_t iRxMaxDrained;
0345 volatile uint32_t iRxStrayEvents;
0346
0347 volatile uint32_t iTxInterrupts;
0348 volatile uint32_t iTxMaxDrained;
0349 };
0350
0351 #define MAX_UNIT_BYTES 50
0352
0353 struct XilTemac
0354 {
0355 struct arpcom iArpcom;
0356 struct XilTemacStats iStats;
0357 struct ifnet* iIfp;
0358
0359 char iUnitName[MAX_UNIT_BYTES];
0360
0361 uint32_t iAddr;
0362 rtems_event_set iIoEvent;
0363
0364 int iIsrVector;
0365
0366 #if PPC_HAS_CLASSIC_EXCEPTIONS
0367 rtems_isr_entry iOldHandler;
0368 #else
0369 rtems_irq_connect_data iOldHandler;
0370 #endif
0371 int iIsPresent;
0372 };
0373
0374
0375 #endif