1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
| /* SPDX-License-Identifier: ISC */
| /* Copyright (C) 2020 MediaTek Inc. */
|
| #ifndef __MT7915_EEPROM_H
| #define __MT7915_EEPROM_H
|
| #include "mt7915.h"
|
| struct cal_data {
| u8 count;
| u16 offset[60];
| };
|
| enum mt7915_eeprom_field {
| MT_EE_CHIP_ID = 0x000,
| MT_EE_VERSION = 0x002,
| MT_EE_MAC_ADDR = 0x004,
| MT_EE_DDIE_FT_VERSION = 0x050,
| MT_EE_WIFI_CONF = 0x190,
| MT_EE_TX0_POWER_2G = 0x2fc,
| MT_EE_TX0_POWER_5G = 0x34b,
| MT_EE_ADIE_FT_VERSION = 0x9a0,
|
| __MT_EE_MAX = 0xe00
| };
|
| #define MT_EE_WIFI_CONF_TX_MASK GENMASK(2, 0)
| #define MT_EE_WIFI_CONF_BAND_SEL GENMASK(7, 6)
| #define MT_EE_WIFI_CONF_TSSI0_2G BIT(0)
| #define MT_EE_WIFI_CONF_TSSI0_5G BIT(2)
| #define MT_EE_WIFI_CONF_TSSI1_5G BIT(4)
|
| enum mt7915_eeprom_band {
| MT_EE_DUAL_BAND,
| MT_EE_5GHZ,
| MT_EE_2GHZ,
| MT_EE_DBDC,
| };
|
| #define SKU_DELTA_VAL GENMASK(5, 0)
| #define SKU_DELTA_ADD BIT(6)
| #define SKU_DELTA_EN BIT(7)
|
| enum mt7915_sku_delta_group {
| SKU_CCK_GROUP0,
| SKU_CCK_GROUP1,
|
| SKU_OFDM_GROUP0 = 0,
| SKU_OFDM_GROUP1,
| SKU_OFDM_GROUP2,
| SKU_OFDM_GROUP3,
| SKU_OFDM_GROUP4,
|
| SKU_MCS_GROUP0 = 0,
| SKU_MCS_GROUP1,
| SKU_MCS_GROUP2,
| SKU_MCS_GROUP3,
| SKU_MCS_GROUP4,
| SKU_MCS_GROUP5,
| SKU_MCS_GROUP6,
| SKU_MCS_GROUP7,
| SKU_MCS_GROUP8,
| SKU_MCS_GROUP9,
| };
|
| enum mt7915_sku_rate_group {
| SKU_CCK,
| SKU_OFDM,
| SKU_HT_BW20,
| SKU_HT_BW40,
| SKU_VHT_BW20,
| SKU_VHT_BW40,
| SKU_VHT_BW80,
| SKU_VHT_BW160,
| SKU_HE_RU26,
| SKU_HE_RU52,
| SKU_HE_RU106,
| SKU_HE_RU242,
| SKU_HE_RU484,
| SKU_HE_RU996,
| SKU_HE_RU2x996,
| MAX_SKU_RATE_GROUP_NUM,
| };
|
| struct sku_group {
| u8 len;
| u16 offset[2];
| const u8 *delta_map;
| };
|
| static inline int
| mt7915_get_channel_group(int channel)
| {
| if (channel >= 184 && channel <= 196)
| return 0;
| if (channel <= 48)
| return 1;
| if (channel <= 64)
| return 2;
| if (channel <= 96)
| return 3;
| if (channel <= 112)
| return 4;
| if (channel <= 128)
| return 5;
| if (channel <= 144)
| return 6;
| return 7;
| }
|
| static inline bool
| mt7915_tssi_enabled(struct mt7915_dev *dev, enum nl80211_band band)
| {
| u8 *eep = dev->mt76.eeprom.data;
|
| /* TODO: DBDC */
| if (band == NL80211_BAND_5GHZ)
| return eep[MT_EE_WIFI_CONF + 7] & MT_EE_WIFI_CONF_TSSI0_5G;
| else
| return eep[MT_EE_WIFI_CONF + 7] & MT_EE_WIFI_CONF_TSSI0_2G;
| }
|
| extern const struct sku_group mt7915_sku_groups[];
|
| #endif
|
|