/* SPDX-License-Identifier: GPL-2.0-only */
/* Atlantic Network Driver
 * Copyright (C) 2020 Marvell International Ltd.
 */

#ifndef HW_ATL2_UTILS_H
#define HW_ATL2_UTILS_H

#include "aq_hw.h"

/* F W    A P I */

struct link_options_s {
	u8 link_up:1;
	u8 link_renegotiate:1;
	u8 minimal_link_speed:1;
	u8 internal_loopback:1;
	u8 external_loopback:1;
	u8 rate_10M_hd:1;
	u8 rate_100M_hd:1;
	u8 rate_1G_hd:1;

	u8 rate_10M:1;
	u8 rate_100M:1;
	u8 rate_1G:1;
	u8 rate_2P5G:1;
	u8 rate_N2P5G:1;
	u8 rate_5G:1;
	u8 rate_N5G:1;
	u8 rate_10G:1;

	u8 eee_100M:1;
	u8 eee_1G:1;
	u8 eee_2P5G:1;
	u8 eee_5G:1;
	u8 eee_10G:1;
	u8 rsvd3:3;

	u8 pause_rx:1;
	u8 pause_tx:1;
	u8 rsvd4:1;
	u8 downshift:1;
	u8 downshift_retry:4;
};

struct link_control_s {
	u8 mode:4;
	u8 disable_crc_corruption:1;
	u8 discard_short_frames:1;
	u8 flow_control_mode:1;
	u8 disable_length_check:1;

	u8 discard_errored_frames:1;
	u8 control_frame_enable:1;
	u8 enable_tx_padding:1;
	u8 enable_crc_forwarding:1;
	u8 enable_frame_padding_removal_rx: 1;
	u8 promiscuous_mode: 1;
	u8 rsvd:2;

	u16 rsvd2;
};

struct thermal_shutdown_s {
	u8 enable:1;
	u8 warning_enable:1;
	u8 rsvd:6;

	u8 shutdown_temperature;
	u8 cold_temperature;
	u8 warning_temperature;
};

struct mac_address_s {
	u8 mac_address[6];
};

struct mac_address_aligned_s {
	struct mac_address_s aligned;
	u16 rsvd;
};

struct sleep_proxy_s {
	struct wake_on_lan_s {
		u8 wake_on_magic_packet:1;
		u8 wake_on_pattern:1;
		u8 wake_on_link_up:1;
		u8 wake_on_link_down:1;
		u8 wake_on_ping:1;
		u8 wake_on_timer:1;
		u8 rsvd:2;

		u8 rsvd2;
		u16 rsvd3;

		u32 link_up_timeout;
		u32 link_down_timeout;
		u32 timer;
	} wake_on_lan;

	struct {
		u32 mask[4];
		u32 crc32;
	} wake_up_pattern[8];

	struct __packed {
		u8 arp_responder:1;
		u8 echo_responder:1;
		u8 igmp_client:1;
		u8 echo_truncate:1;
		u8 address_guard:1;
		u8 ignore_fragmented:1;
		u8 rsvd:2;

		u16 echo_max_len;
		u8 rsvd2;
	} ipv4_offload;

	u32 ipv4_offload_addr[8];
	u32 reserved[8];

	struct __packed {
		u8 ns_responder:1;
		u8 echo_responder:1;
		u8 mld_client:1;
		u8 echo_truncate:1;
		u8 address_guard:1;
		u8 rsvd:3;

		u16 echo_max_len;
		u8 rsvd2;
	} ipv6_offload;

	u32 ipv6_offload_addr[16][4];

	struct {
		u16 port[16];
	} tcp_port_offload;

	struct {
		u16 port[16];
	} udp_port_offload;

	struct {
		u32 retry_count;
		u32 retry_interval;
	} ka4_offload;

	struct {
		u32 timeout;
		u16 local_port;
		u16 remote_port;
		u8 remote_mac_addr[6];
		u16 rsvd;
		u32 rsvd2;
		u32 rsvd3;
		u16 rsvd4;
		u16 win_size;
		u32 seq_num;
		u32 ack_num;
		u32 local_ip;
		u32 remote_ip;
	} ka4_connection[16];

