Linux Audio

Check our new training course

Loading...
  1/* 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 =				0x600,
 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