1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * (c) Copyright 2002-2010, Ralink Technology, Inc. 4*4882a593Smuzhiyun * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl> 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef __MT7601U_INITVALS_H 8*4882a593Smuzhiyun #define __MT7601U_INITVALS_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun static const struct mt76_reg_pair bbp_common_vals[] = { 11*4882a593Smuzhiyun { 65, 0x2c }, 12*4882a593Smuzhiyun { 66, 0x38 }, 13*4882a593Smuzhiyun { 68, 0x0b }, 14*4882a593Smuzhiyun { 69, 0x12 }, 15*4882a593Smuzhiyun { 70, 0x0a }, 16*4882a593Smuzhiyun { 73, 0x10 }, 17*4882a593Smuzhiyun { 81, 0x37 }, 18*4882a593Smuzhiyun { 82, 0x62 }, 19*4882a593Smuzhiyun { 83, 0x6a }, 20*4882a593Smuzhiyun { 84, 0x99 }, 21*4882a593Smuzhiyun { 86, 0x00 }, 22*4882a593Smuzhiyun { 91, 0x04 }, 23*4882a593Smuzhiyun { 92, 0x00 }, 24*4882a593Smuzhiyun { 103, 0x00 }, 25*4882a593Smuzhiyun { 105, 0x05 }, 26*4882a593Smuzhiyun { 106, 0x35 }, 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun static const struct mt76_reg_pair bbp_chip_vals[] = { 30*4882a593Smuzhiyun { 1, 0x04 }, { 4, 0x40 }, { 20, 0x06 }, { 31, 0x08 }, 31*4882a593Smuzhiyun /* CCK Tx Control */ 32*4882a593Smuzhiyun { 178, 0xff }, 33*4882a593Smuzhiyun /* AGC/Sync controls */ 34*4882a593Smuzhiyun { 66, 0x14 }, { 68, 0x8b }, { 69, 0x12 }, { 70, 0x09 }, 35*4882a593Smuzhiyun { 73, 0x11 }, { 75, 0x60 }, { 76, 0x44 }, { 84, 0x9a }, 36*4882a593Smuzhiyun { 86, 0x38 }, { 91, 0x07 }, { 92, 0x02 }, 37*4882a593Smuzhiyun /* Rx Path Controls */ 38*4882a593Smuzhiyun { 99, 0x50 }, { 101, 0x00 }, { 103, 0xc0 }, { 104, 0x92 }, 39*4882a593Smuzhiyun { 105, 0x3c }, { 106, 0x03 }, { 128, 0x12 }, 40*4882a593Smuzhiyun /* Change RXWI content: Gain Report */ 41*4882a593Smuzhiyun { 142, 0x04 }, { 143, 0x37 }, 42*4882a593Smuzhiyun /* Change RXWI content: Antenna Report */ 43*4882a593Smuzhiyun { 142, 0x03 }, { 143, 0x99 }, 44*4882a593Smuzhiyun /* Calibration Index Register */ 45*4882a593Smuzhiyun /* CCK Receiver Control */ 46*4882a593Smuzhiyun { 160, 0xeb }, { 161, 0xc4 }, { 162, 0x77 }, { 163, 0xf9 }, 47*4882a593Smuzhiyun { 164, 0x88 }, { 165, 0x80 }, { 166, 0xff }, { 167, 0xe4 }, 48*4882a593Smuzhiyun /* Added AGC controls - these AGC/GLRT registers are accessed 49*4882a593Smuzhiyun * through R195 and R196. 50*4882a593Smuzhiyun */ 51*4882a593Smuzhiyun { 195, 0x00 }, { 196, 0x00 }, 52*4882a593Smuzhiyun { 195, 0x01 }, { 196, 0x04 }, 53*4882a593Smuzhiyun { 195, 0x02 }, { 196, 0x20 }, 54*4882a593Smuzhiyun { 195, 0x03 }, { 196, 0x0a }, 55*4882a593Smuzhiyun { 195, 0x06 }, { 196, 0x16 }, 56*4882a593Smuzhiyun { 195, 0x07 }, { 196, 0x05 }, 57*4882a593Smuzhiyun { 195, 0x08 }, { 196, 0x37 }, 58*4882a593Smuzhiyun { 195, 0x0a }, { 196, 0x15 }, 59*4882a593Smuzhiyun { 195, 0x0b }, { 196, 0x17 }, 60*4882a593Smuzhiyun { 195, 0x0c }, { 196, 0x06 }, 61*4882a593Smuzhiyun { 195, 0x0d }, { 196, 0x09 }, 62*4882a593Smuzhiyun { 195, 0x0e }, { 196, 0x05 }, 63*4882a593Smuzhiyun { 195, 0x0f }, { 196, 0x09 }, 64*4882a593Smuzhiyun { 195, 0x10 }, { 196, 0x20 }, 65*4882a593Smuzhiyun { 195, 0x20 }, { 196, 0x17 }, 66*4882a593Smuzhiyun { 195, 0x21 }, { 196, 0x06 }, 67*4882a593Smuzhiyun { 195, 0x22 }, { 196, 0x09 }, 68*4882a593Smuzhiyun { 195, 0x23 }, { 196, 0x17 }, 69*4882a593Smuzhiyun { 195, 0x24 }, { 196, 0x06 }, 70*4882a593Smuzhiyun { 195, 0x25 }, { 196, 0x09 }, 71*4882a593Smuzhiyun { 195, 0x26 }, { 196, 0x17 }, 72*4882a593Smuzhiyun { 195, 0x27 }, { 196, 0x06 }, 73*4882a593Smuzhiyun { 195, 0x28 }, { 196, 0x09 }, 74*4882a593Smuzhiyun { 195, 0x29 }, { 196, 0x05 }, 75*4882a593Smuzhiyun { 195, 0x2a }, { 196, 0x09 }, 76*4882a593Smuzhiyun { 195, 0x80 }, { 196, 0x8b }, 77*4882a593Smuzhiyun { 195, 0x81 }, { 196, 0x12 }, 78*4882a593Smuzhiyun { 195, 0x82 }, { 196, 0x09 }, 79*4882a593Smuzhiyun { 195, 0x83 }, { 196, 0x17 }, 80*4882a593Smuzhiyun { 195, 0x84 }, { 196, 0x11 }, 81*4882a593Smuzhiyun { 195, 0x85 }, { 196, 0x00 }, 82*4882a593Smuzhiyun { 195, 0x86 }, { 196, 0x00 }, 83*4882a593Smuzhiyun { 195, 0x87 }, { 196, 0x18 }, 84*4882a593Smuzhiyun { 195, 0x88 }, { 196, 0x60 }, 85*4882a593Smuzhiyun { 195, 0x89 }, { 196, 0x44 }, 86*4882a593Smuzhiyun { 195, 0x8a }, { 196, 0x8b }, 87*4882a593Smuzhiyun { 195, 0x8b }, { 196, 0x8b }, 88*4882a593Smuzhiyun { 195, 0x8c }, { 196, 0x8b }, 89*4882a593Smuzhiyun { 195, 0x8d }, { 196, 0x8b }, 90*4882a593Smuzhiyun { 195, 0x8e }, { 196, 0x09 }, 91*4882a593Smuzhiyun { 195, 0x8f }, { 196, 0x09 }, 92*4882a593Smuzhiyun { 195, 0x90 }, { 196, 0x09 }, 93*4882a593Smuzhiyun { 195, 0x91 }, { 196, 0x09 }, 94*4882a593Smuzhiyun { 195, 0x92 }, { 196, 0x11 }, 95*4882a593Smuzhiyun { 195, 0x93 }, { 196, 0x11 }, 96*4882a593Smuzhiyun { 195, 0x94 }, { 196, 0x11 }, 97*4882a593Smuzhiyun { 195, 0x95 }, { 196, 0x11 }, 98*4882a593Smuzhiyun /* PPAD */ 99*4882a593Smuzhiyun { 47, 0x80 }, { 60, 0x80 }, { 150, 0xd2 }, { 151, 0x32 }, 100*4882a593Smuzhiyun { 152, 0x23 }, { 153, 0x41 }, { 154, 0x00 }, { 155, 0x4f }, 101*4882a593Smuzhiyun { 253, 0x7e }, { 195, 0x30 }, { 196, 0x32 }, { 195, 0x31 }, 102*4882a593Smuzhiyun { 196, 0x23 }, { 195, 0x32 }, { 196, 0x45 }, { 195, 0x35 }, 103*4882a593Smuzhiyun { 196, 0x4a }, { 195, 0x36 }, { 196, 0x5a }, { 195, 0x37 }, 104*4882a593Smuzhiyun { 196, 0x5a }, 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun static const struct mt76_reg_pair mac_common_vals[] = { 108*4882a593Smuzhiyun { MT_LEGACY_BASIC_RATE, 0x0000013f }, 109*4882a593Smuzhiyun { MT_HT_BASIC_RATE, 0x00008003 }, 110*4882a593Smuzhiyun { MT_MAC_SYS_CTRL, 0x00000000 }, 111*4882a593Smuzhiyun { MT_RX_FILTR_CFG, 0x00017f97 }, 112*4882a593Smuzhiyun { MT_BKOFF_SLOT_CFG, 0x00000209 }, 113*4882a593Smuzhiyun { MT_TX_SW_CFG0, 0x00000000 }, 114*4882a593Smuzhiyun { MT_TX_SW_CFG1, 0x00080606 }, 115*4882a593Smuzhiyun { MT_TX_LINK_CFG, 0x00001020 }, 116*4882a593Smuzhiyun { MT_TX_TIMEOUT_CFG, 0x000a2090 }, 117*4882a593Smuzhiyun { MT_MAX_LEN_CFG, 0x00003fff }, 118*4882a593Smuzhiyun { MT_PBF_TX_MAX_PCNT, 0x1fbf1f1f }, 119*4882a593Smuzhiyun { MT_PBF_RX_MAX_PCNT, 0x0000009f }, 120*4882a593Smuzhiyun { MT_TX_RETRY_CFG, 0x47d01f0f }, 121*4882a593Smuzhiyun { MT_AUTO_RSP_CFG, 0x00000013 }, 122*4882a593Smuzhiyun { MT_CCK_PROT_CFG, 0x05740003 }, 123*4882a593Smuzhiyun { MT_OFDM_PROT_CFG, 0x05740003 }, 124*4882a593Smuzhiyun { MT_MM40_PROT_CFG, 0x03f44084 }, 125*4882a593Smuzhiyun { MT_GF20_PROT_CFG, 0x01744004 }, 126*4882a593Smuzhiyun { MT_GF40_PROT_CFG, 0x03f44084 }, 127*4882a593Smuzhiyun { MT_MM20_PROT_CFG, 0x01744004 }, 128*4882a593Smuzhiyun { MT_TXOP_CTRL_CFG, 0x0000583f }, 129*4882a593Smuzhiyun { MT_TX_RTS_CFG, 0x01092b20 }, 130*4882a593Smuzhiyun { MT_EXP_ACK_TIME, 0x002400ca }, 131*4882a593Smuzhiyun { MT_TXOP_HLDR_ET, 0x00000002 }, 132*4882a593Smuzhiyun { MT_XIFS_TIME_CFG, 0x33a41010 }, 133*4882a593Smuzhiyun { MT_PWR_PIN_CFG, 0x00000000 }, 134*4882a593Smuzhiyun { MT_PN_PAD_MODE, 0x00000001 }, 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun static const struct mt76_reg_pair mac_chip_vals[] = { 138*4882a593Smuzhiyun { MT_TSO_CTRL, 0x00006050 }, 139*4882a593Smuzhiyun { MT_BCN_OFFSET(0), 0x18100800 }, 140*4882a593Smuzhiyun { MT_BCN_OFFSET(1), 0x38302820 }, 141*4882a593Smuzhiyun { MT_PBF_SYS_CTRL, 0x00080c00 }, 142*4882a593Smuzhiyun { MT_PBF_CFG, 0x7f723c1f }, 143*4882a593Smuzhiyun { MT_FCE_PSE_CTRL, 0x00000001 }, 144*4882a593Smuzhiyun { MT_PAUSE_ENABLE_CONTROL1, 0x00000000 }, 145*4882a593Smuzhiyun { MT_TX0_RF_GAIN_CORR, 0x003b0005 }, 146*4882a593Smuzhiyun { MT_TX0_RF_GAIN_ATTEN, 0x00006900 }, 147*4882a593Smuzhiyun { MT_TX0_BB_GAIN_ATTEN, 0x00000400 }, 148*4882a593Smuzhiyun { MT_TX_ALC_VGA3, 0x00060006 }, 149*4882a593Smuzhiyun { MT_TX_SW_CFG0, 0x00000402 }, 150*4882a593Smuzhiyun { MT_TX_SW_CFG1, 0x00000000 }, 151*4882a593Smuzhiyun { MT_TX_SW_CFG2, 0x00000000 }, 152*4882a593Smuzhiyun { MT_HEADER_TRANS_CTRL_REG, 0x00000000 }, 153*4882a593Smuzhiyun { MT_FCE_CSO, 0x0000030f }, 154*4882a593Smuzhiyun { MT_FCE_PARAMETERS, 0x00256f0f }, 155*4882a593Smuzhiyun }; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #endif 158