File indexing completed on 2025-05-11 08:23:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_HAL_ETH_H
0021 #define STM32H7xx_HAL_ETH_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028 #include "stm32h7xx_hal_def.h"
0029
0030 #if defined(ETH)
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 #ifndef ETH_TX_DESC_CNT
0042 #define ETH_TX_DESC_CNT 4U
0043 #endif
0044
0045 #ifndef ETH_RX_DESC_CNT
0046 #define ETH_RX_DESC_CNT 4U
0047 #endif
0048
0049 #ifndef ETH_SWRESET_TIMEOUT
0050 #define ETH_SWRESET_TIMEOUT 500U
0051 #endif
0052
0053 #ifndef ETH_MDIO_BUS_TIMEOUT
0054 #define ETH_MDIO_BUS_TIMEOUT 1000U
0055 #endif
0056
0057 #ifndef ETH_MAC_US_TICK
0058 #define ETH_MAC_US_TICK 1000000U
0059 #endif
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 typedef struct
0071 {
0072 __IO uint32_t DESC0;
0073 __IO uint32_t DESC1;
0074 __IO uint32_t DESC2;
0075 __IO uint32_t DESC3;
0076 uint32_t BackupAddr0;
0077 uint32_t BackupAddr1;
0078 } ETH_DMADescTypeDef;
0079
0080
0081
0082
0083
0084
0085
0086 typedef struct __ETH_BufferTypeDef
0087 {
0088 uint8_t *buffer;
0089
0090 uint32_t len;
0091
0092 struct __ETH_BufferTypeDef *next;
0093 } ETH_BufferTypeDef;
0094
0095
0096
0097
0098
0099
0100
0101 typedef struct
0102 {
0103 uint32_t TxDesc[ETH_TX_DESC_CNT];
0104
0105 uint32_t CurTxDesc;
0106
0107 uint32_t *PacketAddress[ETH_TX_DESC_CNT];
0108
0109 uint32_t *CurrentPacketAddress;
0110
0111 uint32_t BuffersInUse;
0112
0113 uint32_t releaseIndex;
0114 } ETH_TxDescListTypeDef;
0115
0116
0117
0118
0119
0120
0121
0122 typedef struct
0123 {
0124 uint32_t Attributes;
0125
0126
0127 uint32_t Length;
0128
0129 ETH_BufferTypeDef *TxBuffer;
0130
0131 uint32_t SrcAddrCtrl;
0132
0133
0134 uint32_t CRCPadCtrl;
0135
0136
0137 uint32_t ChecksumCtrl;
0138
0139
0140 uint32_t MaxSegmentSize;
0141
0142
0143 uint32_t PayloadLen;
0144
0145
0146 uint32_t TCPHeaderLen;
0147
0148
0149 uint32_t VlanTag;
0150
0151
0152 uint32_t VlanCtrl;
0153
0154
0155 uint32_t InnerVlanTag;
0156
0157
0158 uint32_t InnerVlanCtrl;
0159
0160
0161 void *pData;
0162
0163 } ETH_TxPacketConfigTypeDef;
0164
0165
0166
0167
0168
0169
0170
0171 typedef struct
0172 {
0173 uint32_t TimeStampLow;
0174 uint32_t TimeStampHigh;
0175
0176 } ETH_TimeStampTypeDef;
0177
0178
0179
0180
0181 #ifdef HAL_ETH_USE_PTP
0182
0183
0184
0185 typedef struct
0186 {
0187 uint32_t Seconds;
0188 uint32_t NanoSeconds;
0189 } ETH_TimeTypeDef;
0190
0191
0192
0193 #endif
0194
0195
0196
0197
0198 typedef struct
0199 {
0200 uint32_t RxDesc[ETH_RX_DESC_CNT];
0201
0202 uint32_t ItMode;
0203
0204
0205 uint32_t RxDescIdx;
0206
0207 uint32_t RxDescCnt;
0208
0209 uint32_t RxDataLength;
0210
0211 uint32_t RxBuildDescIdx;
0212
0213 uint32_t RxBuildDescCnt;
0214
0215 uint32_t pRxLastRxDesc;
0216
0217 ETH_TimeStampTypeDef TimeStamp;
0218
0219 void *pRxStart;
0220
0221 void *pRxEnd;
0222
0223 } ETH_RxDescListTypeDef;
0224
0225
0226
0227
0228
0229
0230
0231 typedef struct
0232 {
0233 uint32_t
0234 SourceAddrControl;
0235
0236
0237 FunctionalState
0238 ChecksumOffload;
0239
0240 uint32_t InterPacketGapVal;
0241
0242
0243 FunctionalState GiantPacketSizeLimitControl;
0244
0245 FunctionalState Support2KPacket;
0246
0247 FunctionalState CRCStripTypePacket;
0248
0249 FunctionalState AutomaticPadCRCStrip;
0250
0251 FunctionalState Watchdog;
0252
0253 FunctionalState Jabber;
0254
0255 FunctionalState JumboPacket;
0256
0257
0258
0259 uint32_t Speed;
0260
0261
0262 uint32_t DuplexMode;
0263
0264
0265 FunctionalState LoopbackMode;
0266
0267 FunctionalState
0268 CarrierSenseBeforeTransmit;
0269
0270 FunctionalState ReceiveOwn;
0271
0272 FunctionalState
0273 CarrierSenseDuringTransmit;
0274
0275 FunctionalState
0276 RetryTransmission;
0277
0278 uint32_t BackOffLimit;
0279
0280
0281 FunctionalState
0282 DeferralCheck;
0283
0284 uint32_t
0285 PreambleLength;
0286
0287
0288 FunctionalState
0289 UnicastSlowProtocolPacketDetect;
0290
0291 FunctionalState SlowProtocolDetect;
0292
0293 FunctionalState CRCCheckingRxPackets;
0294
0295 uint32_t
0296 GiantPacketSizeLimit;
0297
0298
0299
0300
0301 FunctionalState ExtendedInterPacketGap;
0302
0303 uint32_t ExtendedInterPacketGapVal;
0304
0305
0306 FunctionalState ProgrammableWatchdog;
0307
0308 uint32_t WatchdogTimeout;
0309
0310
0311 uint32_t
0312 PauseTime;
0313
0314
0315
0316 FunctionalState
0317 ZeroQuantaPause;
0318
0319 uint32_t
0320 PauseLowThreshold;
0321
0322
0323 FunctionalState
0324 TransmitFlowControl;
0325
0326
0327 FunctionalState
0328 UnicastPausePacketDetect;
0329
0330 FunctionalState ReceiveFlowControl;
0331
0332
0333 uint32_t TransmitQueueMode;
0334
0335
0336 uint32_t ReceiveQueueMode;
0337
0338
0339 FunctionalState DropTCPIPChecksumErrorPacket;
0340
0341 FunctionalState ForwardRxErrorPacket;
0342
0343 FunctionalState ForwardRxUndersizedGoodPacket;
0344 } ETH_MACConfigTypeDef;
0345
0346
0347
0348
0349
0350
0351
0352 typedef struct
0353 {
0354 uint32_t DMAArbitration;
0355
0356
0357 FunctionalState AddressAlignedBeats;
0358
0359
0360 uint32_t BurstMode;
0361
0362 FunctionalState RebuildINCRxBurst;
0363
0364
0365 FunctionalState PBLx8Mode;
0366
0367 uint32_t
0368 TxDMABurstLength;
0369
0370
0371 FunctionalState
0372 SecondPacketOperate;
0373
0374
0375
0376 uint32_t
0377 RxDMABurstLength;
0378
0379
0380 FunctionalState FlushRxPacket;
0381
0382 FunctionalState TCPSegmentation;
0383
0384 uint32_t
0385 MaximumSegmentSize;
0386
0387
0388 } ETH_DMAConfigTypeDef;
0389
0390
0391
0392
0393
0394
0395
0396 typedef enum
0397 {
0398 HAL_ETH_MII_MODE = 0x00U,
0399 HAL_ETH_RMII_MODE = 0x01U
0400 } ETH_MediaInterfaceTypeDef;
0401
0402
0403
0404
0405 #ifdef HAL_ETH_USE_PTP
0406
0407
0408
0409 typedef enum
0410 {
0411 HAL_ETH_PTP_POSITIVE_UPDATE = 0x00000000U,
0412 HAL_ETH_PTP_NEGATIVE_UPDATE = 0x00000001U
0413 } ETH_PtpUpdateTypeDef;
0414
0415
0416
0417 #endif
0418
0419
0420
0421
0422 typedef struct
0423 {
0424 uint8_t
0425 *MACAddr;
0426
0427 ETH_MediaInterfaceTypeDef MediaInterface;
0428
0429 ETH_DMADescTypeDef
0430 *TxDesc;
0431
0432 ETH_DMADescTypeDef
0433 *RxDesc;
0434
0435 uint32_t RxBuffLen;
0436
0437 } ETH_InitTypeDef;
0438
0439
0440
0441
0442 #ifdef HAL_ETH_USE_PTP
0443
0444
0445
0446 typedef struct
0447 {
0448 uint32_t Timestamp;
0449 uint32_t TimestampUpdateMode;
0450 uint32_t TimestampInitialize;
0451 uint32_t TimestampUpdate;
0452 uint32_t TimestampAddendUpdate;
0453 uint32_t TimestampAll;
0454 uint32_t TimestampRolloverMode;
0455 uint32_t TimestampV2;
0456 uint32_t TimestampEthernet;
0457 uint32_t TimestampIPv6;
0458 uint32_t TimestampIPv4;
0459 uint32_t TimestampEvent;
0460 uint32_t TimestampMaster;
0461 uint32_t TimestampSnapshots;
0462 uint32_t TimestampFilter;
0463 uint32_t
0464 TimestampChecksumCorrection;
0465 uint32_t TimestampStatusMode;
0466 uint32_t TimestampAddend;
0467 uint32_t TimestampSubsecondInc;
0468
0469 } ETH_PTP_ConfigTypeDef;
0470
0471
0472
0473 #endif
0474
0475
0476
0477
0478 typedef uint32_t HAL_ETH_StateTypeDef;
0479
0480
0481
0482
0483
0484
0485
0486 typedef void (*pETH_rxAllocateCallbackTypeDef)(uint8_t **buffer);
0487
0488
0489
0490
0491
0492
0493
0494 typedef void (*pETH_rxLinkCallbackTypeDef)(void **pStart, void **pEnd, uint8_t *buff,
0495 uint16_t Length);
0496
0497
0498
0499
0500
0501
0502
0503 typedef void (*pETH_txFreeCallbackTypeDef)(uint32_t *buffer);
0504
0505
0506
0507
0508
0509
0510
0511 typedef void (*pETH_txPtpCallbackTypeDef)(uint32_t *buffer,
0512 ETH_TimeStampTypeDef *timestamp);
0513
0514
0515
0516
0517
0518
0519
0520 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
0521 typedef struct __ETH_HandleTypeDef
0522 #else
0523 typedef struct
0524 #endif
0525 {
0526 ETH_TypeDef *Instance;
0527
0528 ETH_InitTypeDef Init;
0529
0530 ETH_TxDescListTypeDef TxDescList;
0531
0532
0533 ETH_RxDescListTypeDef RxDescList;
0534
0535
0536 #ifdef HAL_ETH_USE_PTP
0537 ETH_TimeStampTypeDef TxTimestamp;
0538 #endif
0539
0540 __IO HAL_ETH_StateTypeDef gState;
0541
0542
0543
0544 __IO uint32_t ErrorCode;
0545
0546
0547 __IO uint32_t
0548 DMAErrorCode;
0549
0550
0551
0552 __IO uint32_t
0553 MACErrorCode;
0554
0555
0556
0557 __IO uint32_t MACWakeUpEvent;
0558
0559
0560
0561 __IO uint32_t MACLPIEvent;
0562
0563
0564 __IO uint32_t IsPtpConfigured;
0565
0566
0567
0568 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
0569
0570 void (* TxCpltCallback)(struct __ETH_HandleTypeDef *heth);
0571 void (* RxCpltCallback)(struct __ETH_HandleTypeDef *heth);
0572 void (* ErrorCallback)(struct __ETH_HandleTypeDef *heth);
0573 void (* PMTCallback)(struct __ETH_HandleTypeDef *heth);
0574 void (* EEECallback)(struct __ETH_HandleTypeDef *heth);
0575 void (* WakeUpCallback)(struct __ETH_HandleTypeDef *heth);
0576
0577 void (* MspInitCallback)(struct __ETH_HandleTypeDef *heth);
0578 void (* MspDeInitCallback)(struct __ETH_HandleTypeDef *heth);
0579
0580 #endif
0581
0582 pETH_rxAllocateCallbackTypeDef rxAllocateCallback;
0583 pETH_rxLinkCallbackTypeDef rxLinkCallback;
0584 pETH_txFreeCallbackTypeDef txFreeCallback;
0585 pETH_txPtpCallbackTypeDef txPtpCallback;
0586
0587 } ETH_HandleTypeDef;
0588
0589
0590
0591
0592 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
0593
0594
0595
0596 typedef enum
0597 {
0598 HAL_ETH_MSPINIT_CB_ID = 0x00U,
0599 HAL_ETH_MSPDEINIT_CB_ID = 0x01U,
0600 HAL_ETH_TX_COMPLETE_CB_ID = 0x02U,
0601 HAL_ETH_RX_COMPLETE_CB_ID = 0x03U,
0602 HAL_ETH_ERROR_CB_ID = 0x04U,
0603 HAL_ETH_PMT_CB_ID = 0x06U,
0604 HAL_ETH_EEE_CB_ID = 0x07U,
0605 HAL_ETH_WAKEUP_CB_ID = 0x08U
0606
0607 } HAL_ETH_CallbackIDTypeDef;
0608
0609
0610
0611
0612 typedef void (*pETH_CallbackTypeDef)(ETH_HandleTypeDef *heth);
0613
0614 #endif
0615
0616
0617
0618
0619 typedef struct
0620 {
0621 FunctionalState PromiscuousMode;
0622
0623 FunctionalState ReceiveAllMode;
0624
0625 FunctionalState HachOrPerfectFilter;
0626
0627 FunctionalState HashUnicast;
0628
0629 FunctionalState HashMulticast;
0630
0631 FunctionalState PassAllMulticast;
0632
0633 FunctionalState SrcAddrFiltering;
0634
0635 FunctionalState SrcAddrInverseFiltering;
0636
0637 FunctionalState DestAddrInverseFiltering;
0638
0639 FunctionalState BroadcastFilter;
0640
0641 uint32_t ControlPacketsFilter;
0642
0643 } ETH_MACFilterConfigTypeDef;
0644
0645
0646
0647
0648
0649
0650
0651 typedef struct
0652 {
0653 FunctionalState WakeUpPacket;
0654
0655 FunctionalState MagicPacket;
0656
0657 FunctionalState GlobalUnicast;
0658
0659 FunctionalState WakeUpForward;
0660
0661 } ETH_PowerDownConfigTypeDef;
0662
0663
0664
0665
0666
0667
0668
0669
0670
0671
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689
0690
0691
0692
0693
0694
0695
0696
0697 #define ETH_DMATXNDESCRF_B1AP 0xFFFFFFFFU
0698
0699
0700
0701
0702 #define ETH_DMATXNDESCRF_B2AP 0xFFFFFFFFU
0703
0704
0705
0706
0707 #define ETH_DMATXNDESCRF_IOC 0x80000000U
0708 #define ETH_DMATXNDESCRF_TTSE 0x40000000U
0709 #define ETH_DMATXNDESCRF_B2L 0x3FFF0000U
0710 #define ETH_DMATXNDESCRF_VTIR 0x0000C000U
0711 #define ETH_DMATXNDESCRF_VTIR_DISABLE 0x00000000U
0712 #define ETH_DMATXNDESCRF_VTIR_REMOVE 0x00004000U
0713 #define ETH_DMATXNDESCRF_VTIR_INSERT 0x00008000U
0714 #define ETH_DMATXNDESCRF_VTIR_REPLACE 0x0000C000U
0715 #define ETH_DMATXNDESCRF_B1L 0x00003FFFU
0716 #define ETH_DMATXNDESCRF_HL 0x000003FFU
0717
0718
0719
0720
0721 #define ETH_DMATXNDESCRF_OWN 0x80000000U
0722 #define ETH_DMATXNDESCRF_CTXT 0x40000000U
0723 #define ETH_DMATXNDESCRF_FD 0x20000000U
0724 #define ETH_DMATXNDESCRF_LD 0x10000000U
0725 #define ETH_DMATXNDESCRF_CPC 0x0C000000U
0726 #define ETH_DMATXNDESCRF_CPC_CRCPAD_INSERT 0x00000000U
0727 #define ETH_DMATXNDESCRF_CPC_CRC_INSERT 0x04000000U
0728 #define ETH_DMATXNDESCRF_CPC_DISABLE 0x08000000U
0729 #define ETH_DMATXNDESCRF_CPC_CRC_REPLACE 0x0C000000U
0730 #define ETH_DMATXNDESCRF_SAIC 0x03800000U
0731 #define ETH_DMATXNDESCRF_SAIC_DISABLE 0x00000000U
0732 #define ETH_DMATXNDESCRF_SAIC_INSERT 0x00800000U
0733 #define ETH_DMATXNDESCRF_SAIC_REPLACE 0x01000000U
0734 #define ETH_DMATXNDESCRF_THL 0x00780000U
0735 #define ETH_DMATXNDESCRF_TSE 0x00040000U
0736 #define ETH_DMATXNDESCRF_CIC 0x00030000U
0737 #define ETH_DMATXNDESCRF_CIC_DISABLE 0x00000000U
0738 #define ETH_DMATXNDESCRF_CIC_IPHDR_INSERT 0x00010000U
0739 #define ETH_DMATXNDESCRF_CIC_IPHDR_PAYLOAD_INSERT 0x00020000U
0740
0741
0742
0743 #define ETH_DMATXNDESCRF_CIC_IPHDR_PAYLOAD_INSERT_PHDR_CALC 0x00030000U
0744
0745
0746
0747 #define ETH_DMATXNDESCRF_TPL 0x0003FFFFU
0748 #define ETH_DMATXNDESCRF_FL 0x00007FFFU
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766 #define ETH_DMATXNDESCWBF_TTSL 0xFFFFFFFFU
0767
0768
0769
0770
0771 #define ETH_DMATXNDESCWBF_TTSH 0xFFFFFFFFU
0772
0773
0774
0775
0776 #define ETH_DMATXNDESCWBF_OWN 0x80000000U
0777 #define ETH_DMATXNDESCWBF_CTXT 0x40000000U
0778 #define ETH_DMATXNDESCWBF_FD 0x20000000U
0779 #define ETH_DMATXNDESCWBF_LD 0x10000000U
0780 #define ETH_DMATXNDESCWBF_TTSS 0x00020000U
0781 #define ETH_DMATXNDESCWBF_DP 0x04000000U
0782 #define ETH_DMATXNDESCWBF_TTSE 0x02000000U
0783 #define ETH_DMATXNDESCWBF_ES 0x00008000U
0784 #define ETH_DMATXNDESCWBF_JT 0x00004000U
0785 #define ETH_DMATXNDESCWBF_FF 0x00002000U
0786 #define ETH_DMATXNDESCWBF_PCE 0x00001000U
0787 #define ETH_DMATXNDESCWBF_LCA 0x00000800U
0788 #define ETH_DMATXNDESCWBF_NC 0x00000400U
0789 #define ETH_DMATXNDESCWBF_LCO 0x00000200U
0790 #define ETH_DMATXNDESCWBF_EC 0x00000100U
0791 #define ETH_DMATXNDESCWBF_CC 0x000000F0U
0792 #define ETH_DMATXNDESCWBF_ED 0x00000008U
0793 #define ETH_DMATXNDESCWBF_UF 0x00000004U
0794 #define ETH_DMATXNDESCWBF_DB 0x00000002U
0795 #define ETH_DMATXNDESCWBF_IHE 0x00000004U
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813 #define ETH_DMATXCDESC_TTSL 0xFFFFFFFFU
0814
0815
0816
0817
0818 #define ETH_DMATXCDESC_TTSH 0xFFFFFFFFU
0819
0820
0821
0822
0823 #define ETH_DMATXCDESC_IVT 0xFFFF0000U
0824 #define ETH_DMATXCDESC_MSS 0x00003FFFU
0825
0826
0827
0828
0829 #define ETH_DMATXCDESC_OWN 0x80000000U
0830 #define ETH_DMATXCDESC_CTXT 0x40000000U
0831 #define ETH_DMATXCDESC_OSTC 0x08000000U
0832 #define ETH_DMATXCDESC_TCMSSV 0x04000000U
0833 #define ETH_DMATXCDESC_CDE 0x00800000U
0834 #define ETH_DMATXCDESC_IVTIR 0x000C0000U
0835 #define ETH_DMATXCDESC_IVTIR_DISABLE 0x00000000U
0836 #define ETH_DMATXCDESC_IVTIR_REMOVE 0x00040000U
0837 #define ETH_DMATXCDESC_IVTIR_INSERT 0x00080000U
0838 #define ETH_DMATXCDESC_IVTIR_REPLACE 0x000C0000U
0839 #define ETH_DMATXCDESC_IVLTV 0x00020000U
0840 #define ETH_DMATXCDESC_VLTV 0x00010000U
0841 #define ETH_DMATXCDESC_VT 0x0000FFFFU
0842
0843
0844
0845
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868 #define ETH_DMARXNDESCRF_BUF1AP 0xFFFFFFFFU
0869
0870
0871
0872
0873 #define ETH_DMARXNDESCRF_BUF2AP 0xFFFFFFFFU
0874
0875
0876
0877
0878 #define ETH_DMARXNDESCRF_OWN 0x80000000U
0879 #define ETH_DMARXNDESCRF_IOC 0x40000000U
0880 #define ETH_DMARXNDESCRF_BUF2V 0x02000000U
0881 #define ETH_DMARXNDESCRF_BUF1V 0x01000000U
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899 #define ETH_DMARXNDESCWBF_IVT 0xFFFF0000U
0900 #define ETH_DMARXNDESCWBF_OVT 0x0000FFFFU
0901
0902
0903
0904
0905 #define ETH_DMARXNDESCWBF_OPC 0xFFFF0000U
0906 #define ETH_DMARXNDESCWBF_TD 0x00008000U
0907 #define ETH_DMARXNDESCWBF_TSA 0x00004000U
0908 #define ETH_DMARXNDESCWBF_PV 0x00002000U
0909 #define ETH_DMARXNDESCWBF_PFT 0x00001000U
0910 #define ETH_DMARXNDESCWBF_PMT_NO 0x00000000U
0911 #define ETH_DMARXNDESCWBF_PMT_SYNC 0x00000100U
0912 #define ETH_DMARXNDESCWBF_PMT_FUP 0x00000200U
0913 #define ETH_DMARXNDESCWBF_PMT_DREQ 0x00000300U
0914 #define ETH_DMARXNDESCWBF_PMT_DRESP 0x00000400U
0915 #define ETH_DMARXNDESCWBF_PMT_PDREQ 0x00000500U
0916 #define ETH_DMARXNDESCWBF_PMT_PDRESP 0x00000600U
0917 #define ETH_DMARXNDESCWBF_PMT_PDRESPFUP 0x00000700U
0918 #define ETH_DMARXNDESCWBF_PMT_ANNOUNCE 0x00000800U
0919 #define ETH_DMARXNDESCWBF_PMT_MANAG 0x00000900U
0920 #define ETH_DMARXNDESCWBF_PMT_SIGN 0x00000A00U
0921 #define ETH_DMARXNDESCWBF_PMT_RESERVED 0x00000F00U
0922 #define ETH_DMARXNDESCWBF_IPCE 0x00000080U
0923 #define ETH_DMARXNDESCWBF_IPCB 0x00000040U
0924 #define ETH_DMARXNDESCWBF_IPV6 0x00000020U
0925 #define ETH_DMARXNDESCWBF_IPV4 0x00000010U
0926 #define ETH_DMARXNDESCWBF_IPHE 0x00000008U
0927 #define ETH_DMARXNDESCWBF_PT 0x00000003U
0928 #define ETH_DMARXNDESCWBF_PT_UNKNOWN 0x00000000U
0929 #define ETH_DMARXNDESCWBF_PT_UDP 0x00000001U
0930 #define ETH_DMARXNDESCWBF_PT_TCP 0x00000002U
0931 #define ETH_DMARXNDESCWBF_PT_ICMP 0x00000003U
0932
0933
0934
0935
0936 #define ETH_DMARXNDESCWBF_L3L4FM 0x20000000U
0937 #define ETH_DMARXNDESCWBF_L4FM 0x10000000U
0938 #define ETH_DMARXNDESCWBF_L3FM 0x08000000U
0939 #define ETH_DMARXNDESCWBF_MADRM 0x07F80000U
0940 #define ETH_DMARXNDESCWBF_HF 0x00040000U
0941 #define ETH_DMARXNDESCWBF_DAF 0x00020000U
0942 #define ETH_DMARXNDESCWBF_SAF 0x00010000U
0943 #define ETH_DMARXNDESCWBF_VF 0x00008000U
0944 #define ETH_DMARXNDESCWBF_ARPNR 0x00000400U
0945
0946
0947
0948
0949 #define ETH_DMARXNDESCWBF_OWN 0x80000000U
0950 #define ETH_DMARXNDESCWBF_CTXT 0x40000000U
0951 #define ETH_DMARXNDESCWBF_FD 0x20000000U
0952 #define ETH_DMARXNDESCWBF_LD 0x10000000U
0953 #define ETH_DMARXNDESCWBF_RS2V 0x08000000U
0954 #define ETH_DMARXNDESCWBF_RS1V 0x04000000U
0955 #define ETH_DMARXNDESCWBF_RS0V 0x02000000U
0956 #define ETH_DMARXNDESCWBF_CE 0x01000000U
0957 #define ETH_DMARXNDESCWBF_GP 0x00800000U
0958 #define ETH_DMARXNDESCWBF_RWT 0x00400000U
0959 #define ETH_DMARXNDESCWBF_OE 0x00200000U
0960 #define ETH_DMARXNDESCWBF_RE 0x00100000U
0961 #define ETH_DMARXNDESCWBF_DE 0x00080000U
0962 #define ETH_DMARXNDESCWBF_LT 0x00070000U
0963 #define ETH_DMARXNDESCWBF_LT_LP 0x00000000U
0964 #define ETH_DMARXNDESCWBF_LT_TP 0x00010000U
0965 #define ETH_DMARXNDESCWBF_LT_ARP 0x00030000U
0966 #define ETH_DMARXNDESCWBF_LT_VLAN 0x00040000U
0967 #define ETH_DMARXNDESCWBF_LT_DVLAN 0x00050000U
0968 #define ETH_DMARXNDESCWBF_LT_MAC 0x00060000U
0969 #define ETH_DMARXNDESCWBF_LT_OAM 0x00070000U
0970 #define ETH_DMARXNDESCWBF_ES 0x00008000U
0971 #define ETH_DMARXNDESCWBF_PL 0x00007FFFU
0972
0973
0974
0975
0976
0977
0978
0979
0980
0981
0982
0983
0984
0985
0986
0987
0988
0989 #define ETH_DMARXCDESC_RTSL 0xFFFFFFFFU
0990
0991
0992
0993
0994 #define ETH_DMARXCDESC_RTSH 0xFFFFFFFFU
0995
0996
0997
0998
0999 #define ETH_DMARXCDESC_OWN 0x80000000U
1000 #define ETH_DMARXCDESC_CTXT 0x40000000U
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010 #define ETH_MAX_PACKET_SIZE 1528U
1011 #define ETH_HEADER 14U
1012 #define ETH_CRC 4U
1013 #define ETH_VLAN_TAG 4U
1014 #define ETH_MIN_PAYLOAD 46U
1015 #define ETH_MAX_PAYLOAD 1500U
1016 #define ETH_JUMBO_FRAME_PAYLOAD 9000U
1017
1018
1019
1020
1021
1022
1023
1024
1025 #define HAL_ETH_ERROR_NONE 0x00000000U
1026 #define HAL_ETH_ERROR_PARAM 0x00000001U
1027 #define HAL_ETH_ERROR_BUSY 0x00000002U
1028 #define HAL_ETH_ERROR_TIMEOUT 0x00000004U
1029 #define HAL_ETH_ERROR_DMA 0x00000008U
1030 #define HAL_ETH_ERROR_MAC 0x00000010U
1031 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1032 #define HAL_ETH_ERROR_INVALID_CALLBACK 0x00000020U
1033 #endif
1034
1035
1036
1037
1038
1039
1040
1041
1042 #define ETH_TX_PACKETS_FEATURES_CSUM 0x00000001U
1043 #define ETH_TX_PACKETS_FEATURES_SAIC 0x00000002U
1044 #define ETH_TX_PACKETS_FEATURES_VLANTAG 0x00000004U
1045 #define ETH_TX_PACKETS_FEATURES_INNERVLANTAG 0x00000008U
1046 #define ETH_TX_PACKETS_FEATURES_TSO 0x00000010U
1047 #define ETH_TX_PACKETS_FEATURES_CRCPAD 0x00000020U
1048
1049
1050
1051
1052
1053
1054
1055
1056 #define ETH_SRC_ADDR_CONTROL_DISABLE ETH_DMATXNDESCRF_SAIC_DISABLE
1057 #define ETH_SRC_ADDR_INSERT ETH_DMATXNDESCRF_SAIC_INSERT
1058 #define ETH_SRC_ADDR_REPLACE ETH_DMATXNDESCRF_SAIC_REPLACE
1059
1060
1061
1062
1063
1064
1065
1066
1067 #define ETH_CRC_PAD_DISABLE ETH_DMATXNDESCRF_CPC_DISABLE
1068 #define ETH_CRC_PAD_INSERT ETH_DMATXNDESCRF_CPC_CRCPAD_INSERT
1069 #define ETH_CRC_INSERT ETH_DMATXNDESCRF_CPC_CRC_INSERT
1070 #define ETH_CRC_REPLACE ETH_DMATXNDESCRF_CPC_CRC_REPLACE
1071
1072
1073
1074
1075
1076
1077
1078
1079 #define ETH_CHECKSUM_DISABLE ETH_DMATXNDESCRF_CIC_DISABLE
1080 #define ETH_CHECKSUM_IPHDR_INSERT ETH_DMATXNDESCRF_CIC_IPHDR_INSERT
1081 #define ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT ETH_DMATXNDESCRF_CIC_IPHDR_PAYLOAD_INSERT
1082 #define ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC ETH_DMATXNDESCRF_CIC_IPHDR_PAYLOAD_INSERT_PHDR_CALC
1083
1084
1085
1086
1087
1088
1089
1090
1091 #define ETH_VLAN_DISABLE ETH_DMATXNDESCRF_VTIR_DISABLE
1092 #define ETH_VLAN_REMOVE ETH_DMATXNDESCRF_VTIR_REMOVE
1093 #define ETH_VLAN_INSERT ETH_DMATXNDESCRF_VTIR_INSERT
1094 #define ETH_VLAN_REPLACE ETH_DMATXNDESCRF_VTIR_REPLACE
1095
1096
1097
1098
1099
1100
1101
1102
1103 #define ETH_INNER_VLAN_DISABLE ETH_DMATXCDESC_IVTIR_DISABLE
1104 #define ETH_INNER_VLAN_REMOVE ETH_DMATXCDESC_IVTIR_REMOVE
1105 #define ETH_INNER_VLAN_INSERT ETH_DMATXCDESC_IVTIR_INSERT
1106 #define ETH_INNER_VLAN_REPLACE ETH_DMATXCDESC_IVTIR_REPLACE
1107
1108
1109
1110
1111
1112
1113
1114
1115 #define ETH_CHECKSUM_BYPASSED ETH_DMARXNDESCWBF_IPCB
1116 #define ETH_CHECKSUM_IP_HEADER_ERROR ETH_DMARXNDESCWBF_IPHE
1117 #define ETH_CHECKSUM_IP_PAYLOAD_ERROR ETH_DMARXNDESCWBF_IPCE
1118
1119
1120
1121
1122
1123
1124
1125
1126 #define ETH_IP_HEADER_IPV4 ETH_DMARXNDESCWBF_IPV4
1127 #define ETH_IP_HEADER_IPV6 ETH_DMARXNDESCWBF_IPV6
1128
1129
1130
1131
1132
1133
1134
1135
1136 #define ETH_IP_PAYLOAD_UNKNOWN ETH_DMARXNDESCWBF_PT_UNKNOWN
1137 #define ETH_IP_PAYLOAD_UDP ETH_DMARXNDESCWBF_PT_UDP
1138 #define ETH_IP_PAYLOAD_TCP ETH_DMARXNDESCWBF_PT_TCP
1139 #define ETH_IP_PAYLOAD_ICMPN ETH_DMARXNDESCWBF_PT_ICMP
1140
1141
1142
1143
1144
1145
1146
1147
1148 #define ETH_HASH_FILTER_PASS ETH_DMARXNDESCWBF_HF
1149 #define ETH_VLAN_FILTER_PASS ETH_DMARXNDESCWBF_VF
1150 #define ETH_DEST_ADDRESS_FAIL ETH_DMARXNDESCWBF_DAF
1151 #define ETH_SOURCE_ADDRESS_FAIL ETH_DMARXNDESCWBF_SAF
1152
1153
1154
1155
1156
1157
1158
1159 #define ETH_L3_FILTER0_MATCH ETH_DMARXNDESCWBF_L3FM
1160 #define ETH_L3_FILTER1_MATCH (ETH_DMARXNDESCWBF_L3FM | ETH_DMARXNDESCWBF_L3L4FM)
1161
1162
1163
1164
1165
1166
1167
1168
1169 #define ETH_L4_FILTER0_MATCH ETH_DMARXNDESCWBF_L4FM
1170 #define ETH_L4_FILTER1_MATCH (ETH_DMARXNDESCWBF_L4FM | ETH_DMARXNDESCWBF_L3L4FM)
1171
1172
1173
1174
1175
1176
1177
1178
1179 #define ETH_DRIBBLE_BIT_ERROR ETH_DMARXNDESCWBF_DE
1180 #define ETH_RECEIVE_ERROR ETH_DMARXNDESCWBF_RE
1181 #define ETH_RECEIVE_OVERFLOW ETH_DMARXNDESCWBF_OE
1182 #define ETH_WATCHDOG_TIMEOUT ETH_DMARXNDESCWBF_RWT
1183 #define ETH_GIANT_PACKET ETH_DMARXNDESCWBF_GP
1184 #define ETH_CRC_ERROR ETH_DMARXNDESCWBF_CE
1185
1186
1187
1188
1189
1190
1191
1192
1193 #define ETH_DMAARBITRATION_RX ETH_DMAMR_DA
1194 #define ETH_DMAARBITRATION_RX1_TX1 0x00000000U
1195 #define ETH_DMAARBITRATION_RX2_TX1 ETH_DMAMR_PR_2_1
1196 #define ETH_DMAARBITRATION_RX3_TX1 ETH_DMAMR_PR_3_1
1197 #define ETH_DMAARBITRATION_RX4_TX1 ETH_DMAMR_PR_4_1
1198 #define ETH_DMAARBITRATION_RX5_TX1 ETH_DMAMR_PR_5_1
1199 #define ETH_DMAARBITRATION_RX6_TX1 ETH_DMAMR_PR_6_1
1200 #define ETH_DMAARBITRATION_RX7_TX1 ETH_DMAMR_PR_7_1
1201 #define ETH_DMAARBITRATION_RX8_TX1 ETH_DMAMR_PR_8_1
1202 #define ETH_DMAARBITRATION_TX (ETH_DMAMR_TXPR | ETH_DMAMR_DA)
1203 #define ETH_DMAARBITRATION_TX1_RX1 0x00000000U
1204 #define ETH_DMAARBITRATION_TX2_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_2_1)
1205 #define ETH_DMAARBITRATION_TX3_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_3_1)
1206 #define ETH_DMAARBITRATION_TX4_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_4_1)
1207 #define ETH_DMAARBITRATION_TX5_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_5_1)
1208 #define ETH_DMAARBITRATION_TX6_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_6_1)
1209 #define ETH_DMAARBITRATION_TX7_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_7_1)
1210 #define ETH_DMAARBITRATION_TX8_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_8_1)
1211
1212
1213
1214
1215
1216
1217
1218
1219 #define ETH_BURSTLENGTH_FIXED ETH_DMASBMR_FB
1220 #define ETH_BURSTLENGTH_MIXED ETH_DMASBMR_MB
1221 #define ETH_BURSTLENGTH_UNSPECIFIED 0x00000000U
1222
1223
1224
1225
1226
1227
1228
1229
1230 #define ETH_TXDMABURSTLENGTH_1BEAT ETH_DMACTCR_TPBL_1PBL
1231 #define ETH_TXDMABURSTLENGTH_2BEAT ETH_DMACTCR_TPBL_2PBL
1232 #define ETH_TXDMABURSTLENGTH_4BEAT ETH_DMACTCR_TPBL_4PBL
1233 #define ETH_TXDMABURSTLENGTH_8BEAT ETH_DMACTCR_TPBL_8PBL
1234 #define ETH_TXDMABURSTLENGTH_16BEAT ETH_DMACTCR_TPBL_16PBL
1235 #define ETH_TXDMABURSTLENGTH_32BEAT ETH_DMACTCR_TPBL_32PBL
1236
1237
1238
1239
1240
1241
1242
1243
1244 #define ETH_RXDMABURSTLENGTH_1BEAT ETH_DMACRCR_RPBL_1PBL
1245 #define ETH_RXDMABURSTLENGTH_2BEAT ETH_DMACRCR_RPBL_2PBL
1246 #define ETH_RXDMABURSTLENGTH_4BEAT ETH_DMACRCR_RPBL_4PBL
1247 #define ETH_RXDMABURSTLENGTH_8BEAT ETH_DMACRCR_RPBL_8PBL
1248 #define ETH_RXDMABURSTLENGTH_16BEAT ETH_DMACRCR_RPBL_16PBL
1249 #define ETH_RXDMABURSTLENGTH_32BEAT ETH_DMACRCR_RPBL_32PBL
1250
1251
1252
1253
1254
1255
1256
1257
1258 #define ETH_DMA_NORMAL_IT ETH_DMACIER_NIE
1259 #define ETH_DMA_ABNORMAL_IT ETH_DMACIER_AIE
1260 #define ETH_DMA_CONTEXT_DESC_ERROR_IT ETH_DMACIER_CDEE
1261 #define ETH_DMA_FATAL_BUS_ERROR_IT ETH_DMACIER_FBEE
1262 #define ETH_DMA_EARLY_RX_IT ETH_DMACIER_ERIE
1263 #define ETH_DMA_EARLY_TX_IT ETH_DMACIER_ETIE
1264 #define ETH_DMA_RX_WATCHDOG_TIMEOUT_IT ETH_DMACIER_RWTE
1265 #define ETH_DMA_RX_PROCESS_STOPPED_IT ETH_DMACIER_RSE
1266 #define ETH_DMA_RX_BUFFER_UNAVAILABLE_IT ETH_DMACIER_RBUE
1267 #define ETH_DMA_RX_IT ETH_DMACIER_RIE
1268 #define ETH_DMA_TX_BUFFER_UNAVAILABLE_IT ETH_DMACIER_TBUE
1269 #define ETH_DMA_TX_PROCESS_STOPPED_IT ETH_DMACIER_TXSE
1270 #define ETH_DMA_TX_IT ETH_DMACIER_TIE
1271
1272
1273
1274
1275
1276
1277
1278
1279 #define ETH_DMA_RX_NO_ERROR_FLAG 0x00000000U
1280 #define ETH_DMA_RX_DESC_READ_ERROR_FLAG (ETH_DMACSR_REB_BIT_2 | ETH_DMACSR_REB_BIT_1 | ETH_DMACSR_REB_BIT_0)
1281 #define ETH_DMA_RX_DESC_WRITE_ERROR_FLAG (ETH_DMACSR_REB_BIT_2 | ETH_DMACSR_REB_BIT_1)
1282 #define ETH_DMA_RX_BUFFER_READ_ERROR_FLAG (ETH_DMACSR_REB_BIT_2 | ETH_DMACSR_REB_BIT_0)
1283 #define ETH_DMA_RX_BUFFER_WRITE_ERROR_FLAG ETH_DMACSR_REB_BIT_2
1284 #define ETH_DMA_TX_NO_ERROR_FLAG 0x00000000U
1285 #define ETH_DMA_TX_DESC_READ_ERROR_FLAG (ETH_DMACSR_TEB_BIT_2 | ETH_DMACSR_TEB_BIT_1 | ETH_DMACSR_TEB_BIT_0)
1286 #define ETH_DMA_TX_DESC_WRITE_ERROR_FLAG (ETH_DMACSR_TEB_BIT_2 | ETH_DMACSR_TEB_BIT_1)
1287 #define ETH_DMA_TX_BUFFER_READ_ERROR_FLAG (ETH_DMACSR_TEB_BIT_2 | ETH_DMACSR_TEB_BIT_0)
1288 #define ETH_DMA_TX_BUFFER_WRITE_ERROR_FLAG ETH_DMACSR_TEB_BIT_2
1289 #define ETH_DMA_CONTEXT_DESC_ERROR_FLAG ETH_DMACSR_CDE
1290 #define ETH_DMA_FATAL_BUS_ERROR_FLAG ETH_DMACSR_FBE
1291 #define ETH_DMA_EARLY_TX_IT_FLAG ETH_DMACSR_ERI
1292 #define ETH_DMA_RX_WATCHDOG_TIMEOUT_FLAG ETH_DMACSR_RWT
1293 #define ETH_DMA_RX_PROCESS_STOPPED_FLAG ETH_DMACSR_RPS
1294 #define ETH_DMA_RX_BUFFER_UNAVAILABLE_FLAG ETH_DMACSR_RBU
1295 #define ETH_DMA_TX_PROCESS_STOPPED_FLAG ETH_DMACSR_TPS
1296
1297
1298
1299
1300
1301
1302
1303
1304 #define ETH_TRANSMITSTOREFORWARD ETH_MTLTQOMR_TSF
1305 #define ETH_TRANSMITTHRESHOLD_32 ETH_MTLTQOMR_TTC_32BITS
1306 #define ETH_TRANSMITTHRESHOLD_64 ETH_MTLTQOMR_TTC_64BITS
1307 #define ETH_TRANSMITTHRESHOLD_96 ETH_MTLTQOMR_TTC_96BITS
1308 #define ETH_TRANSMITTHRESHOLD_128 ETH_MTLTQOMR_TTC_128BITS
1309 #define ETH_TRANSMITTHRESHOLD_192 ETH_MTLTQOMR_TTC_192BITS
1310 #define ETH_TRANSMITTHRESHOLD_256 ETH_MTLTQOMR_TTC_256BITS
1311 #define ETH_TRANSMITTHRESHOLD_384 ETH_MTLTQOMR_TTC_384BITS
1312 #define ETH_TRANSMITTHRESHOLD_512 ETH_MTLTQOMR_TTC_512BITS
1313
1314
1315
1316
1317
1318
1319
1320
1321 #define ETH_RECEIVESTOREFORWARD ETH_MTLRQOMR_RSF
1322 #define ETH_RECEIVETHRESHOLD8_64 ETH_MTLRQOMR_RTC_64BITS
1323 #define ETH_RECEIVETHRESHOLD8_32 ETH_MTLRQOMR_RTC_32BITS
1324 #define ETH_RECEIVETHRESHOLD8_96 ETH_MTLRQOMR_RTC_96BITS
1325 #define ETH_RECEIVETHRESHOLD8_128 ETH_MTLRQOMR_RTC_128BITS
1326
1327
1328
1329
1330
1331
1332
1333
1334 #define ETH_PAUSELOWTHRESHOLD_MINUS_4 ETH_MACTFCR_PLT_MINUS4
1335 #define ETH_PAUSELOWTHRESHOLD_MINUS_28 ETH_MACTFCR_PLT_MINUS28
1336 #define ETH_PAUSELOWTHRESHOLD_MINUS_36 ETH_MACTFCR_PLT_MINUS36
1337 #define ETH_PAUSELOWTHRESHOLD_MINUS_144 ETH_MACTFCR_PLT_MINUS144
1338 #define ETH_PAUSELOWTHRESHOLD_MINUS_256 ETH_MACTFCR_PLT_MINUS256
1339 #define ETH_PAUSELOWTHRESHOLD_MINUS_512 ETH_MACTFCR_PLT_MINUS512
1340
1341
1342
1343
1344
1345
1346
1347
1348 #define ETH_WATCHDOGTIMEOUT_2KB ETH_MACWTR_WTO_2KB
1349 #define ETH_WATCHDOGTIMEOUT_3KB ETH_MACWTR_WTO_3KB
1350 #define ETH_WATCHDOGTIMEOUT_4KB ETH_MACWTR_WTO_4KB
1351 #define ETH_WATCHDOGTIMEOUT_5KB ETH_MACWTR_WTO_5KB
1352 #define ETH_WATCHDOGTIMEOUT_6KB ETH_MACWTR_WTO_6KB
1353 #define ETH_WATCHDOGTIMEOUT_7KB ETH_MACWTR_WTO_7KB
1354 #define ETH_WATCHDOGTIMEOUT_8KB ETH_MACWTR_WTO_8KB
1355 #define ETH_WATCHDOGTIMEOUT_9KB ETH_MACWTR_WTO_9KB
1356 #define ETH_WATCHDOGTIMEOUT_10KB ETH_MACWTR_WTO_10KB
1357 #define ETH_WATCHDOGTIMEOUT_11KB ETH_MACWTR_WTO_12KB
1358 #define ETH_WATCHDOGTIMEOUT_12KB ETH_MACWTR_WTO_12KB
1359 #define ETH_WATCHDOGTIMEOUT_13KB ETH_MACWTR_WTO_13KB
1360 #define ETH_WATCHDOGTIMEOUT_14KB ETH_MACWTR_WTO_14KB
1361 #define ETH_WATCHDOGTIMEOUT_15KB ETH_MACWTR_WTO_15KB
1362 #define ETH_WATCHDOGTIMEOUT_16KB ETH_MACWTR_WTO_16KB
1363
1364
1365
1366
1367
1368
1369
1370
1371 #define ETH_INTERPACKETGAP_96BIT ETH_MACCR_IPG_96BIT
1372 #define ETH_INTERPACKETGAP_88BIT ETH_MACCR_IPG_88BIT
1373 #define ETH_INTERPACKETGAP_80BIT ETH_MACCR_IPG_80BIT
1374 #define ETH_INTERPACKETGAP_72BIT ETH_MACCR_IPG_72BIT
1375 #define ETH_INTERPACKETGAP_64BIT ETH_MACCR_IPG_64BIT
1376 #define ETH_INTERPACKETGAP_56BIT ETH_MACCR_IPG_56BIT
1377 #define ETH_INTERPACKETGAP_48BIT ETH_MACCR_IPG_48BIT
1378 #define ETH_INTERPACKETGAP_40BIT ETH_MACCR_IPG_40BIT
1379
1380
1381
1382
1383
1384
1385
1386
1387 #define ETH_SPEED_10M 0x00000000U
1388 #define ETH_SPEED_100M ETH_MACCR_FES
1389
1390
1391
1392
1393
1394
1395
1396
1397 #define ETH_FULLDUPLEX_MODE ETH_MACCR_DM
1398 #define ETH_HALFDUPLEX_MODE 0x00000000U
1399
1400
1401
1402
1403
1404
1405
1406
1407 #define ETH_BACKOFFLIMIT_10 ETH_MACCR_BL_10
1408 #define ETH_BACKOFFLIMIT_8 ETH_MACCR_BL_8
1409 #define ETH_BACKOFFLIMIT_4 ETH_MACCR_BL_4
1410 #define ETH_BACKOFFLIMIT_1 ETH_MACCR_BL_1
1411
1412
1413
1414
1415
1416
1417
1418
1419 #define ETH_PREAMBLELENGTH_7 ETH_MACCR_PRELEN_7
1420 #define ETH_PREAMBLELENGTH_5 ETH_MACCR_PRELEN_5
1421 #define ETH_PREAMBLELENGTH_3 ETH_MACCR_PRELEN_3
1422
1423
1424
1425
1426
1427
1428
1429
1430 #define ETH_SOURCEADDRESS_DISABLE 0x00000000U
1431 #define ETH_SOURCEADDRESS_INSERT_ADDR0 ETH_MACCR_SARC_INSADDR0
1432 #define ETH_SOURCEADDRESS_INSERT_ADDR1 ETH_MACCR_SARC_INSADDR1
1433 #define ETH_SOURCEADDRESS_REPLACE_ADDR0 ETH_MACCR_SARC_REPADDR0
1434 #define ETH_SOURCEADDRESS_REPLACE_ADDR1 ETH_MACCR_SARC_REPADDR1
1435
1436
1437
1438
1439
1440
1441
1442
1443 #define ETH_CTRLPACKETS_BLOCK_ALL ETH_MACPFR_PCF_BLOCKALL
1444 #define ETH_CTRLPACKETS_FORWARD_ALL_EXCEPT_PA ETH_MACPFR_PCF_FORWARDALLEXCEPTPA
1445 #define ETH_CTRLPACKETS_FORWARD_ALL ETH_MACPFR_PCF_FORWARDALL
1446 #define ETH_CTRLPACKETS_FORWARD_PASSED_ADDR_FILTER ETH_MACPFR_PCF_FORWARDPASSEDADDRFILTER
1447
1448
1449
1450
1451
1452
1453
1454
1455 #define ETH_VLANTAGCOMPARISON_16BIT 0x00000000U
1456 #define ETH_VLANTAGCOMPARISON_12BIT ETH_MACVTR_ETV
1457
1458
1459
1460
1461
1462
1463
1464
1465 #define ETH_MAC_ADDRESS0 0x00000000U
1466 #define ETH_MAC_ADDRESS1 0x00000008U
1467 #define ETH_MAC_ADDRESS2 0x00000010U
1468 #define ETH_MAC_ADDRESS3 0x00000018U
1469
1470
1471
1472
1473
1474
1475
1476
1477 #define ETH_MAC_RX_STATUS_IT ETH_MACIER_RXSTSIE
1478 #define ETH_MAC_TX_STATUS_IT ETH_MACIER_TXSTSIE
1479 #define ETH_MAC_TIMESTAMP_IT ETH_MACIER_TSIE
1480 #define ETH_MAC_LPI_IT ETH_MACIER_LPIIE
1481 #define ETH_MAC_PMT_IT ETH_MACIER_PMTIE
1482 #define ETH_MAC_PHY_IT ETH_MACIER_PHYIE
1483
1484
1485
1486
1487
1488
1489
1490
1491 #define ETH_WAKEUP_PACKET_RECIEVED ETH_MACPCSR_RWKPRCVD
1492 #define ETH_MAGIC_PACKET_RECIEVED ETH_MACPCSR_MGKPRCVD
1493
1494
1495
1496
1497
1498
1499
1500
1501 #define ETH_RECEIVE_WATCHDOG_TIMEOUT ETH_MACRXTXSR_RWT
1502 #define ETH_EXECESSIVE_COLLISIONS ETH_MACRXTXSR_EXCOL
1503 #define ETH_LATE_COLLISIONS ETH_MACRXTXSR_LCOL
1504 #define ETH_EXECESSIVE_DEFERRAL ETH_MACRXTXSR_EXDEF
1505 #define ETH_LOSS_OF_CARRIER ETH_MACRXTXSR_LCARR
1506 #define ETH_NO_CARRIER ETH_MACRXTXSR_NCARR
1507 #define ETH_TRANSMIT_JABBR_TIMEOUT ETH_MACRXTXSR_TJT
1508
1509
1510
1511
1512
1513
1514
1515
1516 #define HAL_ETH_STATE_RESET 0x00000000U
1517 #define HAL_ETH_STATE_READY 0x00000010U
1518 #define HAL_ETH_STATE_BUSY 0x00000023U
1519 #define HAL_ETH_STATE_STARTED 0x00000023U
1520 #define HAL_ETH_STATE_ERROR 0x000000E0U
1521
1522
1523
1524
1525
1526
1527
1528
1529 #define HAL_ETH_PTP_NOT_CONFIGURED 0x00000000U
1530 #define HAL_ETH_PTP_CONFIGURED 0x00000001U
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1550 #define __HAL_ETH_RESET_HANDLE_STATE(__HANDLE__) do{ \
1551 (__HANDLE__)->gState = HAL_ETH_STATE_RESET; \
1552 (__HANDLE__)->MspInitCallback = NULL; \
1553 (__HANDLE__)->MspDeInitCallback = NULL; \
1554 } while(0)
1555 #else
1556 #define __HAL_ETH_RESET_HANDLE_STATE(__HANDLE__) do{ \
1557 (__HANDLE__)->gState = HAL_ETH_STATE_RESET; \
1558 } while(0)
1559 #endif
1560
1561
1562
1563
1564
1565
1566
1567
1568 #define __HAL_ETH_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMACIER |= (__INTERRUPT__))
1569
1570
1571
1572
1573
1574
1575
1576
1577 #define __HAL_ETH_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMACIER &= ~(__INTERRUPT__))
1578
1579
1580
1581
1582
1583
1584
1585 #define __HAL_ETH_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
1586 (((__HANDLE__)->Instance->DMACIER & (__INTERRUPT__)) == (__INTERRUPT__))
1587
1588
1589
1590
1591
1592
1593
1594 #define __HAL_ETH_DMA_GET_IT(__HANDLE__, __INTERRUPT__) \
1595 (((__HANDLE__)->Instance->DMACSR & (__INTERRUPT__)) == (__INTERRUPT__))
1596
1597
1598
1599
1600
1601
1602
1603 #define __HAL_ETH_DMA_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMACSR = (__INTERRUPT__))
1604
1605
1606
1607
1608
1609
1610
1611 #define __HAL_ETH_DMA_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->DMACSR &( __FLAG__)) == ( __FLAG__))
1612
1613
1614
1615
1616
1617
1618
1619 #define __HAL_ETH_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->DMACSR = ( __FLAG__))
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629 #define __HAL_ETH_MAC_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->MACIER |= (__INTERRUPT__))
1630
1631
1632
1633
1634
1635
1636
1637
1638 #define __HAL_ETH_MAC_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->MACIER &= ~(__INTERRUPT__))
1639
1640
1641
1642
1643
1644
1645
1646 #define __HAL_ETH_MAC_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->MACISR &\
1647 ( __INTERRUPT__)) == ( __INTERRUPT__))
1648
1649
1650 #define ETH_WAKEUP_EXTI_LINE 0x00400000U
1651
1652
1653
1654
1655
1656
1657
1658 #define __HAL_ETH_WAKEUP_EXTI_ENABLE_IT(__EXTI_LINE__) (EXTI_D1->IMR3 |= (__EXTI_LINE__))
1659
1660
1661
1662
1663
1664
1665
1666 #define __HAL_ETH_WAKEUP_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI_D1->PR3 & (__EXTI_LINE__))
1667
1668
1669
1670
1671
1672
1673
1674 #define __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI_D1->PR3 = (__EXTI_LINE__))
1675
1676 #if defined(DUAL_CORE)
1677
1678
1679
1680
1681
1682
1683 #define __HAL_ETH_WAKEUP_EXTID2_ENABLE_IT(__EXTI_LINE__) (EXTI_D2->IMR3 |= (__EXTI_LINE__))
1684
1685
1686
1687
1688
1689
1690
1691 #define __HAL_ETH_WAKEUP_EXTID2_GET_FLAG(__EXTI_LINE__) (EXTI_D2->PR3 & (__EXTI_LINE__))
1692
1693
1694
1695
1696
1697
1698
1699 #define __HAL_ETH_WAKEUP_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI_D2->PR3 = (__EXTI_LINE__))
1700 #endif
1701
1702
1703
1704
1705
1706
1707
1708 #define __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE(__EXTI_LINE__) (EXTI->FTSR3 &= ~(__EXTI_LINE__)); \
1709 (EXTI->RTSR3 |= (__EXTI_LINE__))
1710
1711
1712
1713
1714
1715
1716
1717 #define __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR3 &= ~(__EXTI_LINE__));\
1718 (EXTI->FTSR3 |= (__EXTI_LINE__))
1719
1720
1721
1722
1723
1724
1725
1726 #define __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR3 |= (__EXTI_LINE__));\
1727 (EXTI->FTSR3 |= (__EXTI_LINE__))
1728
1729
1730
1731
1732
1733
1734
1735 #define __HAL_ETH_WAKEUP_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER3 |= (__EXTI_LINE__))
1736 #define __HAL_ETH_GET_PTP_CONTROL(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->MACTSCR) & \
1737 (__FLAG__)) == (__FLAG__)) ? SET : RESET)
1738 #define __HAL_ETH_SET_PTP_CONTROL(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->MACTSCR |= (__FLAG__))
1739
1740
1741
1742
1743
1744
1745 #include "stm32h7xx_hal_eth_ex.h"
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757 HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth);
1758 HAL_StatusTypeDef HAL_ETH_DeInit(ETH_HandleTypeDef *heth);
1759 void HAL_ETH_MspInit(ETH_HandleTypeDef *heth);
1760 void HAL_ETH_MspDeInit(ETH_HandleTypeDef *heth);
1761
1762
1763 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1764 HAL_StatusTypeDef HAL_ETH_RegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID,
1765 pETH_CallbackTypeDef pCallback);
1766 HAL_StatusTypeDef HAL_ETH_UnRegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID);
1767 #endif
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777 HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth);
1778 HAL_StatusTypeDef HAL_ETH_Start_IT(ETH_HandleTypeDef *heth);
1779 HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth);
1780 HAL_StatusTypeDef HAL_ETH_Stop_IT(ETH_HandleTypeDef *heth);
1781
1782 HAL_StatusTypeDef HAL_ETH_ReadData(ETH_HandleTypeDef *heth, void **pAppBuff);
1783 HAL_StatusTypeDef HAL_ETH_RegisterRxAllocateCallback(ETH_HandleTypeDef *heth,
1784 pETH_rxAllocateCallbackTypeDef rxAllocateCallback);
1785 HAL_StatusTypeDef HAL_ETH_UnRegisterRxAllocateCallback(ETH_HandleTypeDef *heth);
1786 HAL_StatusTypeDef HAL_ETH_RegisterRxLinkCallback(ETH_HandleTypeDef *heth, pETH_rxLinkCallbackTypeDef rxLinkCallback);
1787 HAL_StatusTypeDef HAL_ETH_UnRegisterRxLinkCallback(ETH_HandleTypeDef *heth);
1788 HAL_StatusTypeDef HAL_ETH_GetRxDataErrorCode(const ETH_HandleTypeDef *heth, uint32_t *pErrorCode);
1789 HAL_StatusTypeDef HAL_ETH_RegisterTxFreeCallback(ETH_HandleTypeDef *heth, pETH_txFreeCallbackTypeDef txFreeCallback);
1790 HAL_StatusTypeDef HAL_ETH_UnRegisterTxFreeCallback(ETH_HandleTypeDef *heth);
1791 HAL_StatusTypeDef HAL_ETH_ReleaseTxPacket(ETH_HandleTypeDef *heth);
1792
1793 #ifdef HAL_ETH_USE_PTP
1794 HAL_StatusTypeDef HAL_ETH_PTP_SetConfig(ETH_HandleTypeDef *heth, ETH_PTP_ConfigTypeDef *ptpconfig);
1795 HAL_StatusTypeDef HAL_ETH_PTP_GetConfig(ETH_HandleTypeDef *heth, ETH_PTP_ConfigTypeDef *ptpconfig);
1796 HAL_StatusTypeDef HAL_ETH_PTP_SetTime(ETH_HandleTypeDef *heth, ETH_TimeTypeDef *time);
1797 HAL_StatusTypeDef HAL_ETH_PTP_GetTime(ETH_HandleTypeDef *heth, ETH_TimeTypeDef *time);
1798 HAL_StatusTypeDef HAL_ETH_PTP_AddTimeOffset(ETH_HandleTypeDef *heth, ETH_PtpUpdateTypeDef ptpoffsettype,
1799 ETH_TimeTypeDef *timeoffset);
1800 HAL_StatusTypeDef HAL_ETH_PTP_InsertTxTimestamp(ETH_HandleTypeDef *heth);
1801 HAL_StatusTypeDef HAL_ETH_PTP_GetTxTimestamp(ETH_HandleTypeDef *heth, ETH_TimeStampTypeDef *timestamp);
1802 HAL_StatusTypeDef HAL_ETH_PTP_GetRxTimestamp(ETH_HandleTypeDef *heth, ETH_TimeStampTypeDef *timestamp);
1803 HAL_StatusTypeDef HAL_ETH_RegisterTxPtpCallback(ETH_HandleTypeDef *heth, pETH_txPtpCallbackTypeDef txPtpCallback);
1804 HAL_StatusTypeDef HAL_ETH_UnRegisterTxPtpCallback(ETH_HandleTypeDef *heth);
1805 #endif
1806
1807 HAL_StatusTypeDef HAL_ETH_Transmit(ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig, uint32_t Timeout);
1808 HAL_StatusTypeDef HAL_ETH_Transmit_IT(ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig);
1809
1810 HAL_StatusTypeDef HAL_ETH_WritePHYRegister(const ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
1811 uint32_t RegValue);
1812 HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
1813 uint32_t *pRegValue);
1814
1815 void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth);
1816 void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth);
1817 void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth);
1818 void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth);
1819 void HAL_ETH_PMTCallback(ETH_HandleTypeDef *heth);
1820 void HAL_ETH_EEECallback(ETH_HandleTypeDef *heth);
1821 void HAL_ETH_WakeUpCallback(ETH_HandleTypeDef *heth);
1822 void HAL_ETH_RxAllocateCallback(uint8_t **buff);
1823 void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length);
1824 void HAL_ETH_TxFreeCallback(uint32_t *buff);
1825 void HAL_ETH_TxPtpCallback(uint32_t *buff, ETH_TimeStampTypeDef *timestamp);
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835 HAL_StatusTypeDef HAL_ETH_GetMACConfig(const ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf);
1836 HAL_StatusTypeDef HAL_ETH_GetDMAConfig(const ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf);
1837 HAL_StatusTypeDef HAL_ETH_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf);
1838 HAL_StatusTypeDef HAL_ETH_SetDMAConfig(ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf);
1839 void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth);
1840
1841
1842 void HAL_ETH_SetRxVLANIdentifier(ETH_HandleTypeDef *heth, uint32_t ComparisonBits,
1843 uint32_t VLANIdentifier);
1844
1845
1846 HAL_StatusTypeDef HAL_ETH_GetMACFilterConfig(const ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig);
1847 HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, const ETH_MACFilterConfigTypeDef *pFilterConfig);
1848 HAL_StatusTypeDef HAL_ETH_SetHashTable(ETH_HandleTypeDef *heth, uint32_t *pHashTable);
1849 HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(const ETH_HandleTypeDef *heth, uint32_t AddrNbr,
1850 const uint8_t *pMACAddr);
1851
1852
1853 void HAL_ETH_EnterPowerDownMode(ETH_HandleTypeDef *heth,
1854 const ETH_PowerDownConfigTypeDef *pPowerDownConfig);
1855 void HAL_ETH_ExitPowerDownMode(ETH_HandleTypeDef *heth);
1856 HAL_StatusTypeDef HAL_ETH_SetWakeUpFilter(ETH_HandleTypeDef *heth, uint32_t *pFilter, uint32_t Count);
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866 HAL_ETH_StateTypeDef HAL_ETH_GetState(const ETH_HandleTypeDef *heth);
1867 uint32_t HAL_ETH_GetError(const ETH_HandleTypeDef *heth);
1868 uint32_t HAL_ETH_GetDMAError(const ETH_HandleTypeDef *heth);
1869 uint32_t HAL_ETH_GetMACError(const ETH_HandleTypeDef *heth);
1870 uint32_t HAL_ETH_GetMACWakeUpSource(const ETH_HandleTypeDef *heth);
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887 #endif
1888
1889 #ifdef __cplusplus
1890 }
1891 #endif
1892
1893 #endif