HPM SDK
HPMicro Software Development Kit
hpm_tsw_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023-2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_TSW_DRV_H
9 #define HPM_TSW_DRV_H
10 
11 /*---------------------------------------------------------------------
12  * Includes
13  *--------------------------------------------------------------------*/
14 #include "hpm_common.h"
15 #include "hpm_soc_feature.h"
16 #include "hpm_tsw_regs.h"
17 
25 /*---------------------------------------------------------------------
26  * Macro Constant Declarations
27  *-------------------------------------------------------------------*/
28 #define MAC_LO(mac) (uint32_t)(mac[0] | (mac[1] << 8) | (mac[2] << 16) | (mac[3] << 24))
29 #define MAC_HI(mac) (uint32_t)(mac[4] | (mac[5] << 8))
30 
31 #define MAC_MDIO_CTRL_OP_WR (0x01)
32 #define MAC_MDIO_CTRL_OP_RD (0x02)
33 
34 #ifndef TSW_SEND_DESC_COUNT
35 #define TSW_SEND_DESC_COUNT (16U)
36 #endif
37 
38 #ifndef TSW_RECV_DESC_COUNT
39 #define TSW_RECV_DESC_COUNT (16U)
40 #endif
41 
42 #ifndef TSW_SEND_BUFF_LEN
43 #define TSW_SEND_BUFF_LEN (1536U)
44 #endif
45 
46 #ifndef TSW_RECV_BUFF_LEN
47 #define TSW_RECV_BUFF_LEN (1536U)
48 #endif
49 
50 #ifndef TSW_NS_IN_ONE_SEC
51 #define TSW_NS_IN_ONE_SEC (1000000000UL)
52 #endif
53 
54 #ifndef TSW_BUS_FREQ
55 #define TSW_BUS_FREQ (100000000UL)
56 #endif
57 /*---------------------------------------------------------------------
58  * Typedef Struct Declarations
59  *-------------------------------------------------------------------*/
60 typedef struct {
61  union {
62  uint32_t tx_hdr0;
63  struct {
64  uint32_t dest_port: 8;
65  uint32_t : 8;
66  uint32_t queue : 3;
67  uint32_t utag : 3;
68  uint32_t : 6;
69  uint32_t htype : 4;
70  } tx_hdr0_bm;
71  };
72 
73  union {
74  uint32_t tx_hdr1;
75  struct {
76  uint32_t cb: 32;
77  } tx_hdr1_bm;
78  };
79 
80  uint32_t tx_hdr2;
81  uint32_t tx_hdr3;
83 
84 typedef struct {
85  uint8_t id;
86  uint8_t *buffer;
87  uint16_t length;
88 } tsw_frame_t;
89 
90 typedef struct {
91  bool soe;
92  bool irq;
93  uint8_t maxlen;
95 
96 typedef struct {
98  uint16_t oper_list_length;
100 
101 
102 typedef struct {
103  uint8_t state;
104  uint8_t op;
105  uint32_t interval;
107 
108 typedef struct {
110  uint32_t entry_count;
111  uint32_t cycle_time;
112  uint32_t base_time_ns;
113  uint32_t base_time_sec;
115 
116 typedef struct {
117  uint8_t integer;
118  uint16_t fract;
120 
121 typedef struct {
122  uint32_t tstamplo;
123  uint32_t tstamphi;
124  uint8_t tqueue;
125  uint8_t tuser;
126 } tsw_tsf_t;
127 
128 /*---------------------------------------------------------------------
129  * Typedef Enum Declarations
130  *-------------------------------------------------------------------*/
131 typedef enum {
136 
137 typedef enum {
142 
143 typedef enum {
146  tsw_dst_port_1 = 1 << 1,
147  tsw_dst_port_2 = 1 << 2,
148  tsw_dst_port_3 = 1 << 3,
149 } tsw_dst_t;
150 
151 typedef enum {
158 
159 typedef enum {
163 
164 typedef enum {
182 
183 typedef enum {
188 
189 typedef enum {
200 
201 typedef enum {
211 
212 #if defined __cplusplus
213 extern "C" {
214 #endif /* __cplusplus */
215 /*---------------------------------------------------------------------
216  * Exported Functions
217  *-------------------------------------------------------------------*/
223 
230 void tsw_init_send(TSW_Type *ptr, tsw_dma_config_t *config);
231 
238 void tsw_init_recv(TSW_Type *ptr, tsw_dma_config_t *config);
239 
248 hpm_stat_t tsw_send_frame(TSW_Type *ptr, uint8_t *buffer, uint16_t length, uint8_t id);
249 
259 hpm_stat_t tsw_commit_recv_desc(TSW_Type *ptr, uint8_t *buffer, uint16_t length, uint8_t id);
260 
269 
276 void tsw_mac_lookup_bypass(TSW_Type *ptr, uint8_t dst_port);
277 
285 
294 hpm_stat_t tsw_ep_set_mdio_config(TSW_Type *ptr, uint8_t port, uint8_t clk_div);
295 
306 hpm_stat_t tsw_ep_mdio_read(TSW_Type *ptr, uint8_t port, uint32_t phy_addr, uint32_t reg_addr, uint16_t *data);
307 
318 hpm_stat_t tsw_ep_mdio_write(TSW_Type *ptr, uint8_t port, uint32_t phy_addr, uint32_t reg_addr, uint16_t data);
319 
328 hpm_stat_t tsw_ep_enable_mac_ctrl(TSW_Type *ptr, uint8_t port, uint8_t mac_type);
329 
338 hpm_stat_t tsw_ep_disable_mac_ctrl(TSW_Type *ptr, uint8_t port, uint8_t mac_type);
339 
347 hpm_stat_t tsw_ep_enable_all_mac_ctrl(TSW_Type *ptr, uint8_t mac_type);
348 
356 hpm_stat_t tsw_ep_disable_all_mac_ctrl(TSW_Type *ptr, uint8_t mac_type);
357 
367 hpm_stat_t tsw_ep_set_mac_addr(TSW_Type *ptr, uint8_t port, uint8_t *mac_addr, bool promisc);
368 
378 hpm_stat_t tsw_ep_set_mac_mode(TSW_Type *ptr, uint8_t port, uint8_t gmii);
379 
390 void tsw_port_gpr(TSW_Type *ptr, uint8_t port, uint8_t speed, uint8_t itf, uint8_t tx_dly, uint8_t rx_dly);
391 
399 void tsw_set_port_speed(TSW_Type *ptr, uint8_t port, uint8_t speed);
400 
408 void tsw_set_port_interface(TSW_Type *ptr, uint8_t port, uint8_t itf);
409 
418 void tsw_set_port_clock_delay(TSW_Type *ptr, uint8_t port, uint8_t tx_dly, uint8_t rx_dly);
419 
426 void tsw_set_internal_frame_action(TSW_Type *ptr, uint8_t dest_port);
427 
434 void tsw_set_broadcast_frame_action(TSW_Type *ptr, uint8_t dest_port);
435 
442 void tsw_set_unknown_frame_action(TSW_Type *ptr, uint8_t dest_port);
443 
452 void tsw_set_lookup_table(TSW_Type *ptr, uint16_t entry_num, uint8_t dest_port, uint64_t dest_mac);
453 
459 void tsw_clear_cam(TSW_Type *ptr);
460 
467 void tsw_enable_store_forward_mode(TSW_Type *ptr, uint8_t port);
468 
475 void tsw_disable_store_forward_mode(TSW_Type *ptr, uint8_t port);
476 
484 hpm_stat_t tsw_get_rtc_time_increment(TSW_Type *ptr, uint32_t *increment);
485 
493 hpm_stat_t tsw_set_rtc_time_increment(TSW_Type *ptr, uint32_t increment);
494 
503 hpm_stat_t tsw_get_rtc_current_time(TSW_Type *ptr, uint32_t *sec, uint32_t *nsec);
504 
513 hpm_stat_t tsw_get_rtc_offset(TSW_Type *ptr, int64_t *sec, uint32_t *nsec);
514 
523 hpm_stat_t tsw_set_rtc_offset(TSW_Type *ptr, int64_t sec, uint32_t nsec);
524 
532 hpm_stat_t tsw_set_rtc_offset_change(TSW_Type *ptr, uint32_t change);
533 
542 hpm_stat_t tsw_set_tsync_timer_hclkdiv(TSW_Type *ptr, uint8_t port, uint32_t host_clkdiv);
543 
554 hpm_stat_t tsw_tsync_timer_control(TSW_Type *ptr, uint8_t port, uint8_t index, uint32_t period, uint32_t enable);
555 
564 
576 hpm_stat_t tsw_tsync_update_data(TSW_Type *ptr, uint8_t port, uint32_t bin, uint32_t binofs, uint32_t srcaddr, uint8_t lenbytes);
577 
587 hpm_stat_t tsw_tsync_update_len(TSW_Type *ptr, uint8_t port, uint32_t bin, uint8_t lenbytes, uint8_t tqueue);
588 
597 hpm_stat_t tsw_tsync_trigger_tx(TSW_Type *ptr, uint8_t port, uint32_t bin);
598 
609 hpm_stat_t tsw_tsync_get_txtimestamp(TSW_Type *ptr, uint8_t port, uint32_t bin, uint32_t *timestamplo, uint32_t *timestamphi);
610 
620 hpm_stat_t tsw_tsync_get_rxtimestamp(TSW_Type *ptr, uint8_t port, uint32_t *timestamplo, uint32_t *timestamphi);
621 
630 hpm_stat_t tsw_tsync_disable_current_events(TSW_Type *ptr, uint8_t port, uint32_t *disabled);
631 
641 hpm_stat_t tsw_tsync_get_rxstatus(TSW_Type *ptr, uint8_t port, uint8_t *ov, uint8_t *avnxt, uint8_t *rxsel);
642 
650 hpm_stat_t tsw_tsync_next_rxbuffer(TSW_Type *ptr, uint8_t port);
651 
659 hpm_stat_t tsw_tsync_clear_overflow(TSW_Type *ptr, uint8_t port);
660 
669 hpm_stat_t tsw_tsync_get_txdone(TSW_Type *ptr, uint8_t port, uint32_t *done);
670 
679 hpm_stat_t tsw_tsync_clear_txdone(TSW_Type *ptr, uint8_t port, uint32_t done);
680 
689 hpm_stat_t tsw_tsync_get_tmrdone(TSW_Type *ptr, uint8_t port, uint32_t *done);
690 
700 
709 hpm_stat_t tsw_shap_set_tas_cycletime(TSW_Type *ptr, uint8_t port, uint32_t cycle_time);
710 
720 hpm_stat_t tsw_shap_set_tas_controllist(TSW_Type *ptr, uint8_t port, uint32_t index, tsw_tas_controllist_entry_t *entry);
721 
731 hpm_stat_t tsw_shap_get_tas_controllist(TSW_Type *ptr, uint8_t port, uint32_t index, tsw_tas_controllist_entry_t *entry);
732 
741 hpm_stat_t tsw_shap_set_tas_max_sdu_ticks(TSW_Type *ptr, uint8_t port, uint8_t index, uint32_t ticks);
742 
751 hpm_stat_t tsw_shap_get_tas_max_sdu_ticks(TSW_Type *ptr, uint8_t port, uint8_t index, uint32_t *ticks);
752 
760 
768 hpm_stat_t tsw_shap_enable_tas(TSW_Type *ptr, uint8_t port);
769 
777 hpm_stat_t tsw_shap_disable_tas(TSW_Type *ptr, uint8_t port);
778 
787 hpm_stat_t tsw_shap_set_tas_listlen(TSW_Type *ptr, uint8_t port, uint32_t listlen);
788 
797 hpm_stat_t tsw_shap_set_tas_cycletime(TSW_Type *ptr, uint8_t port, uint32_t cycle_time);
798 
808 hpm_stat_t tsw_shap_set_tas_basetime(TSW_Type *ptr, uint8_t port, uint32_t basetime_sec, uint32_t basetime_ns);
809 
818 
827 hpm_stat_t tsw_shap_get_tas_crsr(TSW_Type *ptr, uint8_t port, uint32_t *crsr);
828 
837 hpm_stat_t tsw_shap_set_tas(TSW_Type *ptr, uint8_t port, tsw_tas_config_t *config);
838 
848 hpm_stat_t tsw_shap_set_cbs(TSW_Type *ptr, uint8_t port, uint8_t index, tsw_cbs_config_t *config);
849 
858 hpm_stat_t tsw_get_txtimestampfifo_used(TSW_Type *ptr, uint8_t port, uint32_t *count);
859 
868 hpm_stat_t tsw_get_txtimestampfifo_entry(TSW_Type *ptr, uint8_t port, tsw_tsf_t *entry);
869 
870 #if defined __cplusplus
871 }
872 #endif /* __cplusplus */
874 #endif /* HPM_TSW_DRV_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:123
hpm_stat_t tsw_ep_disable_all_mac_ctrl(TSW_Type *ptr, uint8_t mac_type)
Disable All MAC Controllers.
Definition: hpm_tsw_drv.c:100
void tsw_mac_lookup_bypass(TSW_Type *ptr, uint8_t dst_port)
Lookup Bypass Setting.
Definition: hpm_tsw_drv.c:269
hpm_stat_t tsw_recv_frame(TSW_Type *ptr, tsw_frame_t *frame)
Receive a frame from CPU port.
Definition: hpm_tsw_drv.c:230
hpm_stat_t tsw_tsync_next_rxbuffer(TSW_Type *ptr, uint8_t port)
TSYNC next RX buffer.
Definition: hpm_tsw_drv.c:616
hpm_stat_t tsw_send_frame(TSW_Type *ptr, uint8_t *buffer, uint16_t length, uint8_t id)
Send a frame to CPU port.
Definition: hpm_tsw_drv.c:171
void tsw_set_unknown_frame_action(TSW_Type *ptr, uint8_t dest_port)
Set Unknow Frame Action.
Definition: hpm_tsw_drv.c:360
hpm_stat_t tsw_set_tsync_timer_hclkdiv(TSW_Type *ptr, uint8_t port, uint32_t host_clkdiv)
Set TSYNC timer host clock divider.
Definition: hpm_tsw_drv.c:441
hpm_stat_t tsw_shap_set_tas_basetime(TSW_Type *ptr, uint8_t port, uint32_t basetime_sec, uint32_t basetime_ns)
Set TAS base time.
Definition: hpm_tsw_drv.c:685
void tsw_set_broadcast_frame_action(TSW_Type *ptr, uint8_t dest_port)
Set Broadcast Frame Action.
Definition: hpm_tsw_drv.c:354
void tsw_disable_store_forward_mode(TSW_Type *ptr, uint8_t port)
Disable RXFIFO to store and forward mode.
Definition: hpm_tsw_drv.c:377
hpm_stat_t tsw_ep_disable_mac_ctrl(TSW_Type *ptr, uint8_t port, uint8_t mac_type)
Disable MAC Controller.
Definition: hpm_tsw_drv.c:76
hpm_stat_t tsw_tsync_get_txtimestamp(TSW_Type *ptr, uint8_t port, uint32_t bin, uint32_t *timestamplo, uint32_t *timestamphi)
TSYNC get TX timestamp.
Definition: hpm_tsw_drv.c:540
hpm_stat_t tsw_tsync_get_rxstatus(TSW_Type *ptr, uint8_t port, uint8_t *ov, uint8_t *avnxt, uint8_t *rxsel)
TSYNC get RX status.
Definition: hpm_tsw_drv.c:599
tsw_shap_tas_aclist_state_open_queue_t
Definition: hpm_tsw_drv.h:189
void tsw_set_internal_frame_action(TSW_Type *ptr, uint8_t dest_port)
Set Internal Frame Action.
Definition: hpm_tsw_drv.c:348
void tsw_clear_cam(TSW_Type *ptr)
Clear CAM.
Definition: hpm_tsw_drv.c:366
hpm_stat_t tsw_tsync_get_rxtimestamp(TSW_Type *ptr, uint8_t port, uint32_t *timestamplo, uint32_t *timestamphi)
TSYNC get RX timestamp.
Definition: hpm_tsw_drv.c:557
void tsw_init_recv(TSW_Type *ptr, tsw_dma_config_t *config)
Initialize TSW receive DMA.
Definition: hpm_tsw_drv.c:210
hpm_stat_t tsw_ep_mdio_read(TSW_Type *ptr, uint8_t port, uint32_t phy_addr, uint32_t reg_addr, uint16_t *data)
MDIO Read.
Definition: hpm_tsw_drv.c:30
void tsw_set_cam_vlan_port(TSW_Type *ptr)
CAM VLAN Setting.
Definition: hpm_tsw_drv.c:276
hpm_stat_t tsw_tsync_disable_current_events(TSW_Type *ptr, uint8_t port, uint32_t *disabled)
TSYNC disable current events.
Definition: hpm_tsw_drv.c:569
hpm_stat_t tsw_set_rtc_time_increment(TSW_Type *ptr, uint32_t increment)
Set RTC timer increment value.
Definition: hpm_tsw_drv.c:393
void tsw_set_lookup_table(TSW_Type *ptr, uint16_t entry_num, uint8_t dest_port, uint64_t dest_mac)
Set Lookup Table.
Definition: hpm_tsw_drv.c:313
tsw_cpu_send_to_port_t
Definition: hpm_tsw_drv.h:151
hpm_stat_t tsw_get_rtc_current_time(TSW_Type *ptr, uint32_t *sec, uint32_t *nsec)
Get RTC current time.
Definition: hpm_tsw_drv.c:400
hpm_stat_t tsw_shap_get_tas_controllist(TSW_Type *ptr, uint8_t port, uint32_t index, tsw_tas_controllist_entry_t *entry)
SHAP get tas controllist.
Definition: hpm_tsw_drv.c:706
void tsw_enable_store_forward_mode(TSW_Type *ptr, uint8_t port)
Enable RXFIFO to store and forward mode.
Definition: hpm_tsw_drv.c:372
hpm_stat_t tsw_shap_enable_tas(TSW_Type *ptr, uint8_t port)
Enable TAS.
Definition: hpm_tsw_drv.c:752
hpm_stat_t tsw_tsync_trigger_tx(TSW_Type *ptr, uint8_t port, uint32_t bin)
TSYNC trigger TX.
Definition: hpm_tsw_drv.c:528
hpm_stat_t tsw_ep_mdio_write(TSW_Type *ptr, uint8_t port, uint32_t phy_addr, uint32_t reg_addr, uint16_t data)
MDIO Write.
Definition: hpm_tsw_drv.c:50
hpm_stat_t tsw_ep_set_mac_addr(TSW_Type *ptr, uint8_t port, uint8_t *mac_addr, bool promisc)
Set MAC Address.
Definition: hpm_tsw_drv.c:109
hpm_stat_t tsw_tsync_update_len(TSW_Type *ptr, uint8_t port, uint32_t bin, uint8_t lenbytes, uint8_t tqueue)
TSYNC update length.
Definition: hpm_tsw_drv.c:515
tsw_port_phy_itf_t
Definition: hpm_tsw_drv.h:137
tsw_traffic_queue_t
Definition: hpm_tsw_drv.h:201
hpm_stat_t tsw_set_rtc_offset(TSW_Type *ptr, int64_t sec, uint32_t nsec)
Set RTC offset.
Definition: hpm_tsw_drv.c:426
void tsw_set_port_interface(TSW_Type *ptr, uint8_t port, uint8_t itf)
Set TSW port interface type.
Definition: hpm_tsw_drv.c:301
hpm_stat_t tsw_shap_set_tas_max_sdu_ticks(TSW_Type *ptr, uint8_t port, uint8_t index, uint32_t ticks)
Set tas maximum SDU ticks.
Definition: hpm_tsw_drv.c:719
hpm_stat_t tsw_set_pps_tod_output(TSW_Type *ptr)
Set pps tod output.
Definition: hpm_tsw_drv.c:773
hpm_stat_t tsw_ep_set_mdio_config(TSW_Type *ptr, uint8_t port, uint8_t clk_div)
MDIO Interface Config.
Definition: hpm_tsw_drv.c:23
hpm_stat_t tsw_shap_get_tas_max_sdu_ticks(TSW_Type *ptr, uint8_t port, uint8_t index, uint32_t *ticks)
Get tas maximum SDU ticks.
Definition: hpm_tsw_drv.c:730
hpm_stat_t tsw_tsync_clear_txdone(TSW_Type *ptr, uint8_t port, uint32_t done)
TSYNC clear tx done status.
Definition: hpm_tsw_drv.c:641
hpm_stat_t tsw_ep_enable_all_mac_ctrl(TSW_Type *ptr, uint8_t mac_type)
Enable All MAC Controllers.
Definition: hpm_tsw_drv.c:91
void tsw_port_gpr(TSW_Type *ptr, uint8_t port, uint8_t speed, uint8_t itf, uint8_t tx_dly, uint8_t rx_dly)
Set Port GPR.
Definition: hpm_tsw_drv.c:289
hpm_stat_t tsw_shap_set_cbs(TSW_Type *ptr, uint8_t port, uint8_t index, tsw_cbs_config_t *config)
Set CBS config.
Definition: hpm_tsw_drv.c:811
tsw_port_speed_t
Definition: hpm_tsw_drv.h:131
hpm_stat_t tsw_tsync_update_data(TSW_Type *ptr, uint8_t port, uint32_t bin, uint32_t binofs, uint32_t srcaddr, uint8_t lenbytes)
TSYNC update data.
Definition: hpm_tsw_drv.c:480
hpm_stat_t tsw_tsync_get_txdone(TSW_Type *ptr, uint8_t port, uint32_t *done)
TSYNC get tx done status.
Definition: hpm_tsw_drv.c:630
void tsw_init_send(TSW_Type *ptr, tsw_dma_config_t *config)
Initialize TSW send DMA.
Definition: hpm_tsw_drv.c:151
hpm_stat_t tsw_tsync_get_tmrdone(TSW_Type *ptr, uint8_t port, uint32_t *done)
TSYNC get tmr done status.
Definition: hpm_tsw_drv.c:648
void tsw_set_port_clock_delay(TSW_Type *ptr, uint8_t port, uint8_t tx_dly, uint8_t rx_dly)
Set TSW port clock delay.
Definition: hpm_tsw_drv.c:295
tsw_dst_t
Definition: hpm_tsw_drv.h:143
hpm_stat_t tsw_commit_recv_desc(TSW_Type *ptr, uint8_t *buffer, uint16_t length, uint8_t id)
Commit a receive DMA descriptor.
Definition: hpm_tsw_drv.c:254
hpm_stat_t tsw_ep_set_mac_mode(TSW_Type *ptr, uint8_t port, uint8_t gmii)
Set MAC Mode.
Definition: hpm_tsw_drv.c:129
hpm_stat_t tsw_shap_set_tas_listlen(TSW_Type *ptr, uint8_t port, uint32_t listlen)
Set TAS list length.
Definition: hpm_tsw_drv.c:659
hpm_stat_t tsw_set_rtc_offset_change(TSW_Type *ptr, uint32_t change)
Set RTC offset change.
Definition: hpm_tsw_drv.c:434
hpm_stat_t tsw_tsync_clear_overflow(TSW_Type *ptr, uint8_t port)
TSYNC clear overflow status.
Definition: hpm_tsw_drv.c:623
tsw_shap_tas_alist_op_t
Definition: hpm_tsw_drv.h:183
hpm_stat_t tsw_get_txtimestampfifo_used(TSW_Type *ptr, uint8_t port, uint32_t *count)
Get used countsed count from the TX-Timestamp FIFO.
Definition: hpm_tsw_drv.c:846
hpm_stat_t tsw_shap_set_tas(TSW_Type *ptr, uint8_t port, tsw_tas_config_t *config)
Set TAS config.
Definition: hpm_tsw_drv.c:781
hpm_stat_t tsw_get_rtc_offset(TSW_Type *ptr, int64_t *sec, uint32_t *nsec)
Get RTC offset.
Definition: hpm_tsw_drv.c:413
hpm_stat_t tsw_shap_get_tas_crsr(TSW_Type *ptr, uint8_t port, uint32_t *crsr)
Get TAS cycle time.
Definition: hpm_tsw_drv.c:745
hpm_stat_t tsw_ep_enable_mac_ctrl(TSW_Type *ptr, uint8_t port, uint8_t mac_type)
Enable MAC Controller.
Definition: hpm_tsw_drv.c:65
tsw_mac_mode_t
Definition: hpm_tsw_drv.h:159
tsw_pps_ctrl_t
Definition: hpm_tsw_drv.h:164
hpm_stat_t tsw_get_txtimestampfifo_entry(TSW_Type *ptr, uint8_t port, tsw_tsf_t *entry)
Get TX-Timestamp FIFO entry.
Definition: hpm_tsw_drv.c:857
hpm_stat_t tsw_shap_set_tas_cycletime(TSW_Type *ptr, uint8_t port, uint32_t cycle_time)
SHAP set tas cycle.
Definition: hpm_tsw_drv.c:678
hpm_stat_t tsw_shap_disable_tas(TSW_Type *ptr, uint8_t port)
Disable TAS.
Definition: hpm_tsw_drv.c:759
void tsw_set_port_speed(TSW_Type *ptr, uint8_t port, uint8_t speed)
Set TSW port speed.
Definition: hpm_tsw_drv.c:307
hpm_stat_t tsw_shap_tas_change_config(TSW_Type *ptr, uint8_t port)
Trigger to change TAS config.
Definition: hpm_tsw_drv.c:766
hpm_stat_t tsw_shap_get_tas_listlen(TSW_Type *ptr, uint8_t port, tsw_shap_tas_listlen_t *listlen)
TSW get shap tas listlen.
Definition: hpm_tsw_drv.c:670
void tsw_get_default_dma_config(tsw_dma_config_t *config)
Get default DMA configuration.
Definition: hpm_tsw_drv.c:16
hpm_stat_t tsw_get_rtc_time_increment(TSW_Type *ptr, uint32_t *increment)
Get RTC timer increment value.
Definition: hpm_tsw_drv.c:382
hpm_stat_t tsw_tsync_timer_interrupt_enable(TSW_Type *ptr, uint8_t port)
TSYNC timer interrupt enable.
Definition: hpm_tsw_drv.c:473
hpm_stat_t tsw_shap_set_tas_controllist(TSW_Type *ptr, uint8_t port, uint32_t index, tsw_tas_controllist_entry_t *entry)
SHAP set tas controllist.
Definition: hpm_tsw_drv.c:693
hpm_stat_t tsw_tsync_timer_control(TSW_Type *ptr, uint8_t port, uint8_t index, uint32_t period, uint32_t enable)
TSYNC timer control.
Definition: hpm_tsw_drv.c:448
@ tsw_shap_tas_aclist_state_open_queueu_2
Definition: hpm_tsw_drv.h:192
@ tsw_shap_tas_aclist_state_open_queueu_0
Definition: hpm_tsw_drv.h:190
@ tsw_shap_tas_aclist_state_open_queueu_5
Definition: hpm_tsw_drv.h:195
@ tsw_shap_tas_aclist_state_open_queueu_1
Definition: hpm_tsw_drv.h:191
@ tsw_shap_tas_aclist_state_open_queueu_4
Definition: hpm_tsw_drv.h:194
@ tsw_shap_tas_aclist_state_open_queueu_6
Definition: hpm_tsw_drv.h:196
@ tsw_shap_tas_aclist_state_open_queueu_7
Definition: hpm_tsw_drv.h:197
@ tsw_shap_tas_aclist_state_open_queueu_all
Definition: hpm_tsw_drv.h:198
@ tsw_shap_tas_aclist_state_open_queueu_3
Definition: hpm_tsw_drv.h:193
@ tsw_cpu_send_to_port_1
Definition: hpm_tsw_drv.h:153
@ tsw_cpu_send_to_all_ports
Definition: hpm_tsw_drv.h:156
@ tsw_cpu_send_to_lookup
Definition: hpm_tsw_drv.h:152
@ tsw_cpu_send_to_port_2
Definition: hpm_tsw_drv.h:154
@ tsw_cpu_send_to_port_3
Definition: hpm_tsw_drv.h:155
@ tsw_port_phy_itf_mii
Definition: hpm_tsw_drv.h:138
@ tsw_port_phy_itf_rgmii
Definition: hpm_tsw_drv.h:140
@ tsw_port_phy_itf_rmii
Definition: hpm_tsw_drv.h:139
@ tsw_traffic_queue_1
Definition: hpm_tsw_drv.h:203
@ tsw_traffic_queue_5
Definition: hpm_tsw_drv.h:207
@ tsw_traffic_queue_7
Definition: hpm_tsw_drv.h:209
@ tsw_traffic_queue_6
Definition: hpm_tsw_drv.h:208
@ tsw_traffic_queue_0
Definition: hpm_tsw_drv.h:202
@ tsw_traffic_queue_3
Definition: hpm_tsw_drv.h:205
@ tsw_traffic_queue_4
Definition: hpm_tsw_drv.h:206
@ tsw_traffic_queue_2
Definition: hpm_tsw_drv.h:204
@ tsw_port_speed_1000mbps
Definition: hpm_tsw_drv.h:134
@ tsw_port_speed_10mbps
Definition: hpm_tsw_drv.h:132
@ tsw_port_speed_100mbps
Definition: hpm_tsw_drv.h:133
@ tsw_dst_port_cpu
Definition: hpm_tsw_drv.h:145
@ tsw_dst_port_null
Definition: hpm_tsw_drv.h:144
@ tsw_dst_port_2
Definition: hpm_tsw_drv.h:147
@ tsw_dst_port_3
Definition: hpm_tsw_drv.h:148
@ tsw_dst_port_1
Definition: hpm_tsw_drv.h:146
@ tsw_shap_tas_aclist_op_set_and_hold_mac
Definition: hpm_tsw_drv.h:185
@ tsw_shap_tas_aclist_op_set_gate_states
Definition: hpm_tsw_drv.h:184
@ tsw_shap_tas_aclist_op_set_and_release_mac
Definition: hpm_tsw_drv.h:186
@ tsw_mac_mode_gmii
Definition: hpm_tsw_drv.h:161
@ tsw_mac_mode_mii
Definition: hpm_tsw_drv.h:160
@ tsw_pps_ctrl_bin_8192hz_digital_4096hz
Definition: hpm_tsw_drv.h:178
@ tsw_pps_ctrl_pps
Definition: hpm_tsw_drv.h:165
@ tsw_pps_ctrl_bin_1024hz_digital_512hz
Definition: hpm_tsw_drv.h:175
@ tsw_pps_ctrl_bin_4096hz_digital_2048hz
Definition: hpm_tsw_drv.h:177
@ tsw_pps_ctrl_bin_32hz_digital_16hz
Definition: hpm_tsw_drv.h:170
@ tsw_pps_ctrl_bin_8hz_digital_4hz
Definition: hpm_tsw_drv.h:168
@ tsw_pps_ctrl_bin_32768hz_digital_16384hz
Definition: hpm_tsw_drv.h:180
@ tsw_pps_ctrl_bin_2048hz_digital_1024hz
Definition: hpm_tsw_drv.h:176
@ tsw_pps_ctrl_bin_128hz_digital_64hz
Definition: hpm_tsw_drv.h:172
@ tsw_pps_ctrl_bin_512hz_digital_256hz
Definition: hpm_tsw_drv.h:174
@ tsw_pps_ctrl_bin_16384hz_digital_8192hz
Definition: hpm_tsw_drv.h:179
@ tsw_pps_ctrl_bin_16hz_digital_8hz
Definition: hpm_tsw_drv.h:169
@ tsw_pps_ctrl_bin_4hz_digital_2hz
Definition: hpm_tsw_drv.h:167
@ tsw_pps_ctrl_bin_256hz_digital_128hz
Definition: hpm_tsw_drv.h:173
@ tsw_pps_ctrl_bin_64hz_digital_32hz
Definition: hpm_tsw_drv.h:171
@ tsw_pps_ctrl_bin_2hz_digital_1hz
Definition: hpm_tsw_drv.h:166
Definition: hpm_tsw_regs.h:12
Definition: hpm_tsw_drv.h:116
uint8_t integer
Definition: hpm_tsw_drv.h:117
uint16_t fract
Definition: hpm_tsw_drv.h:118
Definition: hpm_tsw_drv.h:90
uint8_t maxlen
Definition: hpm_tsw_drv.h:93
bool irq
Definition: hpm_tsw_drv.h:92
bool soe
Definition: hpm_tsw_drv.h:91
Definition: hpm_tsw_drv.h:84
uint8_t * buffer
Definition: hpm_tsw_drv.h:86
uint8_t id
Definition: hpm_tsw_drv.h:85
uint16_t length
Definition: hpm_tsw_drv.h:87
Definition: hpm_tsw_drv.h:96
uint16_t oper_list_length
Definition: hpm_tsw_drv.h:98
uint16_t admin_list_length
Definition: hpm_tsw_drv.h:97
Definition: hpm_tsw_drv.h:108
uint32_t base_time_sec
Definition: hpm_tsw_drv.h:113
tsw_tas_controllist_entry_t * entry
Definition: hpm_tsw_drv.h:109
uint32_t cycle_time
Definition: hpm_tsw_drv.h:111
uint32_t entry_count
Definition: hpm_tsw_drv.h:110
uint32_t base_time_ns
Definition: hpm_tsw_drv.h:112
Definition: hpm_tsw_drv.h:102
uint8_t op
Definition: hpm_tsw_drv.h:104
uint8_t state
Definition: hpm_tsw_drv.h:103
uint32_t interval
Definition: hpm_tsw_drv.h:105
Definition: hpm_tsw_drv.h:121
uint32_t tstamphi
Definition: hpm_tsw_drv.h:123
uint32_t tstamplo
Definition: hpm_tsw_drv.h:122
uint8_t tqueue
Definition: hpm_tsw_drv.h:124
uint8_t tuser
Definition: hpm_tsw_drv.h:125
Definition: hpm_tsw_drv.h:60
uint32_t tx_hdr0
Definition: hpm_tsw_drv.h:62
uint32_t dest_port
Definition: hpm_tsw_drv.h:64
uint32_t tx_hdr2
Definition: hpm_tsw_drv.h:80
uint32_t tx_hdr3
Definition: hpm_tsw_drv.h:81
uint32_t tx_hdr1
Definition: hpm_tsw_drv.h:74
uint32_t queue
Definition: hpm_tsw_drv.h:66
uint32_t utag
Definition: hpm_tsw_drv.h:67
uint32_t cb
Definition: hpm_tsw_drv.h:76
uint32_t htype
Definition: hpm_tsw_drv.h:69