	struct {
		u32 retry_count;
		u32 retry_interval;
	} ka6_offload;

	struct {
		u32 timeout;
		u16 local_port;
		u16 remote_port;
		u8 remote_mac_addr[6];
		u16 rsvd;
		u32 rsvd2;
		u32 rsvd3;
		u16 rsvd4;
		u16 win_size;
		u32 seq_num;
		u32 ack_num;
		u32 local_ip[4];
		u32 remote_ip[4];
	} ka6_connection[16];

	struct {
		u32 rr_count;
		u32 rr_buf_len;
		u32 idx_offset;
		u32 rr__offset;
	} mdns_offload;
};

struct pause_quanta_s {
	u16 quanta_10M;
	u16 threshold_10M;
	u16 quanta_100M;
	u16 threshold_100M;
	u16 quanta_1G;
	u16 threshold_1G;
	u16 quanta_2P5G;
	u16 threshold_2P5G;
	u16 quanta_5G;
	u16 threshold_5G;
	u16 quanta_10G;
	u16 threshold_10G;
};

struct data_buffer_status_s {
	u32 data_offset;
	u32 data_length;
};

struct device_caps_s {
	u8 finite_flashless:1;
	u8 cable_diag:1;
	u8 ncsi:1;
	u8 avb:1;
	u8 rsvd:4;

	u8 rsvd2;
	u16 rsvd3;
	u32 rsvd4;
};

struct version_s {
	struct bundle_version_t {
		u8 major;
		u8 minor;
		u16 build;
	} bundle;
	struct mac_version_t {
		u8 major;
		u8 minor;
		u16 build;
	} mac;
	struct phy_version_t {
		u8 major;
		u8 minor;
		u16 build;
	} phy;
	u32 rsvd;
};

struct link_status_s {
	u8 link_state:4;
	u8 link_rate:4;

	u8 pause_tx:1;
	u8 pause_rx:1;
	u8 eee:1;
	u8 duplex:1;
	u8 rsvd:4;

	u16 rsvd2;
};

struct wol_status_s {
	u8 wake_count;
	u8 wake_reason;

	u16 wake_up_packet_length :12;
	u16 wake_up_pattern_number :3;
	u16 rsvd:1;

	u32 wake_up_packet[379];
};

struct mac_health_monitor_s {
	u8 mac_ready:1;
	u8 mac_fault:1;
	u8 mac_flashless_finished:1;
	u8 rsvd:5;

	u8 mac_temperature;
	u16 mac_heart_beat;
	u16 mac_fault_code;
	u16 rsvd2;
};

struct phy_health_monitor_s {
	u8 phy_ready:1;
	u8 phy_fault:1;
	u8 phy_hot_warning:1;
	u8 rsvd:5;

	u8 phy_temperature;
	u16 phy_heart_beat;
	u16 phy_fault_code;
	u16 rsvd2;
};

struct device_link_caps_s {
	u8 rsvd:3;
	u8 internal_loopback:1;
	u8 external_loopback:1;
	u8 rate_10M_hd:1;
	u8 rate_100M_hd:1;
	u8 rate_1G_hd:1;

	u8 rate_10M:1;
	u8 rate_100M:1;
	u8 rate_1G:1;
	u8 rate_2P5G:1;
	u8 rate_N2P5G:1;
	u8 rate_5G:1;
	u8 rate_N5G:1;
	u8 rate_10G:1;

	u8 rsvd3:1;
	u8 eee_100M:1;
	u8 eee_1G:1;
	u8 eee_2P5G:1;
	u8 rsvd4:1;
	u8 eee_5G:1;
	u8 rsvd5:1;
	u8 eee_10G:1;

	u8 pause_rx:1;
	u8 pause_tx:1;
	u8 pfc:1;
	u8 downshift:1;
	u8 downshift_retry:4;
};

