linux/drivers/net/wireless/mediatek/mt76/mt7615/eeprom.h
<<
>>
Prefs
   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 =                         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
 117