175a6faf6SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2ad46bd5eSMark Starovoytov /* Atlantic Network Driver 3ad46bd5eSMark Starovoytov * 4ad46bd5eSMark Starovoytov * Copyright (C) 2014-2019 aQuantia Corporation 5ad46bd5eSMark Starovoytov * Copyright (C) 2019-2020 Marvell International Ltd. 6bab6de8fSDavid VomLehn */ 7bab6de8fSDavid VomLehn 8bab6de8fSDavid VomLehn /* File hw_atl_b0.h: Declaration of abstract interface for Atlantic hardware 9bab6de8fSDavid VomLehn * specific functions. 10bab6de8fSDavid VomLehn */ 11bab6de8fSDavid VomLehn 12bab6de8fSDavid VomLehn #ifndef HW_ATL_B0_H 13bab6de8fSDavid VomLehn #define HW_ATL_B0_H 14bab6de8fSDavid VomLehn 15bab6de8fSDavid VomLehn #include "../aq_common.h" 16bab6de8fSDavid VomLehn 174948293fSIgor Russkikh extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc100; 184948293fSIgor Russkikh extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc107; 194948293fSIgor Russkikh extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc108; 204948293fSIgor Russkikh extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc109; 2123e500e8SNikita Danilov extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc111; 2223e500e8SNikita Danilov extern const struct aq_hw_caps_s hw_atl_b0_caps_aqc112; 234948293fSIgor Russkikh 244948293fSIgor Russkikh #define hw_atl_b0_caps_aqc100s hw_atl_b0_caps_aqc100 254948293fSIgor Russkikh #define hw_atl_b0_caps_aqc107s hw_atl_b0_caps_aqc107 264948293fSIgor Russkikh #define hw_atl_b0_caps_aqc108s hw_atl_b0_caps_aqc108 274948293fSIgor Russkikh #define hw_atl_b0_caps_aqc109s hw_atl_b0_caps_aqc109 2823e500e8SNikita Danilov #define hw_atl_b0_caps_aqc111s hw_atl_b0_caps_aqc111 2923e500e8SNikita Danilov #define hw_atl_b0_caps_aqc112s hw_atl_b0_caps_aqc112 304948293fSIgor Russkikh 314948293fSIgor Russkikh extern const struct aq_hw_ops hw_atl_ops_b0; 324948293fSIgor Russkikh 334948293fSIgor Russkikh #define hw_atl_ops_b1 hw_atl_ops_b0 34bab6de8fSDavid VomLehn 35e54dcf4bSIgor Russkikh int hw_atl_b0_hw_rss_hash_set(struct aq_hw_s *self, 36e54dcf4bSIgor Russkikh struct aq_rss_parameters *rss_params); 3743c670c8SIgor Russkikh int hw_atl_b0_hw_offload_set(struct aq_hw_s *self, 3843c670c8SIgor Russkikh struct aq_nic_cfg_s *aq_nic_cfg); 3943c670c8SIgor Russkikh 4043c670c8SIgor Russkikh int hw_atl_b0_hw_ring_tx_start(struct aq_hw_s *self, struct aq_ring_s *ring); 4143c670c8SIgor Russkikh int hw_atl_b0_hw_ring_rx_start(struct aq_hw_s *self, struct aq_ring_s *ring); 4243c670c8SIgor Russkikh 4343c670c8SIgor Russkikh int hw_atl_b0_hw_ring_rx_init(struct aq_hw_s *self, struct aq_ring_s *aq_ring, 4443c670c8SIgor Russkikh struct aq_ring_param_s *aq_ring_param); 4543c670c8SIgor Russkikh int hw_atl_b0_hw_ring_rx_fill(struct aq_hw_s *self, struct aq_ring_s *ring, 4643c670c8SIgor Russkikh unsigned int sw_tail_old); 4743c670c8SIgor Russkikh int hw_atl_b0_hw_ring_rx_receive(struct aq_hw_s *self, struct aq_ring_s *ring); 4843c670c8SIgor Russkikh 4943c670c8SIgor Russkikh int hw_atl_b0_hw_ring_tx_init(struct aq_hw_s *self, struct aq_ring_s *aq_ring, 5043c670c8SIgor Russkikh struct aq_ring_param_s *aq_ring_param); 5143c670c8SIgor Russkikh int hw_atl_b0_hw_ring_tx_xmit(struct aq_hw_s *self, struct aq_ring_s *ring, 5243c670c8SIgor Russkikh unsigned int frags); 5343c670c8SIgor Russkikh int hw_atl_b0_hw_ring_tx_head_update(struct aq_hw_s *self, 5443c670c8SIgor Russkikh struct aq_ring_s *ring); 5543c670c8SIgor Russkikh 5643c670c8SIgor Russkikh int hw_atl_b0_hw_ring_tx_stop(struct aq_hw_s *self, struct aq_ring_s *ring); 5743c670c8SIgor Russkikh int hw_atl_b0_hw_ring_rx_stop(struct aq_hw_s *self, struct aq_ring_s *ring); 5843c670c8SIgor Russkikh 5940f05e5bSMark Starovoytov void hw_atl_b0_hw_init_rx_rss_ctrl1(struct aq_hw_s *self); 6040f05e5bSMark Starovoytov 61*76660757SJakub Kicinski int hw_atl_b0_hw_mac_addr_set(struct aq_hw_s *self, const u8 *mac_addr); 62e54dcf4bSIgor Russkikh 633e168de5SIgor Russkikh int hw_atl_b0_set_fc(struct aq_hw_s *self, u32 fc, u32 tc); 64ecab7870SDmitry Bogdanov int hw_atl_b0_set_loopback(struct aq_hw_s *self, u32 mode, bool enable); 653e168de5SIgor Russkikh 66e54dcf4bSIgor Russkikh int hw_atl_b0_hw_start(struct aq_hw_s *self); 67e54dcf4bSIgor Russkikh 68e54dcf4bSIgor Russkikh int hw_atl_b0_hw_irq_enable(struct aq_hw_s *self, u64 mask); 69e54dcf4bSIgor Russkikh int hw_atl_b0_hw_irq_disable(struct aq_hw_s *self, u64 mask); 70e54dcf4bSIgor Russkikh int hw_atl_b0_hw_irq_read(struct aq_hw_s *self, u64 *mask); 71e54dcf4bSIgor Russkikh 72e54dcf4bSIgor Russkikh int hw_atl_b0_hw_packet_filter_set(struct aq_hw_s *self, 73e54dcf4bSIgor Russkikh unsigned int packet_filter); 74e54dcf4bSIgor Russkikh 75bab6de8fSDavid VomLehn #endif /* HW_ATL_B0_H */ 76