struct sleep_proxy_caps_s {
	u8 ipv4_offload:1;
	u8 ipv6_offload:1;
	u8 tcp_port_offload:1;
	u8 udp_port_offload:1;
	u8 ka4_offload:1;
	u8 ka6_offload:1;
	u8 mdns_offload:1;
	u8 wake_on_ping:1;

	u8 wake_on_magic_packet:1;
	u8 wake_on_pattern:1;
	u8 wake_on_timer:1;
	u8 wake_on_link:1;
	u8 wake_patterns_count:4;

	u8 ipv4_count;
	u8 ipv6_count;

	u8 tcp_port_offload_count;
	u8 udp_port_offload_count;

	u8 tcp4_ka_count;
	u8 tcp6_ka_count;

	u8 igmp_offload:1;
	u8 mld_offload:1;
	u8 rsvd:6;

	u8 rsvd2;
	u16 rsvd3;
};

struct lkp_link_caps_s {
	u8 rsvd:5;
	u8 rate_10M_hd:1;
	u8 rate_100M_hd:1;
	u8 rate_1G_hd:1;

	u8 rate_10M:1;
	u8 rate_100M:1;
	u8 rate_1G:1;
	u8 rate_2P5G:1;
	u8 rate_N2P5G:1;
	u8 rate_5G:1;
	u8 rate_N5G:1;
	u8 rate_10G:1;

	u8 rsvd2:1;
	u8 eee_100M:1;
	u8 eee_1G:1;
	u8 eee_2P5G:1;
	u8 rsvd3:1;
	u8 eee_5G:1;
	u8 rsvd4:1;
	u8 eee_10G:1;

	u8 pause_rx:1;
	u8 pause_tx:1;
	u8 rsvd5:6;
};

struct core_dump_s {
	u32 reg0;
	u32 reg1;
	u32 reg2;

	u32 hi;
	u32 lo;

	u32 regs[32];
};

struct trace_s {
	u32 sync_counter;
	u32 mem_buffer[0x1ff];
};

struct cable_diag_control_s {
	u8 toggle :1;
	u8 rsvd:7;

	u8 wait_timeout_sec;
	u16 rsvd2;
};

struct cable_diag_lane_data_s {
	u8 result_code;
	u8 dist;
	u8 far_dist;
	u8 rsvd;
};

struct cable_diag_status_s {
	struct cable_diag_lane_data_s lane_data[4];
	u8 transact_id;
	u8 status:4;
	u8 rsvd:4;
	u16 rsvd2;
};

struct statistics_s {
	struct {
		u32 link_up;
		u32 link_down;
	} link;

	struct {
		u64 tx_unicast_octets;
		u64 tx_multicast_octets;
		u64 tx_broadcast_octets;
		u64 rx_unicast_octets;
		u64 rx_multicast_octets;
		u64 rx_broadcast_octets;

		u32 tx_unicast_frames;
		u32 tx_multicast_frames;
		u32 tx_broadcast_frames;
		u32 tx_errors;

		u32 rx_unicast_frames;
		u32 rx_multicast_frames;
		u32 rx_broadcast_frames;
		u32 rx_dropped_frames;
		u32 rx_error_frames;

		u32 tx_good_frames;
		u32 rx_good_frames;
		u32 reserve_fw_gap;
	} msm;
	u32 main_loop_cycles;
	u32 reserve_fw_gap;
};

struct filter_caps_s {
	u8 l2_filters_base_index:6;
	u8 flexible_filter_mask:2;
	u8 l2_filter_count;
	u8 ethertype_filter_base_index;
	u8 ethertype_filter_count;

	u8 vlan_filter_base_index;
	u8 vlan_filter_count;
	u8 l3_ip4_filter_base_index:4;
	u8 l3_ip4_filter_count:4;
	u8 l3_ip6_filter_base_index:4;
	u8 l3_ip6_filter_count:4;

	u8 l4_filter_base_index:4;
	u8 l4_filter_count:4;
	u8 l4_flex_filter_base_index:4;
	u8 l4_flex_filter_count:4;
	u8 rslv_tbl_base_index;
	u8 rslv_tbl_count;
};

