This source file includes following definitions.
- b2062_upload_init_table
- b2063_upload_init_table
- b43_lptab_read
- b43_lptab_read_bulk
- b43_lptab_write
- b43_lptab_write_bulk
- lpphy_rev0_1_table_init
- lpphy_rev2plus_table_init
- lpphy_rev0_1_write_gain_table
- lpphy_rev2plus_write_gain_table
- lpphy_write_gain_table
- lpphy_write_gain_table_bulk
- lpphy_init_tx_gain_table
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 #include "b43.h"
  14 #include "tables_lpphy.h"
  15 #include "phy_common.h"
  16 #include "phy_lp.h"
  17 
  18 
  19 
  20 struct b206x_init_tab_entry {
  21         u16 offset;
  22         u16 value_a;
  23         u16 value_g;
  24         u8 flags;
  25 };
  26 #define B206X_FLAG_A    0x01 
  27 #define B206X_FLAG_G    0x02 
  28 
  29 static const struct b206x_init_tab_entry b2062_init_tab[] = {
  30         
  31         
  32         
  33         
  34         { .offset = B2062_N_COMM4, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  35         
  36         
  37         
  38         
  39         
  40         
  41         
  42         
  43         
  44         
  45         
  46         
  47         { .offset = B2062_N_PDN_CTL1, .value_a = 0x0000, .value_g = 0x00CA, .flags = B206X_FLAG_G, },
  48         
  49         { .offset = B2062_N_PDN_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  50         { .offset = B2062_N_PDN_CTL4, .value_a = 0x0015, .value_g = 0x002A, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  51         
  52         
  53         { .offset = B2062_N_LGENC, .value_a = 0x00DB, .value_g = 0x00FF, .flags = B206X_FLAG_A, },
  54         
  55         
  56         
  57         
  58         
  59         
  60         { .offset = B2062_N_LGENA_TUNE0, .value_a = 0x00DD, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  61         
  62         { .offset = B2062_N_LGENA_TUNE2, .value_a = 0x00DD, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  63         { .offset = B2062_N_LGENA_TUNE3, .value_a = 0x0077, .value_g = 0x00B5, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  64         { .offset = B2062_N_LGENA_CTL3, .value_a = 0x0000, .value_g = 0x00FF, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  65         
  66         
  67         
  68         { .offset = B2062_N_LGENA_CTL7, .value_a = 0x0033, .value_g = 0x0033, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  69         
  70         { .offset = B2062_N_RXA_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
  71         
  72         
  73         
  74         
  75         
  76         
  77         { .offset = B2062_N_RXBB_CTL0, .value_a = 0x0082, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  78         
  79         
  80         
  81         { .offset = B2062_N_RXBB_GAIN1, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  82         { .offset = B2062_N_RXBB_GAIN2, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
  83         
  84         
  85         
  86         
  87         
  88         
  89         
  90         
  91         
  92         
  93         
  94         
  95         
  96         
  97         
  98         
  99         
 100         
 101         
 102         
 103         { .offset = B2062_N_TX_CTL4, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 104         { .offset = B2062_N_TX_CTL5, .value_a = 0x0002, .value_g = 0x0002, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 105         
 106         
 107         
 108         
 109         
 110         
 111         
 112         { .offset = B2062_N_TX_TUNE, .value_a = 0x0088, .value_g = 0x001B, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 113         
 114         
 115         
 116         
 117         
 118         
 119         
 120         
 121         
 122         
 123         
 124         
 125         
 126         
 127         
 128         
 129         
 130         
 131         
 132         
 133         
 134         
 135         
 136         
 137         
 138         
 139         
 140         
 141         { .offset = B2062_S_COMM4, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 142         
 143         
 144         
 145         
 146         
 147         
 148         
 149         
 150         
 151         
 152         
 153         { .offset = B2062_S_PDS_CTL0, .value_a = 0x00FF, .value_g = 0x00FF, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 154         
 155         
 156         
 157         
 158         
 159         
 160         { .offset = B2062_S_LGENG_CTL0, .value_a = 0x00F8, .value_g = 0x00D8, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 161         { .offset = B2062_S_LGENG_CTL1, .value_a = 0x003C, .value_g = 0x0024, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 162         
 163         
 164         
 165         
 166         
 167         
 168         { .offset = B2062_S_LGENG_CTL8, .value_a = 0x0088, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 169         
 170         { .offset = B2062_S_LGENG_CTL10, .value_a = 0x0088, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 171         
 172         
 173         
 174         
 175         
 176         
 177         
 178         
 179         
 180         
 181         
 182         
 183         
 184         
 185         
 186         
 187         
 188         
 189         { .offset = B2062_S_RFPLL_CTL0, .value_a = 0x0098, .value_g = 0x0098, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 190         { .offset = B2062_S_RFPLL_CTL1, .value_a = 0x0010, .value_g = 0x0010, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 191         
 192         
 193         
 194         { .offset = B2062_S_RFPLL_CTL5, .value_a = 0x0043, .value_g = 0x0043, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 195         { .offset = B2062_S_RFPLL_CTL6, .value_a = 0x0047, .value_g = 0x0047, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 196         { .offset = B2062_S_RFPLL_CTL7, .value_a = 0x000C, .value_g = 0x000C, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 197         { .offset = B2062_S_RFPLL_CTL8, .value_a = 0x0011, .value_g = 0x0011, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 198         { .offset = B2062_S_RFPLL_CTL9, .value_a = 0x0011, .value_g = 0x0011, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 199         { .offset = B2062_S_RFPLL_CTL10, .value_a = 0x000E, .value_g = 0x000E, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 200         { .offset = B2062_S_RFPLL_CTL11, .value_a = 0x0008, .value_g = 0x0008, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 201         { .offset = B2062_S_RFPLL_CTL12, .value_a = 0x0033, .value_g = 0x0033, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 202         { .offset = B2062_S_RFPLL_CTL13, .value_a = 0x000A, .value_g = 0x000A, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 203         { .offset = B2062_S_RFPLL_CTL14, .value_a = 0x0006, .value_g = 0x0006, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 204         
 205         
 206         
 207         { .offset = B2062_S_RFPLL_CTL18, .value_a = 0x003E, .value_g = 0x003E, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 208         { .offset = B2062_S_RFPLL_CTL19, .value_a = 0x0013, .value_g = 0x0013, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 209         
 210         { .offset = B2062_S_RFPLL_CTL21, .value_a = 0x0062, .value_g = 0x0062, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 211         { .offset = B2062_S_RFPLL_CTL22, .value_a = 0x0007, .value_g = 0x0007, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 212         { .offset = B2062_S_RFPLL_CTL23, .value_a = 0x0016, .value_g = 0x0016, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 213         { .offset = B2062_S_RFPLL_CTL24, .value_a = 0x005C, .value_g = 0x005C, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 214         { .offset = B2062_S_RFPLL_CTL25, .value_a = 0x0095, .value_g = 0x0095, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 215         
 216         
 217         
 218         
 219         { .offset = B2062_S_RFPLL_CTL30, .value_a = 0x00A0, .value_g = 0x00A0, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 220         { .offset = B2062_S_RFPLL_CTL31, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 221         
 222         { .offset = B2062_S_RFPLL_CTL33, .value_a = 0x00CC, .value_g = 0x00CC, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 223         { .offset = B2062_S_RFPLL_CTL34, .value_a = 0x0007, .value_g = 0x0007, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 224         
 225         
 226         
 227         
 228         
 229         
 230         
 231         
 232         { .offset = B2062_S_RXG_CNT8, .value_a = 0x000F, .value_g = 0x000F, .flags = B206X_FLAG_A, },
 233         
 234         
 235         
 236         
 237         
 238         
 239         
 240         
 241         
 242 };
 243 
 244 static const struct b206x_init_tab_entry b2063_init_tab[] = {
 245         { .offset = B2063_COMM1, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 246         
 247         
 248         
 249         
 250         
 251         
 252         
 253         
 254         { .offset = B2063_COMM10, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A, },
 255         
 256         
 257         
 258         
 259         
 260         { .offset = B2063_COMM16, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 261         { .offset = B2063_COMM17, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 262         { .offset = B2063_COMM18, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 263         { .offset = B2063_COMM19, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 264         { .offset = B2063_COMM20, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 265         { .offset = B2063_COMM21, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 266         { .offset = B2063_COMM22, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 267         { .offset = B2063_COMM23, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 268         { .offset = B2063_COMM24, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
 269         
 270         
 271         
 272         { .offset = B2063_LOGEN_SP1, .value_a = 0x00e8, .value_g = 0x00d4, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 273         { .offset = B2063_LOGEN_SP2, .value_a = 0x00a7, .value_g = 0x0053, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 274         
 275         { .offset = B2063_LOGEN_SP4, .value_a = 0x00f0, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 276         
 277         { .offset = B2063_G_RX_SP1, .value_a = 0x001f, .value_g = 0x005e, .flags = B206X_FLAG_G, },
 278         { .offset = B2063_G_RX_SP2, .value_a = 0x007f, .value_g = 0x007e, .flags = B206X_FLAG_G, },
 279         { .offset = B2063_G_RX_SP3, .value_a = 0x0030, .value_g = 0x00f0, .flags = B206X_FLAG_G, },
 280         
 281         
 282         
 283         { .offset = B2063_G_RX_SP7, .value_a = 0x007f, .value_g = 0x007f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 284         
 285         
 286         { .offset = B2063_G_RX_SP10, .value_a = 0x000c, .value_g = 0x000c, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 287         
 288         { .offset = B2063_A_RX_SP1, .value_a = 0x003c, .value_g = 0x003f, .flags = B206X_FLAG_A, },
 289         { .offset = B2063_A_RX_SP2, .value_a = 0x00fc, .value_g = 0x00fe, .flags = B206X_FLAG_A, },
 290         
 291         
 292         
 293         
 294         { .offset = B2063_A_RX_SP7, .value_a = 0x0008, .value_g = 0x0008, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 295         
 296         
 297         
 298         { .offset = B2063_RX_BB_SP4, .value_a = 0x0060, .value_g = 0x0060, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 299         
 300         
 301         
 302         { .offset = B2063_RX_BB_SP8, .value_a = 0x0030, .value_g = 0x0030, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 303         
 304         
 305         { .offset = B2063_TX_RF_SP3, .value_a = 0x000c, .value_g = 0x000b, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 306         { .offset = B2063_TX_RF_SP4, .value_a = 0x0010, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 307         
 308         
 309         
 310         
 311         
 312         
 313         
 314         
 315         
 316         
 317         
 318         
 319         
 320         { .offset = B2063_PA_SP1, .value_a = 0x003d, .value_g = 0x00fd, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 321         
 322         
 323         
 324         
 325         
 326         
 327         { .offset = B2063_TX_BB_SP1, .value_a = 0x0002, .value_g = 0x0002, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 328         
 329         
 330         
 331         { .offset = B2063_BANDGAP_CTL1, .value_a = 0x0056, .value_g = 0x0056, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 332         
 333         
 334         
 335         
 336         
 337         
 338         
 339         
 340         
 341         
 342         
 343         
 344         
 345         
 346         
 347         
 348         
 349         
 350         
 351         
 352         
 353         
 354         
 355         
 356         
 357         
 358         
 359         
 360         
 361         
 362         { .offset = B2063_PLL_JTAG_PLL_VCO2, .value_a = 0x00f7, .value_g = 0x00f7, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 363         
 364         
 365         
 366         
 367         
 368         
 369         
 370         
 371         
 372         
 373         
 374         
 375         
 376         
 377         
 378         
 379         
 380         
 381         
 382         
 383         
 384         
 385         
 386         
 387         
 388         
 389         
 390         
 391         
 392         
 393         
 394         
 395         
 396         
 397         
 398         
 399         
 400         
 401         
 402         
 403         
 404         
 405         
 406         
 407         
 408         
 409         
 410         
 411         
 412         
 413         
 414         
 415         
 416         
 417         
 418         
 419         
 420         
 421         
 422         
 423         
 424         
 425         
 426         
 427         
 428         
 429         
 430         
 431         
 432         
 433         
 434         
 435         
 436         
 437         
 438         
 439         
 440         { .offset = B2063_G_RX_MIX3, .value_a = 0x0071, .value_g = 0x0071, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 441         { .offset = B2063_G_RX_MIX4, .value_a = 0x0071, .value_g = 0x0071, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 442         
 443         
 444         
 445         
 446         
 447         
 448         
 449         
 450         
 451         { .offset = B2063_A_RX_1ST2, .value_a = 0x00f0, .value_g = 0x0030, .flags = B206X_FLAG_A, },
 452         
 453         
 454         
 455         
 456         
 457         
 458         
 459         
 460         
 461         
 462         
 463         
 464         
 465         
 466         
 467         { .offset = B2063_A_RX_PS6, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 468         
 469         
 470         
 471         { .offset = B2063_A_RX_MIX4, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 472         { .offset = B2063_A_RX_MIX5, .value_a = 0x000f, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 473         { .offset = B2063_A_RX_MIX6, .value_a = 0x000f, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 474         
 475         
 476         
 477         
 478         
 479         
 480         { .offset = B2063_RX_TIA_CTL1, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 481         
 482         { .offset = B2063_RX_TIA_CTL3, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 483         
 484         
 485         
 486         
 487         { .offset = B2063_RX_BB_CTL2, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 488         
 489         
 490         
 491         
 492         
 493         
 494         
 495         
 496         
 497         
 498         
 499         
 500         
 501         
 502         
 503         
 504         
 505         
 506         
 507         
 508         
 509         
 510         
 511         { .offset = B2063_PA_CTL1, .value_a = 0x0000, .value_g = 0x0004, .flags = B206X_FLAG_A, },
 512         
 513         
 514         
 515         
 516         
 517         
 518         
 519         
 520         
 521         
 522         
 523         
 524         
 525         
 526         
 527         
 528         
 529         { .offset = B2063_VREG_CTL1, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
 530         
 531         
 532         
 533         
 534         
 535         
 536         
 537         
 538         
 539         
 540         
 541 };
 542 
 543 void b2062_upload_init_table(struct b43_wldev *dev)
 544 {
 545         const struct b206x_init_tab_entry *e;
 546         unsigned int i;
 547 
 548         for (i = 0; i < ARRAY_SIZE(b2062_init_tab); i++) {
 549                 e = &b2062_init_tab[i];
 550                 if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ) {
 551                         if (!(e->flags & B206X_FLAG_G))
 552                                 continue;
 553                         b43_radio_write(dev, e->offset, e->value_g);
 554                 } else {
 555                         if (!(e->flags & B206X_FLAG_A))
 556                                 continue;
 557                         b43_radio_write(dev, e->offset, e->value_a);
 558                 }
 559         }
 560 }
 561 
 562 void b2063_upload_init_table(struct b43_wldev *dev)
 563 {
 564         const struct b206x_init_tab_entry *e;
 565         unsigned int i;
 566 
 567         for (i = 0; i < ARRAY_SIZE(b2063_init_tab); i++) {
 568                 e = &b2063_init_tab[i];
 569                 if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ) {
 570                         if (!(e->flags & B206X_FLAG_G))
 571                                 continue;
 572                         b43_radio_write(dev, e->offset, e->value_g);
 573                 } else {
 574                         if (!(e->flags & B206X_FLAG_A))
 575                                 continue;
 576                         b43_radio_write(dev, e->offset, e->value_a);
 577                 }
 578         }
 579 }
 580 
 581 u32 b43_lptab_read(struct b43_wldev *dev, u32 offset)
 582 {
 583         u32 type, value;
 584 
 585         type = offset & B43_LPTAB_TYPEMASK;
 586         offset &= ~B43_LPTAB_TYPEMASK;
 587         B43_WARN_ON(offset > 0xFFFF);
 588 
 589         switch (type) {
 590         case B43_LPTAB_8BIT:
 591                 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 592                 value = b43_phy_read(dev, B43_LPPHY_TABLEDATALO) & 0xFF;
 593                 break;
 594         case B43_LPTAB_16BIT:
 595                 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 596                 value = b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 597                 break;
 598         case B43_LPTAB_32BIT:
 599                 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 600                 value = b43_phy_read(dev, B43_LPPHY_TABLEDATAHI);
 601                 value <<= 16;
 602                 value |= b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 603                 break;
 604         default:
 605                 B43_WARN_ON(1);
 606                 value = 0;
 607         }
 608 
 609         return value;
 610 }
 611 
 612 void b43_lptab_read_bulk(struct b43_wldev *dev, u32 offset,
 613                          unsigned int nr_elements, void *_data)
 614 {
 615         u32 type;
 616         u8 *data = _data;
 617         unsigned int i;
 618 
 619         type = offset & B43_LPTAB_TYPEMASK;
 620         offset &= ~B43_LPTAB_TYPEMASK;
 621         B43_WARN_ON(offset > 0xFFFF);
 622 
 623         b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 624 
 625         for (i = 0; i < nr_elements; i++) {
 626                 switch (type) {
 627                 case B43_LPTAB_8BIT:
 628                         *data = b43_phy_read(dev, B43_LPPHY_TABLEDATALO) & 0xFF;
 629                         data++;
 630                         break;
 631                 case B43_LPTAB_16BIT:
 632                         *((u16 *)data) = b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 633                         data += 2;
 634                         break;
 635                 case B43_LPTAB_32BIT:
 636                         *((u32 *)data) = b43_phy_read(dev, B43_LPPHY_TABLEDATAHI);
 637                         *((u32 *)data) <<= 16;
 638                         *((u32 *)data) |= b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
 639                         data += 4;
 640                         break;
 641                 default:
 642                         B43_WARN_ON(1);
 643                 }
 644         }
 645 }
 646 
 647 void b43_lptab_write(struct b43_wldev *dev, u32 offset, u32 value)
 648 {
 649         u32 type;
 650 
 651         type = offset & B43_LPTAB_TYPEMASK;
 652         offset &= ~B43_LPTAB_TYPEMASK;
 653         B43_WARN_ON(offset > 0xFFFF);
 654 
 655         switch (type) {
 656         case B43_LPTAB_8BIT:
 657                 B43_WARN_ON(value & ~0xFF);
 658                 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 659                 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 660                 break;
 661         case B43_LPTAB_16BIT:
 662                 B43_WARN_ON(value & ~0xFFFF);
 663                 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 664                 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 665                 break;
 666         case B43_LPTAB_32BIT:
 667                 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 668                 b43_phy_write(dev, B43_LPPHY_TABLEDATAHI, value >> 16);
 669                 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 670                 break;
 671         default:
 672                 B43_WARN_ON(1);
 673         }
 674 }
 675 
 676 void b43_lptab_write_bulk(struct b43_wldev *dev, u32 offset,
 677                           unsigned int nr_elements, const void *_data)
 678 {
 679         u32 type, value;
 680         const u8 *data = _data;
 681         unsigned int i;
 682 
 683         type = offset & B43_LPTAB_TYPEMASK;
 684         offset &= ~B43_LPTAB_TYPEMASK;
 685         B43_WARN_ON(offset > 0xFFFF);
 686 
 687         b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
 688 
 689         for (i = 0; i < nr_elements; i++) {
 690                 switch (type) {
 691                 case B43_LPTAB_8BIT:
 692                         value = *data;
 693                         data++;
 694                         B43_WARN_ON(value & ~0xFF);
 695                         b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 696                         break;
 697                 case B43_LPTAB_16BIT:
 698                         value = *((u16 *)data);
 699                         data += 2;
 700                         B43_WARN_ON(value & ~0xFFFF);
 701                         b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 702                         break;
 703                 case B43_LPTAB_32BIT:
 704                         value = *((u32 *)data);
 705                         data += 4;
 706                         b43_phy_write(dev, B43_LPPHY_TABLEDATAHI, value >> 16);
 707                         b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
 708                         break;
 709                 default:
 710                         B43_WARN_ON(1);
 711                 }
 712         }
 713 }
 714 
 715 static const u8 lpphy_min_sig_sq_table[] = {
 716         0xde, 0xdc, 0xda, 0xd8, 0xd6, 0xd4, 0xd2, 0xcf, 0xcd,
 717         0xca, 0xc7, 0xc4, 0xc1, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
 718         0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0x00,
 719         0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
 720         0xbe, 0xbe, 0xbe, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd,
 721         0xcf, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde,
 722 };
 723 
 724 static const u16 lpphy_rev01_noise_scale_table[] = {
 725         0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4,
 726         0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa400, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4,
 727         0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0x00a4,
 728         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c00, 0x2d36,
 729         0x0000, 0x0000, 0x4c00, 0x2d36,
 730 };
 731 
 732 static const u16 lpphy_rev2plus_noise_scale_table[] = {
 733         0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 734         0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 735         0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x0000,
 736         0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 737         0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 738         0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
 739         0x00a4,
 740 };
 741 
 742 static const u16 lpphy_crs_gain_nft_table[] = {
 743         0x0366, 0x036a, 0x036f, 0x0364, 0x0367, 0x036d, 0x0374, 0x037f, 0x036f,
 744         0x037b, 0x038a, 0x0378, 0x0367, 0x036d, 0x0375, 0x0381, 0x0374, 0x0381,
 745         0x0392, 0x03a9, 0x03c4, 0x03e1, 0x0001, 0x001f, 0x0040, 0x005e, 0x007f,
 746         0x009e, 0x00bd, 0x00dd, 0x00fd, 0x011d, 0x013d,
 747 };
 748 
 749 static const u16 lpphy_rev01_filter_control_table[] = {
 750         0xa0fc, 0x10fc, 0x10db, 0x20b7, 0xff93, 0x10bf, 0x109b, 0x2077, 0xff53,
 751         0x0127,
 752 };
 753 
 754 static const u32 lpphy_rev2plus_filter_control_table[] = {
 755         0x000141fc, 0x000021fc, 0x000021b7, 0x0000416f, 0x0001ff27, 0x0000217f,
 756         0x00002137, 0x000040ef, 0x0001fea7, 0x0000024f,
 757 };
 758 
 759 static const u32 lpphy_rev01_ps_control_table[] = {
 760         0x00010000, 0x000000a0, 0x00040000, 0x00000048, 0x08080101, 0x00000080,
 761         0x08080101, 0x00000040, 0x08080101, 0x000000c0, 0x08a81501, 0x000000c0,
 762         0x0fe8fd01, 0x000000c0, 0x08300105, 0x000000c0, 0x08080201, 0x000000c0,
 763         0x08280205, 0x000000c0, 0xe80802fe, 0x000000c7, 0x28080206, 0x000000c0,
 764         0x08080202, 0x000000c0, 0x0ba87602, 0x000000c0, 0x1068013d, 0x000000c0,
 765         0x10280105, 0x000000c0, 0x08880102, 0x000000c0, 0x08280106, 0x000000c0,
 766         0xe80801fd, 0x000000c7, 0xa8080115, 0x000000c0,
 767 };
 768 
 769 static const u32 lpphy_rev2plus_ps_control_table[] = {
 770         0x00e38e08, 0x00e08e38, 0x00000000, 0x00000000, 0x00000000, 0x00002080,
 771         0x00006180, 0x00003002, 0x00000040, 0x00002042, 0x00180047, 0x00080043,
 772         0x00000041, 0x000020c1, 0x00046006, 0x00042002, 0x00040000, 0x00002003,
 773         0x00180006, 0x00080002,
 774 };
 775 
 776 static const u8 lpphy_pll_fraction_table[] = {
 777         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80,
 778         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
 779 };
 780 
 781 static const u16 lpphy_iqlo_cal_table[] = {
 782         0x0200, 0x0300, 0x0400, 0x0600, 0x0800, 0x0b00, 0x1000, 0x1001, 0x1002,
 783         0x1003, 0x1004, 0x1005, 0x1006, 0x1007, 0x1707, 0x2007, 0x2d07, 0x4007,
 784         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 785         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0300, 0x0400, 0x0600,
 786         0x0800, 0x0b00, 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006,
 787         0x1007, 0x1707, 0x2007, 0x2d07, 0x4007, 0x0000, 0x0000, 0x0000, 0x0000,
 788         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 789         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 790         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 791         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0000,
 792         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 793         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 794 };
 795 
 796 static const u16 lpphy_rev0_ofdm_cck_gain_table[] = {
 797         0x0001, 0x0001, 0x0001, 0x0001, 0x1001, 0x2001, 0x3001, 0x4001, 0x5001,
 798         0x6001, 0x7001, 0x7011, 0x7021, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
 799         0x006d, 0x007d, 0x014d, 0x015d, 0x115d, 0x035d, 0x135d, 0x055d, 0x155d,
 800         0x0d5d, 0x1d5d, 0x2d5d, 0x555d, 0x655d, 0x755d,
 801 };
 802 
 803 static const u16 lpphy_rev1_ofdm_cck_gain_table[] = {
 804         0x5000, 0x6000, 0x7000, 0x0001, 0x1001, 0x2001, 0x3001, 0x4001, 0x5001,
 805         0x6001, 0x7001, 0x7011, 0x7021, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
 806         0x006d, 0x007d, 0x014d, 0x015d, 0x115d, 0x035d, 0x135d, 0x055d, 0x155d,
 807         0x0d5d, 0x1d5d, 0x2d5d, 0x555d, 0x655d, 0x755d,
 808 };
 809 
 810 static const u16 lpphy_gain_delta_table[] = {
 811         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 812 };
 813 
 814 static const u32 lpphy_tx_power_control_table[] = {
 815         0x00000050, 0x0000004f, 0x0000004e, 0x0000004d, 0x0000004c, 0x0000004b,
 816         0x0000004a, 0x00000049, 0x00000048, 0x00000047, 0x00000046, 0x00000045,
 817         0x00000044, 0x00000043, 0x00000042, 0x00000041, 0x00000040, 0x0000003f,
 818         0x0000003e, 0x0000003d, 0x0000003c, 0x0000003b, 0x0000003a, 0x00000039,
 819         0x00000038, 0x00000037, 0x00000036, 0x00000035, 0x00000034, 0x00000033,
 820         0x00000032, 0x00000031, 0x00000030, 0x0000002f, 0x0000002e, 0x0000002d,
 821         0x0000002c, 0x0000002b, 0x0000002a, 0x00000029, 0x00000028, 0x00000027,
 822         0x00000026, 0x00000025, 0x00000024, 0x00000023, 0x00000022, 0x00000021,
 823         0x00000020, 0x0000001f, 0x0000001e, 0x0000001d, 0x0000001c, 0x0000001b,
 824         0x0000001a, 0x00000019, 0x00000018, 0x00000017, 0x00000016, 0x00000015,
 825         0x00000014, 0x00000013, 0x00000012, 0x00000011, 0x00000000, 0x00000000,
 826         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 827         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 828         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 829         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 830         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 831         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 832         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 833         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 834         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 835         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 836         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 837         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 838         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 839         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 840         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 841         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 842         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 843         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 844         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 845         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 846         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 847         0x000075a0, 0x000075a0, 0x000075a1, 0x000075a1, 0x000075a2, 0x000075a2,
 848         0x000075a3, 0x000075a3, 0x000074b0, 0x000074b0, 0x000074b1, 0x000074b1,
 849         0x000074b2, 0x000074b2, 0x000074b3, 0x000074b3, 0x00006d20, 0x00006d20,
 850         0x00006d21, 0x00006d21, 0x00006d22, 0x00006d22, 0x00006d23, 0x00006d23,
 851         0x00004660, 0x00004660, 0x00004661, 0x00004661, 0x00004662, 0x00004662,
 852         0x00004663, 0x00004663, 0x00003e60, 0x00003e60, 0x00003e61, 0x00003e61,
 853         0x00003e62, 0x00003e62, 0x00003e63, 0x00003e63, 0x00003660, 0x00003660,
 854         0x00003661, 0x00003661, 0x00003662, 0x00003662, 0x00003663, 0x00003663,
 855         0x00002e60, 0x00002e60, 0x00002e61, 0x00002e61, 0x00002e62, 0x00002e62,
 856         0x00002e63, 0x00002e63, 0x00002660, 0x00002660, 0x00002661, 0x00002661,
 857         0x00002662, 0x00002662, 0x00002663, 0x00002663, 0x000025e0, 0x000025e0,
 858         0x000025e1, 0x000025e1, 0x000025e2, 0x000025e2, 0x000025e3, 0x000025e3,
 859         0x00001de0, 0x00001de0, 0x00001de1, 0x00001de1, 0x00001de2, 0x00001de2,
 860         0x00001de3, 0x00001de3, 0x00001d60, 0x00001d60, 0x00001d61, 0x00001d61,
 861         0x00001d62, 0x00001d62, 0x00001d63, 0x00001d63, 0x00001560, 0x00001560,
 862         0x00001561, 0x00001561, 0x00001562, 0x00001562, 0x00001563, 0x00001563,
 863         0x00000d60, 0x00000d60, 0x00000d61, 0x00000d61, 0x00000d62, 0x00000d62,
 864         0x00000d63, 0x00000d63, 0x00000ce0, 0x00000ce0, 0x00000ce1, 0x00000ce1,
 865         0x00000ce2, 0x00000ce2, 0x00000ce3, 0x00000ce3, 0x00000e10, 0x00000e10,
 866         0x00000e11, 0x00000e11, 0x00000e12, 0x00000e12, 0x00000e13, 0x00000e13,
 867         0x00000bf0, 0x00000bf0, 0x00000bf1, 0x00000bf1, 0x00000bf2, 0x00000bf2,
 868         0x00000bf3, 0x00000bf3, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 869         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 870         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 871         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 872         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 873         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 874         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 875         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 876         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 877         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 878         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 879         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 880         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 881         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 882         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 883         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 884         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 885         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 886         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 887         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 888         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
 889         0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x000000ff, 0x000002fc,
 890         0x0000fa08, 0x00000305, 0x00000206, 0x00000304, 0x0000fb04, 0x0000fcff,
 891         0x000005fb, 0x0000fd01, 0x00000401, 0x00000006, 0x0000ff03, 0x000007fc,
 892         0x0000fc08, 0x00000203, 0x0000fffb, 0x00000600, 0x0000fa01, 0x0000fc03,
 893         0x0000fe06, 0x0000fe00, 0x00000102, 0x000007fd, 0x000004fb, 0x000006ff,
 894         0x000004fd, 0x0000fdfa, 0x000007fb, 0x0000fdfa, 0x0000fa06, 0x00000500,
 895         0x0000f902, 0x000007fa, 0x0000fafa, 0x00000500, 0x000007fa, 0x00000700,
 896         0x00000305, 0x000004ff, 0x00000801, 0x00000503, 0x000005f9, 0x00000404,
 897         0x0000fb08, 0x000005fd, 0x00000501, 0x00000405, 0x0000fb03, 0x000007fc,
 898         0x00000403, 0x00000303, 0x00000402, 0x0000faff, 0x0000fe05, 0x000005fd,
 899         0x0000fe01, 0x000007fa, 0x00000202, 0x00000504, 0x00000102, 0x000008fe,
 900         0x0000fa04, 0x0000fafc, 0x0000fe08, 0x000000f9, 0x000002fa, 0x000003fe,
 901         0x00000304, 0x000004f9, 0x00000100, 0x0000fd06, 0x000008fc, 0x00000701,
 902         0x00000504, 0x0000fdfe, 0x0000fdfc, 0x000003fe, 0x00000704, 0x000002fc,
 903         0x000004f9, 0x0000fdfd, 0x0000fa07, 0x00000205, 0x000003fd, 0x000005fb,
 904         0x000004f9, 0x00000804, 0x0000fc06, 0x0000fcf9, 0x00000100, 0x0000fe05,
 905         0x00000408, 0x0000fb02, 0x00000304, 0x000006fe, 0x000004fa, 0x00000305,
 906         0x000008fc, 0x00000102, 0x000001fd, 0x000004fc, 0x0000fe03, 0x00000701,
 907         0x000001fb, 0x000001f9, 0x00000206, 0x000006fd, 0x00000508, 0x00000700,
 908         0x00000304, 0x000005fe, 0x000005ff, 0x0000fa04, 0x00000303, 0x0000fefb,
 909         0x000007f9, 0x0000fefc, 0x000004fd, 0x000005fc, 0x0000fffd, 0x0000fc08,
 910         0x0000fbf9, 0x0000fd07, 0x000008fb, 0x0000fe02, 0x000006fb, 0x00000702,
 911 };
 912 
 913 static const u32 lpphy_gain_idx_table[] = {
 914         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 915         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 916         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 917         0x10000001, 0x00000000, 0x20000082, 0x00000000, 0x40000104, 0x00000000,
 918         0x60004207, 0x00000001, 0x7000838a, 0x00000001, 0xd021050d, 0x00000001,
 919         0xe041c683, 0x00000001, 0x50828805, 0x00000000, 0x80e34288, 0x00000000,
 920         0xb144040b, 0x00000000, 0xe1a6058e, 0x00000000, 0x12064711, 0x00000001,
 921         0xb0a18612, 0x00000010, 0xe1024794, 0x00000010, 0x11630915, 0x00000011,
 922         0x31c3ca1b, 0x00000011, 0xc1848a9c, 0x00000018, 0xf1e50da0, 0x00000018,
 923         0x22468e21, 0x00000019, 0x4286d023, 0x00000019, 0xa347d0a4, 0x00000019,
 924         0xb36811a6, 0x00000019, 0xf3e89227, 0x00000019, 0x0408d329, 0x0000001a,
 925         0x244953aa, 0x0000001a, 0x346994ab, 0x0000001a, 0x54aa152c, 0x0000001a,
 926         0x64ca55ad, 0x0000001a, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 927         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 928         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 929         0x00000000, 0x00000000, 0x10000001, 0x00000000, 0x20000082, 0x00000000,
 930         0x40000104, 0x00000000, 0x60004207, 0x00000001, 0x7000838a, 0x00000001,
 931         0xd021050d, 0x00000001, 0xe041c683, 0x00000001, 0x50828805, 0x00000000,
 932         0x80e34288, 0x00000000, 0xb144040b, 0x00000000, 0xe1a6058e, 0x00000000,
 933         0x12064711, 0x00000001, 0xb0a18612, 0x00000010, 0xe1024794, 0x00000010,
 934         0x11630915, 0x00000011, 0x31c3ca1b, 0x00000011, 0xc1848a9c, 0x00000018,
 935         0xf1e50da0, 0x00000018, 0x22468e21, 0x00000019, 0x4286d023, 0x00000019,
 936         0xa347d0a4, 0x00000019, 0xb36811a6, 0x00000019, 0xf3e89227, 0x00000019,
 937         0x0408d329, 0x0000001a, 0x244953aa, 0x0000001a, 0x346994ab, 0x0000001a,
 938         0x54aa152c, 0x0000001a, 0x64ca55ad, 0x0000001a,
 939 };
 940 
 941 static const u16 lpphy_aux_gain_idx_table[] = {
 942         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 943         0x0001, 0x0002, 0x0004, 0x0016, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 944         0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0016,
 945 };
 946 
 947 static const u32 lpphy_gain_value_table[] = {
 948         0x00000008, 0x0000000e, 0x00000014, 0x0000001a, 0x000000fb, 0x00000004,
 949         0x00000008, 0x0000000d, 0x00000001, 0x00000004, 0x00000007, 0x0000000a,
 950         0x0000000d, 0x00000010, 0x00000012, 0x00000015, 0x00000000, 0x00000006,
 951         0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000,
 952         0x00000000, 0x00000000, 0x00000018, 0x00000000, 0x00000000, 0x00000000,
 953         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 954         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 955         0x0000001e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 956         0x00000000, 0x00000003, 0x00000006, 0x00000009, 0x0000000c, 0x0000000f,
 957         0x00000012, 0x00000015, 0x00000018, 0x0000001b, 0x0000001e, 0x00000000,
 958         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000009, 0x000000f1,
 959         0x00000000, 0x00000000,
 960 };
 961 
 962 static const u16 lpphy_gain_table[] = {
 963         0x0000, 0x0400, 0x0800, 0x0802, 0x0804, 0x0806, 0x0807, 0x0808, 0x080a,
 964         0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0812, 0x0813, 0x0814, 0x0816,
 965         0x0817, 0x081a, 0x081b, 0x081f, 0x0820, 0x0824, 0x0830, 0x0834, 0x0837,
 966         0x083b, 0x083f, 0x0840, 0x0844, 0x0857, 0x085b, 0x085f, 0x08d7, 0x08db,
 967         0x08df, 0x0957, 0x095b, 0x095f, 0x0b57, 0x0b5b, 0x0b5f, 0x0f5f, 0x135f,
 968         0x175f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 969         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 970         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 971         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 972         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 973         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 974 };
 975 
 976 static const u32 lpphy_a0_gain_idx_table[] = {
 977         0x001111e0, 0x00652051, 0x00606055, 0x005b005a, 0x00555060, 0x00511065,
 978         0x004c806b, 0x0047d072, 0x00444078, 0x00400080, 0x003ca087, 0x0039408f,
 979         0x0035e098, 0x0032e0a1, 0x003030aa, 0x002d80b4, 0x002ae0bf, 0x002880ca,
 980         0x002640d6, 0x002410e3, 0x002220f0, 0x002020ff, 0x001e510e, 0x001ca11e,
 981         0x001b012f, 0x00199140, 0x00182153, 0x0016c168, 0x0015817d, 0x00145193,
 982         0x001321ab, 0x001211c5, 0x001111e0, 0x001021fc, 0x000f321a, 0x000e523a,
 983         0x000d925c, 0x000cd27f, 0x000c12a5, 0x000b62cd, 0x000ac2f8, 0x000a2325,
 984         0x00099355, 0x00091387, 0x000883bd, 0x000813f5, 0x0007a432, 0x00073471,
 985         0x0006c4b5, 0x000664fc, 0x00061547, 0x0005b598, 0x000565ec, 0x00051646,
 986         0x0004d6a5, 0x0004870a, 0x00044775, 0x000407e6, 0x0003d85e, 0x000398dd,
 987         0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
 988 };
 989 
 990 static const u16 lpphy_a0_aux_gain_idx_table[] = {
 991         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 992         0x0000, 0x0000, 0x0002, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 993         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0014,
 994 };
 995 
 996 static const u32 lpphy_a0_gain_value_table[] = {
 997         0x00000008, 0x0000000e, 0x00000014, 0x0000001a, 0x000000fb, 0x00000004,
 998         0x00000008, 0x0000000d, 0x00000001, 0x00000004, 0x00000007, 0x0000000a,
 999         0x0000000d, 0x00000010, 0x00000012, 0x00000015, 0x00000000, 0x00000006,
1000         0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000,
1001         0x00000000, 0x00000000, 0x00000018, 0x00000000, 0x00000000, 0x00000000,
1002         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1003         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1004         0x0000001e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1005         0x00000000, 0x00000003, 0x00000006, 0x00000009, 0x0000000c, 0x0000000f,
1006         0x00000012, 0x00000015, 0x00000018, 0x0000001b, 0x0000001e, 0x00000000,
1007         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x000000f7,
1008         0x00000000, 0x00000000,
1009 };
1010 
1011 static const u16 lpphy_a0_gain_table[] = {
1012         0x0000, 0x0002, 0x0004, 0x0006, 0x0007, 0x0008, 0x000a, 0x000b, 0x000c,
1013         0x000e, 0x000f, 0x0010, 0x0012, 0x0013, 0x0014, 0x0016, 0x0017, 0x001a,
1014         0x001b, 0x001f, 0x0020, 0x0024, 0x0030, 0x0034, 0x0037, 0x003b, 0x003f,
1015         0x0040, 0x0044, 0x0057, 0x005b, 0x005f, 0x00d7, 0x00db, 0x00df, 0x0157,
1016         0x015b, 0x015f, 0x0357, 0x035b, 0x035f, 0x075f, 0x0b5f, 0x0f5f, 0x0000,
1017         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1018         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1019         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1020         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1021         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1022         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1023 };
1024 
1025 static const u16 lpphy_sw_control_table[] = {
1026         0x0128, 0x0128, 0x0009, 0x0009, 0x0028, 0x0028, 0x0028, 0x0028, 0x0128,
1027         0x0128, 0x0009, 0x0009, 0x0028, 0x0028, 0x0028, 0x0028, 0x0009, 0x0009,
1028         0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0018, 0x0018, 0x0018,
1029         0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0128, 0x0128, 0x0009, 0x0009,
1030         0x0028, 0x0028, 0x0028, 0x0028, 0x0128, 0x0128, 0x0009, 0x0009, 0x0028,
1031         0x0028, 0x0028, 0x0028, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
1032         0x0009, 0x0009, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
1033         0x0018,
1034 };
1035 
1036 static const u8 lpphy_hf_table[] = {
1037         0x4b, 0x36, 0x24, 0x18, 0x49, 0x34, 0x23, 0x17, 0x48,
1038         0x33, 0x23, 0x17, 0x48, 0x33, 0x23, 0x17,
1039 };
1040 
1041 static const u32 lpphy_papd_eps_table[] = {
1042         0x00000000, 0x00013ffc, 0x0001dff3, 0x0001bff0, 0x00023fe9, 0x00021fdf,
1043         0x00028fdf, 0x00033fd2, 0x00039fcb, 0x00043fc7, 0x0004efc2, 0x00055fb5,
1044         0x0005cfb0, 0x00063fa8, 0x00068fa3, 0x00071f98, 0x0007ef92, 0x00084f8b,
1045         0x0008df82, 0x00097f77, 0x0009df69, 0x000a3f62, 0x000adf57, 0x000b6f4c,
1046         0x000bff41, 0x000c9f39, 0x000cff30, 0x000dbf27, 0x000e4f1e, 0x000edf16,
1047         0x000f7f13, 0x00102f11, 0x00110f10, 0x0011df11, 0x0012ef15, 0x00143f1c,
1048         0x00158f27, 0x00172f35, 0x00193f47, 0x001baf5f, 0x001e6f7e, 0x0021cfa4,
1049         0x0025bfd2, 0x002a2008, 0x002fb047, 0x00360090, 0x003d40e0, 0x0045c135,
1050         0x004fb189, 0x005ae1d7, 0x0067221d, 0x0075025a, 0x007ff291, 0x007ff2bf,
1051         0x007ff2e3, 0x007ff2ff, 0x007ff315, 0x007ff329, 0x007ff33f, 0x007ff356,
1052         0x007ff36e, 0x007ff39c, 0x007ff441, 0x007ff506,
1053 };
1054 
1055 static const u32 lpphy_papd_mult_table[] = {
1056         0x001111e0, 0x00652051, 0x00606055, 0x005b005a, 0x00555060, 0x00511065,
1057         0x004c806b, 0x0047d072, 0x00444078, 0x00400080, 0x003ca087, 0x0039408f,
1058         0x0035e098, 0x0032e0a1, 0x003030aa, 0x002d80b4, 0x002ae0bf, 0x002880ca,
1059         0x002640d6, 0x002410e3, 0x002220f0, 0x002020ff, 0x001e510e, 0x001ca11e,
1060         0x001b012f, 0x00199140, 0x00182153, 0x0016c168, 0x0015817d, 0x00145193,
1061         0x001321ab, 0x001211c5, 0x001111e0, 0x001021fc, 0x000f321a, 0x000e523a,
1062         0x000d925c, 0x000cd27f, 0x000c12a5, 0x000b62cd, 0x000ac2f8, 0x000a2325,
1063         0x00099355, 0x00091387, 0x000883bd, 0x000813f5, 0x0007a432, 0x00073471,
1064         0x0006c4b5, 0x000664fc, 0x00061547, 0x0005b598, 0x000565ec, 0x00051646,
1065         0x0004d6a5, 0x0004870a, 0x00044775, 0x000407e6, 0x0003d85e, 0x000398dd,
1066         0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
1067 };
1068 
1069 static struct lpphy_tx_gain_table_entry lpphy_rev0_nopa_tx_gain_table[] = {
1070         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1071         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1072         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1073         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1074         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1075         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1076         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1077         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1078         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1079         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1080         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1081         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1082         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1083         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1084         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1085         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1086         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1087         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1088         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1089         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1090         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1091         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1092         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1093         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1094         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1095         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1096         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1097         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1098         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1099         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1100         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1101         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1102         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1103         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1104         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1105         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1106         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1107         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1108         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1109         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1110         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1111         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1112         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1113         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1114         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1115         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1116         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1117         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1118         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1119         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1120         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1121         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1122         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1123         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1124         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1125         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1126         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1127         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1128         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1129         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1130         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1131         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1132         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1133         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1134         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1135         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1136         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1137         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1138         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1139         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1140         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1141         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1142         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1143         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1144         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1145         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1146         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1147         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1148         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1149         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1150         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1151         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1152         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1153         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1154         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1155         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1156         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1157         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1158         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1159         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1160         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1161         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1162         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1163         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1164         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1165         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1166         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1167         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1168         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1169         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1170         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1171         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1172         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1173         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1174         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1175         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1176         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1177         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1178         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1179         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1180         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1181         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1182         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1183         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1184         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1185         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1186         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1187         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1188         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1189         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1190         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1191         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1192         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1193         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1194         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1195         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1196         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1197         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1198 };
1199 
1200 static struct lpphy_tx_gain_table_entry lpphy_rev0_2ghz_tx_gain_table[] = {
1201         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1202         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1203         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1204         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1205         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1206         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1207         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1208         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1209         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1210         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1211         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1212         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1213         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1214         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1215         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1216         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1217         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1218         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1219         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1220         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1221         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1222         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1223         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1224         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1225         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1226         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1227         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1228         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1229         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1230         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1231         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1232         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1233         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1234         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1235         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1236         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1237         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1238         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1239         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1240         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1241         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1242         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1243         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1244         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1245         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1246         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1247         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1248         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1249         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1250         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1251         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1252         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1253         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1254         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1255         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1256         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1257         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1258         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1259         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1260         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1261         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1262         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1263         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1264         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1265         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1266         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1267         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1268         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1269         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 59, },
1270         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 72, },
1271         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 70, },
1272         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 68, },
1273         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 66, },
1274         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 64, },
1275         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 62, },
1276         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 60, },
1277         { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 59, },
1278         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 70, },
1279         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 68, },
1280         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 66, },
1281         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 64, },
1282         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 63, },
1283         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 61, },
1284         { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 59, },
1285         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 71, },
1286         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 69, },
1287         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 67, },
1288         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 65, },
1289         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 63, },
1290         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 62, },
1291         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 60, },
1292         { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 58, },
1293         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 70, },
1294         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 68, },
1295         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 66, },
1296         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 65, },
1297         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 63, },
1298         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 61, },
1299         { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 59, },
1300         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 68, },
1301         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 66, },
1302         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 64, },
1303         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 62, },
1304         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 61, },
1305         { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 59, },
1306         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 67, },
1307         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 65, },
1308         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 63, },
1309         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 62, },
1310         { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 60, },
1311         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 65, },
1312         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 63, },
1313         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 61, },
1314         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 60, },
1315         { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 58, },
1316         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 68, },
1317         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 66, },
1318         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 64, },
1319         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 62, },
1320         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 60, },
1321         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 59, },
1322         { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 57, },
1323         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 83, },
1324         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 81, },
1325         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 78, },
1326         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 76, },
1327         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 74, },
1328         { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 72, },
1329 };
1330 
1331 static struct lpphy_tx_gain_table_entry lpphy_rev0_5ghz_tx_gain_table[] = {
1332         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1333         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1334         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1335         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1336         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1337         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1338         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1339         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1340         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1341         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1342         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1343         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1344         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1345         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1346         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1347         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1348         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1349         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1350         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1351         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1352         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1353         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1354         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1355         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1356         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1357         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1358         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1359         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1360         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1361         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1362         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1363         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1364         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1365         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1366         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1367         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1368         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1369         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1370         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1371         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1372         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1373         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1374         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1375         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1376         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1377         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1378         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1379         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1380         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1381         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1382         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1383         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1384         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1385         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1386         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1387         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1388         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1389         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1390         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1391         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1392         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1393         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1394         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1395         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1396         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1397         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1398         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1399         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1400         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1401         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1402         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1403         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1404         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1405         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1406         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1407         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1408         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1409         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1410         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1411         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1412         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1413         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1414         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1415         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1416         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1417         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1418         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1419         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1420         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1421         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1422         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1423         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1424         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1425         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1426         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1427         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1428         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1429         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1430         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1431         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1432         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1433         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1434         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1435         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1436         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1437         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1438         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1439         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1440         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1441         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1442         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1443         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1444         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1445         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1446         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1447         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1448         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1449         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1450         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1451         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1452         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1453         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1454         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1455         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1456         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1457         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1458         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1459         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1460 };
1461 
1462 static struct lpphy_tx_gain_table_entry lpphy_rev1_nopa_tx_gain_table[] = {
1463         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1464         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1465         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1466         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1467         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1468         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1469         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1470         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1471         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1472         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1473         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1474         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1475         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1476         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1477         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1478         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1479         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1480         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1481         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1482         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1483         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1484         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1485         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1486         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1487         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1488         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1489         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1490         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1491         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1492         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1493         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1494         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1495         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1496         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1497         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1498         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1499         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1500         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1501         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1502         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1503         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1504         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1505         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1506         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1507         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1508         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1509         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1510         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1511         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1512         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1513         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1514         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1515         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1516         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1517         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1518         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1519         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1520         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1521         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1522         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1523         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1524         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1525         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1526         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1527         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1528         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1529         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1530         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1531         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1532         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1533         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1534         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1535         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1536         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1537         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1538         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1539         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1540         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1541         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1542         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1543         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1544         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1545         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1546         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1547         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1548         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1549         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1550         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1551         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1552         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1553         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1554         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1555         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1556         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1557         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1558         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1559         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1560         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1561         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1562         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1563         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1564         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1565         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1566         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1567         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1568         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1569         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1570         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1571         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1572         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1573         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1574         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1575         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1576         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1577         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1578         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1579         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1580         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1581         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1582         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1583         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1584         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1585         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1586         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1587         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1588         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1589         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1590         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1591         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1592         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1593         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1594         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1595         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1596         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1597         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1598         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1599         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1600 };
1601 
1602 static struct lpphy_tx_gain_table_entry lpphy_rev1_2ghz_tx_gain_table[] = {
1603         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1604         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1605         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1606         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1607         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1608         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1609         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1610         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1611         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1612         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1613         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1614         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1615         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1616         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1617         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1618         { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1619         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1620         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1621         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1622         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1623         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1624         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1625         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1626         { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1627         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1628         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1629         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1630         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1631         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1632         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1633         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1634         { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1635         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1636         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1637         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1638         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1639         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1640         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1641         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1642         { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1643         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 72, },
1644         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1645         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1646         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1647         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 64, },
1648         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 62, },
1649         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1650         { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1651         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 72, },
1652         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 70, },
1653         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 68, },
1654         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 66, },
1655         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 64, },
1656         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 62, },
1657         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1658         { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 59, },
1659         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 72, },
1660         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1661         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1662         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1663         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1664         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1665         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1666         { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1667         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1668         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1669         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1670         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1671         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1672         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1673         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1674         { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1675         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1676         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1677         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1678         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1679         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1680         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1681         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1682         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1683         { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1684         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1685         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1686         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1687         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1688         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1689         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1690         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1691         { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1692         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1693         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1694         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1695         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1696         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1697         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1698         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1699         { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1700         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1701         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1702         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1703         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1704         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1705         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1706         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1707         { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1708         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1709         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1710         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1711         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1712         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1713         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1714         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1715         { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1716         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1717         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1718         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1719         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1720         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1721         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1722         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1723         { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1724         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1725         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1726         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1727         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1728         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1729         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1730         { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1731 };
1732 
1733 static struct lpphy_tx_gain_table_entry lpphy_rev1_5ghz_tx_gain_table[] = {
1734         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1735         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1736         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1737         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1738         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1739         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1740         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1741         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1742         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1743         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1744         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1745         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1746         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1747         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1748         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1749         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1750         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1751         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1752         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1753         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1754         { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1755         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1756         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1757         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1758         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1759         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1760         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1761         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1762         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1763         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1764         { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1765         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1766         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1767         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1768         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1769         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1770         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1771         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1772         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1773         { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1774         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1775         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1776         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1777         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1778         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1779         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1780         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1781         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1782         { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1783         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1784         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1785         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1786         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1787         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1788         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1789         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1790         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1791         { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1792         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1793         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1794         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1795         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1796         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1797         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1798         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1799         { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1800         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1801         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1802         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1803         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1804         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1805         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1806         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1807         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1808         { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1809         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1810         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1811         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1812         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1813         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1814         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1815         { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1816         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1817         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1818         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1819         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1820         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1821         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1822         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1823         { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1824         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1825         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1826         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1827         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1828         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1829         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1830         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1831         { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1832         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1833         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1834         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1835         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1836         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1837         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1838         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1839         { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1840         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1841         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1842         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1843         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1844         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1845         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1846         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1847         { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1848         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1849         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1850         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1851         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1852         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1853         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1854         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1855         { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1856         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1857         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1858         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1859         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1860         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1861         { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1862 };
1863 
1864 static struct lpphy_tx_gain_table_entry lpphy_rev2_nopa_tx_gain_table[] = {
1865         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 152, },
1866         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 147, },
1867         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 143, },
1868         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 139, },
1869         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 135, },
1870         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 131, },
1871         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 128, },
1872         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 124, },
1873         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 121, },
1874         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 117, },
1875         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 114, },
1876         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 111, },
1877         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 107, },
1878         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 104, },
1879         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 101, },
1880         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 99, },
1881         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 96, },
1882         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 93, },
1883         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 90, },
1884         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 88, },
1885         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 85, },
1886         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 83, },
1887         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 81, },
1888         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 78, },
1889         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 76, },
1890         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 74, },
1891         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 72, },
1892         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 70, },
1893         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 68, },
1894         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 66, },
1895         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
1896         { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
1897         { .gm = 255, .pga = 255, .pad = 192, .dac = 0, .bb_mult = 64, },
1898         { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
1899         { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
1900         { .gm = 255, .pga = 255, .pad = 176, .dac = 0, .bb_mult = 64, },
1901         { .gm = 255, .pga = 255, .pad = 171, .dac = 0, .bb_mult = 64, },
1902         { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
1903         { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
1904         { .gm = 255, .pga = 255, .pad = 157, .dac = 0, .bb_mult = 64, },
1905         { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
1906         { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
1907         { .gm = 255, .pga = 255, .pad = 144, .dac = 0, .bb_mult = 64, },
1908         { .gm = 255, .pga = 255, .pad = 140, .dac = 0, .bb_mult = 64, },
1909         { .gm = 255, .pga = 255, .pad = 136, .dac = 0, .bb_mult = 64, },
1910         { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
1911         { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
1912         { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
1913         { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
1914         { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
1915         { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
1916         { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
1917         { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
1918         { .gm = 255, .pga = 255, .pad = 105, .dac = 0, .bb_mult = 64, },
1919         { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
1920         { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
1921         { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
1922         { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
1923         { .gm = 255, .pga = 255, .pad = 91, .dac = 0, .bb_mult = 64, },
1924         { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
1925         { .gm = 255, .pga = 255, .pad = 86, .dac = 0, .bb_mult = 64, },
1926         { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
1927         { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
1928         { .gm = 255, .pga = 255, .pad = 79, .dac = 0, .bb_mult = 64, },
1929         { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
1930         { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
1931         { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
1932         { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
1933         { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
1934         { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
1935         { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
1936         { .gm = 255, .pga = 248, .pad = 64, .dac = 0, .bb_mult = 64, },
1937         { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
1938         { .gm = 255, .pga = 241, .pad = 62, .dac = 0, .bb_mult = 64, },
1939         { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
1940         { .gm = 255, .pga = 234, .pad = 60, .dac = 0, .bb_mult = 64, },
1941         { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
1942         { .gm = 255, .pga = 227, .pad = 59, .dac = 0, .bb_mult = 64, },
1943         { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
1944         { .gm = 255, .pga = 221, .pad = 57, .dac = 0, .bb_mult = 64, },
1945         { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
1946         { .gm = 255, .pga = 215, .pad = 55, .dac = 0, .bb_mult = 64, },
1947         { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
1948         { .gm = 255, .pga = 208, .pad = 54, .dac = 0, .bb_mult = 64, },
1949         { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
1950         { .gm = 255, .pga = 203, .pad = 52, .dac = 0, .bb_mult = 64, },
1951         { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
1952         { .gm = 255, .pga = 197, .pad = 51, .dac = 0, .bb_mult = 64, },
1953         { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
1954         { .gm = 255, .pga = 191, .pad = 49, .dac = 0, .bb_mult = 64, },
1955         { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
1956         { .gm = 255, .pga = 186, .pad = 48, .dac = 0, .bb_mult = 64, },
1957         { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
1958         { .gm = 255, .pga = 181, .pad = 47, .dac = 0, .bb_mult = 64, },
1959         { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
1960         { .gm = 255, .pga = 175, .pad = 45, .dac = 0, .bb_mult = 64, },
1961         { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
1962         { .gm = 255, .pga = 170, .pad = 44, .dac = 0, .bb_mult = 64, },
1963         { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
1964         { .gm = 255, .pga = 166, .pad = 43, .dac = 0, .bb_mult = 64, },
1965         { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
1966         { .gm = 255, .pga = 161, .pad = 42, .dac = 0, .bb_mult = 64, },
1967         { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
1968         { .gm = 255, .pga = 156, .pad = 40, .dac = 0, .bb_mult = 64, },
1969         { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
1970         { .gm = 255, .pga = 152, .pad = 39, .dac = 0, .bb_mult = 64, },
1971         { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
1972         { .gm = 255, .pga = 148, .pad = 38, .dac = 0, .bb_mult = 64, },
1973         { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
1974         { .gm = 255, .pga = 143, .pad = 37, .dac = 0, .bb_mult = 64, },
1975         { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
1976         { .gm = 255, .pga = 139, .pad = 36, .dac = 0, .bb_mult = 64, },
1977         { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
1978         { .gm = 255, .pga = 135, .pad = 35, .dac = 0, .bb_mult = 64, },
1979         { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
1980         { .gm = 255, .pga = 132, .pad = 34, .dac = 0, .bb_mult = 64, },
1981         { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
1982         { .gm = 255, .pga = 128, .pad = 33, .dac = 0, .bb_mult = 64, },
1983         { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
1984         { .gm = 255, .pga = 124, .pad = 32, .dac = 0, .bb_mult = 64, },
1985         { .gm = 255, .pga = 124, .pad = 31, .dac = 0, .bb_mult = 64, },
1986         { .gm = 255, .pga = 121, .pad = 31, .dac = 0, .bb_mult = 64, },
1987         { .gm = 255, .pga = 121, .pad = 30, .dac = 0, .bb_mult = 64, },
1988         { .gm = 255, .pga = 117, .pad = 30, .dac = 0, .bb_mult = 64, },
1989         { .gm = 255, .pga = 117, .pad = 29, .dac = 0, .bb_mult = 64, },
1990         { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
1991         { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
1992         { .gm = 255, .pga = 111, .pad = 29, .dac = 0, .bb_mult = 64, },
1993 };
1994 
1995 static struct lpphy_tx_gain_table_entry lpphy_rev2_2ghz_tx_gain_table[] = {
1996         { .gm = 7, .pga = 99, .pad = 255, .dac = 0, .bb_mult = 64, },
1997         { .gm = 7, .pga = 96, .pad = 255, .dac = 0, .bb_mult = 64, },
1998         { .gm = 7, .pga = 93, .pad = 255, .dac = 0, .bb_mult = 64, },
1999         { .gm = 7, .pga = 90, .pad = 255, .dac = 0, .bb_mult = 64, },
2000         { .gm = 7, .pga = 88, .pad = 255, .dac = 0, .bb_mult = 64, },
2001         { .gm = 7, .pga = 85, .pad = 255, .dac = 0, .bb_mult = 64, },
2002         { .gm = 7, .pga = 83, .pad = 255, .dac = 0, .bb_mult = 64, },
2003         { .gm = 7, .pga = 81, .pad = 255, .dac = 0, .bb_mult = 64, },
2004         { .gm = 7, .pga = 78, .pad = 255, .dac = 0, .bb_mult = 64, },
2005         { .gm = 7, .pga = 76, .pad = 255, .dac = 0, .bb_mult = 64, },
2006         { .gm = 7, .pga = 74, .pad = 255, .dac = 0, .bb_mult = 64, },
2007         { .gm = 7, .pga = 72, .pad = 255, .dac = 0, .bb_mult = 64, },
2008         { .gm = 7, .pga = 70, .pad = 255, .dac = 0, .bb_mult = 64, },
2009         { .gm = 7, .pga = 68, .pad = 255, .dac = 0, .bb_mult = 64, },
2010         { .gm = 7, .pga = 66, .pad = 255, .dac = 0, .bb_mult = 64, },
2011         { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2012         { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2013         { .gm = 7, .pga = 62, .pad = 255, .dac = 0, .bb_mult = 64, },
2014         { .gm = 7, .pga = 62, .pad = 248, .dac = 0, .bb_mult = 64, },
2015         { .gm = 7, .pga = 60, .pad = 248, .dac = 0, .bb_mult = 64, },
2016         { .gm = 7, .pga = 60, .pad = 241, .dac = 0, .bb_mult = 64, },
2017         { .gm = 7, .pga = 59, .pad = 241, .dac = 0, .bb_mult = 64, },
2018         { .gm = 7, .pga = 59, .pad = 234, .dac = 0, .bb_mult = 64, },
2019         { .gm = 7, .pga = 57, .pad = 234, .dac = 0, .bb_mult = 64, },
2020         { .gm = 7, .pga = 57, .pad = 227, .dac = 0, .bb_mult = 64, },
2021         { .gm = 7, .pga = 55, .pad = 227, .dac = 0, .bb_mult = 64, },
2022         { .gm = 7, .pga = 55, .pad = 221, .dac = 0, .bb_mult = 64, },
2023         { .gm = 7, .pga = 54, .pad = 221, .dac = 0, .bb_mult = 64, },
2024         { .gm = 7, .pga = 54, .pad = 215, .dac = 0, .bb_mult = 64, },
2025         { .gm = 7, .pga = 52, .pad = 215, .dac = 0, .bb_mult = 64, },
2026         { .gm = 7, .pga = 52, .pad = 208, .dac = 0, .bb_mult = 64, },
2027         { .gm = 7, .pga = 51, .pad = 208, .dac = 0, .bb_mult = 64, },
2028         { .gm = 7, .pga = 51, .pad = 203, .dac = 0, .bb_mult = 64, },
2029         { .gm = 7, .pga = 49, .pad = 203, .dac = 0, .bb_mult = 64, },
2030         { .gm = 7, .pga = 49, .pad = 197, .dac = 0, .bb_mult = 64, },
2031         { .gm = 7, .pga = 48, .pad = 197, .dac = 0, .bb_mult = 64, },
2032         { .gm = 7, .pga = 48, .pad = 191, .dac = 0, .bb_mult = 64, },
2033         { .gm = 7, .pga = 47, .pad = 191, .dac = 0, .bb_mult = 64, },
2034         { .gm = 7, .pga = 47, .pad = 186, .dac = 0, .bb_mult = 64, },
2035         { .gm = 7, .pga = 45, .pad = 186, .dac = 0, .bb_mult = 64, },
2036         { .gm = 7, .pga = 45, .pad = 181, .dac = 0, .bb_mult = 64, },
2037         { .gm = 7, .pga = 44, .pad = 181, .dac = 0, .bb_mult = 64, },
2038         { .gm = 7, .pga = 44, .pad = 175, .dac = 0, .bb_mult = 64, },
2039         { .gm = 7, .pga = 43, .pad = 175, .dac = 0, .bb_mult = 64, },
2040         { .gm = 7, .pga = 43, .pad = 170, .dac = 0, .bb_mult = 64, },
2041         { .gm = 7, .pga = 42, .pad = 170, .dac = 0, .bb_mult = 64, },
2042         { .gm = 7, .pga = 42, .pad = 166, .dac = 0, .bb_mult = 64, },
2043         { .gm = 7, .pga = 40, .pad = 166, .dac = 0, .bb_mult = 64, },
2044         { .gm = 7, .pga = 40, .pad = 161, .dac = 0, .bb_mult = 64, },
2045         { .gm = 7, .pga = 39, .pad = 161, .dac = 0, .bb_mult = 64, },
2046         { .gm = 7, .pga = 39, .pad = 156, .dac = 0, .bb_mult = 64, },
2047         { .gm = 7, .pga = 38, .pad = 156, .dac = 0, .bb_mult = 64, },
2048         { .gm = 7, .pga = 38, .pad = 152, .dac = 0, .bb_mult = 64, },
2049         { .gm = 7, .pga = 37, .pad = 152, .dac = 0, .bb_mult = 64, },
2050         { .gm = 7, .pga = 37, .pad = 148, .dac = 0, .bb_mult = 64, },
2051         { .gm = 7, .pga = 36, .pad = 148, .dac = 0, .bb_mult = 64, },
2052         { .gm = 7, .pga = 36, .pad = 143, .dac = 0, .bb_mult = 64, },
2053         { .gm = 7, .pga = 35, .pad = 143, .dac = 0, .bb_mult = 64, },
2054         { .gm = 7, .pga = 35, .pad = 139, .dac = 0, .bb_mult = 64, },
2055         { .gm = 7, .pga = 34, .pad = 139, .dac = 0, .bb_mult = 64, },
2056         { .gm = 7, .pga = 34, .pad = 135, .dac = 0, .bb_mult = 64, },
2057         { .gm = 7, .pga = 33, .pad = 135, .dac = 0, .bb_mult = 64, },
2058         { .gm = 7, .pga = 33, .pad = 132, .dac = 0, .bb_mult = 64, },
2059         { .gm = 7, .pga = 32, .pad = 132, .dac = 0, .bb_mult = 64, },
2060         { .gm = 7, .pga = 32, .pad = 128, .dac = 0, .bb_mult = 64, },
2061         { .gm = 7, .pga = 31, .pad = 128, .dac = 0, .bb_mult = 64, },
2062         { .gm = 7, .pga = 31, .pad = 124, .dac = 0, .bb_mult = 64, },
2063         { .gm = 7, .pga = 30, .pad = 124, .dac = 0, .bb_mult = 64, },
2064         { .gm = 7, .pga = 30, .pad = 121, .dac = 0, .bb_mult = 64, },
2065         { .gm = 7, .pga = 29, .pad = 121, .dac = 0, .bb_mult = 64, },
2066         { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2067         { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2068         { .gm = 7, .pga = 29, .pad = 114, .dac = 0, .bb_mult = 64, },
2069         { .gm = 7, .pga = 28, .pad = 114, .dac = 0, .bb_mult = 64, },
2070         { .gm = 7, .pga = 28, .pad = 111, .dac = 0, .bb_mult = 64, },
2071         { .gm = 7, .pga = 27, .pad = 111, .dac = 0, .bb_mult = 64, },
2072         { .gm = 7, .pga = 27, .pad = 108, .dac = 0, .bb_mult = 64, },
2073         { .gm = 7, .pga = 26, .pad = 108, .dac = 0, .bb_mult = 64, },
2074         { .gm = 7, .pga = 26, .pad = 104, .dac = 0, .bb_mult = 64, },
2075         { .gm = 7, .pga = 25, .pad = 104, .dac = 0, .bb_mult = 64, },
2076         { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2077         { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2078         { .gm = 7, .pga = 25, .pad = 99, .dac = 0, .bb_mult = 64, },
2079         { .gm = 7, .pga = 24, .pad = 99, .dac = 0, .bb_mult = 64, },
2080         { .gm = 7, .pga = 24, .pad = 96, .dac = 0, .bb_mult = 64, },
2081         { .gm = 7, .pga = 23, .pad = 96, .dac = 0, .bb_mult = 64, },
2082         { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2083         { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2084         { .gm = 7, .pga = 23, .pad = 90, .dac = 0, .bb_mult = 64, },
2085         { .gm = 7, .pga = 22, .pad = 90, .dac = 0, .bb_mult = 64, },
2086         { .gm = 7, .pga = 22, .pad = 88, .dac = 0, .bb_mult = 64, },
2087         { .gm = 7, .pga = 21, .pad = 88, .dac = 0, .bb_mult = 64, },
2088         { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2089         { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2090         { .gm = 7, .pga = 21, .pad = 83, .dac = 0, .bb_mult = 64, },
2091         { .gm = 7, .pga = 20, .pad = 83, .dac = 0, .bb_mult = 64, },
2092         { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2093         { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2094         { .gm = 7, .pga = 20, .pad = 78, .dac = 0, .bb_mult = 64, },
2095         { .gm = 7, .pga = 19, .pad = 78, .dac = 0, .bb_mult = 64, },
2096         { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2097         { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2098         { .gm = 7, .pga = 19, .pad = 74, .dac = 0, .bb_mult = 64, },
2099         { .gm = 7, .pga = 18, .pad = 74, .dac = 0, .bb_mult = 64, },
2100         { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2101         { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2102         { .gm = 7, .pga = 18, .pad = 70, .dac = 0, .bb_mult = 64, },
2103         { .gm = 7, .pga = 17, .pad = 70, .dac = 0, .bb_mult = 64, },
2104         { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2105         { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2106         { .gm = 7, .pga = 17, .pad = 66, .dac = 0, .bb_mult = 64, },
2107         { .gm = 7, .pga = 16, .pad = 66, .dac = 0, .bb_mult = 64, },
2108         { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2109         { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2110         { .gm = 7, .pga = 16, .pad = 62, .dac = 0, .bb_mult = 64, },
2111         { .gm = 7, .pga = 15, .pad = 62, .dac = 0, .bb_mult = 64, },
2112         { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2113         { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2114         { .gm = 7, .pga = 15, .pad = 59, .dac = 0, .bb_mult = 64, },
2115         { .gm = 7, .pga = 14, .pad = 59, .dac = 0, .bb_mult = 64, },
2116         { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2117         { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2118         { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2119         { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2120         { .gm = 7, .pga = 14, .pad = 54, .dac = 0, .bb_mult = 64, },
2121         { .gm = 7, .pga = 13, .pad = 54, .dac = 0, .bb_mult = 64, },
2122         { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2123         { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2124 };
2125 
2126 static struct lpphy_tx_gain_table_entry lpphy_rev2_5ghz_tx_gain_table[] = {
2127         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 152, },
2128         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 147, },
2129         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 143, },
2130         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 139, },
2131         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 135, },
2132         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 131, },
2133         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 128, },
2134         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 124, },
2135         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 121, },
2136         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 117, },
2137         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 114, },
2138         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 111, },
2139         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 107, },
2140         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 104, },
2141         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 101, },
2142         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 99, },
2143         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 96, },
2144         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 93, },
2145         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 90, },
2146         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 88, },
2147         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 85, },
2148         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 83, },
2149         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 81, },
2150         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 78, },
2151         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 76, },
2152         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 74, },
2153         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 72, },
2154         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 70, },
2155         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 68, },
2156         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 66, },
2157         { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 64, },
2158         { .gm = 255, .pga = 255, .pad = 248, .dac = 0, .bb_mult = 64, },
2159         { .gm = 255, .pga = 255, .pad = 241, .dac = 0, .bb_mult = 64, },
2160         { .gm = 255, .pga = 255, .pad = 234, .dac = 0, .bb_mult = 64, },
2161         { .gm = 255, .pga = 255, .pad = 227, .dac = 0, .bb_mult = 64, },
2162         { .gm = 255, .pga = 255, .pad = 221, .dac = 0, .bb_mult = 64, },
2163         { .gm = 255, .pga = 255, .pad = 215, .dac = 0, .bb_mult = 64, },
2164         { .gm = 255, .pga = 255, .pad = 208, .dac = 0, .bb_mult = 64, },
2165         { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
2166         { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
2167         { .gm = 255, .pga = 255, .pad = 191, .dac = 0, .bb_mult = 64, },
2168         { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
2169         { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
2170         { .gm = 255, .pga = 255, .pad = 175, .dac = 0, .bb_mult = 64, },
2171         { .gm = 255, .pga = 255, .pad = 170, .dac = 0, .bb_mult = 64, },
2172         { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
2173         { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
2174         { .gm = 255, .pga = 255, .pad = 156, .dac = 0, .bb_mult = 64, },
2175         { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
2176         { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
2177         { .gm = 255, .pga = 255, .pad = 143, .dac = 0, .bb_mult = 64, },
2178         { .gm = 255, .pga = 255, .pad = 139, .dac = 0, .bb_mult = 64, },
2179         { .gm = 255, .pga = 255, .pad = 135, .dac = 0, .bb_mult = 64, },
2180         { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
2181         { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
2182         { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
2183         { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
2184         { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
2185         { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
2186         { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
2187         { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
2188         { .gm = 255, .pga = 255, .pad = 104, .dac = 0, .bb_mult = 64, },
2189         { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
2190         { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
2191         { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
2192         { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
2193         { .gm = 255, .pga = 255, .pad = 90, .dac = 0, .bb_mult = 64, },
2194         { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
2195         { .gm = 255, .pga = 255, .pad = 85, .dac = 0, .bb_mult = 64, },
2196         { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
2197         { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
2198         { .gm = 255, .pga = 255, .pad = 78, .dac = 0, .bb_mult = 64, },
2199         { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
2200         { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
2201         { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
2202         { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
2203         { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
2204         { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
2205         { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
2206         { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
2207         { .gm = 255, .pga = 255, .pad = 62, .dac = 0, .bb_mult = 64, },
2208         { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
2209         { .gm = 255, .pga = 248, .pad = 60, .dac = 0, .bb_mult = 64, },
2210         { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
2211         { .gm = 255, .pga = 241, .pad = 59, .dac = 0, .bb_mult = 64, },
2212         { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
2213         { .gm = 255, .pga = 234, .pad = 57, .dac = 0, .bb_mult = 64, },
2214         { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
2215         { .gm = 255, .pga = 227, .pad = 55, .dac = 0, .bb_mult = 64, },
2216         { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
2217         { .gm = 255, .pga = 221, .pad = 54, .dac = 0, .bb_mult = 64, },
2218         { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
2219         { .gm = 255, .pga = 215, .pad = 52, .dac = 0, .bb_mult = 64, },
2220         { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
2221         { .gm = 255, .pga = 208, .pad = 51, .dac = 0, .bb_mult = 64, },
2222         { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
2223         { .gm = 255, .pga = 203, .pad = 49, .dac = 0, .bb_mult = 64, },
2224         { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
2225         { .gm = 255, .pga = 197, .pad = 48, .dac = 0, .bb_mult = 64, },
2226         { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
2227         { .gm = 255, .pga = 191, .pad = 47, .dac = 0, .bb_mult = 64, },
2228         { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
2229         { .gm = 255, .pga = 186, .pad = 45, .dac = 0, .bb_mult = 64, },
2230         { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
2231         { .gm = 255, .pga = 181, .pad = 44, .dac = 0, .bb_mult = 64, },
2232         { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
2233         { .gm = 255, .pga = 175, .pad = 43, .dac = 0, .bb_mult = 64, },
2234         { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
2235         { .gm = 255, .pga = 170, .pad = 42, .dac = 0, .bb_mult = 64, },
2236         { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
2237         { .gm = 255, .pga = 166, .pad = 40, .dac = 0, .bb_mult = 64, },
2238         { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
2239         { .gm = 255, .pga = 161, .pad = 39, .dac = 0, .bb_mult = 64, },
2240         { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
2241         { .gm = 255, .pga = 156, .pad = 38, .dac = 0, .bb_mult = 64, },
2242         { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
2243         { .gm = 255, .pga = 152, .pad = 37, .dac = 0, .bb_mult = 64, },
2244         { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
2245         { .gm = 255, .pga = 148, .pad = 36, .dac = 0, .bb_mult = 64, },
2246         { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
2247         { .gm = 255, .pga = 143, .pad = 35, .dac = 0, .bb_mult = 64, },
2248         { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
2249         { .gm = 255, .pga = 139, .pad = 34, .dac = 0, .bb_mult = 64, },
2250         { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
2251         { .gm = 255, .pga = 135, .pad = 33, .dac = 0, .bb_mult = 64, },
2252         { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
2253         { .gm = 255, .pga = 132, .pad = 32, .dac = 0, .bb_mult = 64, },
2254         { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
2255 };
2256 
2257 void lpphy_rev0_1_table_init(struct b43_wldev *dev)
2258 {
2259         B43_WARN_ON(dev->phy.rev >= 2);
2260 
2261         b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2262                 ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2263         b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2264                 ARRAY_SIZE(lpphy_rev01_noise_scale_table), lpphy_rev01_noise_scale_table);
2265         b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2266                 ARRAY_SIZE(lpphy_crs_gain_nft_table), lpphy_crs_gain_nft_table);
2267         b43_lptab_write_bulk(dev, B43_LPTAB16(8, 0),
2268                 ARRAY_SIZE(lpphy_rev01_filter_control_table), lpphy_rev01_filter_control_table);
2269         b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2270                 ARRAY_SIZE(lpphy_rev01_ps_control_table), lpphy_rev01_ps_control_table);
2271         b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2272                 ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2273         b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2274                 ARRAY_SIZE(lpphy_iqlo_cal_table), lpphy_iqlo_cal_table);
2275         if (dev->phy.rev == 0) {
2276                 b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2277                         ARRAY_SIZE(lpphy_rev0_ofdm_cck_gain_table), lpphy_rev0_ofdm_cck_gain_table);
2278                 b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2279                         ARRAY_SIZE(lpphy_rev0_ofdm_cck_gain_table), lpphy_rev0_ofdm_cck_gain_table);
2280         } else {
2281                 b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2282                         ARRAY_SIZE(lpphy_rev1_ofdm_cck_gain_table), lpphy_rev1_ofdm_cck_gain_table);
2283                 b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2284                         ARRAY_SIZE(lpphy_rev1_ofdm_cck_gain_table), lpphy_rev1_ofdm_cck_gain_table);
2285 }
2286         b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2287                 ARRAY_SIZE(lpphy_gain_delta_table), lpphy_gain_delta_table);
2288         b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2289                 ARRAY_SIZE(lpphy_tx_power_control_table), lpphy_tx_power_control_table);
2290 }
2291 
2292 void lpphy_rev2plus_table_init(struct b43_wldev *dev)
2293 {
2294         int i;
2295 
2296         B43_WARN_ON(dev->phy.rev < 2);
2297 
2298         for (i = 0; i < 704; i++)
2299                 b43_lptab_write(dev, B43_LPTAB32(7, i), 0);
2300 
2301         b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2302                 ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2303         b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2304                 ARRAY_SIZE(lpphy_rev2plus_noise_scale_table), lpphy_rev2plus_noise_scale_table);
2305         b43_lptab_write_bulk(dev, B43_LPTAB32(11, 0),
2306                 ARRAY_SIZE(lpphy_rev2plus_filter_control_table), lpphy_rev2plus_filter_control_table);
2307         b43_lptab_write_bulk(dev, B43_LPTAB32(12, 0),
2308                 ARRAY_SIZE(lpphy_rev2plus_ps_control_table), lpphy_rev2plus_ps_control_table);
2309         b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2310                 ARRAY_SIZE(lpphy_gain_idx_table), lpphy_gain_idx_table);
2311         b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2312                 ARRAY_SIZE(lpphy_aux_gain_idx_table), lpphy_aux_gain_idx_table);
2313         b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2314                 ARRAY_SIZE(lpphy_sw_control_table), lpphy_sw_control_table);
2315         b43_lptab_write_bulk(dev, B43_LPTAB8(16, 0),
2316                 ARRAY_SIZE(lpphy_hf_table), lpphy_hf_table);
2317         b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2318                 ARRAY_SIZE(lpphy_gain_value_table), lpphy_gain_value_table);
2319         b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2320                 ARRAY_SIZE(lpphy_gain_table), lpphy_gain_table);
2321         b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2322                 ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2323         b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2324                 ARRAY_SIZE(lpphy_iqlo_cal_table), lpphy_iqlo_cal_table);
2325         b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2326                 ARRAY_SIZE(lpphy_papd_eps_table), lpphy_papd_eps_table);
2327         b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2328                 ARRAY_SIZE(lpphy_papd_mult_table), lpphy_papd_mult_table);
2329 
2330         if ((dev->dev->chip_id == 0x4325) && (dev->dev->chip_rev == 0)) {
2331                 b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2332                         ARRAY_SIZE(lpphy_a0_gain_idx_table), lpphy_a0_gain_idx_table);
2333                 b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2334                         ARRAY_SIZE(lpphy_a0_aux_gain_idx_table), lpphy_a0_aux_gain_idx_table);
2335                 b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2336                         ARRAY_SIZE(lpphy_a0_gain_value_table), lpphy_a0_gain_value_table);
2337                 b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2338                         ARRAY_SIZE(lpphy_a0_gain_table), lpphy_a0_gain_table);
2339         }
2340 }
2341 
2342 static void lpphy_rev0_1_write_gain_table(struct b43_wldev *dev, int offset,
2343                                 struct lpphy_tx_gain_table_entry data)
2344 {
2345         u32 tmp;
2346 
2347         B43_WARN_ON(dev->phy.rev >= 2);
2348 
2349         tmp  = data.pad << 11;
2350         tmp |= data.pga << 7;
2351         tmp |= data.gm  << 4;
2352         tmp |= data.dac;
2353         b43_lptab_write(dev, B43_LPTAB32(10, 0xC0 + offset), tmp);
2354         tmp  = data.bb_mult << 20;
2355         b43_lptab_write(dev, B43_LPTAB32(10, 0x140 + offset), tmp);
2356 }
2357 
2358 static void lpphy_rev2plus_write_gain_table(struct b43_wldev *dev, int offset,
2359                                 struct lpphy_tx_gain_table_entry data)
2360 {
2361         u32 tmp;
2362 
2363         B43_WARN_ON(dev->phy.rev < 2);
2364 
2365         tmp  = data.pad << 16;
2366         tmp |= data.pga << 8;
2367         tmp |= data.gm;
2368         if (dev->phy.rev >= 3) {
2369                 if (b43_current_band(dev->wl) == NL80211_BAND_5GHZ)
2370                         tmp |= 0x10 << 24;
2371                 else
2372                         tmp |= 0x70 << 24;
2373         } else {
2374                 if (b43_current_band(dev->wl) == NL80211_BAND_5GHZ)
2375                         tmp |= 0x14 << 24;
2376                 else
2377                         tmp |= 0x7F << 24;
2378         }
2379         b43_lptab_write(dev, B43_LPTAB32(7, 0xC0 + offset), tmp);
2380         tmp  = data.bb_mult << 20;
2381         tmp |= data.dac << 28;
2382         b43_lptab_write(dev, B43_LPTAB32(7, 0x140 + offset), tmp);
2383 }
2384 
2385 void lpphy_write_gain_table(struct b43_wldev *dev, int offset,
2386                             struct lpphy_tx_gain_table_entry data)
2387 {
2388         if (dev->phy.rev >= 2)
2389                 lpphy_rev2plus_write_gain_table(dev, offset, data);
2390         else
2391                 lpphy_rev0_1_write_gain_table(dev, offset, data);
2392 }
2393 
2394 void lpphy_write_gain_table_bulk(struct b43_wldev *dev, int offset, int count,
2395                                  struct lpphy_tx_gain_table_entry *table)
2396 {
2397         int i;
2398 
2399         for (i = offset; i < count; i++)
2400                 lpphy_write_gain_table(dev, i, table[i]);
2401 }
2402 
2403 void lpphy_init_tx_gain_table(struct b43_wldev *dev)
2404 {
2405         struct ssb_sprom *sprom = dev->dev->bus_sprom;
2406 
2407         switch (dev->phy.rev) {
2408         case 0:
2409                 if ((sprom->boardflags_hi & B43_BFH_NOPA) ||
2410                     (sprom->boardflags_lo & B43_BFL_HGPA))
2411                         lpphy_write_gain_table_bulk(dev, 0, 128,
2412                                         lpphy_rev0_nopa_tx_gain_table);
2413                 else if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ)
2414                         lpphy_write_gain_table_bulk(dev, 0, 128,
2415                                         lpphy_rev0_2ghz_tx_gain_table);
2416                 else
2417                         lpphy_write_gain_table_bulk(dev, 0, 128,
2418                                         lpphy_rev0_5ghz_tx_gain_table);
2419                 break;
2420         case 1:
2421                 if ((sprom->boardflags_hi & B43_BFH_NOPA) ||
2422                     (sprom->boardflags_lo & B43_BFL_HGPA))
2423                         lpphy_write_gain_table_bulk(dev, 0, 128,
2424                                         lpphy_rev1_nopa_tx_gain_table);
2425                 else if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ)
2426                         lpphy_write_gain_table_bulk(dev, 0, 128,
2427                                         lpphy_rev1_2ghz_tx_gain_table);
2428                 else
2429                         lpphy_write_gain_table_bulk(dev, 0, 128,
2430                                         lpphy_rev1_5ghz_tx_gain_table);
2431                 break;
2432         default:
2433                 if (sprom->boardflags_hi & B43_BFH_NOPA)
2434                         lpphy_write_gain_table_bulk(dev, 0, 128,
2435                                         lpphy_rev2_nopa_tx_gain_table);
2436                 else if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ)
2437                         lpphy_write_gain_table_bulk(dev, 0, 128,
2438                                         lpphy_rev2_2ghz_tx_gain_table);
2439                 else
2440                         lpphy_write_gain_table_bulk(dev, 0, 128,
2441                                         lpphy_rev2_5ghz_tx_gain_table);
2442         }
2443 }