blob: a024dee103620d9f886fab4a1be17381376b05d7 [file] [log] [blame]
developerb11a5392022-03-31 00:34:47 +08001/* SPDX-License-Identifier: ISC */
2/* Copyright (C) 2019 MediaTek Inc. */
3
4#ifndef __MT7615_EEPROM_H
5#define __MT7615_EEPROM_H
6
7#include "mt7615.h"
8
9
10#define MT7615_EEPROM_DCOC_OFFSET MT7615_EEPROM_SIZE
11#define MT7615_EEPROM_DCOC_SIZE 256
12#define MT7615_EEPROM_DCOC_COUNT 34
13
14#define MT7615_EEPROM_TXDPD_OFFSET (MT7615_EEPROM_SIZE + \
15 MT7615_EEPROM_DCOC_COUNT * \
16 MT7615_EEPROM_DCOC_SIZE)
17#define MT7615_EEPROM_TXDPD_SIZE 216
18#define MT7615_EEPROM_TXDPD_COUNT (44 + 3)
19
20#define MT7615_EEPROM_FULL_SIZE (MT7615_EEPROM_TXDPD_OFFSET + \
21 MT7615_EEPROM_TXDPD_COUNT * \
22 MT7615_EEPROM_TXDPD_SIZE)
23
24enum mt7615_eeprom_field {
25 MT_EE_CHIP_ID = 0x000,
26 MT_EE_VERSION = 0x002,
27 MT_EE_MAC_ADDR = 0x004,
28 MT_EE_NIC_CONF_0 = 0x034,
29 MT_EE_NIC_CONF_1 = 0x036,
30 MT_EE_WIFI_CONF = 0x03e,
31 MT_EE_CALDATA_FLASH = 0x052,
32 MT_EE_TX0_2G_TARGET_POWER = 0x058,
33 MT_EE_TX0_5G_G0_TARGET_POWER = 0x070,
34 MT7663_EE_5G_RATE_POWER = 0x089,
35 MT_EE_TX1_5G_G0_TARGET_POWER = 0x098,
36 MT_EE_2G_RATE_POWER = 0x0be,
37 MT_EE_5G_RATE_POWER = 0x0d5,
38 MT7663_EE_TX0_2G_TARGET_POWER = 0x0e3,
39 MT_EE_EXT_PA_2G_TARGET_POWER = 0x0f2,
40 MT_EE_EXT_PA_5G_TARGET_POWER = 0x0f3,
41 MT_EE_TX2_5G_G0_TARGET_POWER = 0x142,
42 MT_EE_TX3_5G_G0_TARGET_POWER = 0x16a,
43 MT7663_EE_HW_CONF1 = 0x1b0,
44 MT7663_EE_TX0_5G_G0_TARGET_POWER = 0x245,
45 MT7663_EE_TX1_5G_G0_TARGET_POWER = 0x2b5,
46
47 MT7615_EE_MAX = 0x3bf,
48 MT7622_EE_MAX = 0x3db,
49 MT7663_EE_MAX = 0x400,
50};
51
52#define MT_EE_RATE_POWER_MASK GENMASK(5, 0)
53#define MT_EE_RATE_POWER_SIGN BIT(6)
54#define MT_EE_RATE_POWER_EN BIT(7)
55
56#define MT_EE_CALDATA_FLASH_TX_DPD BIT(0)
57#define MT_EE_CALDATA_FLASH_RX_CAL BIT(1)
58
59#define MT_EE_NIC_CONF_TX_MASK GENMASK(7, 4)
60#define MT_EE_NIC_CONF_RX_MASK GENMASK(3, 0)
61
62#define MT_EE_HW_CONF1_TX_MASK GENMASK(2, 0)
63
64#define MT_EE_NIC_CONF_TSSI_2G BIT(5)
65#define MT_EE_NIC_CONF_TSSI_5G BIT(6)
66
67#define MT_EE_NIC_WIFI_CONF_BAND_SEL GENMASK(5, 4)
68enum mt7615_eeprom_band {
69 MT_EE_DUAL_BAND,
70 MT_EE_5GHZ,
71 MT_EE_2GHZ,
72 MT_EE_DBDC,
73};
74
75enum mt7615_channel_group {
76 MT_CH_5G_JAPAN,
77 MT_CH_5G_UNII_1,
78 MT_CH_5G_UNII_2A,
79 MT_CH_5G_UNII_2B,
80 MT_CH_5G_UNII_2E_1,
81 MT_CH_5G_UNII_2E_2,
82 MT_CH_5G_UNII_2E_3,
83 MT_CH_5G_UNII_3,
84 __MT_CH_MAX
85};
86
87static inline enum mt7615_channel_group
88mt7615_get_channel_group(int channel)
89{
90 if (channel >= 184 && channel <= 196)
91 return MT_CH_5G_JAPAN;
92 if (channel <= 48)
93 return MT_CH_5G_UNII_1;
94 if (channel <= 64)
95 return MT_CH_5G_UNII_2A;
96 if (channel <= 114)
97 return MT_CH_5G_UNII_2E_1;
98 if (channel <= 144)
99 return MT_CH_5G_UNII_2E_2;
100 if (channel <= 161)
101 return MT_CH_5G_UNII_2E_3;
102 return MT_CH_5G_UNII_3;
103}
104
105static inline bool
106mt7615_ext_pa_enabled(struct mt7615_dev *dev, enum nl80211_band band)
107{
108 u8 *eep = dev->mt76.eeprom.data;
109
110 if (band == NL80211_BAND_5GHZ)
111 return !(eep[MT_EE_NIC_CONF_1 + 1] & MT_EE_NIC_CONF_TSSI_5G);
112 else
113 return !(eep[MT_EE_NIC_CONF_1 + 1] & MT_EE_NIC_CONF_TSSI_2G);
114}
115
116#endif