struct request_policy_s {
	struct {
		u8 all:1;
		u8 mcast:1;
		u8 rx_queue_tc_index:5;
		u8 queue_or_tc:1;
	} promisc;

	struct {
		u8 accept:1;
		u8 rsvd:1;
		u8 rx_queue_tc_index:5;
		u8 queue_or_tc:1;
	} bcast;

	struct {
		u8 accept:1;
		u8 rsvd:1;
		u8 rx_queue_tc_index:5;
		u8 queue_or_tc:1;
	} mcast;

	u8 rsvd:8;
};

struct fw_interface_in {
	u32 mtu;
	u32 rsvd1;
	struct mac_address_aligned_s mac_address;
	struct link_control_s link_control;
	u32 rsvd2;
	struct link_options_s link_options;
	u32 rsvd3;
	struct thermal_shutdown_s thermal_shutdown;
	u32 rsvd4;
	struct sleep_proxy_s sleep_proxy;
	u32 rsvd5;
	struct pause_quanta_s pause_quanta[8];
	struct cable_diag_control_s cable_diag_control;
	u32 rsvd6;
	struct data_buffer_status_s data_buffer_status;
	u32 rsvd7;
	struct request_policy_s request_policy;
};

struct transaction_counter_s {
	u16 transaction_cnt_a;
	u16 transaction_cnt_b;
};

struct management_status_s {
	struct mac_address_s mac_address;
	u16 vlan;

	struct{
		u32 enable : 1;
		u32 rsvd:31;
	} flags;

	u32 rsvd1;
	u32 rsvd2;
	u32 rsvd3;
	u32 rsvd4;
	u32 rsvd5;
};

struct fw_interface_out {
	struct transaction_counter_s transaction_id;
	struct version_s version;
	struct link_status_s link_status;
	struct wol_status_s wol_status;
	u32 rsvd;
	u32 rsvd2;
	struct mac_health_monitor_s mac_health_monitor;
	u32 rsvd3;
	u32 rsvd4;
	struct phy_health_monitor_s phy_health_monitor;
	u32 rsvd5;
	u32 rsvd6;
	struct cable_diag_status_s cable_diag_status;
	u32 rsvd7;
	struct device_link_caps_s device_link_caps;
	u32 rsvd8;
	struct sleep_proxy_caps_s sleep_proxy_caps;
	u32 rsvd9;
	struct lkp_link_caps_s lkp_link_caps;
	u32 rsvd10;
	struct core_dump_s core_dump;
	u32 rsvd11;
	struct statistics_s stats;
	u32 rsvd12;
	struct filter_caps_s filter_caps;
	struct device_caps_s device_caps;
	u32 rsvd13;
	struct management_status_s management_status;
	u32 reserve[21];
	struct trace_s trace;
};

#define  AQ_A2_FW_LINK_RATE_INVALID 0
#define  AQ_A2_FW_LINK_RATE_10M     1
#define  AQ_A2_FW_LINK_RATE_100M    2
#define  AQ_A2_FW_LINK_RATE_1G      3
#define  AQ_A2_FW_LINK_RATE_2G5     4
#define  AQ_A2_FW_LINK_RATE_5G      5
#define  AQ_A2_FW_LINK_RATE_10G     6

#define  AQ_HOST_MODE_INVALID      0U
#define  AQ_HOST_MODE_ACTIVE       1U
#define  AQ_HOST_MODE_SLEEP_PROXY  2U
#define  AQ_HOST_MODE_LOW_POWER    3U
#define  AQ_HOST_MODE_SHUTDOWN     4U

int hw_atl2_utils_initfw(struct aq_hw_s *self, const struct aq_fw_ops **fw_ops);

int hw_atl2_utils_soft_reset(struct aq_hw_s *self);

u32 hw_atl2_utils_get_fw_version(struct aq_hw_s *self);

int hw_atl2_utils_get_action_resolve_table_caps(struct aq_hw_s *self,
						u8 *base_index, u8 *count);

extern const struct aq_fw_ops aq_a2_fw_ops;

#endif /* HW_ATL2_UTILS_H */
