2
* Copyright (c) 2010 Broadcom Corporation
4
* Permission to use, copy, modify, and/or distribute this software for any
5
* purpose with or without fee is hereby granted, provided that the above
6
* copyright notice and this permission notice appear in all copies.
8
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
#include <linux/kernel.h>
22
#include <wlc_phy_int.h>
23
#include <wlc_phytbl_n.h>
25
const u32 frame_struct_rev0[] = {
860
const u8 frame_lut_rev0[] = {
895
const u32 tmap_tbl_rev0[] = {
1346
const u32 tdtrn_tbl_rev0[] = {
2053
const u32 intlv_tbl_rev0[] = {
2063
const u16 pilot_tbl_rev0[] = {
2154
const u32 pltlut_tbl_rev0[] = {
2163
const u32 tdi_tbl20_ant0_rev0[] = {
2221
const u32 tdi_tbl20_ant1_rev0[] = {
2279
const u32 tdi_tbl40_ant0_rev0[] = {
2392
const u32 tdi_tbl40_ant1_rev0[] = {
2505
const u16 bdi_tbl_rev0[] = {
2514
const u32 chanest_tbl_rev0[] = {
2613
const u8 mcs_tbl_rev0[] = {
2744
const u32 noise_var_tbl0_rev0[] = {
3003
const u32 noise_var_tbl1_rev0[] = {
3262
const u8 est_pwr_lut_core0_rev0[] = {
3329
const u8 est_pwr_lut_core1_rev0[] = {
3396
const u8 adj_pwr_lut_core0_rev0[] = {
3527
const u8 adj_pwr_lut_core1_rev0[] = {
3658
const u32 gainctrl_lut_core0_rev0[] = {
3789
const u32 gainctrl_lut_core1_rev0[] = {
3920
const u32 iq_lut_core0_rev0[] = {
4051
const u32 iq_lut_core1_rev0[] = {
4182
const u16 loft_lut_core0_rev0[] = {
4313
const u16 loft_lut_core1_rev0[] = {
4444
const mimophytbl_info_t mimophytbl_info_rev0_volatile[] = {
4445
{&bdi_tbl_rev0, sizeof(bdi_tbl_rev0) / sizeof(bdi_tbl_rev0[0]), 21, 0,
4448
{&pltlut_tbl_rev0, sizeof(pltlut_tbl_rev0) / sizeof(pltlut_tbl_rev0[0]),
4451
{&gainctrl_lut_core0_rev0,
4452
sizeof(gainctrl_lut_core0_rev0) / sizeof(gainctrl_lut_core0_rev0[0]),
4455
{&gainctrl_lut_core1_rev0,
4456
sizeof(gainctrl_lut_core1_rev0) / sizeof(gainctrl_lut_core1_rev0[0]),
4460
{&est_pwr_lut_core0_rev0,
4461
sizeof(est_pwr_lut_core0_rev0) / sizeof(est_pwr_lut_core0_rev0[0]), 26,
4464
{&est_pwr_lut_core1_rev0,
4465
sizeof(est_pwr_lut_core1_rev0) / sizeof(est_pwr_lut_core1_rev0[0]), 27,
4468
{&adj_pwr_lut_core0_rev0,
4469
sizeof(adj_pwr_lut_core0_rev0) / sizeof(adj_pwr_lut_core0_rev0[0]), 26,
4472
{&adj_pwr_lut_core1_rev0,
4473
sizeof(adj_pwr_lut_core1_rev0) / sizeof(adj_pwr_lut_core1_rev0[0]), 27,
4476
{&iq_lut_core0_rev0,
4477
sizeof(iq_lut_core0_rev0) / sizeof(iq_lut_core0_rev0[0]), 26, 320, 32}
4479
{&iq_lut_core1_rev0,
4480
sizeof(iq_lut_core1_rev0) / sizeof(iq_lut_core1_rev0[0]), 27, 320, 32}
4482
{&loft_lut_core0_rev0,
4483
sizeof(loft_lut_core0_rev0) / sizeof(loft_lut_core0_rev0[0]), 26, 448,
4486
{&loft_lut_core1_rev0,
4487
sizeof(loft_lut_core1_rev0) / sizeof(loft_lut_core1_rev0[0]), 27, 448,
4492
const mimophytbl_info_t mimophytbl_info_rev0[] = {
4493
{&frame_struct_rev0,
4494
sizeof(frame_struct_rev0) / sizeof(frame_struct_rev0[0]), 10, 0, 32}
4496
{&frame_lut_rev0, sizeof(frame_lut_rev0) / sizeof(frame_lut_rev0[0]),
4499
{&tmap_tbl_rev0, sizeof(tmap_tbl_rev0) / sizeof(tmap_tbl_rev0[0]), 12,
4502
{&tdtrn_tbl_rev0, sizeof(tdtrn_tbl_rev0) / sizeof(tdtrn_tbl_rev0[0]),
4505
{&intlv_tbl_rev0, sizeof(intlv_tbl_rev0) / sizeof(intlv_tbl_rev0[0]),
4508
{&pilot_tbl_rev0, sizeof(pilot_tbl_rev0) / sizeof(pilot_tbl_rev0[0]),
4511
{&tdi_tbl20_ant0_rev0,
4512
sizeof(tdi_tbl20_ant0_rev0) / sizeof(tdi_tbl20_ant0_rev0[0]), 19, 128,
4515
{&tdi_tbl20_ant1_rev0,
4516
sizeof(tdi_tbl20_ant1_rev0) / sizeof(tdi_tbl20_ant1_rev0[0]), 19, 256,
4519
{&tdi_tbl40_ant0_rev0,
4520
sizeof(tdi_tbl40_ant0_rev0) / sizeof(tdi_tbl40_ant0_rev0[0]), 19, 640,
4523
{&tdi_tbl40_ant1_rev0,
4524
sizeof(tdi_tbl40_ant1_rev0) / sizeof(tdi_tbl40_ant1_rev0[0]), 19, 768,
4528
sizeof(chanest_tbl_rev0) / sizeof(chanest_tbl_rev0[0]), 22, 0, 32}
4530
{&mcs_tbl_rev0, sizeof(mcs_tbl_rev0) / sizeof(mcs_tbl_rev0[0]), 18, 0, 8}
4532
{&noise_var_tbl0_rev0,
4533
sizeof(noise_var_tbl0_rev0) / sizeof(noise_var_tbl0_rev0[0]), 16, 0,
4536
{&noise_var_tbl1_rev0,
4537
sizeof(noise_var_tbl1_rev0) / sizeof(noise_var_tbl1_rev0[0]), 16, 128,
4542
const u32 mimophytbl_info_sz_rev0 =
4543
sizeof(mimophytbl_info_rev0) / sizeof(mimophytbl_info_rev0[0]);
4544
const u32 mimophytbl_info_sz_rev0_volatile =
4545
sizeof(mimophytbl_info_rev0_volatile) /
4546
sizeof(mimophytbl_info_rev0_volatile[0]);
4548
const u16 ant_swctrl_tbl_rev3[] = {
4583
const u16 ant_swctrl_tbl_rev3_1[] = {
4618
const u16 ant_swctrl_tbl_rev3_2[] = {
4653
const u16 ant_swctrl_tbl_rev3_3[] = {
4688
const u32 frame_struct_rev3[] = {
5523
const u16 pilot_tbl_rev3[] = {
5614
const u32 tmap_tbl_rev3[] = {
6065
const u32 intlv_tbl_rev3[] = {
6075
const u32 tdtrn_tbl_rev3[] = {
6782
const u32 noise_var_tbl_rev3[] = {
7041
const u16 mcs_tbl_rev3[] = {
7172
const u32 tdi_tbl20_ant0_rev3[] = {
7230
const u32 tdi_tbl20_ant1_rev3[] = {
7288
const u32 tdi_tbl40_ant0_rev3[] = {
7401
const u32 tdi_tbl40_ant1_rev3[] = {
7514
const u32 pltlut_tbl_rev3[] = {
7523
const u32 chanest_tbl_rev3[] = {
7622
const u8 frame_lut_rev3[] = {
7657
const u8 est_pwr_lut_core0_rev3[] = {
7724
const u8 est_pwr_lut_core1_rev3[] = {
7791
const u8 adj_pwr_lut_core0_rev3[] = {
7922
const u8 adj_pwr_lut_core1_rev3[] = {
8053
const u32 gainctrl_lut_core0_rev3[] = {
8184
const u32 gainctrl_lut_core1_rev3[] = {
8315
const u32 iq_lut_core0_rev3[] = {
8446
const u32 iq_lut_core1_rev3[] = {
8577
const u16 loft_lut_core0_rev3[] = {
8708
const u16 loft_lut_core1_rev3[] = {
8839
const u16 papd_comp_rfpwr_tbl_core0_rev3[] = {
8970
const u16 papd_comp_rfpwr_tbl_core1_rev3[] = {
9101
const u32 papd_comp_epsilon_tbl_core0_rev3[] = {
9168
const u32 papd_cal_scalars_tbl_core0_rev3[] = {
9235
const u32 papd_comp_epsilon_tbl_core1_rev3[] = {
9302
const u32 papd_cal_scalars_tbl_core1_rev3[] = {
9369
const mimophytbl_info_t mimophytbl_info_rev3_volatile[] = {
9370
{&ant_swctrl_tbl_rev3,
9371
sizeof(ant_swctrl_tbl_rev3) / sizeof(ant_swctrl_tbl_rev3[0]), 9, 0, 16}
9375
const mimophytbl_info_t mimophytbl_info_rev3_volatile1[] = {
9376
{&ant_swctrl_tbl_rev3_1,
9377
sizeof(ant_swctrl_tbl_rev3_1) / sizeof(ant_swctrl_tbl_rev3_1[0]), 9, 0,
9382
const mimophytbl_info_t mimophytbl_info_rev3_volatile2[] = {
9383
{&ant_swctrl_tbl_rev3_2,
9384
sizeof(ant_swctrl_tbl_rev3_2) / sizeof(ant_swctrl_tbl_rev3_2[0]), 9, 0,
9389
const mimophytbl_info_t mimophytbl_info_rev3_volatile3[] = {
9390
{&ant_swctrl_tbl_rev3_3,
9391
sizeof(ant_swctrl_tbl_rev3_3) / sizeof(ant_swctrl_tbl_rev3_3[0]), 9, 0,
9396
const mimophytbl_info_t mimophytbl_info_rev3[] = {
9397
{&frame_struct_rev3,
9398
sizeof(frame_struct_rev3) / sizeof(frame_struct_rev3[0]), 10, 0, 32}
9400
{&pilot_tbl_rev3, sizeof(pilot_tbl_rev3) / sizeof(pilot_tbl_rev3[0]),
9403
{&tmap_tbl_rev3, sizeof(tmap_tbl_rev3) / sizeof(tmap_tbl_rev3[0]), 12,
9406
{&intlv_tbl_rev3, sizeof(intlv_tbl_rev3) / sizeof(intlv_tbl_rev3[0]),
9409
{&tdtrn_tbl_rev3, sizeof(tdtrn_tbl_rev3) / sizeof(tdtrn_tbl_rev3[0]),
9412
{&noise_var_tbl_rev3,
9413
sizeof(noise_var_tbl_rev3) / sizeof(noise_var_tbl_rev3[0]), 16, 0, 32}
9415
{&mcs_tbl_rev3, sizeof(mcs_tbl_rev3) / sizeof(mcs_tbl_rev3[0]), 18, 0,
9418
{&tdi_tbl20_ant0_rev3,
9419
sizeof(tdi_tbl20_ant0_rev3) / sizeof(tdi_tbl20_ant0_rev3[0]), 19, 128,
9422
{&tdi_tbl20_ant1_rev3,
9423
sizeof(tdi_tbl20_ant1_rev3) / sizeof(tdi_tbl20_ant1_rev3[0]), 19, 256,
9426
{&tdi_tbl40_ant0_rev3,
9427
sizeof(tdi_tbl40_ant0_rev3) / sizeof(tdi_tbl40_ant0_rev3[0]), 19, 640,
9430
{&tdi_tbl40_ant1_rev3,
9431
sizeof(tdi_tbl40_ant1_rev3) / sizeof(tdi_tbl40_ant1_rev3[0]), 19, 768,
9434
{&pltlut_tbl_rev3, sizeof(pltlut_tbl_rev3) / sizeof(pltlut_tbl_rev3[0]),
9438
sizeof(chanest_tbl_rev3) / sizeof(chanest_tbl_rev3[0]), 22, 0, 32}
9440
{&frame_lut_rev3, sizeof(frame_lut_rev3) / sizeof(frame_lut_rev3[0]),
9443
{&est_pwr_lut_core0_rev3,
9444
sizeof(est_pwr_lut_core0_rev3) / sizeof(est_pwr_lut_core0_rev3[0]), 26,
9447
{&est_pwr_lut_core1_rev3,
9448
sizeof(est_pwr_lut_core1_rev3) / sizeof(est_pwr_lut_core1_rev3[0]), 27,
9451
{&adj_pwr_lut_core0_rev3,
9452
sizeof(adj_pwr_lut_core0_rev3) / sizeof(adj_pwr_lut_core0_rev3[0]), 26,
9455
{&adj_pwr_lut_core1_rev3,
9456
sizeof(adj_pwr_lut_core1_rev3) / sizeof(adj_pwr_lut_core1_rev3[0]), 27,
9459
{&gainctrl_lut_core0_rev3,
9460
sizeof(gainctrl_lut_core0_rev3) / sizeof(gainctrl_lut_core0_rev3[0]),
9463
{&gainctrl_lut_core1_rev3,
9464
sizeof(gainctrl_lut_core1_rev3) / sizeof(gainctrl_lut_core1_rev3[0]),
9467
{&iq_lut_core0_rev3,
9468
sizeof(iq_lut_core0_rev3) / sizeof(iq_lut_core0_rev3[0]), 26, 320, 32}
9470
{&iq_lut_core1_rev3,
9471
sizeof(iq_lut_core1_rev3) / sizeof(iq_lut_core1_rev3[0]), 27, 320, 32}
9473
{&loft_lut_core0_rev3,
9474
sizeof(loft_lut_core0_rev3) / sizeof(loft_lut_core0_rev3[0]), 26, 448,
9477
{&loft_lut_core1_rev3,
9478
sizeof(loft_lut_core1_rev3) / sizeof(loft_lut_core1_rev3[0]), 27, 448,
9482
const u32 mimophytbl_info_sz_rev3 =
9483
sizeof(mimophytbl_info_rev3) / sizeof(mimophytbl_info_rev3[0]);
9484
const u32 mimophytbl_info_sz_rev3_volatile =
9485
sizeof(mimophytbl_info_rev3_volatile) /
9486
sizeof(mimophytbl_info_rev3_volatile[0]);
9487
const u32 mimophytbl_info_sz_rev3_volatile1 =
9488
sizeof(mimophytbl_info_rev3_volatile1) /
9489
sizeof(mimophytbl_info_rev3_volatile1[0]);
9490
const u32 mimophytbl_info_sz_rev3_volatile2 =
9491
sizeof(mimophytbl_info_rev3_volatile2) /
9492
sizeof(mimophytbl_info_rev3_volatile2[0]);
9493
const u32 mimophytbl_info_sz_rev3_volatile3 =
9494
sizeof(mimophytbl_info_rev3_volatile3) /
9495
sizeof(mimophytbl_info_rev3_volatile3[0]);
9497
const u32 tmap_tbl_rev7[] = {
9948
const u32 noise_var_tbl_rev7[] = {
10207
const u32 papd_comp_epsilon_tbl_core0_rev7[] = {
10274
const u32 papd_cal_scalars_tbl_core0_rev7[] = {
10341
const u32 papd_comp_epsilon_tbl_core1_rev7[] = {
10408
const u32 papd_cal_scalars_tbl_core1_rev7[] = {
10475
const mimophytbl_info_t mimophytbl_info_rev7[] = {
10476
{&frame_struct_rev3,
10477
sizeof(frame_struct_rev3) / sizeof(frame_struct_rev3[0]), 10, 0, 32}
10479
{&pilot_tbl_rev3, sizeof(pilot_tbl_rev3) / sizeof(pilot_tbl_rev3[0]),
10482
{&tmap_tbl_rev7, sizeof(tmap_tbl_rev7) / sizeof(tmap_tbl_rev7[0]), 12,
10485
{&intlv_tbl_rev3, sizeof(intlv_tbl_rev3) / sizeof(intlv_tbl_rev3[0]),
10488
{&tdtrn_tbl_rev3, sizeof(tdtrn_tbl_rev3) / sizeof(tdtrn_tbl_rev3[0]),
10491
{&noise_var_tbl_rev7,
10492
sizeof(noise_var_tbl_rev7) / sizeof(noise_var_tbl_rev7[0]), 16, 0, 32}
10494
{&mcs_tbl_rev3, sizeof(mcs_tbl_rev3) / sizeof(mcs_tbl_rev3[0]), 18, 0,
10497
{&tdi_tbl20_ant0_rev3,
10498
sizeof(tdi_tbl20_ant0_rev3) / sizeof(tdi_tbl20_ant0_rev3[0]), 19, 128,
10501
{&tdi_tbl20_ant1_rev3,
10502
sizeof(tdi_tbl20_ant1_rev3) / sizeof(tdi_tbl20_ant1_rev3[0]), 19, 256,
10505
{&tdi_tbl40_ant0_rev3,
10506
sizeof(tdi_tbl40_ant0_rev3) / sizeof(tdi_tbl40_ant0_rev3[0]), 19, 640,
10509
{&tdi_tbl40_ant1_rev3,
10510
sizeof(tdi_tbl40_ant1_rev3) / sizeof(tdi_tbl40_ant1_rev3[0]), 19, 768,
10513
{&pltlut_tbl_rev3, sizeof(pltlut_tbl_rev3) / sizeof(pltlut_tbl_rev3[0]),
10516
{&chanest_tbl_rev3,
10517
sizeof(chanest_tbl_rev3) / sizeof(chanest_tbl_rev3[0]), 22, 0, 32}
10519
{&frame_lut_rev3, sizeof(frame_lut_rev3) / sizeof(frame_lut_rev3[0]),
10522
{&est_pwr_lut_core0_rev3,
10523
sizeof(est_pwr_lut_core0_rev3) / sizeof(est_pwr_lut_core0_rev3[0]), 26,
10526
{&est_pwr_lut_core1_rev3,
10527
sizeof(est_pwr_lut_core1_rev3) / sizeof(est_pwr_lut_core1_rev3[0]), 27,
10530
{&adj_pwr_lut_core0_rev3,
10531
sizeof(adj_pwr_lut_core0_rev3) / sizeof(adj_pwr_lut_core0_rev3[0]), 26,
10534
{&adj_pwr_lut_core1_rev3,
10535
sizeof(adj_pwr_lut_core1_rev3) / sizeof(adj_pwr_lut_core1_rev3[0]), 27,
10538
{&gainctrl_lut_core0_rev3,
10539
sizeof(gainctrl_lut_core0_rev3) / sizeof(gainctrl_lut_core0_rev3[0]),
10542
{&gainctrl_lut_core1_rev3,
10543
sizeof(gainctrl_lut_core1_rev3) / sizeof(gainctrl_lut_core1_rev3[0]),
10546
{&iq_lut_core0_rev3,
10547
sizeof(iq_lut_core0_rev3) / sizeof(iq_lut_core0_rev3[0]), 26, 320, 32}
10549
{&iq_lut_core1_rev3,
10550
sizeof(iq_lut_core1_rev3) / sizeof(iq_lut_core1_rev3[0]), 27, 320, 32}
10552
{&loft_lut_core0_rev3,
10553
sizeof(loft_lut_core0_rev3) / sizeof(loft_lut_core0_rev3[0]), 26, 448,
10556
{&loft_lut_core1_rev3,
10557
sizeof(loft_lut_core1_rev3) / sizeof(loft_lut_core1_rev3[0]), 27, 448,
10560
{&papd_comp_rfpwr_tbl_core0_rev3,
10561
sizeof(papd_comp_rfpwr_tbl_core0_rev3) /
10562
sizeof(papd_comp_rfpwr_tbl_core0_rev3[0]), 26, 576, 16}
10564
{&papd_comp_rfpwr_tbl_core1_rev3,
10565
sizeof(papd_comp_rfpwr_tbl_core1_rev3) /
10566
sizeof(papd_comp_rfpwr_tbl_core1_rev3[0]), 27, 576, 16}
10568
{&papd_comp_epsilon_tbl_core0_rev7,
10569
sizeof(papd_comp_epsilon_tbl_core0_rev7) /
10570
sizeof(papd_comp_epsilon_tbl_core0_rev7[0]), 31, 0, 32}
10572
{&papd_cal_scalars_tbl_core0_rev7,
10573
sizeof(papd_cal_scalars_tbl_core0_rev7) /
10574
sizeof(papd_cal_scalars_tbl_core0_rev7[0]), 32, 0, 32}
10576
{&papd_comp_epsilon_tbl_core1_rev7,
10577
sizeof(papd_comp_epsilon_tbl_core1_rev7) /
10578
sizeof(papd_comp_epsilon_tbl_core1_rev7[0]), 33, 0, 32}
10580
{&papd_cal_scalars_tbl_core1_rev7,
10581
sizeof(papd_cal_scalars_tbl_core1_rev7) /
10582
sizeof(papd_cal_scalars_tbl_core1_rev7[0]), 34, 0, 32}
10586
const u32 mimophytbl_info_sz_rev7 =
10587
sizeof(mimophytbl_info_rev7) / sizeof(mimophytbl_info_rev7[0]);
10589
const mimophytbl_info_t mimophytbl_info_rev16[] = {
10590
{&noise_var_tbl_rev7,
10591
sizeof(noise_var_tbl_rev7) / sizeof(noise_var_tbl_rev7[0]), 16, 0, 32}
10593
{&est_pwr_lut_core0_rev3,
10594
sizeof(est_pwr_lut_core0_rev3) / sizeof(est_pwr_lut_core0_rev3[0]), 26,
10597
{&est_pwr_lut_core1_rev3,
10598
sizeof(est_pwr_lut_core1_rev3) / sizeof(est_pwr_lut_core1_rev3[0]), 27,
10601
{&adj_pwr_lut_core0_rev3,
10602
sizeof(adj_pwr_lut_core0_rev3) / sizeof(adj_pwr_lut_core0_rev3[0]), 26,
10605
{&adj_pwr_lut_core1_rev3,
10606
sizeof(adj_pwr_lut_core1_rev3) / sizeof(adj_pwr_lut_core1_rev3[0]), 27,
10609
{&gainctrl_lut_core0_rev3,
10610
sizeof(gainctrl_lut_core0_rev3) / sizeof(gainctrl_lut_core0_rev3[0]),
10613
{&gainctrl_lut_core1_rev3,
10614
sizeof(gainctrl_lut_core1_rev3) / sizeof(gainctrl_lut_core1_rev3[0]),
10617
{&iq_lut_core0_rev3,
10618
sizeof(iq_lut_core0_rev3) / sizeof(iq_lut_core0_rev3[0]), 26, 320, 32}
10620
{&iq_lut_core1_rev3,
10621
sizeof(iq_lut_core1_rev3) / sizeof(iq_lut_core1_rev3[0]), 27, 320, 32}
10623
{&loft_lut_core0_rev3,
10624
sizeof(loft_lut_core0_rev3) / sizeof(loft_lut_core0_rev3[0]), 26, 448,
10627
{&loft_lut_core1_rev3,
10628
sizeof(loft_lut_core1_rev3) / sizeof(loft_lut_core1_rev3[0]), 27, 448,
10633
const u32 mimophytbl_info_sz_rev16 =
10634
sizeof(mimophytbl_info_rev16) / sizeof(mimophytbl_info_rev16[0]);