1/* SPDX-License-Identifier: ISC */
2/* Copyright (C) 2020 MediaTek Inc. */
3
4#ifndef __MT7915_MAC_H
5#define __MT7915_MAC_H
6
7#include "../mt76_connac2_mac.h"
8
9#define MT_TX_FREE_VER			GENMASK(18, 16)
10#define MT_TX_FREE_MSDU_CNT_V0		GENMASK(6, 0)
11/* 0: success, others: dropped */
12#define MT_TX_FREE_COUNT		GENMASK(12, 0)
13#define MT_TX_FREE_COUNT_V3		GENMASK(27, 24)
14#define MT_TX_FREE_STAT			GENMASK(14, 13)
15#define MT_TX_FREE_STAT_V3		GENMASK(29, 28)
16#define MT_TX_FREE_MPDU_HEADER		BIT(15)
17#define MT_TX_FREE_MPDU_HEADER_V3	BIT(30)
18#define MT_TX_FREE_MSDU_ID_V3		GENMASK(14, 0)
19
20#define MT_TXS5_F0_FINAL_MPDU		BIT(31)
21#define MT_TXS5_F0_QOS			BIT(30)
22#define MT_TXS5_F0_TX_COUNT		GENMASK(29, 25)
23#define MT_TXS5_F0_FRONT_TIME		GENMASK(24, 0)
24#define MT_TXS5_F1_MPDU_TX_COUNT	GENMASK(31, 24)
25#define MT_TXS5_F1_MPDU_TX_BYTES	GENMASK(23, 0)
26
27#define MT_TXS6_F0_NOISE_3		GENMASK(31, 24)
28#define MT_TXS6_F0_NOISE_2		GENMASK(23, 16)
29#define MT_TXS6_F0_NOISE_1		GENMASK(15, 8)
30#define MT_TXS6_F0_NOISE_0		GENMASK(7, 0)
31#define MT_TXS6_F1_MPDU_FAIL_COUNT	GENMASK(31, 24)
32#define MT_TXS6_F1_MPDU_FAIL_BYTES	GENMASK(23, 0)
33
34#define MT_TXS7_F0_RCPI_3		GENMASK(31, 24)
35#define MT_TXS7_F0_RCPI_2		GENMASK(23, 16)
36#define MT_TXS7_F0_RCPI_1		GENMASK(15, 8)
37#define MT_TXS7_F0_RCPI_0		GENMASK(7, 0)
38#define MT_TXS7_F1_MPDU_RETRY_COUNT	GENMASK(31, 24)
39#define MT_TXS7_F1_MPDU_RETRY_BYTES	GENMASK(23, 0)
40
41struct mt7915_dfs_pulse {
42	u32 max_width;		/* us */
43	int max_pwr;		/* dbm */
44	int min_pwr;		/* dbm */
45	u32 min_stgr_pri;	/* us */
46	u32 max_stgr_pri;	/* us */
47	u32 min_cr_pri;		/* us */
48	u32 max_cr_pri;		/* us */
49};
50
51struct mt7915_dfs_pattern {
52	u8 enb;
53	u8 stgr;
54	u8 min_crpn;
55	u8 max_crpn;
56	u8 min_crpr;
57	u8 min_pw;
58	u32 min_pri;
59	u32 max_pri;
60	u8 max_pw;
61	u8 min_crbn;
62	u8 max_crbn;
63	u8 min_stgpn;
64	u8 max_stgpn;
65	u8 min_stgpr;
66	u8 rsv[2];
67	u32 min_stgpr_diff;
68} __packed;
69
70struct mt7915_dfs_radar_spec {
71	struct mt7915_dfs_pulse pulse_th;
72	struct mt7915_dfs_pattern radar_pattern[16];
73};
74
75#endif
76