15b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* 25b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * Copyright (c) 2010 Broadcom Corporation 35b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * 45b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * Permission to use, copy, modify, and/or distribute this software for any 55b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * purpose with or without fee is hereby granted, provided that the above 65b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * copyright notice and this permission notice appear in all copies. 75b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * 85b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 95b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel */ 165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#ifndef _BRCM_PHY_INT_H_ 185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define _BRCM_PHY_INT_H_ 195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#include <types.h> 215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#include <brcmu_utils.h> 225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#include <brcmu_wifi.h> 235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_VERSION { 1, 82, 8, 0 } 255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNXN_BASEREV 16 275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 285b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct phy_shim_info; 295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 305b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcms_phy_srom_fem { 315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel /* TSSI positive slope, 1: positive, 0: negative */ 325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tssipos; 335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel /* Ext PA gain-type: full-gain: 0, pa-lite: 1, no_pa: 2 */ 345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 extpagain; 355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel /* support 32 combinations of different Pdet dynamic ranges */ 365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 pdetrange; 375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel /* TR switch isolation */ 385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 triso; 395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel /* antswctrl lookup table configuration: 32 possible choices */ 405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 antswctrllut; 415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define ISNPHY(pi) PHYTYPE_IS((pi)->pubpi.phy_type, PHY_TYPE_N) 445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define ISLCNPHY(pi) PHYTYPE_IS((pi)->pubpi.phy_type, PHY_TYPE_LCN) 455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_GET_RFATTN(rfgain) ((rfgain) & 0x0f) 475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_GET_PADMIX(rfgain) (((rfgain) & 0x10) >> 4) 485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_GET_RFGAINID(rfattn, padmix, width) ((rfattn) + ((padmix)*(width))) 495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_SAT(x, n) ((x) > ((1<<((n)-1))-1) ? ((1<<((n)-1))-1) : \ 505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel ((x) < -(1<<((n)-1)) ? -(1<<((n)-1)) : (x))) 515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_SHIFT_ROUND(x, n) ((x) >= 0 ? ((x)+(1<<((n)-1)))>>(n) : (x)>>(n)) 525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_HW_ROUND(x, s) ((x >> s) + ((x >> (s-1)) & (s != 0))) 535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define CH_5G_GROUP 3 555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define A_LOW_CHANS 0 565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define A_MID_CHANS 1 575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define A_HIGH_CHANS 2 585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define CH_2G_GROUP 1 595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define G_ALL_CHANS 0 605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FIRST_REF5_CHANNUM 149 625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LAST_REF5_CHANNUM 165 635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FIRST_5G_CHAN 14 645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LAST_5G_CHAN 50 655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FIRST_MID_5G_CHAN 14 665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LAST_MID_5G_CHAN 35 675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FIRST_HIGH_5G_CHAN 36 685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LAST_HIGH_5G_CHAN 41 695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FIRST_LOW_5G_CHAN 42 705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LAST_LOW_5G_CHAN 50 715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BASE_LOW_5G_CHAN 4900 735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BASE_MID_5G_CHAN 5100 745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BASE_HIGH_5G_CHAN 5500 755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define CHAN5G_FREQ(chan) (5000 + chan*5) 775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define CHAN2G_FREQ(chan) (2407 + chan*5) 785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_CCK 0 805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_CCK 3 815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_OFDM 4 825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_OFDM 11 835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_OFDM_20_CDD 12 845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_OFDM_20_CDD 19 855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_20_SISO 20 865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_20_SISO 27 875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_20_CDD 28 885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_20_CDD 35 895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_20_STBC 36 905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_20_STBC 43 915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_20_SDM 44 925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_20_SDM 51 935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_OFDM_40_SISO 52 945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_OFDM_40_SISO 59 955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_OFDM_40_CDD 60 965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_OFDM_40_CDD 67 975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_40_SISO 68 985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_40_SISO 75 995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_40_CDD 76 1005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_40_CDD 83 1015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_40_STBC 84 1025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_40_STBC 91 1035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_MCS_40_SDM 92 1045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_MCS_40_SDM 99 1055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_MCS_32 100 1065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_NUM_RATES 101 1075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define ADJ_PWR_TBL_LEN 84 1085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_FIRST_SISO_MCS_20 20 1105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TXP_LAST_SISO_MCS_20 27 1115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_NUM_1 1 1135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_NUM_2 2 1145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_NUM_3 3 1155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_NUM_4 4 1165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_MAX PHY_CORE_NUM_4 1175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_0 0 1185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_1 1 1195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_2 2 1205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CORE_3 3 1215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define MA_WINDOW_SZ 8 1235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_SAMPLE_MON 1 1255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_SAMPLE_EXTERNAL 2 1265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_WINDOW_SZ 16 1275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_GLITCH_INIT_MA 10 1285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_GLITCH_INIT_MA_BADPlCP 10 1295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_STATE_MON 0x1 1305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_STATE_EXTERNAL 0x2 1315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_SAMPLE_LOG_NUM_NPHY 10 1325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_SAMPLE_LOG_NUM_UCODE 9 1335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_OFFSETFACT_4322 (-103) 1355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISE_MA_WINDOW_SZ 2 1365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_RSSI_TABLE_SIZE 64 1385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RSSI_ANT_MERGE_MAX 0 1395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RSSI_ANT_MERGE_MIN 1 1405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RSSI_ANT_MERGE_AVG 2 1415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_TSSI_TABLE_SIZE 64 1435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define APHY_TSSI_TABLE_SIZE 256 1445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TX_GAIN_TABLE_LENGTH 64 1455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define DEFAULT_11A_TXP_IDX 24 1465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NUM_TSSI_FRAMES 4 1475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NULL_TSSI 0x7f 1485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NULL_TSSI_W 0x7f7f 1495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PAPD_EPS_TBL_SIZE_LCNPHY 64 1515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_PERICAL_TEMPBASED_TXPWRCTRL 9 1535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_TXPWR_MIN 10 1555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_TXPWR_MIN_NPHY 8 1565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RADIOPWR_OVERRIDE_DEF (-1) 1575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PWRTBL_NUM_COEFF 3 1595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define SPURAVOID_DISABLE 0 1615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define SPURAVOID_AUTO 1 1625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define SPURAVOID_FORCEON 2 1635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define SPURAVOID_FORCEON2 3 1645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_SW_TIMER_FAST 15 1665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_SW_TIMER_SLOW 60 1675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_SW_TIMER_GLACIAL 120 1685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_AUTO 0 1705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_FULL 1 1715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_PARTIAL 2 1725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_NODELAY 0 1745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_INIT_DELAY 5 1755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_ASSOC_DELAY 5 1765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_WDOG_DELAY 5 1775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define MPHASE_TXCAL_NUMCMDS 2 1795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_PERICAL_MPHASE_PENDING(pi) \ 1815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_IDLE) 1825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1835b435de0d786869c95d1962121af0d7df2542009Arend van Sprielenum { 1845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_IDLE = 0, 1855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_INIT = 1, 1865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_TXPHASE0, 1875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_TXPHASE1, 1885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_TXPHASE2, 1895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_TXPHASE3, 1905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_TXPHASE4, 1915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_TXPHASE5, 1925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_PAPDCAL, 1935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_RXCAL, 1945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_RSSICAL, 1955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel MPHASE_CAL_STATE_IDLETSSI 1965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 1975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 1985b435de0d786869c95d1962121af0d7df2542009Arend van Sprielenum phy_cal_mode { 1995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_FULL, 2005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_RECAL, 2015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_CURRECAL, 2025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_DIGCAL, 2035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_GCTRL, 2045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_SOFT, 2055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel CAL_DIGLO 2065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 2075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_NTIERS 1 2095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_TIER_SIZE 64 2105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_LIST_SIZE (512/3) 2115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_EPOCH_SIZE 40 2125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_NANTENNAS 2 2135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_NTIER_SIZE RDR_LIST_SIZE 2145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define RDR_LP_BUFFER_SIZE 64 2155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LP_LEN_HIS_SIZE 10 2165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define STATIC_NUM_RF 32 2185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define STATIC_NUM_BB 9 2195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BB_MULT_MASK 0x0000ffff 2215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BB_MULT_VALID_MASK 0x80000000 2225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define CORDIC_AG 39797 2245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define CORDIC_NI 18 2255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FIXED(X) ((s32)((X) << 16)) 2265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define FLOAT(X) \ 2285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (((X) >= 0) ? ((((X) >> 15) + 1) >> 1) : -((((-(X)) >> 15) + 1) >> 1)) 2295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_CHAIN_TX_DISABLE_TEMP 115 2315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_HYSTERESIS_DELTATEMP 5 2325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define SCAN_INPROG_PHY(pi) \ 2345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (mboolisset(pi->measure_hold, PHY_HOLD_FOR_SCAN)) 2355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PLT_INPROG_PHY(pi) (mboolisset(pi->measure_hold, PHY_HOLD_FOR_PLT)) 2375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define ASSOC_INPROG_PHY(pi) \ 2395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (mboolisset(pi->measure_hold, PHY_HOLD_FOR_ASSOC)) 2405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define SCAN_RM_IN_PROGRESS(pi) \ 2425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (mboolisset(pi->measure_hold, PHY_HOLD_FOR_SCAN | PHY_HOLD_FOR_RM)) 2435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_MUTED(pi) \ 2455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (mboolisset(pi->measure_hold, PHY_HOLD_FOR_MUTE)) 2465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PUB_NOT_ASSOC(pi) \ 2485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (mboolisset(pi->measure_hold, PHY_HOLD_FOR_NOT_ASSOC)) 2495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2505b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct phy_table_info { 2515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint table; 2525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int q; 2535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint max; 2545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 2555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2565b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct phytbl_info { 2575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel const void *tbl_ptr; 2585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 tbl_len; 2595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 tbl_id; 2605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 tbl_offset; 2615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 tbl_width; 2625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 2635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2645b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct interference_info { 2655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 curr_home_channel; 2665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwrthld_40_stored; 2675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwrthld_20L_stored; 2685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwrthld_20U_stored; 2695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_code_core1_stored; 2705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_code_core2_stored; 2715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_codeb_core1_stored; 2725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_codeb_core2_stored; 2735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_table_stored[4]; 2745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_hi_gain_code_core1_stored; 2765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_hi_gain_code_core2_stored; 2775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_hi_gain_codeb_core1_stored; 2785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_hi_gain_codeb_core2_stored; 2795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nb_clip_thresh_core1_stored; 2805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nb_clip_thresh_core2_stored; 2815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_ofdmlna2gainchange_stored[4]; 2825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_ccklna2gainchange_stored[4]; 2835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_lo_gain_code_core1_stored; 2845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_lo_gain_code_core2_stored; 2855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_lo_gain_codeb_core1_stored; 2865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip1_lo_gain_codeb_core2_stored; 2875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 w1_clip_thresh_core1_stored; 2885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 w1_clip_thresh_core2_stored; 2895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2056_core1_rssi_gain_stored; 2905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2056_core2_rssi_gain_stored; 2915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 energy_drop_timeout_len_stored; 2925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 2935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs40_assertthld0_stored; 2945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs40_assertthld1_stored; 2955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs40_deassertthld0_stored; 2965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs40_deassertthld1_stored; 2975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20L_assertthld0_stored; 2985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20L_assertthld1_stored; 2995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20L_deassertthld0_stored; 3005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20L_deassertthld1_stored; 3015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20U_assertthld0_stored; 3025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20U_assertthld1_stored; 3035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20U_deassertthld0_stored; 3045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ed_crs20U_deassertthld1_stored; 3055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 badplcp_ma; 3075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 badplcp_ma_previous; 3085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 badplcp_ma_total; 3095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 badplcp_ma_list[MA_WINDOW_SZ]; 3105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int badplcp_ma_index; 3115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pre_badplcp_cnt; 3125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 bphy_pre_badplcp_cnt; 3135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_core1; 3155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_core2; 3165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gainb_core1; 3175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gainb_core2; 3185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_rfseq[4]; 3195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwr0; 3215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwrl0; 3225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwru0; 3235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 crsminpwr_index; 3255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core1_rssi_wb1a_gc_stored; 3275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core2_rssi_wb1a_gc_stored; 3285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core1_rssi_wb1g_gc_stored; 3295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core2_rssi_wb1g_gc_stored; 3305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core1_rssi_wb2_gc_stored; 3315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core2_rssi_wb2_gc_stored; 3325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core1_rssi_nb_gc_stored; 3335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_2057_core2_rssi_nb_gc_stored; 3345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 3355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3365b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct aci_save_gphy { 3375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rc_cal_ovr; 3385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 phycrsth1; 3395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 phycrsth2; 3405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_n1p1_gain; 3415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 p1_p2_gain; 3425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 n1_n2_gain; 3435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 n1_p1_gain; 3445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 div_search_gain; 3455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 div_p1_p2_gain; 3465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 div_search_gn_change; 3475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 table_7_2; 3485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 table_7_3; 3495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 cckshbits_gnref; 3505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_thresh; 3515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip2_thresh; 3525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip3_thresh; 3535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_p2_thresh; 3545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_pwdn_thresh; 3555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_n1p1_thresh; 3565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_n1_pwdn_thresh; 3575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 bbconfig; 3585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 cthr_sthr_shdin; 3595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 energy; 3605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_p1_p2_thresh; 3615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 threshold; 3625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 reg15; 3635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 reg16; 3645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 reg17; 3655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 div_srch_idx; 3665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 div_srch_p1_p2; 3675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 div_srch_gn_back; 3685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ant_dwell; 3695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ant_wr_settle; 3705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 3715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3725b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct lo_complex_abgphy_info { 3735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 i; 3745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 q; 3755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 3765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3775b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct nphy_iq_comp { 3785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 a0; 3795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 b0; 3805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 a1; 3815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 b1; 3825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 3835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3845b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct nphy_txpwrindex { 3855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 index; 3865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 index_internal; 3875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 index_internal_save; 3885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 AfectrlOverride; 3895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 AfeCtrlDacGain; 3905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rad_gain; 3915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bbmult; 3925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 iqcomp_a; 3935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 iqcomp_b; 3945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 locomp; 3955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 3965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3975b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct txiqcal_cache { 3985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 3995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txcal_coeffs_2G[8]; 4005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txcal_radio_regs_2G[8]; 4015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct nphy_iq_comp rxcal_coeffs_2G; 4025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txcal_coeffs_5G[8]; 4045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txcal_radio_regs_5G[8]; 4055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct nphy_iq_comp rxcal_coeffs_5G; 4065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 4075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4085b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct nphy_pwrctrl { 4095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 max_pwr_2g; 4105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_targ_2g; 4115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_2g_a1; 4125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_2g_b0; 4135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_2g_b1; 4145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 max_pwr_5gm; 4155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_targ_5gm; 4165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 max_pwr_5gh; 4175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 max_pwr_5gl; 4185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gm_a1; 4195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gm_b0; 4205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gm_b1; 4215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gl_a1; 4225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gl_b0; 4235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gl_b1; 4245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gh_a1; 4255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gh_b0; 4265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 pwrdet_5gh_b1; 4275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_targ_5gl; 4285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_targ_5gh; 4295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_tssi_2g; 4305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_tssi_5g; 4315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_tssi; 4325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 a1; 4335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 b0; 4345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 b1; 4355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 4365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4375b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct nphy_txgains { 4385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txlpf[2]; 4395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txgm[2]; 4405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 pga[2]; 4415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 pad[2]; 4425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 ipa[2]; 4435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 4445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_NOISEVAR_BUFSIZE 10 4465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4475b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct nphy_noisevar_buf { 4485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int bufcount; 4495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int tone_id[PHY_NOISEVAR_BUFSIZE]; 4505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 noise_vars[PHY_NOISEVAR_BUFSIZE]; 4515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 min_noise_vars[PHY_NOISEVAR_BUFSIZE]; 4525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 4535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4545b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct rssical_cache { 4555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rssical_radio_regs_2G[2]; 4565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rssical_phyregs_2G[12]; 4575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rssical_radio_regs_5G[2]; 4595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rssical_phyregs_5G[12]; 4605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 4615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4625b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct lcnphy_cal_results { 4635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txiqlocal_a; 4655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txiqlocal_b; 4665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txiqlocal_didq; 4675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txiqlocal_ei0; 4685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txiqlocal_eq0; 4695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txiqlocal_fi0; 4705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txiqlocal_fq0; 4715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txiqlocal_bestcoeffs[11]; 4735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txiqlocal_bestcoeffs_valid; 4745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 papd_eps_tbl[PHY_PAPD_EPS_TBL_SIZE_LCNPHY]; 4765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 analog_gain_ref; 4775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 lut_begin; 4785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 lut_end; 4795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 lut_step; 4805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rxcompdbm; 4815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 papdctrl; 4825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 sslpnCalibClkEnCtrl; 4835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rxiqcal_coeff_a0; 4855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rxiqcal_coeff_b0; 4865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 4875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 4885b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct shared_phy { 4895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy *phy_head; 4905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint unit; 4915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct phy_shim_info *physhim; 4925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint corerev; 4935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 machwcap; 4945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool up; 4955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool clk; 4965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint now; 4975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 vid; 4985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 did; 4995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint chip; 5005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint chiprev; 5015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint chippkg; 5025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint sromrev; 5035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint boardtype; 5045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint boardrev; 5055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 boardflags; 5065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 boardflags2; 5075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint fast_timer; 5085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint slow_timer; 5095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint glacial_timer; 5105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 rx_antdiv; 5115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 phy_noise_window[MA_WINDOW_SZ]; 5125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phy_noise_index; 5135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 hw_phytxchain; 5145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 hw_phyrxchain; 5155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phytxchain; 5165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phyrxchain; 5175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 rssi_mode; 5185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool _rifs_phy; 5195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 5205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5215b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcms_phy_pub { 5225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phy_type; 5235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phy_rev; 5245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phy_corenum; 5255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radioid; 5265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 radiorev; 5275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 radiover; 5285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint coreflags; 5305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint ana_rev; 5315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool abgphy_encore; 5325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 5335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5345b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct phy_func_ptr { 5355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*init)(struct brcms_phy *); 5365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*calinit)(struct brcms_phy *); 5375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*chanset)(struct brcms_phy *, u16 chanspec); 5385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*txpwrrecalc)(struct brcms_phy *); 5395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int (*longtrn)(struct brcms_phy *, int); 5405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*txiqccget)(struct brcms_phy *, u16 *, u16 *); 5415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*txiqccset)(struct brcms_phy *, u16, u16); 5425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 (*txloccget)(struct brcms_phy *); 5435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*radioloftget)(struct brcms_phy *, u8 *, u8 *, u8 *, u8 *); 5445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*carrsuppr)(struct brcms_phy *); 5455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s32 (*rxsigpwr)(struct brcms_phy *, s32); 5465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel void (*detach)(struct brcms_phy *); 5475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 5485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5495b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcms_phy { 5505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy_pub pubpi_ro; 5515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct shared_phy *sh; 5525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct phy_func_ptr pi_fptr; 5535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel union { 5555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy_lcnphy *pi_lcnphy; 5565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel } u; 5575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool user_txpwr_at_rfport; 5585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5594b006b11ca18995677c5f1cd03cc9c42fbe80693Arend van Spriel struct bcma_device *d11core; 5605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy *next; 5615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy_pub pubpi; 5625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool do_initcal; 5645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phytest_on; 5655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool ofdm_rateset_war; 5665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool bf_preempt_4306; 5675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radio_chanspec; 5685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 antsel_type; 5695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 bw; 5705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txpwr_percent; 5715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_init_por; 5725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool init_in_progress; 5745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool initialized; 5755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool sbtml_gm; 5765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint refcnt; 5775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool watchdog_override; 5785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phynoise_state; 5795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phynoise_now; 5805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int phynoise_chan_watchdog; 5815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phynoise_polling; 5825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool disable_percal; 5835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 measure_hold; 5845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 txpa_2g[PWRTBL_NUM_COEFF]; 5865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 txpa_2g_low_temp[PWRTBL_NUM_COEFF]; 5875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 txpa_2g_high_temp[PWRTBL_NUM_COEFF]; 5885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 txpa_5g_low[PWRTBL_NUM_COEFF]; 5895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 txpa_5g_mid[PWRTBL_NUM_COEFF]; 5905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 txpa_5g_hi[PWRTBL_NUM_COEFF]; 5915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 5925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_2g; 5935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_5g_low; 5945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_5g_mid; 5955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_5g_hi; 5965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_rate_2g[TXP_NUM_RATES]; 5975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_rate_5g_low[TXP_NUM_RATES]; 5985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_rate_5g_mid[TXP_NUM_RATES]; 5995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_srom_max_rate_5g_hi[TXP_NUM_RATES]; 6005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_user_target[TXP_NUM_RATES]; 6015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 tx_power_offset[TXP_NUM_RATES]; 6025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_power_target[TXP_NUM_RATES]; 6035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy_srom_fem srom_fem2g; 6055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct brcms_phy_srom_fem srom_fem5g; 6065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_power_max; 6085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_power_max_rate_ind; 6095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool hwpwrctrl; 6105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_txpwrctrl; 6115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 nphy_txrx_chain; 6125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_5g_pwrgain; 6135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 phy_wreg; 6155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 phy_wreg_limit; 6165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 n_preamble_override; 6185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 antswitch; 6195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 aa2g, aa5g; 6205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 idle_tssi[CH_5G_GROUP]; 6225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 target_idle_tssi; 6235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 txpwr_est_Pout; 6245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 tx_power_min; 6255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txpwr_limit[TXP_NUM_RATES]; 6265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txpwr_env_limit[TXP_NUM_RATES]; 6275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 adj_pwr_tbl_nphy[ADJ_PWR_TBL_LEN]; 6285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool channel_14_wide_filter; 6305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool txpwroverride; 6325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool txpwridx_override_aphy; 6335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 radiopwr_override; 6345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 hwpwr_txcur; 6355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 saved_txpwr_idx; 6365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool edcrs_threshold_lock; 6385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 tr_R_gain_val; 6405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 tr_T_gain_val; 6415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 ofdm_analog_filt_bw_override; 6435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 cck_analog_filt_bw_override; 6445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 ofdm_rccal_override; 6455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 cck_rccal_override; 6465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 extlna_type; 6475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint interference_mode_crs_time; 6495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsglitch_prev; 6505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool interference_mode_crs; 6515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 phy_tx_tone_freq; 6535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phy_lastcal; 6545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_forcecal; 6555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_fixed_noise; 6565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 xtalfreq; 6575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 pdiv; 6585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 carrier_suppr_disable; 6595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_bphy_evm; 6615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_bphy_rfcs; 6625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 phy_scraminit; 6635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phy_gpiosel; 6645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 phy_txcore_disable_temp; 6665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 phy_txcore_enable_temp; 6675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 phy_tempsense_offset; 6685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_txcore_heatedup; 6695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radiopwr; 6715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 bb_atten; 6725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 txctl1; 6735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mintxbias; 6755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mintxmag; 6765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct lo_complex_abgphy_info gphy_locomp_iq 6775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel [STATIC_NUM_RF][STATIC_NUM_BB]; 6785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 stats_11b_txpower[STATIC_NUM_RF][STATIC_NUM_BB]; 6795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 gain_table[TX_GAIN_TABLE_LENGTH]; 6805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool loopback_gain; 6815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 max_lpback_gain_hdB; 6825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 trsw_rx_gain_hdB; 6835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 power_vec[8]; 6845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rc_cal; 6865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int nrssi_table_delta; 6875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int nrssi_slope_scale; 6885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int nrssi_slope_offset; 6895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int min_rssi; 6905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int max_rssi; 6915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 txpwridx; 6935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 min_txpower; 6945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 a_band_high_disable; 6965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 6975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 tx_vos; 6985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 global_tx_bb_dc_bias_loft; 6995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int rf_max; 7015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int bb_max; 7025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int rf_list_size; 7035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int bb_list_size; 7045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 *rf_attn_list; 7055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 *bb_attn_list; 7065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 padmix_mask; 7075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 padmix_reg; 7085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 *txmag_list; 7095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint txmag_len; 7105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool txmag_enable; 7115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 *a_tssi_to_dbm; 7135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 *m_tssi_to_dbm; 7145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 *l_tssi_to_dbm; 7155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 *h_tssi_to_dbm; 7165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 *hwtxpwr; 7175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 freqtrack_saved_regs[2]; 7195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel int cur_interference_mode; 7205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool hwpwrctrl_capable; 7215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool temppwrctrl_capable; 7225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phycal_nslope; 7245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phycal_noffset; 7255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phycal_mlo; 7265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint phycal_txpower; 7275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phy_aa2g; 7295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_tableloaded; 7315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 nphy_rssisel; 7325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 nphy_bb_mult_save; 7335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_txiqlocal_bestc[11]; 7345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_txiqlocal_coeffsvalid; 7355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct nphy_txpwrindex nphy_txpwrindex[PHY_CORE_NUM_2]; 7365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct nphy_pwrctrl nphy_pwrctrl_info[PHY_CORE_NUM_2]; 7375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 cck2gpo; 7385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 ofdm2gpo; 7395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 ofdm5gpo; 7405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 ofdm5glpo; 7415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 ofdm5ghpo; 7425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bw402gpo; 7435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bw405gpo; 7445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bw405glpo; 7455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bw405ghpo; 7465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 cdd2gpo; 7475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 cdd5gpo; 7485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 cdd5glpo; 7495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 cdd5ghpo; 7505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 stbc2gpo; 7515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 stbc5gpo; 7525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 stbc5glpo; 7535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 stbc5ghpo; 7545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bwdup2gpo; 7555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bwdup5gpo; 7565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bwdup5glpo; 7575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 bwdup5ghpo; 7585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mcs2gpo[8]; 7595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mcs5gpo[8]; 7605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mcs5glpo[8]; 7615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mcs5ghpo[8]; 7625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 nphy_rxcalparams; 7635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phy_spuravoid; 7655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phy_isspuravoid; 7665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phy_pabias; 7685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_papd_skip; 7695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_tssi_slope; 7705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 nphy_noise_win[PHY_CORE_MAX][PHY_NOISE_WINDOW_SZ]; 7725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_noise_index; 7735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_gain_boost; 7755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_elna_gain_config; 7765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 old_bphy_test; 7775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 old_bphy_testcontrol; 7785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool phyhang_avoid; 7805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool rssical_nphy; 7825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_perical; 7835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint nphy_perical_last; 7845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 cal_type_override; 7855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 mphase_cal_phase_id; 7865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 mphase_txcal_cmdidx; 7875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 mphase_txcal_numcmds; 7885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 mphase_txcal_bestcoeffs[11]; 7895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_txiqlocal_chanspec; 7905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_iqcal_chanspec_2G; 7915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_iqcal_chanspec_5G; 7925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_rssical_chanspec_2G; 7935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_rssical_chanspec_5G; 7945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct wlapi_timer *phycal_timer; 7955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool use_int_tx_iqlo_cal_nphy; 7965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool internal_tx_iqlo_cal_tapoff_intpa_nphy; 7975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 nphy_lastcal_temp; 7985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 7995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct txiqcal_cache calibration_cache; 8005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct rssical_cache rssical_cache; 8015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_txpwr_idx[2]; 8035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_papd_cal_type; 8045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint nphy_papd_last_cal; 8055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_papd_tx_gain_at_last_cal[2]; 8065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_papd_cal_gain_index[2]; 8075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 nphy_papd_epsilon_offset[2]; 8085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_papd_recal_enable; 8095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 nphy_papd_recal_counter; 8105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_force_papd_cal; 8115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_papdcomp; 8125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool ipa2g_on; 8135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool ipa5g_on; 8145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 classifier_state; 8165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 clip_state[2]; 8175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint nphy_deaf_count; 8185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 rxiq_samps; 8195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 rxiq_antsel; 8205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rfctrlIntc1_save; 8225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 rfctrlIntc2_save; 8235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool first_cal_after_assoc; 8245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 tx_rx_cal_radio_saveregs[22]; 8255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 tx_rx_cal_phy_saveregs[15]; 8265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_cal_orig_pwr_idx[2]; 8285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_txcal_pwr_idx[2]; 8295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 nphy_rxcal_pwr_idx[2]; 8305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_cal_orig_tx_gain[2]; 8315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct nphy_txgains nphy_cal_target_gain; 8325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_txcal_bbmult; 8335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_gmval; 8345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_saved_bbconf; 8365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_gband_spurwar_en; 8385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_gband_spurwar2_en; 8395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_aband_spurwar_en; 8405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_rccal_value; 8415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_crsminpwr[3]; 8425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct nphy_noisevar_buf nphy_saved_noisevars; 8435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_anarxlpf_adjusted; 8445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_crsminpwr_adjusted; 8455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_noisevars_adjusted; 8465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_rxcal_active; 8485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 radar_percal_mask; 8495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool dfs_lp_buffer_nphy; 8505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 nphy_fineclockgatecontrol; 8525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 rx2tx_biasentry; 8545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwr0; 8565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwrl0; 8575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 crsminpwru0; 8585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s16 noise_crsminpwr_index; 8595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_core1; 8605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_core2; 8615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gainb_core1; 8625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gainb_core2; 8635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 aci_noise_curr_channel; 8645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 init_gain_rfseq[4]; 8655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool radio_is_on; 8675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel bool nphy_sample_play_lpf_bw_ctl_ovr; 8695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 tbl_data_hi; 8715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 tbl_data_lo; 8725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 tbl_addr; 8735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint tbl_save_id; 8755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel uint tbl_save_offset; 8765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 txpwrctrl; 8785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 txpwrindex[PHY_CORE_MAX]; 8795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 phycal_tempdelta; 8815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 mcs20_po; 8825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 mcs40_po; 8835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel struct wiphy *wiphy; 8845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 8855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8865b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct cs32 { 8875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s32 q; 8885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s32 i; 8895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 8905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8915b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct radio_regs { 8925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 address; 8935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 init_a; 8945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 init_g; 8955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 do_init_a; 8965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 do_init_g; 8975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 8985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 8995b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct radio_20xx_regs { 9005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 address; 9015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 init; 9025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 do_init; 9035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 9045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 9055b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct lcnphy_radio_regs { 9065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u16 address; 9075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 init_a; 9085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 init_g; 9095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 do_init_a; 9105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u8 do_init_g; 9115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 9125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 9139bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu16 read_phy_reg(struct brcms_phy *pi, u16 addr); 9149bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid write_phy_reg(struct brcms_phy *pi, u16 addr, u16 val); 9159bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid and_phy_reg(struct brcms_phy *pi, u16 addr, u16 val); 9169bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid or_phy_reg(struct brcms_phy *pi, u16 addr, u16 val); 9179bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid mod_phy_reg(struct brcms_phy *pi, u16 addr, u16 mask, u16 val); 9189bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9199bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu16 read_radio_reg(struct brcms_phy *pi, u16 addr); 9209bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid or_radio_reg(struct brcms_phy *pi, u16 addr, u16 val); 9219bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid and_radio_reg(struct brcms_phy *pi, u16 addr, u16 val); 9229bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid mod_radio_reg(struct brcms_phy *pi, u16 addr, u16 mask, u16 val); 9239bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid xor_radio_reg(struct brcms_phy *pi, u16 addr, u16 mask); 9249bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9259bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid write_radio_reg(struct brcms_phy *pi, u16 addr, u16 val); 9269bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9279bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phyreg_enter(struct brcms_phy_pub *pih); 9289bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phyreg_exit(struct brcms_phy_pub *pih); 9299bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_radioreg_enter(struct brcms_phy_pub *pih); 9309bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_radioreg_exit(struct brcms_phy_pub *pih); 9319bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9329bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_read_table(struct brcms_phy *pi, 9339bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches const struct phytbl_info *ptbl_info, 9349bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u16 tblAddr, u16 tblDataHi, u16 tblDatalo); 9359bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_write_table(struct brcms_phy *pi, 9369bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches const struct phytbl_info *ptbl_info, 9379bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u16 tblAddr, u16 tblDataHi, u16 tblDatalo); 9389bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_table_addr(struct brcms_phy *pi, uint tbl_id, uint tbl_offset, 9399bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u16 tblAddr, u16 tblDataHi, u16 tblDataLo); 9409bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_table_data_write(struct brcms_phy *pi, uint width, u32 val); 9419bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9429bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid write_phy_channel_reg(struct brcms_phy *pi, uint val); 9439bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpower_update_shm(struct brcms_phy *pi); 9449bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9459bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu8 wlc_phy_nbits(s32 value); 9469bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_compute_dB(u32 *cmplx_pwr, s8 *p_dB, u8 core); 9479bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9489bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesuint wlc_phy_init_radio_regs_allbands(struct brcms_phy *pi, 9499bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches struct radio_20xx_regs *radioregs); 9509bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesuint wlc_phy_init_radio_regs(struct brcms_phy *pi, 9519bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches const struct radio_regs *radioregs, 9529bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u16 core_offset); 9539bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9549bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpower_ipa_upd(struct brcms_phy *pi); 9559bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9569bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_do_dummy_tx(struct brcms_phy *pi, bool ofdm, bool pa_on); 9579bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_papd_decode_epsilon(u32 epsilon, s32 *eps_real, s32 *eps_imag); 9589bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9599bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_cal_perical_mphase_reset(struct brcms_phy *pi); 9609bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_cal_perical_mphase_restart(struct brcms_phy *pi); 9619bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9629bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesbool wlc_phy_attach_nphy(struct brcms_phy *pi); 9639bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesbool wlc_phy_attach_lcnphy(struct brcms_phy *pi); 9649bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9659bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_detach_lcnphy(struct brcms_phy *pi); 9669bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9679bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_init_nphy(struct brcms_phy *pi); 9689bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_init_lcnphy(struct brcms_phy *pi); 9699bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9709bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_cal_init_nphy(struct brcms_phy *pi); 9719bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_cal_init_lcnphy(struct brcms_phy *pi); 9729bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9739bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec); 9749bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_chanspec_set_lcnphy(struct brcms_phy *pi, u16 chanspec); 9759bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_chanspec_set_fixup_lcnphy(struct brcms_phy *pi, u16 chanspec); 9769bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_channel2freq(uint channel); 9779bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_chanspec_freq2bandrange_lpssn(uint); 9789bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_chanspec_bandrange_get(struct brcms_phy *, u16 chanspec); 9799bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9809bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_set_tx_pwr_ctrl(struct brcms_phy *pi, u16 mode); 9819bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess8 wlc_lcnphy_get_current_tx_pwr_idx(struct brcms_phy *pi); 9829bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9839bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi); 9849bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_txpower_recalc_target(struct brcms_phy *pi); 9859bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpower_recalc_target_lcnphy(struct brcms_phy *pi); 9869bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9879bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_set_tx_pwr_by_index(struct brcms_phy *pi, int index); 9889bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_tx_pu(struct brcms_phy *pi, bool bEnable); 9899bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_stop_tx_tone(struct brcms_phy *pi); 9909bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_start_tx_tone(struct brcms_phy *pi, s32 f_kHz, u16 max_val, 9919bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches bool iqcalmode); 9929bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 9939bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, 9949bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8 *max_pwr, u8 rate_id); 9959bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start, 9969bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8 rate_mcs_end, u8 rate_ofdm_start); 9979bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start, 9989bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8 rate_ofdm_end, u8 rate_mcs_start); 9999bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10009bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu16 wlc_lcnphy_tempsense(struct brcms_phy *pi, bool mode); 10019bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess16 wlc_lcnphy_tempsense_new(struct brcms_phy *pi, bool mode); 10029bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess8 wlc_lcnphy_tempsense_degree(struct brcms_phy *pi, bool mode); 10039bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess8 wlc_lcnphy_vbatsense(struct brcms_phy *pi, bool mode); 10049bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_carrier_suppress_lcnphy(struct brcms_phy *pi); 10059bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_crsuprs(struct brcms_phy *pi, int channel); 10069bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_epa_switch(struct brcms_phy *pi, bool mode); 10079bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_2064_vco_cal(struct brcms_phy *pi); 10089bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10099bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpower_recalc_target(struct brcms_phy *pi); 10105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TBL_ID_PAPDCOMPDELTATBL 0x18 10125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TX_POWER_TABLE_SIZE 128 10135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_MAX_TX_POWER_INDEX (LCNPHY_TX_POWER_TABLE_SIZE - 1) 10145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TBL_ID_TXPWRCTL 0x07 10155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TX_PWR_CTRL_OFF 0 10165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TX_PWR_CTRL_SW (0x1 << 15) 10175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TX_PWR_CTRL_HW ((0x1 << 15) | \ 10185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (0x1 << 14) | \ 10195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (0x1 << 13)) 10205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define LCNPHY_TX_PWR_CTRL_TEMPBASED 0xE001 10225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10239bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_write_table(struct brcms_phy *pi, 10249bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches const struct phytbl_info *pti); 10259bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_read_table(struct brcms_phy *pi, struct phytbl_info *pti); 10269bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_set_tx_iqcc(struct brcms_phy *pi, u16 a, u16 b); 10279bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_set_tx_locc(struct brcms_phy *pi, u16 didq); 10289bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_get_tx_iqcc(struct brcms_phy *pi, u16 *a, u16 *b); 10299bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu16 wlc_lcnphy_get_tx_locc(struct brcms_phy *pi); 10309bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_get_radio_loft(struct brcms_phy *pi, u8 *ei0, u8 *eq0, u8 *fi0, 10319bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8 *fq0); 10329bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_calib_modes(struct brcms_phy *pi, uint mode); 10339bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_deaf_mode(struct brcms_phy *pi, bool mode); 10349bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesbool wlc_phy_tpc_isenabled_lcnphy(struct brcms_phy *pi); 10359bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_tx_pwr_update_npt(struct brcms_phy *pi); 10369bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess32 wlc_lcnphy_tssi2dbm(s32 tssi, s32 a1, s32 b0, s32 b1); 10379bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_get_tssi(struct brcms_phy *pi, s8 *ofdm_pwr, s8 *cck_pwr); 10389bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_lcnphy_tx_power_adjustment(struct brcms_phy_pub *ppi); 10399bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10409bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess32 wlc_lcnphy_rx_signal_power(struct brcms_phy *pi, s32 gain_index); 10415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NPHY_MAX_HPVGA1_INDEX 10 10435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NPHY_DEF_HPVGA1_INDEXLIMIT 7 10445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10455b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct phy_iq_est { 10465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s32 iq_prod; 10475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 i_pwr; 10485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel u32 q_pwr; 10495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel}; 10505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10519bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable); 10529bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode); 10535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define wlc_phy_write_table_nphy(pi, pti) \ 10555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel wlc_phy_write_table(pi, pti, 0x72, 0x74, 0x73) 10565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define wlc_phy_read_table_nphy(pi, pti) \ 10585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel wlc_phy_read_table(pi, pti, 0x72, 0x74, 0x73) 10595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define wlc_nphy_table_addr(pi, id, off) \ 10615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel wlc_phy_table_addr((pi), (id), (off), 0x72, 0x74, 0x73) 10625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define wlc_nphy_table_data_write(pi, w, v) \ 10645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel wlc_phy_table_data_write((pi), (w), (v)) 10655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10669bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_table_read_nphy(struct brcms_phy *pi, u32, u32 l, u32 o, u32 w, 10679bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches void *d); 10689bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_table_write_nphy(struct brcms_phy *pi, u32, u32, u32, u32, 10699bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches const void *); 10705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define PHY_IPA(pi) \ 10725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel ((pi->ipa2g_on && CHSPEC_IS2G(pi->radio_chanspec)) || \ 10735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel (pi->ipa5g_on && CHSPEC_IS5G(pi->radio_chanspec))) 10745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMS_PHY_WAR_PR51571(pi) \ 10765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel if (NREV_LT((pi)->pubpi.phy_rev, 3)) \ 10774b006b11ca18995677c5f1cd03cc9c42fbe80693Arend van Spriel (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) 10785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 10799bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype); 10809bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_aci_reset_nphy(struct brcms_phy *pi); 10819bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en); 10829bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10839bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint chan); 10849bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on); 10859bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10869bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi); 10879bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10889bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd); 10899bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess16 wlc_phy_tempsense_nphy(struct brcms_phy *pi); 10909bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10919bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val); 10929bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10939bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est, 10949bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u16 num_samps, u8 wait_time, u8 wait_for_crs); 10959bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 10969bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write, 10979bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches struct nphy_iq_comp *comp); 10989bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_aci_and_noise_reduction_nphy(struct brcms_phy *pi); 10999bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 11009bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask); 11019bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih); 11029bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 11039bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type); 11049bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi); 11059bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi); 11069bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi); 11079bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesu16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi); 11089bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 11099bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesstruct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi); 11109bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, 11119bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches struct nphy_txgains target_gain, bool full, bool m); 11129bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain, 11139bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8 type, bool d); 11149bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, 11159bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches s8 txpwrindex, bool res); 11169bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core, u8 rssi_type); 11179bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, 11189bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches s32 *rssi_buf, u8 nsamps); 11199bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_rssi_cal_nphy(struct brcms_phy *pi); 11209bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_aci_scan_nphy(struct brcms_phy *pi); 11219bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower, 11229bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches bool debug); 11239bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val, u8 mode, 11249bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8, bool); 11259bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_stopplayback_nphy(struct brcms_phy *pi); 11269bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, 11279bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches u8 num_samps); 11289bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi); 11299bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perches 11309bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesint wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh); 11315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 11325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NPHY_TESTPATTERN_BPHY_EVM 0 11335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define NPHY_TESTPATTERN_BPHY_RFCS 1 11345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 11359bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesvoid wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs); 11365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 11375b435de0d786869c95d1962121af0d7df2542009Arend van Sprielvoid wlc_phy_get_pwrdet_offsets(struct brcms_phy *pi, s8 *cckoffset, 11385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel s8 *ofdmoffset); 11399bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchess8 wlc_phy_upd_rssi_offset(struct brcms_phy *pi, s8 rssi, u16 chanspec); 11405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel 11419bd91f3c00bd8dd54339499a9253b31c6bac7c7bJoe Perchesbool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pih); 11425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#endif /* _BRCM_PHY_INT_H_ */ 1143