1/* SPDX-License-Identifier: GPL-2.0-only */
2/* Atlantic Network Driver
3 *
4 * Copyright (C) 2014-2019 aQuantia Corporation
5 * Copyright (C) 2019-2020 Marvell International Ltd.
6 */
7
8/* File hw_atl_llh.h: Declarations of bitfield and register access functions for
9 * Atlantic registers.
10 */
11
12#ifndef HW_ATL_LLH_H
13#define HW_ATL_LLH_H
14
15#include <linux/types.h>
16
17struct aq_hw_s;
18
19/* set temperature sense reset */
20void hw_atl_ts_reset_set(struct aq_hw_s *aq_hw, u32 val);
21
22/* set temperature sense power down */
23void hw_atl_ts_power_down_set(struct aq_hw_s *aq_hw, u32 val);
24
25/* get temperature sense power down */
26u32 hw_atl_ts_power_down_get(struct aq_hw_s *aq_hw);
27
28/* get temperature sense ready */
29u32 hw_atl_ts_ready_get(struct aq_hw_s *aq_hw);
30
31/* get temperature sense ready latch high */
32u32 hw_atl_ts_ready_latch_high_get(struct aq_hw_s *aq_hw);
33
34/* get temperature sense data */
35u32 hw_atl_ts_data_get(struct aq_hw_s *aq_hw);
36
37/* global */
38
39/* set global microprocessor semaphore */
40void hw_atl_reg_glb_cpu_sem_set(struct aq_hw_s *aq_hw,	u32 glb_cpu_sem,
41				u32 semaphore);
42
43/* get global microprocessor semaphore */
44u32 hw_atl_reg_glb_cpu_sem_get(struct aq_hw_s *aq_hw, u32 semaphore);
45
46/* set global register reset disable */
47void hw_atl_glb_glb_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 glb_reg_res_dis);
48
49/* set soft reset */
50void hw_atl_glb_soft_res_set(struct aq_hw_s *aq_hw, u32 soft_res);
51
52/* get soft reset */
53u32 hw_atl_glb_soft_res_get(struct aq_hw_s *aq_hw);
54
55/* stats */
56
57u32 hw_atl_rpb_rx_dma_drop_pkt_cnt_get(struct aq_hw_s *aq_hw);
58
59/* get rx dma good octet counter */
60u64 hw_atl_stats_rx_dma_good_octet_counter_get(struct aq_hw_s *aq_hw);
61
62/* get rx dma good packet counter */
63u64 hw_atl_stats_rx_dma_good_pkt_counter_get(struct aq_hw_s *aq_hw);
64
65/* get tx dma good octet counter */
66u64 hw_atl_stats_tx_dma_good_octet_counter_get(struct aq_hw_s *aq_hw);
67
68/* get tx dma good packet counter */
69u64 hw_atl_stats_tx_dma_good_pkt_counter_get(struct aq_hw_s *aq_hw);
70
71/* get msm rx errors counter register */
72u32 hw_atl_reg_mac_msm_rx_errs_cnt_get(struct aq_hw_s *aq_hw);
73
74/* get msm rx unicast frames counter register */
75u32 hw_atl_reg_mac_msm_rx_ucst_frm_cnt_get(struct aq_hw_s *aq_hw);
76
77/* get msm rx multicast frames counter register */
78u32 hw_atl_reg_mac_msm_rx_mcst_frm_cnt_get(struct aq_hw_s *aq_hw);
79
80/* get msm rx broadcast frames counter register */
81u32 hw_atl_reg_mac_msm_rx_bcst_frm_cnt_get(struct aq_hw_s *aq_hw);
82
83/* get msm rx broadcast octets counter register 1 */
84u32 hw_atl_reg_mac_msm_rx_bcst_octets_counter1get(struct aq_hw_s *aq_hw);
85
86/* get msm rx unicast octets counter register 0 */
87u32 hw_atl_reg_mac_msm_rx_ucst_octets_counter0get(struct aq_hw_s *aq_hw);
88
89/* get msm tx errors counter register */
90u32 hw_atl_reg_mac_msm_tx_errs_cnt_get(struct aq_hw_s *aq_hw);
91
92/* get msm tx unicast frames counter register */
93u32 hw_atl_reg_mac_msm_tx_ucst_frm_cnt_get(struct aq_hw_s *aq_hw);
94
95/* get msm tx multicast frames counter register */
96u32 hw_atl_reg_mac_msm_tx_mcst_frm_cnt_get(struct aq_hw_s *aq_hw);
97
98/* get msm tx broadcast frames counter register */
99u32 hw_atl_reg_mac_msm_tx_bcst_frm_cnt_get(struct aq_hw_s *aq_hw);
100
101/* get msm tx multicast octets counter register 1 */
102u32 hw_atl_reg_mac_msm_tx_mcst_octets_counter1get(struct aq_hw_s *aq_hw);
103
104/* get msm tx broadcast octets counter register 1 */
105u32 hw_atl_reg_mac_msm_tx_bcst_octets_counter1get(struct aq_hw_s *aq_hw);
106
107/* get msm tx unicast octets counter register 0 */
108u32 hw_atl_reg_mac_msm_tx_ucst_octets_counter0get(struct aq_hw_s *aq_hw);
109
110/* get global mif identification */
111u32 hw_atl_reg_glb_mif_id_get(struct aq_hw_s *aq_hw);
112
113/* interrupt */
114
115/* set interrupt auto mask lsw */
116void hw_atl_itr_irq_auto_masklsw_set(struct aq_hw_s *aq_hw,
117				     u32 irq_auto_masklsw);
118
119/* set interrupt mapping enable rx */
120void hw_atl_itr_irq_map_en_rx_set(struct aq_hw_s *aq_hw, u32 irq_map_en_rx,
121				  u32 rx);
122
123/* set interrupt mapping enable tx */
124void hw_atl_itr_irq_map_en_tx_set(struct aq_hw_s *aq_hw, u32 irq_map_en_tx,
125				  u32 tx);
126
127/* set interrupt mapping rx */
128void hw_atl_itr_irq_map_rx_set(struct aq_hw_s *aq_hw, u32 irq_map_rx, u32 rx);
129
130/* set interrupt mapping tx */
131void hw_atl_itr_irq_map_tx_set(struct aq_hw_s *aq_hw, u32 irq_map_tx, u32 tx);
132
133/* set interrupt mask clear lsw */
134void hw_atl_itr_irq_msk_clearlsw_set(struct aq_hw_s *aq_hw,
135				     u32 irq_msk_clearlsw);
136
137/* set interrupt mask set lsw */
138void hw_atl_itr_irq_msk_setlsw_set(struct aq_hw_s *aq_hw, u32 irq_msk_setlsw);
139
140/* set interrupt register reset disable */
141void hw_atl_itr_irq_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 irq_reg_res_dis);
142
143/* set interrupt status clear lsw */
144void hw_atl_itr_irq_status_clearlsw_set(struct aq_hw_s *aq_hw,
145					u32 irq_status_clearlsw);
146
147/* get interrupt status lsw */
148u32 hw_atl_itr_irq_statuslsw_get(struct aq_hw_s *aq_hw);
149
150/* get reset interrupt */
151u32 hw_atl_itr_res_irq_get(struct aq_hw_s *aq_hw);
152
153/* set reset interrupt */
154void hw_atl_itr_res_irq_set(struct aq_hw_s *aq_hw, u32 res_irq);
155
156/* set RSC interrupt */
157void hw_atl_itr_rsc_en_set(struct aq_hw_s *aq_hw, u32 enable);
158
159/* set RSC delay */
160void hw_atl_itr_rsc_delay_set(struct aq_hw_s *aq_hw, u32 delay);
161
162/* rdm */
163
164/* set cpu id */
165void hw_atl_rdm_cpu_id_set(struct aq_hw_s *aq_hw, u32 cpuid, u32 dca);
166
167/* set rx dca enable */
168void hw_atl_rdm_rx_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_dca_en);
169
170/* set rx dca mode */
171void hw_atl_rdm_rx_dca_mode_set(struct aq_hw_s *aq_hw, u32 rx_dca_mode);
172
173/* set rx descriptor data buffer size */
174void hw_atl_rdm_rx_desc_data_buff_size_set(struct aq_hw_s *aq_hw,
175					   u32 rx_desc_data_buff_size,
176				    u32 descriptor);
177
178/* set rx descriptor dca enable */
179void hw_atl_rdm_rx_desc_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_desc_dca_en,
180				   u32 dca);
181
182/* set rx descriptor enable */
183void hw_atl_rdm_rx_desc_en_set(struct aq_hw_s *aq_hw, u32 rx_desc_en,
184			       u32 descriptor);
185
186/* set rx descriptor header splitting */
187void hw_atl_rdm_rx_desc_head_splitting_set(struct aq_hw_s *aq_hw,
188					   u32 rx_desc_head_splitting,
189				    u32 descriptor);
190
191/* get rx descriptor head pointer */
192u32 hw_atl_rdm_rx_desc_head_ptr_get(struct aq_hw_s *aq_hw, u32 descriptor);
193
194/* set rx descriptor length */
195void hw_atl_rdm_rx_desc_len_set(struct aq_hw_s *aq_hw, u32 rx_desc_len,
196				u32 descriptor);
197
198/* set rx descriptor write-back interrupt enable */
199void hw_atl_rdm_rx_desc_wr_wb_irq_en_set(struct aq_hw_s *aq_hw,
200					 u32 rx_desc_wr_wb_irq_en);
201
202/* set rx header dca enable */
203void hw_atl_rdm_rx_head_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_head_dca_en,
204				   u32 dca);
205
206/* set rx payload dca enable */
207void hw_atl_rdm_rx_pld_dca_en_set(struct aq_hw_s *aq_hw, u32 rx_pld_dca_en,
208				  u32 dca);
209
210/* set rx descriptor header buffer size */
211void hw_atl_rdm_rx_desc_head_buff_size_set(struct aq_hw_s *aq_hw,
212					   u32 rx_desc_head_buff_size,
213					   u32 descriptor);
214
215/* set rx descriptor reset */
216void hw_atl_rdm_rx_desc_res_set(struct aq_hw_s *aq_hw, u32 rx_desc_res,
217				u32 descriptor);
218
219/* Set RDM Interrupt Moderation Enable */
220void hw_atl_rdm_rdm_intr_moder_en_set(struct aq_hw_s *aq_hw,
221				      u32 rdm_intr_moder_en);
222
223/* reg */
224
225/* set general interrupt mapping register */
226void hw_atl_reg_gen_irq_map_set(struct aq_hw_s *aq_hw, u32 gen_intr_map,
227				u32 regidx);
228
229/* get general interrupt status register */
230u32 hw_atl_reg_gen_irq_status_get(struct aq_hw_s *aq_hw);
231
232/* set interrupt global control register */
233void hw_atl_reg_irq_glb_ctl_set(struct aq_hw_s *aq_hw, u32 intr_glb_ctl);
234
235/* set interrupt throttle register */
236void hw_atl_reg_irq_thr_set(struct aq_hw_s *aq_hw, u32 intr_thr, u32 throttle);
237
238/* set rx dma descriptor base address lsw */
239void hw_atl_reg_rx_dma_desc_base_addresslswset(struct aq_hw_s *aq_hw,
240					       u32 rx_dma_desc_base_addrlsw,
241					u32 descriptor);
242
243/* set rx dma descriptor base address msw */
244void hw_atl_reg_rx_dma_desc_base_addressmswset(struct aq_hw_s *aq_hw,
245					       u32 rx_dma_desc_base_addrmsw,
246					u32 descriptor);
247
248/* get rx dma descriptor status register */
249u32 hw_atl_reg_rx_dma_desc_status_get(struct aq_hw_s *aq_hw, u32 descriptor);
250
251/* set rx dma descriptor tail pointer register */
252void hw_atl_reg_rx_dma_desc_tail_ptr_set(struct aq_hw_s *aq_hw,
253					 u32 rx_dma_desc_tail_ptr,
254				  u32 descriptor);
255
256/* set rx filter multicast filter mask register */
257void hw_atl_reg_rx_flr_mcst_flr_msk_set(struct aq_hw_s *aq_hw,
258					u32 rx_flr_mcst_flr_msk);
259
260/* set rx filter multicast filter register */
261void hw_atl_reg_rx_flr_mcst_flr_set(struct aq_hw_s *aq_hw, u32 rx_flr_mcst_flr,
262				    u32 filter);
263
264/* set rx filter rss control register 1 */
265void hw_atl_reg_rx_flr_rss_control1set(struct aq_hw_s *aq_hw,
266				       u32 rx_flr_rss_control1);
267
268/* Set RX Filter Control Register 2 */
269void hw_atl_reg_rx_flr_control2_set(struct aq_hw_s *aq_hw, u32 rx_flr_control2);
270
271/* Set RX Interrupt Moderation Control Register */
272void hw_atl_reg_rx_intr_moder_ctrl_set(struct aq_hw_s *aq_hw,
273				       u32 rx_intr_moderation_ctl,
274				u32 queue);
275
276/* set tx dma debug control */
277void hw_atl_reg_tx_dma_debug_ctl_set(struct aq_hw_s *aq_hw,
278				     u32 tx_dma_debug_ctl);
279
280/* set tx dma descriptor base address lsw */
281void hw_atl_reg_tx_dma_desc_base_addresslswset(struct aq_hw_s *aq_hw,
282					       u32 tx_dma_desc_base_addrlsw,
283					u32 descriptor);
284
285/* set tx dma descriptor base address msw */
286void hw_atl_reg_tx_dma_desc_base_addressmswset(struct aq_hw_s *aq_hw,
287					       u32 tx_dma_desc_base_addrmsw,
288					u32 descriptor);
289
290/* set tx dma descriptor tail pointer register */
291void hw_atl_reg_tx_dma_desc_tail_ptr_set(struct aq_hw_s *aq_hw,
292					 u32 tx_dma_desc_tail_ptr,
293					 u32 descriptor);
294
295/* Set TX Interrupt Moderation Control Register */
296void hw_atl_reg_tx_intr_moder_ctrl_set(struct aq_hw_s *aq_hw,
297				       u32 tx_intr_moderation_ctl,
298				       u32 queue);
299
300/* set global microprocessor scratch pad */
301void hw_atl_reg_glb_cpu_scratch_scp_set(struct aq_hw_s *aq_hw,
302					u32 glb_cpu_scratch_scp,
303					u32 scratch_scp);
304
305/* rpb */
306
307/* set dma system loopback */
308void hw_atl_rpb_dma_sys_lbk_set(struct aq_hw_s *aq_hw, u32 dma_sys_lbk);
309
310/* set dma network loopback */
311void hw_atl_rpb_dma_net_lbk_set(struct aq_hw_s *aq_hw, u32 dma_net_lbk);
312
313/* set rx traffic class mode */
314void hw_atl_rpb_rpf_rx_traf_class_mode_set(struct aq_hw_s *aq_hw,
315					   u32 rx_traf_class_mode);
316
317/* get rx traffic class mode */
318u32 hw_atl_rpb_rpf_rx_traf_class_mode_get(struct aq_hw_s *aq_hw);
319
320/* set rx buffer enable */
321void hw_atl_rpb_rx_buff_en_set(struct aq_hw_s *aq_hw, u32 rx_buff_en);
322
323/* set rx buffer high threshold (per tc) */
324void hw_atl_rpb_rx_buff_hi_threshold_per_tc_set(struct aq_hw_s *aq_hw,
325						u32 rx_buff_hi_threshold_per_tc,
326						u32 buffer);
327
328/* set rx buffer low threshold (per tc) */
329void hw_atl_rpb_rx_buff_lo_threshold_per_tc_set(struct aq_hw_s *aq_hw,
330						u32 rx_buff_lo_threshold_per_tc,
331					 u32 buffer);
332
333/* set rx flow control mode */
334void hw_atl_rpb_rx_flow_ctl_mode_set(struct aq_hw_s *aq_hw,
335				     u32 rx_flow_ctl_mode);
336
337/* set rx packet buffer size (per tc) */
338void hw_atl_rpb_rx_pkt_buff_size_per_tc_set(struct aq_hw_s *aq_hw,
339					    u32 rx_pkt_buff_size_per_tc,
340					    u32 buffer);
341
342/* toggle rdm rx dma descriptor cache init */
343void hw_atl_rdm_rx_dma_desc_cache_init_tgl(struct aq_hw_s *aq_hw);
344
345/* get rdm rx dma descriptor cache init done */
346u32 hw_atl_rdm_rx_dma_desc_cache_init_done_get(struct aq_hw_s *aq_hw);
347
348/* set rx xoff enable (per tc) */
349void hw_atl_rpb_rx_xoff_en_per_tc_set(struct aq_hw_s *aq_hw,
350				      u32 rx_xoff_en_per_tc,
351				      u32 buffer);
352
353/* rpf */
354
355/* set l2 broadcast count threshold */
356void hw_atl_rpfl2broadcast_count_threshold_set(struct aq_hw_s *aq_hw,
357					       u32 l2broadcast_count_threshold);
358
359/* set l2 broadcast enable */
360void hw_atl_rpfl2broadcast_en_set(struct aq_hw_s *aq_hw, u32 l2broadcast_en);
361
362/* set l2 broadcast filter action */
363void hw_atl_rpfl2broadcast_flr_act_set(struct aq_hw_s *aq_hw,
364				       u32 l2broadcast_flr_act);
365
366/* set l2 multicast filter enable */
367void hw_atl_rpfl2multicast_flr_en_set(struct aq_hw_s *aq_hw,
368				      u32 l2multicast_flr_en,
369				      u32 filter);
370
371/* get l2 promiscuous mode enable */
372u32 hw_atl_rpfl2promiscuous_mode_en_get(struct aq_hw_s *aq_hw);
373
374/* set l2 promiscuous mode enable */
375void hw_atl_rpfl2promiscuous_mode_en_set(struct aq_hw_s *aq_hw,
376					 u32 l2promiscuous_mode_en);
377
378/* set l2 unicast filter action */
379void hw_atl_rpfl2unicast_flr_act_set(struct aq_hw_s *aq_hw,
380				     u32 l2unicast_flr_act,
381				     u32 filter);
382
383/* set l2 unicast filter enable */
384void hw_atl_rpfl2_uc_flr_en_set(struct aq_hw_s *aq_hw, u32 l2unicast_flr_en,
385				u32 filter);
386
387/* set l2 unicast destination address lsw */
388void hw_atl_rpfl2unicast_dest_addresslsw_set(struct aq_hw_s *aq_hw,
389					     u32 l2unicast_dest_addresslsw,
390				      u32 filter);
391
392/* set l2 unicast destination address msw */
393void hw_atl_rpfl2unicast_dest_addressmsw_set(struct aq_hw_s *aq_hw,
394					     u32 l2unicast_dest_addressmsw,
395				      u32 filter);
396
397/* Set L2 Accept all Multicast packets */
398void hw_atl_rpfl2_accept_all_mc_packets_set(struct aq_hw_s *aq_hw,
399					    u32 l2_accept_all_mc_packets);
400
401/* set user-priority tc mapping */
402void hw_atl_rpf_rpb_user_priority_tc_map_set(struct aq_hw_s *aq_hw,
403					     u32 user_priority_tc_map, u32 tc);
404
405/* set rss key address */
406void hw_atl_rpf_rss_key_addr_set(struct aq_hw_s *aq_hw, u32 rss_key_addr);
407
408/* set rss key write data */
409void hw_atl_rpf_rss_key_wr_data_set(struct aq_hw_s *aq_hw, u32 rss_key_wr_data);
410
411/* get rss key write enable */
412u32 hw_atl_rpf_rss_key_wr_en_get(struct aq_hw_s *aq_hw);
413
414/* set rss key write enable */
415void hw_atl_rpf_rss_key_wr_en_set(struct aq_hw_s *aq_hw, u32 rss_key_wr_en);
416
417/* set rss redirection table address */
418void hw_atl_rpf_rss_redir_tbl_addr_set(struct aq_hw_s *aq_hw,
419				       u32 rss_redir_tbl_addr);
420
421/* set rss redirection table write data */
422void hw_atl_rpf_rss_redir_tbl_wr_data_set(struct aq_hw_s *aq_hw,
423					  u32 rss_redir_tbl_wr_data);
424
425/* get rss redirection write enable */
426u32 hw_atl_rpf_rss_redir_wr_en_get(struct aq_hw_s *aq_hw);
427
428/* set rss redirection write enable */
429void hw_atl_rpf_rss_redir_wr_en_set(struct aq_hw_s *aq_hw, u32 rss_redir_wr_en);
430
431/* set tpo to rpf system loopback */
432void hw_atl_rpf_tpo_to_rpf_sys_lbk_set(struct aq_hw_s *aq_hw,
433				       u32 tpo_to_rpf_sys_lbk);
434
435/* set vlan inner ethertype */
436void hw_atl_rpf_vlan_inner_etht_set(struct aq_hw_s *aq_hw, u32 vlan_inner_etht);
437
438/* set vlan outer ethertype */
439void hw_atl_rpf_vlan_outer_etht_set(struct aq_hw_s *aq_hw, u32 vlan_outer_etht);
440
441/* set vlan promiscuous mode enable */
442void hw_atl_rpf_vlan_prom_mode_en_set(struct aq_hw_s *aq_hw,
443				      u32 vlan_prom_mode_en);
444
445/* Get VLAN promiscuous mode enable */
446u32 hw_atl_rpf_vlan_prom_mode_en_get(struct aq_hw_s *aq_hw);
447
448/* Set VLAN untagged action */
449void hw_atl_rpf_vlan_untagged_act_set(struct aq_hw_s *aq_hw,
450				      u32 vlan_untagged_act);
451
452/* Set VLAN accept untagged packets */
453void hw_atl_rpf_vlan_accept_untagged_packets_set(struct aq_hw_s *aq_hw,
454						 u32 vlan_acc_untagged_packets);
455
456/* Set VLAN filter enable */
457void hw_atl_rpf_vlan_flr_en_set(struct aq_hw_s *aq_hw, u32 vlan_flr_en,
458				u32 filter);
459
460/* Set VLAN Filter Action */
461void hw_atl_rpf_vlan_flr_act_set(struct aq_hw_s *aq_hw, u32 vlan_filter_act,
462				 u32 filter);
463
464/* Set VLAN ID Filter */
465void hw_atl_rpf_vlan_id_flr_set(struct aq_hw_s *aq_hw, u32 vlan_id_flr,
466				u32 filter);
467
468/* Set VLAN RX queue assignment enable */
469void hw_atl_rpf_vlan_rxq_en_flr_set(struct aq_hw_s *aq_hw, u32 vlan_rxq_en,
470				    u32 filter);
471
472/* Set VLAN RX queue */
473void hw_atl_rpf_vlan_rxq_flr_set(struct aq_hw_s *aq_hw, u32 vlan_rxq,
474				 u32 filter);
475
476/* set ethertype filter enable */
477void hw_atl_rpf_etht_flr_en_set(struct aq_hw_s *aq_hw, u32 etht_flr_en,
478				u32 filter);
479
480/* set  ethertype user-priority enable */
481void hw_atl_rpf_etht_user_priority_en_set(struct aq_hw_s *aq_hw,
482					  u32 etht_user_priority_en,
483					  u32 filter);
484
485/* set  ethertype rx queue enable */
486void hw_atl_rpf_etht_rx_queue_en_set(struct aq_hw_s *aq_hw,
487				     u32 etht_rx_queue_en,
488				     u32 filter);
489
490/* set ethertype rx queue */
491void hw_atl_rpf_etht_rx_queue_set(struct aq_hw_s *aq_hw, u32 etht_rx_queue,
492				  u32 filter);
493
494/* set ethertype user-priority */
495void hw_atl_rpf_etht_user_priority_set(struct aq_hw_s *aq_hw,
496				       u32 etht_user_priority,
497				       u32 filter);
498
499/* set ethertype management queue */
500void hw_atl_rpf_etht_mgt_queue_set(struct aq_hw_s *aq_hw, u32 etht_mgt_queue,
501				   u32 filter);
502
503/* set ethertype filter action */
504void hw_atl_rpf_etht_flr_act_set(struct aq_hw_s *aq_hw, u32 etht_flr_act,
505				 u32 filter);
506
507/* set ethertype filter */
508void hw_atl_rpf_etht_flr_set(struct aq_hw_s *aq_hw, u32 etht_flr, u32 filter);
509
510/* set L4 source port */
511void hw_atl_rpf_l4_spd_set(struct aq_hw_s *aq_hw, u32 val, u32 filter);
512
513/* set L4 destination port */
514void hw_atl_rpf_l4_dpd_set(struct aq_hw_s *aq_hw, u32 val, u32 filter);
515
516/* rpo */
517
518/* set ipv4 header checksum offload enable */
519void hw_atl_rpo_ipv4header_crc_offload_en_set(struct aq_hw_s *aq_hw,
520					      u32 ipv4header_crc_offload_en);
521
522/* set rx descriptor vlan stripping */
523void hw_atl_rpo_rx_desc_vlan_stripping_set(struct aq_hw_s *aq_hw,
524					   u32 rx_desc_vlan_stripping,
525					   u32 descriptor);
526
527void hw_atl_rpo_outer_vlan_tag_mode_set(void *context,
528					u32 outervlantagmode);
529
530u32 hw_atl_rpo_outer_vlan_tag_mode_get(void *context);
531
532/* set tcp/udp checksum offload enable */
533void hw_atl_rpo_tcp_udp_crc_offload_en_set(struct aq_hw_s *aq_hw,
534					   u32 tcp_udp_crc_offload_en);
535
536/* Set LRO Patch Optimization Enable. */
537void hw_atl_rpo_lro_patch_optimization_en_set(struct aq_hw_s *aq_hw,
538					      u32 lro_patch_optimization_en);
539
540/* Set Large Receive Offload Enable */
541void hw_atl_rpo_lro_en_set(struct aq_hw_s *aq_hw, u32 lro_en);
542
543/* Set LRO Q Sessions Limit */
544void hw_atl_rpo_lro_qsessions_lim_set(struct aq_hw_s *aq_hw,
545				      u32 lro_qsessions_lim);
546
547/* Set LRO Total Descriptor Limit */
548void hw_atl_rpo_lro_total_desc_lim_set(struct aq_hw_s *aq_hw,
549				       u32 lro_total_desc_lim);
550
551/* Set LRO Min Payload of First Packet */
552void hw_atl_rpo_lro_min_pay_of_first_pkt_set(struct aq_hw_s *aq_hw,
553					     u32 lro_min_pld_of_first_pkt);
554
555/* Set LRO Packet Limit */
556void hw_atl_rpo_lro_pkt_lim_set(struct aq_hw_s *aq_hw, u32 lro_packet_lim);
557
558/* Set LRO Max Number of Descriptors */
559void hw_atl_rpo_lro_max_num_of_descriptors_set(struct aq_hw_s *aq_hw,
560					       u32 lro_max_desc_num, u32 lro);
561
562/* Set LRO Time Base Divider */
563void hw_atl_rpo_lro_time_base_divider_set(struct aq_hw_s *aq_hw,
564					  u32 lro_time_base_divider);
565
566/*Set LRO Inactive Interval */
567void hw_atl_rpo_lro_inactive_interval_set(struct aq_hw_s *aq_hw,
568					  u32 lro_inactive_interval);
569
570/*Set LRO Max Coalescing Interval */
571void hw_atl_rpo_lro_max_coalescing_interval_set(struct aq_hw_s *aq_hw,
572						u32 lro_max_coal_interval);
573
574/* rx */
575
576/* set rx register reset disable */
577void hw_atl_rx_rx_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 rx_reg_res_dis);
578
579/* tdm */
580
581/* set cpu id */
582void hw_atl_tdm_cpu_id_set(struct aq_hw_s *aq_hw, u32 cpuid, u32 dca);
583
584/* set large send offload enable */
585void hw_atl_tdm_large_send_offload_en_set(struct aq_hw_s *aq_hw,
586					  u32 large_send_offload_en);
587
588/* set tx descriptor enable */
589void hw_atl_tdm_tx_desc_en_set(struct aq_hw_s *aq_hw, u32 tx_desc_en,
590			       u32 descriptor);
591
592/* set tx dca enable */
593void hw_atl_tdm_tx_dca_en_set(struct aq_hw_s *aq_hw, u32 tx_dca_en);
594
595/* set tx dca mode */
596void hw_atl_tdm_tx_dca_mode_set(struct aq_hw_s *aq_hw, u32 tx_dca_mode);
597
598/* set tx descriptor dca enable */
599void hw_atl_tdm_tx_desc_dca_en_set(struct aq_hw_s *aq_hw, u32 tx_desc_dca_en,
600				   u32 dca);
601
602/* get tx descriptor head pointer */
603u32 hw_atl_tdm_tx_desc_head_ptr_get(struct aq_hw_s *aq_hw, u32 descriptor);
604
605/* set tx descriptor length */
606void hw_atl_tdm_tx_desc_len_set(struct aq_hw_s *aq_hw, u32 tx_desc_len,
607				u32 descriptor);
608
609/* set tx descriptor write-back interrupt enable */
610void hw_atl_tdm_tx_desc_wr_wb_irq_en_set(struct aq_hw_s *aq_hw,
611					 u32 tx_desc_wr_wb_irq_en);
612
613/* set tx descriptor write-back threshold */
614void hw_atl_tdm_tx_desc_wr_wb_threshold_set(struct aq_hw_s *aq_hw,
615					    u32 tx_desc_wr_wb_threshold,
616				     u32 descriptor);
617
618/* Set TDM Interrupt Moderation Enable */
619void hw_atl_tdm_tdm_intr_moder_en_set(struct aq_hw_s *aq_hw,
620				      u32 tdm_irq_moderation_en);
621/* thm */
622
623/* set lso tcp flag of first packet */
624void hw_atl_thm_lso_tcp_flag_of_first_pkt_set(struct aq_hw_s *aq_hw,
625					      u32 lso_tcp_flag_of_first_pkt);
626
627/* set lso tcp flag of last packet */
628void hw_atl_thm_lso_tcp_flag_of_last_pkt_set(struct aq_hw_s *aq_hw,
629					     u32 lso_tcp_flag_of_last_pkt);
630
631/* set lso tcp flag of middle packet */
632void hw_atl_thm_lso_tcp_flag_of_middle_pkt_set(struct aq_hw_s *aq_hw,
633					       u32 lso_tcp_flag_of_middle_pkt);
634
635/* tpb */
636
637/* set TX Traffic Class Mode */
638void hw_atl_tpb_tps_tx_tc_mode_set(struct aq_hw_s *aq_hw,
639				   u32 tx_traf_class_mode);
640
641/* get TX Traffic Class Mode */
642u32 hw_atl_tpb_tps_tx_tc_mode_get(struct aq_hw_s *aq_hw);
643
644/* set tx buffer enable */
645void hw_atl_tpb_tx_buff_en_set(struct aq_hw_s *aq_hw, u32 tx_buff_en);
646
647/* set tx buffer high threshold (per tc) */
648void hw_atl_tpb_tx_buff_hi_threshold_per_tc_set(struct aq_hw_s *aq_hw,
649						u32 tx_buff_hi_threshold_per_tc,
650					 u32 buffer);
651
652/* set tx buffer low threshold (per tc) */
653void hw_atl_tpb_tx_buff_lo_threshold_per_tc_set(struct aq_hw_s *aq_hw,
654						u32 tx_buff_lo_threshold_per_tc,
655					 u32 buffer);
656
657/* set tx dma system loopback enable */
658void hw_atl_tpb_tx_dma_sys_lbk_en_set(struct aq_hw_s *aq_hw, u32 tx_dma_sys_lbk_en);
659
660/* set tx dma network loopback enable */
661void hw_atl_tpb_tx_dma_net_lbk_en_set(struct aq_hw_s *aq_hw,
662				      u32 tx_dma_net_lbk_en);
663
664/* set tx clock gating enable */
665void hw_atl_tpb_tx_tx_clk_gate_en_set(struct aq_hw_s *aq_hw,
666				      u32 tx_clk_gate_en);
667
668/* set tx packet buffer size (per tc) */
669void hw_atl_tpb_tx_pkt_buff_size_per_tc_set(struct aq_hw_s *aq_hw,
670					    u32 tx_pkt_buff_size_per_tc,
671					    u32 buffer);
672
673/* set tx path pad insert enable */
674void hw_atl_tpb_tx_path_scp_ins_en_set(struct aq_hw_s *aq_hw, u32 tx_path_scp_ins_en);
675
676/* tpo */
677
678/* set ipv4 header checksum offload enable */
679void hw_atl_tpo_ipv4header_crc_offload_en_set(struct aq_hw_s *aq_hw,
680					      u32 ipv4header_crc_offload_en);
681
682/* set tcp/udp checksum offload enable */
683void hw_atl_tpo_tcp_udp_crc_offload_en_set(struct aq_hw_s *aq_hw,
684					   u32 tcp_udp_crc_offload_en);
685
686/* set tx pkt system loopback enable */
687void hw_atl_tpo_tx_pkt_sys_lbk_en_set(struct aq_hw_s *aq_hw,
688				      u32 tx_pkt_sys_lbk_en);
689
690/* tps */
691
692/* set tx packet scheduler data arbitration mode */
693void hw_atl_tps_tx_pkt_shed_data_arb_mode_set(struct aq_hw_s *aq_hw,
694					      u32 tx_pkt_shed_data_arb_mode);
695
696/* set tx packet scheduler descriptor rate current time reset */
697void hw_atl_tps_tx_pkt_shed_desc_rate_curr_time_res_set(struct aq_hw_s *aq_hw,
698							u32 curr_time_res);
699
700/* set tx packet scheduler descriptor rate limit */
701void hw_atl_tps_tx_pkt_shed_desc_rate_lim_set(struct aq_hw_s *aq_hw,
702					      u32 tx_pkt_shed_desc_rate_lim);
703
704/* set tx packet scheduler descriptor tc arbitration mode */
705void hw_atl_tps_tx_pkt_shed_desc_tc_arb_mode_set(struct aq_hw_s *aq_hw,
706						 u32 arb_mode);
707
708/* set tx packet scheduler descriptor tc max credit */
709void hw_atl_tps_tx_pkt_shed_desc_tc_max_credit_set(struct aq_hw_s *aq_hw,
710						   const u32 tc,
711						   const u32 max_credit);
712
713/* set tx packet scheduler descriptor tc weight */
714void hw_atl_tps_tx_pkt_shed_desc_tc_weight_set(struct aq_hw_s *aq_hw,
715					       const u32 tc,
716					       const u32 weight);
717
718/* set tx packet scheduler descriptor vm arbitration mode */
719void hw_atl_tps_tx_pkt_shed_desc_vm_arb_mode_set(struct aq_hw_s *aq_hw,
720						 u32 arb_mode);
721
722/* set tx packet scheduler tc data max credit */
723void hw_atl_tps_tx_pkt_shed_tc_data_max_credit_set(struct aq_hw_s *aq_hw,
724						   const u32 tc,
725						   const u32 max_credit);
726
727/* set tx packet scheduler tc data weight */
728void hw_atl_tps_tx_pkt_shed_tc_data_weight_set(struct aq_hw_s *aq_hw,
729					       const u32 tc,
730					       const u32 weight);
731
732/* set tx descriptor rate mode */
733void hw_atl_tps_tx_desc_rate_mode_set(struct aq_hw_s *aq_hw,
734				      const u32 rate_mode);
735
736/* set tx packet scheduler descriptor rate enable */
737void hw_atl_tps_tx_desc_rate_en_set(struct aq_hw_s *aq_hw, const u32 desc,
738				    const u32 enable);
739
740/* set tx packet scheduler descriptor rate integral value */
741void hw_atl_tps_tx_desc_rate_x_set(struct aq_hw_s *aq_hw, const u32 desc,
742				   const u32 rate_int);
743
744/* set tx packet scheduler descriptor rate fractional value */
745void hw_atl_tps_tx_desc_rate_y_set(struct aq_hw_s *aq_hw, const u32 desc,
746				   const u32 rate_frac);
747
748/* tx */
749
750/* set tx register reset disable */
751void hw_atl_tx_tx_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 tx_reg_res_dis);
752
753/* msm */
754
755/* get register access status */
756u32 hw_atl_msm_reg_access_status_get(struct aq_hw_s *aq_hw);
757
758/* set  register address for indirect address */
759void hw_atl_msm_reg_addr_for_indirect_addr_set(struct aq_hw_s *aq_hw,
760					       u32 reg_addr_for_indirect_addr);
761
762/* set register read strobe */
763void hw_atl_msm_reg_rd_strobe_set(struct aq_hw_s *aq_hw, u32 reg_rd_strobe);
764
765/* get  register read data */
766u32 hw_atl_msm_reg_rd_data_get(struct aq_hw_s *aq_hw);
767
768/* set  register write data */
769void hw_atl_msm_reg_wr_data_set(struct aq_hw_s *aq_hw, u32 reg_wr_data);
770
771/* set register write strobe */
772void hw_atl_msm_reg_wr_strobe_set(struct aq_hw_s *aq_hw, u32 reg_wr_strobe);
773
774/* pci */
775
776/* set pci register reset disable */
777void hw_atl_pci_pci_reg_res_dis_set(struct aq_hw_s *aq_hw, u32 pci_reg_res_dis);
778
779/* pcs */
780void hw_atl_pcs_ptp_clock_read_enable(struct aq_hw_s *aq_hw,
781				      u32 ptp_clock_read_enable);
782
783u32 hw_atl_pcs_ptp_clock_get(struct aq_hw_s *aq_hw, u32 index);
784
785/* set uP Force Interrupt */
786void hw_atl_mcp_up_force_intr_set(struct aq_hw_s *aq_hw, u32 up_force_intr);
787
788/* clear ipv4 filter destination address */
789void hw_atl_rpfl3l4_ipv4_dest_addr_clear(struct aq_hw_s *aq_hw, u8 location);
790
791/* clear ipv4 filter source address */
792void hw_atl_rpfl3l4_ipv4_src_addr_clear(struct aq_hw_s *aq_hw, u8 location);
793
794/* clear command for filter l3-l4 */
795void hw_atl_rpfl3l4_cmd_clear(struct aq_hw_s *aq_hw, u8 location);
796
797/* clear ipv6 filter destination address */
798void hw_atl_rpfl3l4_ipv6_dest_addr_clear(struct aq_hw_s *aq_hw, u8 location);
799
800/* clear ipv6 filter source address */
801void hw_atl_rpfl3l4_ipv6_src_addr_clear(struct aq_hw_s *aq_hw, u8 location);
802
803/* set ipv4 filter destination address */
804void hw_atl_rpfl3l4_ipv4_dest_addr_set(struct aq_hw_s *aq_hw, u8 location,
805				       u32 ipv4_dest);
806
807/* set ipv4 filter source address */
808void hw_atl_rpfl3l4_ipv4_src_addr_set(struct aq_hw_s *aq_hw, u8 location,
809				      u32 ipv4_src);
810
811/* set command for filter l3-l4 */
812void hw_atl_rpfl3l4_cmd_set(struct aq_hw_s *aq_hw, u8 location, u32 cmd);
813
814/* set ipv6 filter source address */
815void hw_atl_rpfl3l4_ipv6_src_addr_set(struct aq_hw_s *aq_hw, u8 location,
816				      u32 *ipv6_src);
817
818/* set ipv6 filter destination address */
819void hw_atl_rpfl3l4_ipv6_dest_addr_set(struct aq_hw_s *aq_hw, u8 location,
820				       u32 *ipv6_dest);
821
822/* set Global MDIO Interface 1 */
823void hw_atl_glb_mdio_iface1_set(struct aq_hw_s *hw, u32 value);
824
825/* get Global MDIO Interface 1 */
826u32 hw_atl_glb_mdio_iface1_get(struct aq_hw_s *hw);
827
828/* set Global MDIO Interface 2 */
829void hw_atl_glb_mdio_iface2_set(struct aq_hw_s *hw, u32 value);
830
831/* get Global MDIO Interface 2 */
832u32 hw_atl_glb_mdio_iface2_get(struct aq_hw_s *hw);
833
834/* set Global MDIO Interface 3 */
835void hw_atl_glb_mdio_iface3_set(struct aq_hw_s *hw, u32 value);
836
837/* get Global MDIO Interface 3 */
838u32 hw_atl_glb_mdio_iface3_get(struct aq_hw_s *hw);
839
840/* set Global MDIO Interface 4 */
841void hw_atl_glb_mdio_iface4_set(struct aq_hw_s *hw, u32 value);
842
843/* get Global MDIO Interface 4 */
844u32 hw_atl_glb_mdio_iface4_get(struct aq_hw_s *hw);
845
846/* set Global MDIO Interface 5 */
847void hw_atl_glb_mdio_iface5_set(struct aq_hw_s *hw, u32 value);
848
849/* get Global MDIO Interface 5 */
850u32 hw_atl_glb_mdio_iface5_get(struct aq_hw_s *hw);
851
852u32 hw_atl_mdio_busy_get(struct aq_hw_s *aq_hw);
853
854/* get global microprocessor ram semaphore */
855u32 hw_atl_sem_ram_get(struct aq_hw_s *self);
856
857/* get global microprocessor mdio semaphore */
858u32 hw_atl_sem_mdio_get(struct aq_hw_s *self);
859
860u32 hw_atl_sem_reset1_get(struct aq_hw_s *self);
861u32 hw_atl_sem_reset2_get(struct aq_hw_s *self);
862
863/* get global microprocessor scratch pad register */
864u32 hw_atl_scrpad_get(struct aq_hw_s *aq_hw, u32 scratch_scp);
865
866/* get global microprocessor scratch pad 12 register */
867u32 hw_atl_scrpad12_get(struct aq_hw_s *self);
868
869/* get global microprocessor scratch pad 25 register */
870u32 hw_atl_scrpad25_get(struct aq_hw_s *self);
871
872#endif /* HW_ATL_LLH_H */
873