HPM SDK
HPMicro Software Development Kit
hpm_enet_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_ENET_DRV_H
9 #define HPM_ENET_DRV_H
10 
11 /*---------------------------------------------------------------------
12  * Includes
13  *---------------------------------------------------------------------
14  */
15 #include "hpm_common.h"
16 #include "hpm_enet_regs.h"
17 #include "hpm_soc_feature.h"
18 #include "hpm_enet_soc_drv.h"
19 
27 /*---------------------------------------------------------------------
28  * Macro Constant Declarations
29  *---------------------------------------------------------------------
30  */
31 #define ENET_HEADER (14U)
32 #define ENET_EXTRA (2U)
33 #define ENET_VLAN_TAG (4U)
34 #define ENET_CRC (4U)
35 #define ENET_MIN_PAYLOAD (46U)
36 #define ENET_MAX_PAYLOAD (1500U)
37 #define ENET_MAX_FRAME_SIZE (1524U)
38 #define ENET_JUMBO_FRAME_PAYLOAD (9000U)
39 #define ENET_MAC (6)
40 #define ENET_ERROR (0)
41 #define ENET_SUCCESS (1)
43 #define ENET_ADJ_FREQ_BASE_ADDEND (0x80000000UL)
44 #define ENET_ONE_SEC_IN_NANOSEC (1000000000UL)
46 #define ENET_PPS_CMD_MASK (0x07UL)
47 #define ENET_PPS_CMD_OFS_FAC (3U)
49 #ifndef ENET_RETRY_CNT
50 #define ENET_RETRY_CNT (10000UL)
51 #endif
52 
53 /*---------------------------------------------------------------------
54  * Typedef Enum Declarations
55  *---------------------------------------------------------------------
56  */
57 
59 typedef enum {
64 
66 typedef enum {
70 
71 
73 typedef enum {
79  enet_pbl_32 = 32
81 
83 typedef enum {
89 
91 typedef enum {
97 
99 typedef enum {
106 
108 typedef enum {
115 
117 typedef enum {
121 
122 
124 typedef enum {
128 
136 typedef enum {
153 
155 typedef enum {
157  enet_inf_rgmii = 1
159 
161 typedef enum {
166 
168 typedef enum {
172 
174 typedef enum {
178 
180 typedef enum {
184 
186 typedef enum {
191 
193 typedef enum {
194  enet_ts_ss_ptp_msg_0 = 0, /* SYNC, Follow_Up, Delay_Req, Delay_Resp */
195  enet_ts_ss_ptp_msg_1 = 1, /* SYNC */
196  enet_ts_ss_ptp_msg_2 = 3, /* Delay_Req */
197  enet_ts_ss_ptp_msg_3 = 4, /* SYNC, Follow_Up, Delay_Req, Delay_Resp, Pdelay_Req, Pdelay_Resp, Pdelay_Resp_Follow_Up */
198  enet_ts_ss_ptp_msg_4 = 5, /* SYNC, Pdelay_Req, Pdelay_Resp */
199  enet_ts_ss_ptp_msg_5 = 7, /* Delay_Req, Pdelay_Req, Pdelay_Resp */
200  enet_ts_ss_ptp_msg_6 = 8, /* SYNC, Delay_Req */
201  enet_ts_ss_ptp_msg_7 = 12 /* Pdelay_Req, Pdelay_Resp */
203 
205 typedef enum {
206  enet_ts_bin_rollover_control = 0, /* timestamp rolls over after 0x7fffffff */
207  enet_ts_dig_rollover_control /* timestamp rolls over after 0x3b9ac9ff */
209 
211 typedef enum {
215  enet_pps_3 = 2
217 
219 typedef enum {
237 
239 typedef enum {
248 
249 /*---------------------------------------------------------------------
250  * Typedef Struct Declarations
251  *---------------------------------------------------------------------
252  */
254 typedef struct {
255  uint32_t buffer;
256  uint32_t count;
257  uint16_t size;
259 
261 typedef struct {
262  uint32_t mac_addr_high[ENET_SOC_ADDR_MAX_COUNT];
263  uint32_t mac_addr_low[ENET_SOC_ADDR_MAX_COUNT];
265  uint8_t dma_pbl;
266  uint8_t sarc;
268 
270 typedef struct {
271  union {
272  uint32_t tdes0;
273  struct {
274  uint32_t db: 1;
275  uint32_t uf: 1;
276  uint32_t ed: 1;
277  uint32_t cc: 4;
278  uint32_t vf: 1;
279  uint32_t ec: 1;
280  uint32_t lc: 1;
281  uint32_t nc: 1;
282  uint32_t loc: 1;
283  uint32_t ipe: 1;
284  uint32_t ff: 1;
285  uint32_t jt: 1;
286  uint32_t es: 1;
287  uint32_t ihe: 1;
288  uint32_t ttss: 1;
289  uint32_t vlic: 2;
290  uint32_t tch: 1;
291  uint32_t ter: 1;
292  uint32_t cic: 2;
293  uint32_t crcr: 1;
294  uint32_t ttse: 1;
295  uint32_t dp: 1;
296  uint32_t dc: 1;
297  uint32_t fs: 1;
298  uint32_t ls: 1;
299  uint32_t ic: 1;
300  uint32_t own: 1;
301  } tdes0_bm;
302  };
303 
304  union {
305  uint32_t tdes1;
306  struct {
307  uint32_t tbs1 : 13;
308  uint32_t reserved: 3;
309  uint32_t tbs2 : 13;
310  uint32_t saic : 3;
311  } tdes1_bm;
312  };
313 
314  union {
315  uint32_t tdes2;
316  struct {
317  uint32_t buffer1;
318  } tdes2_bm;
319  };
320 
321  union {
322  uint32_t tdes3;
323  union {
324  uint32_t buffer2;
325  uint32_t next_desc;
326  } tdes3_bm;
327  };
328 
329 #if ENET_SOC_ALT_EHD_DES_LEN == ENET_SOC_ALT_EHD_DES_MAX_LEN
330  struct {
331  uint32_t reserved;
332  } tdes4_bm;
333 
334  struct {
335  uint32_t reserved;
336  } tdes5_bm;
337 
338  struct {
339  uint32_t ttsl;
340  } tdes6_bm;
341 
342  struct {
343  uint32_t ttsh;
344  } tdes7_bm;
345 #endif
347 
349 typedef struct {
350  union {
351  uint32_t rdes0;
352 
353  struct {
354  uint32_t ex_sta_rx_addr : 1;
355  uint32_t ce : 1;
356  uint32_t dbe : 1;
357  uint32_t re : 1;
358  uint32_t rwt : 1;
359  uint32_t ft : 1;
360  uint32_t lc : 1;
361  uint32_t ts_ip_gf : 1;
362  uint32_t ls : 1;
363  uint32_t fs : 1;
364  uint32_t vlan : 1;
365  uint32_t oe : 1;
366  uint32_t le : 1;
367  uint32_t saf : 1;
368  uint32_t dse : 1;
369  uint32_t es : 1;
370  uint32_t fl : 14;
371  uint32_t afm : 1;
372  uint32_t own : 1;
373  } rdes0_bm;
374  };
375 
376  union {
377  uint32_t rdes1;
378  struct {
379  uint32_t rbs1 : 13;
380  uint32_t reserved0: 1;
381  uint32_t rch : 1;
382  uint32_t rer : 1;
383  uint32_t rbs2 : 13;
384  uint32_t reserved1: 2;
385  uint32_t dic : 1;
386  } rdes1_bm;
387  };
388 
389  union {
390  uint32_t rdes2;
391  struct {
392  uint32_t buffer1;
393  } rdes2_bm;
394  };
395 
396  union {
397  uint32_t rdes3;
398  union {
399  uint32_t buffer2;
400  uint32_t next_desc;
401  } rdes3_bm;
402  };
403 
404 #if ENET_SOC_ALT_EHD_DES_LEN == ENET_SOC_ALT_EHD_DES_MAX_LEN
405  union {
406  uint32_t rdes4;
407  struct {
408  uint32_t ip_payload_type : 3;
409  uint32_t ip_header_err : 1;
410  uint32_t ip_payload_err : 1;
411  uint32_t ip_chksum_bypassed : 1;
412  uint32_t ipv4_pkt_received : 1;
413  uint32_t ipv6_pkt_received : 1;
414  uint32_t msg_type : 4;
415  uint32_t ptp_frame_type : 1;
416  uint32_t ptp_version : 1;
417  uint32_t ts_dp : 1;
418  uint32_t reserved0 : 1;
419  uint32_t av_pkt_recv : 1;
420  uint32_t av_tagged_pkt_recv : 1;
421  uint32_t vlan_tag_pri_value : 3;
422  uint32_t reserved1 : 3;
423  uint32_t l3_fm : 1;
424  uint32_t l4_fm : 1;
425  uint32_t l3_l4_fnl : 2;
426  uint32_t reserved2 : 4;
427  } rdes4_bm;
428  };
429 
430  struct {
431  uint32_t reserved;
432  } rdes5_bm;
433 
434  struct {
435  uint32_t rtsl;
436  } rdes6_bm;
437 
438  struct {
439  uint32_t rtsh;
440  } rdes7_bm;
441 #endif
443 
445 typedef struct{
446  uint32_t length;
447  uint32_t buffer;
449 } enet_frame_t;
450 
452 typedef struct {
455  uint32_t seg_count;
457 
459 typedef struct {
460  bool enable_ioc; /* interrupt on completion */
461  bool disable_crc; /* disable CRC */
462  bool disable_pad; /* disable Pad */
463  bool enable_ttse; /* enable transmit timestamp */
464  bool enable_crcr; /* CRC replacement control */
465  uint8_t cic; /* checksum insertion control */
466  uint8_t vlic; /* VLAN insertion control */
467  uint8_t saic; /* SA insertion control */
469 
471 typedef struct {
480 } enet_desc_t;
481 
483 typedef struct {
484  uint32_t sec;
485  uint32_t nsec;
487 
489 typedef struct {
490  uint32_t sec;
491  uint32_t nsec;
492  uint8_t sign;
494 
496 typedef struct {
497  uint32_t sec;
498  uint32_t nsec;
500 
502 typedef struct {
503  uint8_t ssinc;
505  uint8_t update_method;
506  uint32_t addend;
508 
510 typedef struct {
511  uint32_t pps_interval;
512  uint32_t pps_width;
513  uint32_t target_sec;
514  uint32_t target_nsec;
516 
518 typedef struct {
519  uint32_t int_enable; /* DMA_INTR_EN */
520  uint32_t int_mask; /* INTR MASK */
521  uint32_t mmc_intr_rx;
523  uint32_t mmc_intr_tx;
526 
527 /*
528  * @brief Bit definition of TDES1
529  */
530 #define ENET_DMATxDesc_TBS2 ((uint32_t)0x1FFF0000)
531 #define ENET_DMATxDesc_TBS1 ((uint32_t)0x00001FFF)
533 #if defined __cplusplus
534 extern "C" {
535 #endif /* __cplusplus */
536 /*---------------------------------------------------------------------
537  * Exported Functions
538  *---------------------------------------------------------------------
539  */
547 
554 uint32_t enet_get_interrupt_status(ENET_Type *ptr);
555 
562 void enet_mask_mmc_rx_interrupt_event(ENET_Type *ptr, uint32_t mask);
563 
570 void enet_mask_mmc_tx_interrupt_event(ENET_Type *ptr, uint32_t mask);
571 
586 
598 
606 
614 
623 uint16_t enet_read_phy(ENET_Type *ptr, uint32_t phy_addr, uint32_t addr);
624 
633 void enet_write_phy(ENET_Type *ptr, uint32_t phy_addr, uint32_t addr, uint32_t data);
634 
641 void enet_rx_resume(ENET_Type *ptr);
642 
652 uint32_t enet_check_received_frame(enet_rx_desc_t **parent_rx_desc_list_cur, enet_rx_frame_info_t *rx_frame_info);
653 
661 enet_frame_t enet_get_received_frame(enet_rx_desc_t **parent_rx_desc_list_cur, enet_rx_frame_info_t *rx_frame_info);
662 
671 enet_frame_t enet_get_received_frame_interrupt(enet_rx_desc_t **parent_rx_desc_list_cur, enet_rx_frame_info_t *rx_frame_info, uint32_t rx_desc_count);
672 
684 uint32_t enet_prepare_transmission_descriptors(ENET_Type *ptr, enet_tx_desc_t **parent_tx_desc_list_cur, uint16_t frame_length, uint16_t tx_buff_size);
685 
698 uint32_t enet_prepare_tx_desc(ENET_Type *ptr, enet_tx_desc_t **parent_tx_desc_list_cur, enet_tx_control_config_t *config, uint16_t frame_length, uint16_t tx_buff_size);
699 
714  enet_tx_desc_t **parent_tx_desc_list_cur,
715  enet_tx_control_config_t *config,
716  uint16_t frame_length, uint16_t tx_buff_size,
717  enet_ptp_ts_system_t *timestamp);
718 
726 
734 
740 void enet_dma_flush(ENET_Type *ptr);
741 
748 void enet_init_ptp(ENET_Type *ptr, enet_ptp_config_t *config);
749 
757 
765 
773 
780 void enet_adjust_ptp_time_freq(ENET_Type *ptr, int32_t adj);
781 
789 
798 hpm_stat_t enet_enable_ptp_frame_type(ENET_Type *ptr, enet_ptp_frame_type_t ptp_frame_type, bool enable);
799 
807 
815 
825 
835 
836 #if defined __cplusplus
837 }
838 #endif /* __cplusplus */
839 
841 #endif /* HPM_ENET_DRV_H */
#define ENET_SOC_ADDR_MAX_COUNT
Definition: hpm_soc_feature.h:107
uint32_t hpm_stat_t
Definition: hpm_common.h:119
void enet_set_duplex_mode(ENET_Type *ptr, enet_duplex_mode_t mode)
Set duplex mode.
Definition: hpm_enet_drv.c:225
void enet_dma_rx_desc_chain_init(ENET_Type *ptr, enet_desc_t *desc)
Initialize DMA reception descriptors in chain mode.
Definition: hpm_enet_drv.c:708
enet_pbl_t
Programmable burst length selections.
Definition: hpm_enet_drv.h:73
enet_csr_clk_range_t
CSR clock range and MDC clock selections.
Definition: hpm_enet_drv.h:136
void enet_set_pps0_control_output(ENET_Type *ptr, enet_pps_ctrl_t freq)
Set the pps0 control output.
Definition: hpm_enet_drv.c:868
enet_inf_type_t
enet interface selections
Definition: hpm_enet_drv.h:155
uint32_t enet_get_mmc_tx_interrupt_status(ENET_Type *ptr)
et a staus of mmc transmission interrupt events
Definition: hpm_enet_drv.c:171
enet_frame_t enet_get_received_frame_interrupt(enet_rx_desc_t **parent_rx_desc_list_cur, enet_rx_frame_info_t *rx_frame_info, uint32_t rx_desc_count)
get a received frame from interrupt
Definition: hpm_enet_drv.c:325
void enet_set_ptp_timestamp(ENET_Type *ptr, enet_ptp_ts_update_t *timestamp)
Set a timestamp to the PTP timer.
Definition: hpm_enet_drv.c:755
enet_ptp_time_update_method_t
enet timestamp update methods
Definition: hpm_enet_drv.h:174
void enet_adjust_ptp_time_freq(ENET_Type *ptr, int32_t adj)
Adjust the count frequency of the PTP timer.
Definition: hpm_enet_drv.c:787
enet_ts_rollover_control_t
PTP timer rollover modes.
Definition: hpm_enet_drv.h:205
enet_saic_insertion_replacement_control_t
SA insertion or replacement control selections for any selective frames.
Definition: hpm_enet_drv.h:99
enet_ts_ss_ptp_msg_t
PTP message type for snapshots.
Definition: hpm_enet_drv.h:193
enet_pps_ctrl_t
PPS0 control for output frequency selections.
Definition: hpm_enet_drv.h:219
hpm_stat_t enet_enable_ptp_frame_type(ENET_Type *ptr, enet_ptp_frame_type_t ptp_frame_type, bool enable)
Enable the specified ptp frame type for MAC process.
Definition: hpm_enet_drv.c:804
uint32_t enet_get_interrupt_status(ENET_Type *ptr)
Get interrupt status.
Definition: hpm_enet_drv.c:151
uint32_t enet_prepare_tx_desc(ENET_Type *ptr, enet_tx_desc_t **parent_tx_desc_list_cur, enet_tx_control_config_t *config, uint16_t frame_length, uint16_t tx_buff_size)
prepare for the transmission descriptors
Definition: hpm_enet_drv.c:519
uint32_t enet_prepare_tx_desc_with_ts_record(ENET_Type *ptr, enet_tx_desc_t **parent_tx_desc_list_cur, enet_tx_control_config_t *config, uint16_t frame_length, uint16_t tx_buff_size, enet_ptp_ts_system_t *timestamp)
prepare for the transmission descriptors with a timestamp record
Definition: hpm_enet_drv.c:402
void enet_set_snapshot_ptp_message_type(ENET_Type *ptr, enet_ts_ss_ptp_msg_t ts_ss_ptp_msg)
Set the ptp message type for snapshots.
Definition: hpm_enet_drv.c:824
uint16_t enet_read_phy(ENET_Type *ptr, uint32_t phy_addr, uint32_t addr)
Read phy.
Definition: hpm_enet_drv.c:202
hpm_stat_t enet_controller_init(ENET_Type *ptr, enet_inf_type_t inf_type, enet_desc_t *desc, enet_mac_config_t *cfg, enet_int_config_t *int_config)
Initialize controller.
Definition: hpm_enet_drv.c:231
enet_ptp_frame_type_t
PTP frame types.
Definition: hpm_enet_drv.h:186
hpm_stat_t enet_set_ppsx_config(ENET_Type *ptr, enet_pps_cmd_config_t *cmd_cfg, enet_pps_idx_t idx)
Set a pps config for ppsx.
Definition: hpm_enet_drv.c:891
void enet_get_default_tx_control_config(ENET_Type *ptr, enet_tx_control_config_t *config)
Get a default control config for tranmission.
Definition: hpm_enet_drv.c:389
void enet_dma_flush(ENET_Type *ptr)
Flush DMA.
Definition: hpm_enet_drv.c:176
enet_frame_t enet_get_received_frame(enet_rx_desc_t **parent_rx_desc_list_cur, enet_rx_frame_info_t *rx_frame_info)
get a received frame
Definition: hpm_enet_drv.c:302
enet_pps_idx_t
PPS indexes.
Definition: hpm_enet_drv.h:211
enet_ptp_version_t
PTP versions.
Definition: hpm_enet_drv.h:180
void enet_mask_mmc_rx_interrupt_event(ENET_Type *ptr, uint32_t mask)
Mask the specified mmc interrupt evenets of received frames.
Definition: hpm_enet_drv.c:156
void enet_set_line_speed(ENET_Type *ptr, enet_line_speed_t speed)
Set port line speed.
Definition: hpm_enet_drv.c:219
enet_pps_cmd_t
PPS0 commands.
Definition: hpm_enet_drv.h:239
enet_phy_op_t
PHY operation selections.
Definition: hpm_enet_drv.h:117
enet_sarc_insertion_replacement_control_t
SA insertion or replacement control selections for all transmit frames.
Definition: hpm_enet_drv.h:108
enet_gmii_status_t
PHY status.
Definition: hpm_enet_drv.h:124
void enet_write_phy(ENET_Type *ptr, uint32_t phy_addr, uint32_t addr, uint32_t data)
Write phy.
Definition: hpm_enet_drv.c:185
void enet_mask_mmc_tx_interrupt_event(ENET_Type *ptr, uint32_t mask)
Mask the specified mmc interrupt evenets of transmitted frames.
Definition: hpm_enet_drv.c:166
void enet_set_ptp_version(ENET_Type *ptr, enet_ptp_version_t ptp_ver)
Set the PTP version.
Definition: hpm_enet_drv.c:798
enet_interrupt_mask_t
interrupt mask type
Definition: hpm_enet_drv.h:66
enet_duplex_mode_t
enet duplex mode
Definition: hpm_enet_drv.h:168
uint32_t enet_check_received_frame(enet_rx_desc_t **parent_rx_desc_list_cur, enet_rx_frame_info_t *rx_frame_info)
Check if there is a received frame.
Definition: hpm_enet_drv.c:265
hpm_stat_t enet_set_ppsx_command(ENET_Type *ptr, enet_pps_cmd_t cmd, enet_pps_idx_t idx)
Set a pps command for ppsx.
Definition: hpm_enet_drv.c:874
enet_vlan_insertion_control_t
VLAN insertion control selections.
Definition: hpm_enet_drv.h:91
void enet_get_ptp_timestamp(ENET_Type *ptr, enet_ptp_ts_system_t *timestamp)
Get a timestamp from the PTP timer.
Definition: hpm_enet_drv.c:766
uint32_t enet_get_mmc_rx_interrupt_status(ENET_Type *ptr)
Get a staus of mmc receive interrupt events.
Definition: hpm_enet_drv.c:161
enet_line_speed_t
enet line speed
Definition: hpm_enet_drv.h:161
enet_cic_insertion_control_t
Checksum insertion control selections.
Definition: hpm_enet_drv.h:83
void enet_dma_tx_desc_chain_init(ENET_Type *ptr, enet_desc_t *desc)
Initialize DMA transmission descriptors in chain mode.
Definition: hpm_enet_drv.c:674
void enet_init_ptp(ENET_Type *ptr, enet_ptp_config_t *config)
Initialize a PTP timer.
Definition: hpm_enet_drv.c:833
void enet_update_ptp_timeoffset(ENET_Type *ptr, enet_ptp_ts_update_t *timeoffset)
Update a timestamp to the PTP timer.
Definition: hpm_enet_drv.c:772
enet_interrupt_enable_t
interrupt enable type
Definition: hpm_enet_drv.h:59
uint32_t enet_prepare_transmission_descriptors(ENET_Type *ptr, enet_tx_desc_t **parent_tx_desc_list_cur, uint16_t frame_length, uint16_t tx_buff_size)
prepare for the transmission descriptors (It will be deprecated.)
Definition: hpm_enet_drv.c:600
void enet_rx_resume(ENET_Type *ptr)
Resume reception process.
Definition: hpm_enet_drv.c:257
@ enet_pbl_4
Definition: hpm_enet_drv.h:76
@ enet_pbl_32
Definition: hpm_enet_drv.h:79
@ enet_pbl_16
Definition: hpm_enet_drv.h:78
@ enet_pbl_1
Definition: hpm_enet_drv.h:74
@ enet_pbl_2
Definition: hpm_enet_drv.h:75
@ enet_pbl_8
Definition: hpm_enet_drv.h:77
@ enet_csr_60m_to_100m_mdc_csr_div_18
Definition: hpm_enet_drv.h:151
@ enet_csr_250m_to_300m_mdc_csr_div_124
Definition: hpm_enet_drv.h:142
@ enet_csr_60m_to_100m_mdc_csr_div_42
Definition: hpm_enet_drv.h:137
@ enet_csr_60m_to_100m_mdc_csr_div_14
Definition: hpm_enet_drv.h:149
@ enet_csr_60m_to_100m_mdc_csr_div_12
Definition: hpm_enet_drv.h:148
@ enet_csr_100m_to_150m_mdc_csr_div_62
Definition: hpm_enet_drv.h:138
@ enet_csr_60m_to_100m_mdc_csr_div_16
Definition: hpm_enet_drv.h:150
@ enet_csr_60m_to_100m_mdc_csr_div_4
Definition: hpm_enet_drv.h:144
@ enet_csr_60m_to_100m_mdc_csr_div_6
Definition: hpm_enet_drv.h:145
@ enet_csr_60m_to_100m_mdc_csr_div_10
Definition: hpm_enet_drv.h:147
@ enet_csr_150m_to_250m_mdc_csr_div_102
Definition: hpm_enet_drv.h:141
@ enet_csr_20m_to_35m_mdc_csr_div_16
Definition: hpm_enet_drv.h:139
@ enet_csr_35m_to_60m_mdc_csr_div_26
Definition: hpm_enet_drv.h:140
@ enet_csr_60m_to_100m_mdc_csr_div_8
Definition: hpm_enet_drv.h:146
@ enet_inf_rgmii
Definition: hpm_enet_drv.h:157
@ enet_inf_rmii
Definition: hpm_enet_drv.h:156
@ enet_ptp_time_fine_update
Definition: hpm_enet_drv.h:176
@ enet_ptp_time_coarse_update
Definition: hpm_enet_drv.h:175
@ enet_ts_dig_rollover_control
Definition: hpm_enet_drv.h:207
@ enet_ts_bin_rollover_control
Definition: hpm_enet_drv.h:206
@ enet_saic_insert_mac0
Definition: hpm_enet_drv.h:101
@ enet_saic_replace_mac1
Definition: hpm_enet_drv.h:104
@ enet_saic_disable
Definition: hpm_enet_drv.h:100
@ enet_saic_insert_mac1
Definition: hpm_enet_drv.h:103
@ enet_saic_replace_mac0
Definition: hpm_enet_drv.h:102
@ enet_ts_ss_ptp_msg_2
Definition: hpm_enet_drv.h:196
@ enet_ts_ss_ptp_msg_6
Definition: hpm_enet_drv.h:200
@ enet_ts_ss_ptp_msg_7
Definition: hpm_enet_drv.h:201
@ enet_ts_ss_ptp_msg_3
Definition: hpm_enet_drv.h:197
@ enet_ts_ss_ptp_msg_5
Definition: hpm_enet_drv.h:199
@ enet_ts_ss_ptp_msg_0
Definition: hpm_enet_drv.h:194
@ enet_ts_ss_ptp_msg_4
Definition: hpm_enet_drv.h:198
@ enet_ts_ss_ptp_msg_1
Definition: hpm_enet_drv.h:195
@ enet_pps_ctrl_bin_4hz_digital_2hz
Definition: hpm_enet_drv.h:222
@ enet_pps_ctrl_bin_2hz_digital_1hz
Definition: hpm_enet_drv.h:221
@ enet_pps_ctrl_bin_8192hz_digital_4096hz
Definition: hpm_enet_drv.h:233
@ enet_pps_ctrl_bin_32hz_digital_16hz
Definition: hpm_enet_drv.h:225
@ enet_pps_ctrl_bin_256hz_digital_128hz
Definition: hpm_enet_drv.h:228
@ enet_pps_ctrl_bin_16hz_digital_8hz
Definition: hpm_enet_drv.h:224
@ enet_pps_ctrl_bin_8hz_digital_4hz
Definition: hpm_enet_drv.h:223
@ enet_pps_ctrl_bin_2048hz_digital_1024hz
Definition: hpm_enet_drv.h:231
@ enet_pps_ctrl_bin_32867hz_digital_16384hz
Definition: hpm_enet_drv.h:235
@ enet_pps_ctrl_pps
Definition: hpm_enet_drv.h:220
@ enet_pps_ctrl_bin_4096hz_digital_2048hz
Definition: hpm_enet_drv.h:232
@ enet_pps_ctrl_bin_512hz_digital_256hz
Definition: hpm_enet_drv.h:229
@ enet_pps_ctrl_bin_16384hz_digital_8192hz
Definition: hpm_enet_drv.h:234
@ enet_pps_ctrl_bin_64hz_digital_32hz
Definition: hpm_enet_drv.h:226
@ enet_pps_ctrl_bin_1024hz_digital_512hz
Definition: hpm_enet_drv.h:230
@ enet_pps_ctrl_bin_128hz_digital_64hz
Definition: hpm_enet_drv.h:227
@ enet_ptp_frame_ipv6
Definition: hpm_enet_drv.h:188
@ enet_ptp_frame_ethernet
Definition: hpm_enet_drv.h:189
@ enet_ptp_frame_ipv4
Definition: hpm_enet_drv.h:187
@ enet_pps_1
Definition: hpm_enet_drv.h:213
@ enet_pps_2
Definition: hpm_enet_drv.h:214
@ enet_pps_3
Definition: hpm_enet_drv.h:215
@ enet_pps_0
Definition: hpm_enet_drv.h:212
@ enet_ptp_v2
Definition: hpm_enet_drv.h:182
@ enet_ptp_v1
Definition: hpm_enet_drv.h:181
@ enet_pps_cmd_stop_pulse_train_at_time
Definition: hpm_enet_drv.h:244
@ enet_pps_cmd_cancel_stop_pulse_train
Definition: hpm_enet_drv.h:246
@ enet_pps_cmd_start_single_pulse
Definition: hpm_enet_drv.h:241
@ enet_pps_cmd_no_command
Definition: hpm_enet_drv.h:240
@ enet_pps_cmd_start_pulse_train
Definition: hpm_enet_drv.h:242
@ enet_pps_cmd_stop_pulse_train_immediately
Definition: hpm_enet_drv.h:245
@ enet_pps_cmd_cancel_start
Definition: hpm_enet_drv.h:243
@ enet_phy_op_write
Definition: hpm_enet_drv.h:119
@ enet_phy_op_read
Definition: hpm_enet_drv.h:118
@ enet_sarc_disable
Definition: hpm_enet_drv.h:109
@ enet_sarc_insert_mac0
Definition: hpm_enet_drv.h:110
@ enet_sarc_insert_mac1
Definition: hpm_enet_drv.h:112
@ enet_sarc_replace_mac0
Definition: hpm_enet_drv.h:111
@ enet_sarc_replace_mac1
Definition: hpm_enet_drv.h:113
@ enet_gmii_idle
Definition: hpm_enet_drv.h:125
@ enet_gmii_busy
Definition: hpm_enet_drv.h:126
@ enet_rgsmii_int_mask
Definition: hpm_enet_drv.h:68
@ enet_lpi_int_mask
Definition: hpm_enet_drv.h:67
@ enet_full_duplex
Definition: hpm_enet_drv.h:170
@ enet_half_duplex
Definition: hpm_enet_drv.h:169
@ enet_vlic_disable
Definition: hpm_enet_drv.h:92
@ enet_vlic_insert_vlan_tag
Definition: hpm_enet_drv.h:94
@ enet_vlic_replace_vlan_tag
Definition: hpm_enet_drv.h:95
@ enet_vlic_remove_vlan_tag
Definition: hpm_enet_drv.h:93
@ enet_line_speed_1000mbps
Definition: hpm_enet_drv.h:162
@ enet_line_speed_10mbps
Definition: hpm_enet_drv.h:163
@ enet_line_speed_100mbps
Definition: hpm_enet_drv.h:164
@ enet_cic_disable
Definition: hpm_enet_drv.h:84
@ enet_cic_ip
Definition: hpm_enet_drv.h:85
@ enet_cic_ip_no_pseudoheader
Definition: hpm_enet_drv.h:86
@ enet_cic_ip_pseudoheader
Definition: hpm_enet_drv.h:87
@ enet_normal_int_sum_en
Definition: hpm_enet_drv.h:60
@ enet_receive_int_en
Definition: hpm_enet_drv.h:62
@ enet_aboarmal_int_sum_en
Definition: hpm_enet_drv.h:61
#define ENET_DMA_INTR_EN_AIE_MASK
Definition: hpm_enet_regs.h:5149
#define ENET_INTR_MASK_RGSMIIIM_MASK
Definition: hpm_enet_regs.h:1254
#define ENET_DMA_INTR_EN_RIE_MASK
Definition: hpm_enet_regs.h:5226
#define ENET_INTR_MASK_LPIIM_MASK
Definition: hpm_enet_regs.h:1199
#define ENET_DMA_INTR_EN_NIE_MASK
Definition: hpm_enet_regs.h:5138
Definition: hpm_enet_regs.h:12
enet buffer config struct
Definition: hpm_enet_drv.h:254
uint16_t size
Definition: hpm_enet_drv.h:257
uint32_t count
Definition: hpm_enet_drv.h:256
uint32_t buffer
Definition: hpm_enet_drv.h:255
enet description struct
Definition: hpm_enet_drv.h:471
enet_buff_config_t tx_buff_cfg
Definition: hpm_enet_drv.h:476
enet_tx_desc_t * tx_desc_list_head
Definition: hpm_enet_drv.h:472
enet_tx_control_config_t tx_control_config
Definition: hpm_enet_drv.h:479
enet_buff_config_t rx_buff_cfg
Definition: hpm_enet_drv.h:477
enet_rx_frame_info_t rx_frame_info
Definition: hpm_enet_drv.h:478
enet_tx_desc_t * tx_desc_list_cur
Definition: hpm_enet_drv.h:474
enet_rx_desc_t * rx_desc_list_head
Definition: hpm_enet_drv.h:473
enet_rx_desc_t * rx_desc_list_cur
Definition: hpm_enet_drv.h:475
enet frame struct
Definition: hpm_enet_drv.h:445
uint32_t length
Definition: hpm_enet_drv.h:446
enet_rx_desc_t * rx_desc
Definition: hpm_enet_drv.h:448
uint32_t buffer
Definition: hpm_enet_drv.h:447
Enet interrupt config struct.
Definition: hpm_enet_drv.h:518
uint32_t mmc_intr_mask_tx
Definition: hpm_enet_drv.h:524
uint32_t int_mask
Definition: hpm_enet_drv.h:520
uint32_t mmc_intr_mask_rx
Definition: hpm_enet_drv.h:522
uint32_t mmc_intr_tx
Definition: hpm_enet_drv.h:523
uint32_t mmc_intr_rx
Definition: hpm_enet_drv.h:521
uint32_t int_enable
Definition: hpm_enet_drv.h:519
enet mac config struct
Definition: hpm_enet_drv.h:261
uint8_t valid_max_count
Definition: hpm_enet_drv.h:264
uint8_t sarc
Definition: hpm_enet_drv.h:266
uint8_t dma_pbl
Definition: hpm_enet_drv.h:265
PTP PPS command output config strcut.
Definition: hpm_enet_drv.h:510
uint32_t target_nsec
Definition: hpm_enet_drv.h:514
uint32_t pps_width
Definition: hpm_enet_drv.h:512
uint32_t target_sec
Definition: hpm_enet_drv.h:513
uint32_t pps_interval
Definition: hpm_enet_drv.h:511
PTP config strcut.
Definition: hpm_enet_drv.h:502
uint8_t timestamp_rollover_mode
Definition: hpm_enet_drv.h:504
uint8_t ssinc
Definition: hpm_enet_drv.h:503
uint32_t addend
Definition: hpm_enet_drv.h:506
uint8_t update_method
Definition: hpm_enet_drv.h:505
PTP system timestamp struct.
Definition: hpm_enet_drv.h:483
uint32_t nsec
Definition: hpm_enet_drv.h:485
uint32_t sec
Definition: hpm_enet_drv.h:484
PTP target timestamp struct.
Definition: hpm_enet_drv.h:496
uint32_t nsec
Definition: hpm_enet_drv.h:498
uint32_t sec
Definition: hpm_enet_drv.h:497
PTP update timestamp struct.
Definition: hpm_enet_drv.h:489
uint32_t sec
Definition: hpm_enet_drv.h:490
uint32_t nsec
Definition: hpm_enet_drv.h:491
uint8_t sign
Definition: hpm_enet_drv.h:492
reception descriptor struct
Definition: hpm_enet_drv.h:349
uint32_t ip_payload_err
Definition: hpm_enet_drv.h:410
uint32_t rbs2
Definition: hpm_enet_drv.h:383
uint32_t dic
Definition: hpm_enet_drv.h:385
uint32_t fl
Definition: hpm_enet_drv.h:370
uint32_t rtsh
Definition: hpm_enet_drv.h:439
uint32_t ts_ip_gf
Definition: hpm_enet_drv.h:361
uint32_t dse
Definition: hpm_enet_drv.h:368
uint32_t ex_sta_rx_addr
Definition: hpm_enet_drv.h:354
uint32_t ipv6_pkt_received
Definition: hpm_enet_drv.h:413
uint32_t vlan_tag_pri_value
Definition: hpm_enet_drv.h:421
uint32_t dbe
Definition: hpm_enet_drv.h:356
uint32_t rdes4
Definition: hpm_enet_drv.h:406
uint32_t reserved2
Definition: hpm_enet_drv.h:426
uint32_t ls
Definition: hpm_enet_drv.h:362
uint32_t rdes0
Definition: hpm_enet_drv.h:351
uint32_t ft
Definition: hpm_enet_drv.h:359
uint32_t msg_type
Definition: hpm_enet_drv.h:414
uint32_t rwt
Definition: hpm_enet_drv.h:358
uint32_t vlan
Definition: hpm_enet_drv.h:364
uint32_t ip_header_err
Definition: hpm_enet_drv.h:409
uint32_t rer
Definition: hpm_enet_drv.h:382
uint32_t av_tagged_pkt_recv
Definition: hpm_enet_drv.h:420
uint32_t oe
Definition: hpm_enet_drv.h:365
uint32_t reserved0
Definition: hpm_enet_drv.h:380
uint32_t saf
Definition: hpm_enet_drv.h:367
uint32_t rdes3
Definition: hpm_enet_drv.h:397
uint32_t l3_fm
Definition: hpm_enet_drv.h:423
uint32_t ts_dp
Definition: hpm_enet_drv.h:417
uint32_t own
Definition: hpm_enet_drv.h:372
uint32_t lc
Definition: hpm_enet_drv.h:360
uint32_t rtsl
Definition: hpm_enet_drv.h:435
uint32_t l3_l4_fnl
Definition: hpm_enet_drv.h:425
uint32_t re
Definition: hpm_enet_drv.h:357
uint32_t ipv4_pkt_received
Definition: hpm_enet_drv.h:412
uint32_t rdes2
Definition: hpm_enet_drv.h:390
uint32_t reserved
Definition: hpm_enet_drv.h:431
uint32_t reserved1
Definition: hpm_enet_drv.h:384
uint32_t rdes1
Definition: hpm_enet_drv.h:377
uint32_t ip_chksum_bypassed
Definition: hpm_enet_drv.h:411
uint32_t rbs1
Definition: hpm_enet_drv.h:379
uint32_t rch
Definition: hpm_enet_drv.h:381
uint32_t buffer1
Definition: hpm_enet_drv.h:392
uint32_t l4_fm
Definition: hpm_enet_drv.h:424
uint32_t buffer2
Definition: hpm_enet_drv.h:399
uint32_t afm
Definition: hpm_enet_drv.h:371
uint32_t ip_payload_type
Definition: hpm_enet_drv.h:408
uint32_t es
Definition: hpm_enet_drv.h:369
uint32_t ptp_version
Definition: hpm_enet_drv.h:416
uint32_t ce
Definition: hpm_enet_drv.h:355
uint32_t next_desc
Definition: hpm_enet_drv.h:400
uint32_t le
Definition: hpm_enet_drv.h:366
uint32_t ptp_frame_type
Definition: hpm_enet_drv.h:415
uint32_t fs
Definition: hpm_enet_drv.h:363
uint32_t av_pkt_recv
Definition: hpm_enet_drv.h:419
enet reception frame info struct
Definition: hpm_enet_drv.h:452
uint32_t seg_count
Definition: hpm_enet_drv.h:455
enet_rx_desc_t * ls_rx_desc
Definition: hpm_enet_drv.h:454
enet_rx_desc_t * fs_rx_desc
Definition: hpm_enet_drv.h:453
enet control config struct for transmission
Definition: hpm_enet_drv.h:459
bool disable_crc
Definition: hpm_enet_drv.h:461
bool enable_crcr
Definition: hpm_enet_drv.h:464
bool enable_ioc
Definition: hpm_enet_drv.h:460
bool disable_pad
Definition: hpm_enet_drv.h:462
uint8_t saic
Definition: hpm_enet_drv.h:467
uint8_t vlic
Definition: hpm_enet_drv.h:466
bool enable_ttse
Definition: hpm_enet_drv.h:463
uint8_t cic
Definition: hpm_enet_drv.h:465
transmission descriptor struct
Definition: hpm_enet_drv.h:270
uint32_t reserved
Definition: hpm_enet_drv.h:308
uint32_t crcr
Definition: hpm_enet_drv.h:293
uint32_t cic
Definition: hpm_enet_drv.h:292
uint32_t db
Definition: hpm_enet_drv.h:274
uint32_t tbs2
Definition: hpm_enet_drv.h:309
uint32_t vlic
Definition: hpm_enet_drv.h:289
uint32_t ihe
Definition: hpm_enet_drv.h:287
uint32_t tbs1
Definition: hpm_enet_drv.h:307
uint32_t tch
Definition: hpm_enet_drv.h:290
uint32_t fs
Definition: hpm_enet_drv.h:297
uint32_t ff
Definition: hpm_enet_drv.h:284
uint32_t tdes2
Definition: hpm_enet_drv.h:315
uint32_t ed
Definition: hpm_enet_drv.h:276
uint32_t tdes1
Definition: hpm_enet_drv.h:305
uint32_t ec
Definition: hpm_enet_drv.h:279
uint32_t es
Definition: hpm_enet_drv.h:286
uint32_t lc
Definition: hpm_enet_drv.h:280
uint32_t nc
Definition: hpm_enet_drv.h:281
uint32_t dp
Definition: hpm_enet_drv.h:295
uint32_t ter
Definition: hpm_enet_drv.h:291
uint32_t dc
Definition: hpm_enet_drv.h:296
uint32_t next_desc
Definition: hpm_enet_drv.h:325
uint32_t ttss
Definition: hpm_enet_drv.h:288
uint32_t ls
Definition: hpm_enet_drv.h:298
uint32_t vf
Definition: hpm_enet_drv.h:278
uint32_t buffer1
Definition: hpm_enet_drv.h:317
uint32_t cc
Definition: hpm_enet_drv.h:277
uint32_t jt
Definition: hpm_enet_drv.h:285
uint32_t own
Definition: hpm_enet_drv.h:300
uint32_t tdes3
Definition: hpm_enet_drv.h:322
uint32_t ipe
Definition: hpm_enet_drv.h:283
uint32_t loc
Definition: hpm_enet_drv.h:282
uint32_t buffer2
Definition: hpm_enet_drv.h:324
uint32_t ttsh
Definition: hpm_enet_drv.h:343
uint32_t saic
Definition: hpm_enet_drv.h:310
uint32_t ic
Definition: hpm_enet_drv.h:299
uint32_t ttse
Definition: hpm_enet_drv.h:294
uint32_t tdes0
Definition: hpm_enet_drv.h:272
uint32_t ttsl
Definition: hpm_enet_drv.h:339
uint32_t uf
Definition: hpm_enet_drv.h:275