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_b0.h: Declaration of abstract interface for Atlantic hardware |
9 | * specific functions. |
10 | */ |
11 | |
12 | #ifndef HW_ATL_B0_H |
13 | #define HW_ATL_B0_H |
14 | |
15 | #include "../aq_common.h" |
16 | |
17 | extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc100; |
18 | extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc107; |
19 | extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc108; |
20 | extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc109; |
21 | extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc111; |
22 | extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc112; |
23 | |
24 | #define hw_atl_b0_caps_aqc100s hw_atl_b0_caps_aqc100 |
25 | #define hw_atl_b0_caps_aqc107s hw_atl_b0_caps_aqc107 |
26 | #define hw_atl_b0_caps_aqc108s hw_atl_b0_caps_aqc108 |
27 | #define hw_atl_b0_caps_aqc109s hw_atl_b0_caps_aqc109 |
28 | #define hw_atl_b0_caps_aqc111s hw_atl_b0_caps_aqc111 |
29 | #define hw_atl_b0_caps_aqc112s hw_atl_b0_caps_aqc112 |
30 | |
31 | extern const struct aq_hw_ops hw_atl_ops_b0; |
32 | |
33 | #define hw_atl_ops_b1 hw_atl_ops_b0 |
34 | |
35 | int (struct aq_hw_s *self, |
36 | struct aq_rss_parameters *); |
37 | int hw_atl_b0_hw_offload_set(struct aq_hw_s *self, |
38 | struct aq_nic_cfg_s *aq_nic_cfg); |
39 | |
40 | int hw_atl_b0_hw_ring_tx_start(struct aq_hw_s *self, struct aq_ring_s *ring); |
41 | int hw_atl_b0_hw_ring_rx_start(struct aq_hw_s *self, struct aq_ring_s *ring); |
42 | |
43 | int hw_atl_b0_hw_ring_rx_init(struct aq_hw_s *self, struct aq_ring_s *aq_ring, |
44 | struct aq_ring_param_s *aq_ring_param); |
45 | int hw_atl_b0_hw_ring_rx_fill(struct aq_hw_s *self, struct aq_ring_s *ring, |
46 | unsigned int sw_tail_old); |
47 | int hw_atl_b0_hw_ring_rx_receive(struct aq_hw_s *self, struct aq_ring_s *ring); |
48 | |
49 | int hw_atl_b0_hw_ring_tx_init(struct aq_hw_s *self, struct aq_ring_s *aq_ring, |
50 | struct aq_ring_param_s *aq_ring_param); |
51 | int hw_atl_b0_hw_ring_tx_xmit(struct aq_hw_s *self, struct aq_ring_s *ring, |
52 | unsigned int frags); |
53 | int hw_atl_b0_hw_ring_tx_head_update(struct aq_hw_s *self, |
54 | struct aq_ring_s *ring); |
55 | |
56 | int hw_atl_b0_hw_ring_tx_stop(struct aq_hw_s *self, struct aq_ring_s *ring); |
57 | int hw_atl_b0_hw_ring_rx_stop(struct aq_hw_s *self, struct aq_ring_s *ring); |
58 | |
59 | void (struct aq_hw_s *self); |
60 | |
61 | int hw_atl_b0_hw_mac_addr_set(struct aq_hw_s *self, const u8 *mac_addr); |
62 | |
63 | int hw_atl_b0_set_fc(struct aq_hw_s *self, u32 fc, u32 tc); |
64 | int hw_atl_b0_set_loopback(struct aq_hw_s *self, u32 mode, bool enable); |
65 | |
66 | int hw_atl_b0_hw_start(struct aq_hw_s *self); |
67 | |
68 | int hw_atl_b0_hw_irq_enable(struct aq_hw_s *self, u64 mask); |
69 | int hw_atl_b0_hw_irq_disable(struct aq_hw_s *self, u64 mask); |
70 | int hw_atl_b0_hw_irq_read(struct aq_hw_s *self, u64 *mask); |
71 | |
72 | int hw_atl_b0_hw_packet_filter_set(struct aq_hw_s *self, |
73 | unsigned int packet_filter); |
74 | |
75 | #endif /* HW_ATL_B0_H */ |
76 | |