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>
20
#include <wlc_phy_int.h>
21
#include <wlc_phytbl_n.h>
23
const u32 frame_struct_rev0[] = {
858
const u8 frame_lut_rev0[] = {
893
const u32 tmap_tbl_rev0[] = {
1344
const u32 tdtrn_tbl_rev0[] = {
2051
const u32 intlv_tbl_rev0[] = {
2061
const u16 pilot_tbl_rev0[] = {
2152
const u32 pltlut_tbl_rev0[] = {
2161
const u32 tdi_tbl20_ant0_rev0[] = {
2219
const u32 tdi_tbl20_ant1_rev0[] = {
2277
const u32 tdi_tbl40_ant0_rev0[] = {
2390
const u32 tdi_tbl40_ant1_rev0[] = {
2503
const u16 bdi_tbl_rev0[] = {
2512
const u32 chanest_tbl_rev0[] = {
2611
const u8 mcs_tbl_rev0[] = {
2742
const u32 noise_var_tbl0_rev0[] = {
3001
const u32 noise_var_tbl1_rev0[] = {
3260
const u8 est_pwr_lut_core0_rev0[] = {
3327
const u8 est_pwr_lut_core1_rev0[] = {
3394
const u8 adj_pwr_lut_core0_rev0[] = {
3525
const u8 adj_pwr_lut_core1_rev0[] = {
3656
const u32 gainctrl_lut_core0_rev0[] = {
3787
const u32 gainctrl_lut_core1_rev0[] = {
3918
const u32 iq_lut_core0_rev0[] = {
4049
const u32 iq_lut_core1_rev0[] = {
4180
const u16 loft_lut_core0_rev0[] = {
4311
const u16 loft_lut_core1_rev0[] = {
4442
const mimophytbl_info_t mimophytbl_info_rev0_volatile[] = {
4443
{&bdi_tbl_rev0, sizeof(bdi_tbl_rev0) / sizeof(bdi_tbl_rev0[0]), 21, 0,
4446
{&pltlut_tbl_rev0, sizeof(pltlut_tbl_rev0) / sizeof(pltlut_tbl_rev0[0]),
4449
{&gainctrl_lut_core0_rev0,
4450
sizeof(gainctrl_lut_core0_rev0) / sizeof(gainctrl_lut_core0_rev0[0]),
4453
{&gainctrl_lut_core1_rev0,
4454
sizeof(gainctrl_lut_core1_rev0) / sizeof(gainctrl_lut_core1_rev0[0]),
4458
{&est_pwr_lut_core0_rev0,
4459
sizeof(est_pwr_lut_core0_rev0) / sizeof(est_pwr_lut_core0_rev0[0]), 26,
4462
{&est_pwr_lut_core1_rev0,
4463
sizeof(est_pwr_lut_core1_rev0) / sizeof(est_pwr_lut_core1_rev0[0]), 27,
4466
{&adj_pwr_lut_core0_rev0,
4467
sizeof(adj_pwr_lut_core0_rev0) / sizeof(adj_pwr_lut_core0_rev0[0]), 26,
4470
{&adj_pwr_lut_core1_rev0,
4471
sizeof(adj_pwr_lut_core1_rev0) / sizeof(adj_pwr_lut_core1_rev0[0]), 27,
4474
{&iq_lut_core0_rev0,
4475
sizeof(iq_lut_core0_rev0) / sizeof(iq_lut_core0_rev0[0]), 26, 320, 32}
4477
{&iq_lut_core1_rev0,
4478
sizeof(iq_lut_core1_rev0) / sizeof(iq_lut_core1_rev0[0]), 27, 320, 32}
4480
{&loft_lut_core0_rev0,
4481
sizeof(loft_lut_core0_rev0) / sizeof(loft_lut_core0_rev0[0]), 26, 448,
4484
{&loft_lut_core1_rev0,
4485
sizeof(loft_lut_core1_rev0) / sizeof(loft_lut_core1_rev0[0]), 27, 448,
4490
const mimophytbl_info_t mimophytbl_info_rev0[] = {
4491
{&frame_struct_rev0,
4492
sizeof(frame_struct_rev0) / sizeof(frame_struct_rev0[0]), 10, 0, 32}
4494
{&frame_lut_rev0, sizeof(frame_lut_rev0) / sizeof(frame_lut_rev0[0]),
4497
{&tmap_tbl_rev0, sizeof(tmap_tbl_rev0) / sizeof(tmap_tbl_rev0[0]), 12,
4500
{&tdtrn_tbl_rev0, sizeof(tdtrn_tbl_rev0) / sizeof(tdtrn_tbl_rev0[0]),
4503
{&intlv_tbl_rev0, sizeof(intlv_tbl_rev0) / sizeof(intlv_tbl_rev0[0]),
4506
{&pilot_tbl_rev0, sizeof(pilot_tbl_rev0) / sizeof(pilot_tbl_rev0[0]),
4509
{&tdi_tbl20_ant0_rev0,
4510
sizeof(tdi_tbl20_ant0_rev0) / sizeof(tdi_tbl20_ant0_rev0[0]), 19, 128,
4513
{&tdi_tbl20_ant1_rev0,
4514
sizeof(tdi_tbl20_ant1_rev0) / sizeof(tdi_tbl20_ant1_rev0[0]), 19, 256,
4517
{&tdi_tbl40_ant0_rev0,
4518
sizeof(tdi_tbl40_ant0_rev0) / sizeof(tdi_tbl40_ant0_rev0[0]), 19, 640,
4521
{&tdi_tbl40_ant1_rev0,
4522
sizeof(tdi_tbl40_ant1_rev0) / sizeof(tdi_tbl40_ant1_rev0[0]), 19, 768,
4526
sizeof(chanest_tbl_rev0) / sizeof(chanest_tbl_rev0[0]), 22, 0, 32}
4528
{&mcs_tbl_rev0, sizeof(mcs_tbl_rev0) / sizeof(mcs_tbl_rev0[0]), 18, 0, 8}
4530
{&noise_var_tbl0_rev0,
4531
sizeof(noise_var_tbl0_rev0) / sizeof(noise_var_tbl0_rev0[0]), 16, 0,
4534
{&noise_var_tbl1_rev0,
4535
sizeof(noise_var_tbl1_rev0) / sizeof(noise_var_tbl1_rev0[0]), 16, 128,
4540
const u32 mimophytbl_info_sz_rev0 =
4541
sizeof(mimophytbl_info_rev0) / sizeof(mimophytbl_info_rev0[0]);
4542
const u32 mimophytbl_info_sz_rev0_volatile =
4543
sizeof(mimophytbl_info_rev0_volatile) /
4544
sizeof(mimophytbl_info_rev0_volatile[0]);
4546
const u16 ant_swctrl_tbl_rev3[] = {
4581
const u16 ant_swctrl_tbl_rev3_1[] = {
4616
const u16 ant_swctrl_tbl_rev3_2[] = {
4651
const u16 ant_swctrl_tbl_rev3_3[] = {
4686
const u32 frame_struct_rev3[] = {
5521
const u16 pilot_tbl_rev3[] = {
5612
const u32 tmap_tbl_rev3[] = {
6063
const u32 intlv_tbl_rev3[] = {
6073
const u32 tdtrn_tbl_rev3[] = {
6780
const u32 noise_var_tbl_rev3[] = {
7039
const u16 mcs_tbl_rev3[] = {
7170
const u32 tdi_tbl20_ant0_rev3[] = {
7228
const u32 tdi_tbl20_ant1_rev3[] = {
7286
const u32 tdi_tbl40_ant0_rev3[] = {
7399
const u32 tdi_tbl40_ant1_rev3[] = {
7512
const u32 pltlut_tbl_rev3[] = {
7521
const u32 chanest_tbl_rev3[] = {
7620
const u8 frame_lut_rev3[] = {
7655
const u8 est_pwr_lut_core0_rev3[] = {
7722
const u8 est_pwr_lut_core1_rev3[] = {
7789
const u8 adj_pwr_lut_core0_rev3[] = {
7920
const u8 adj_pwr_lut_core1_rev3[] = {
8051
const u32 gainctrl_lut_core0_rev3[] = {
8182
const u32 gainctrl_lut_core1_rev3[] = {
8313
const u32 iq_lut_core0_rev3[] = {
8444
const u32 iq_lut_core1_rev3[] = {
8575
const u16 loft_lut_core0_rev3[] = {
8706
const u16 loft_lut_core1_rev3[] = {
8837
const u16 papd_comp_rfpwr_tbl_core0_rev3[] = {
8968
const u16 papd_comp_rfpwr_tbl_core1_rev3[] = {
9099
const u32 papd_comp_epsilon_tbl_core0_rev3[] = {
9166
const u32 papd_cal_scalars_tbl_core0_rev3[] = {
9233
const u32 papd_comp_epsilon_tbl_core1_rev3[] = {
9300
const u32 papd_cal_scalars_tbl_core1_rev3[] = {
9367
const mimophytbl_info_t mimophytbl_info_rev3_volatile[] = {
9368
{&ant_swctrl_tbl_rev3,
9369
sizeof(ant_swctrl_tbl_rev3) / sizeof(ant_swctrl_tbl_rev3[0]), 9, 0, 16}
9373
const mimophytbl_info_t mimophytbl_info_rev3_volatile1[] = {
9374
{&ant_swctrl_tbl_rev3_1,
9375
sizeof(ant_swctrl_tbl_rev3_1) / sizeof(ant_swctrl_tbl_rev3_1[0]), 9, 0,
9380
const mimophytbl_info_t mimophytbl_info_rev3_volatile2[] = {
9381
{&ant_swctrl_tbl_rev3_2,
9382
sizeof(ant_swctrl_tbl_rev3_2) / sizeof(ant_swctrl_tbl_rev3_2[0]), 9, 0,
9387
const mimophytbl_info_t mimophytbl_info_rev3_volatile3[] = {
9388
{&ant_swctrl_tbl_rev3_3,
9389
sizeof(ant_swctrl_tbl_rev3_3) / sizeof(ant_swctrl_tbl_rev3_3[0]), 9, 0,
9394
const mimophytbl_info_t mimophytbl_info_rev3[] = {
9395
{&frame_struct_rev3,
9396
sizeof(frame_struct_rev3) / sizeof(frame_struct_rev3[0]), 10, 0, 32}
9398
{&pilot_tbl_rev3, sizeof(pilot_tbl_rev3) / sizeof(pilot_tbl_rev3[0]),
9401
{&tmap_tbl_rev3, sizeof(tmap_tbl_rev3) / sizeof(tmap_tbl_rev3[0]), 12,
9404
{&intlv_tbl_rev3, sizeof(intlv_tbl_rev3) / sizeof(intlv_tbl_rev3[0]),
9407
{&tdtrn_tbl_rev3, sizeof(tdtrn_tbl_rev3) / sizeof(tdtrn_tbl_rev3[0]),
9410
{&noise_var_tbl_rev3,
9411
sizeof(noise_var_tbl_rev3) / sizeof(noise_var_tbl_rev3[0]), 16, 0, 32}
9413
{&mcs_tbl_rev3, sizeof(mcs_tbl_rev3) / sizeof(mcs_tbl_rev3[0]), 18, 0,
9416
{&tdi_tbl20_ant0_rev3,
9417
sizeof(tdi_tbl20_ant0_rev3) / sizeof(tdi_tbl20_ant0_rev3[0]), 19, 128,
9420
{&tdi_tbl20_ant1_rev3,
9421
sizeof(tdi_tbl20_ant1_rev3) / sizeof(tdi_tbl20_ant1_rev3[0]), 19, 256,
9424
{&tdi_tbl40_ant0_rev3,
9425
sizeof(tdi_tbl40_ant0_rev3) / sizeof(tdi_tbl40_ant0_rev3[0]), 19, 640,
9428
{&tdi_tbl40_ant1_rev3,
9429
sizeof(tdi_tbl40_ant1_rev3) / sizeof(tdi_tbl40_ant1_rev3[0]), 19, 768,
9432
{&pltlut_tbl_rev3, sizeof(pltlut_tbl_rev3) / sizeof(pltlut_tbl_rev3[0]),
9436
sizeof(chanest_tbl_rev3) / sizeof(chanest_tbl_rev3[0]), 22, 0, 32}
9438
{&frame_lut_rev3, sizeof(frame_lut_rev3) / sizeof(frame_lut_rev3[0]),
9441
{&est_pwr_lut_core0_rev3,
9442
sizeof(est_pwr_lut_core0_rev3) / sizeof(est_pwr_lut_core0_rev3[0]), 26,
9445
{&est_pwr_lut_core1_rev3,
9446
sizeof(est_pwr_lut_core1_rev3) / sizeof(est_pwr_lut_core1_rev3[0]), 27,
9449
{&adj_pwr_lut_core0_rev3,
9450
sizeof(adj_pwr_lut_core0_rev3) / sizeof(adj_pwr_lut_core0_rev3[0]), 26,
9453
{&adj_pwr_lut_core1_rev3,
9454
sizeof(adj_pwr_lut_core1_rev3) / sizeof(adj_pwr_lut_core1_rev3[0]), 27,
9457
{&gainctrl_lut_core0_rev3,
9458
sizeof(gainctrl_lut_core0_rev3) / sizeof(gainctrl_lut_core0_rev3[0]),
9461
{&gainctrl_lut_core1_rev3,
9462
sizeof(gainctrl_lut_core1_rev3) / sizeof(gainctrl_lut_core1_rev3[0]),
9465
{&iq_lut_core0_rev3,
9466
sizeof(iq_lut_core0_rev3) / sizeof(iq_lut_core0_rev3[0]), 26, 320, 32}
9468
{&iq_lut_core1_rev3,
9469
sizeof(iq_lut_core1_rev3) / sizeof(iq_lut_core1_rev3[0]), 27, 320, 32}
9471
{&loft_lut_core0_rev3,
9472
sizeof(loft_lut_core0_rev3) / sizeof(loft_lut_core0_rev3[0]), 26, 448,
9475
{&loft_lut_core1_rev3,
9476
sizeof(loft_lut_core1_rev3) / sizeof(loft_lut_core1_rev3[0]), 27, 448,
9480
const u32 mimophytbl_info_sz_rev3 =
9481
sizeof(mimophytbl_info_rev3) / sizeof(mimophytbl_info_rev3[0]);
9482
const u32 mimophytbl_info_sz_rev3_volatile =
9483
sizeof(mimophytbl_info_rev3_volatile) /
9484
sizeof(mimophytbl_info_rev3_volatile[0]);
9485
const u32 mimophytbl_info_sz_rev3_volatile1 =
9486
sizeof(mimophytbl_info_rev3_volatile1) /
9487
sizeof(mimophytbl_info_rev3_volatile1[0]);
9488
const u32 mimophytbl_info_sz_rev3_volatile2 =
9489
sizeof(mimophytbl_info_rev3_volatile2) /
9490
sizeof(mimophytbl_info_rev3_volatile2[0]);
9491
const u32 mimophytbl_info_sz_rev3_volatile3 =
9492
sizeof(mimophytbl_info_rev3_volatile3) /
9493
sizeof(mimophytbl_info_rev3_volatile3[0]);
9495
const u32 tmap_tbl_rev7[] = {
9946
const u32 noise_var_tbl_rev7[] = {
10205
const u32 papd_comp_epsilon_tbl_core0_rev7[] = {
10272
const u32 papd_cal_scalars_tbl_core0_rev7[] = {
10339
const u32 papd_comp_epsilon_tbl_core1_rev7[] = {
10406
const u32 papd_cal_scalars_tbl_core1_rev7[] = {
10473
const mimophytbl_info_t mimophytbl_info_rev7[] = {
10474
{&frame_struct_rev3,
10475
sizeof(frame_struct_rev3) / sizeof(frame_struct_rev3[0]), 10, 0, 32}
10477
{&pilot_tbl_rev3, sizeof(pilot_tbl_rev3) / sizeof(pilot_tbl_rev3[0]),
10480
{&tmap_tbl_rev7, sizeof(tmap_tbl_rev7) / sizeof(tmap_tbl_rev7[0]), 12,
10483
{&intlv_tbl_rev3, sizeof(intlv_tbl_rev3) / sizeof(intlv_tbl_rev3[0]),
10486
{&tdtrn_tbl_rev3, sizeof(tdtrn_tbl_rev3) / sizeof(tdtrn_tbl_rev3[0]),
10489
{&noise_var_tbl_rev7,
10490
sizeof(noise_var_tbl_rev7) / sizeof(noise_var_tbl_rev7[0]), 16, 0, 32}
10492
{&mcs_tbl_rev3, sizeof(mcs_tbl_rev3) / sizeof(mcs_tbl_rev3[0]), 18, 0,
10495
{&tdi_tbl20_ant0_rev3,
10496
sizeof(tdi_tbl20_ant0_rev3) / sizeof(tdi_tbl20_ant0_rev3[0]), 19, 128,
10499
{&tdi_tbl20_ant1_rev3,
10500
sizeof(tdi_tbl20_ant1_rev3) / sizeof(tdi_tbl20_ant1_rev3[0]), 19, 256,
10503
{&tdi_tbl40_ant0_rev3,
10504
sizeof(tdi_tbl40_ant0_rev3) / sizeof(tdi_tbl40_ant0_rev3[0]), 19, 640,
10507
{&tdi_tbl40_ant1_rev3,
10508
sizeof(tdi_tbl40_ant1_rev3) / sizeof(tdi_tbl40_ant1_rev3[0]), 19, 768,
10511
{&pltlut_tbl_rev3, sizeof(pltlut_tbl_rev3) / sizeof(pltlut_tbl_rev3[0]),
10514
{&chanest_tbl_rev3,
10515
sizeof(chanest_tbl_rev3) / sizeof(chanest_tbl_rev3[0]), 22, 0, 32}
10517
{&frame_lut_rev3, sizeof(frame_lut_rev3) / sizeof(frame_lut_rev3[0]),
10520
{&est_pwr_lut_core0_rev3,
10521
sizeof(est_pwr_lut_core0_rev3) / sizeof(est_pwr_lut_core0_rev3[0]), 26,
10524
{&est_pwr_lut_core1_rev3,
10525
sizeof(est_pwr_lut_core1_rev3) / sizeof(est_pwr_lut_core1_rev3[0]), 27,
10528
{&adj_pwr_lut_core0_rev3,
10529
sizeof(adj_pwr_lut_core0_rev3) / sizeof(adj_pwr_lut_core0_rev3[0]), 26,
10532
{&adj_pwr_lut_core1_rev3,
10533
sizeof(adj_pwr_lut_core1_rev3) / sizeof(adj_pwr_lut_core1_rev3[0]), 27,
10536
{&gainctrl_lut_core0_rev3,
10537
sizeof(gainctrl_lut_core0_rev3) / sizeof(gainctrl_lut_core0_rev3[0]),
10540
{&gainctrl_lut_core1_rev3,
10541
sizeof(gainctrl_lut_core1_rev3) / sizeof(gainctrl_lut_core1_rev3[0]),
10544
{&iq_lut_core0_rev3,
10545
sizeof(iq_lut_core0_rev3) / sizeof(iq_lut_core0_rev3[0]), 26, 320, 32}
10547
{&iq_lut_core1_rev3,
10548
sizeof(iq_lut_core1_rev3) / sizeof(iq_lut_core1_rev3[0]), 27, 320, 32}
10550
{&loft_lut_core0_rev3,
10551
sizeof(loft_lut_core0_rev3) / sizeof(loft_lut_core0_rev3[0]), 26, 448,
10554
{&loft_lut_core1_rev3,
10555
sizeof(loft_lut_core1_rev3) / sizeof(loft_lut_core1_rev3[0]), 27, 448,
10558
{&papd_comp_rfpwr_tbl_core0_rev3,
10559
sizeof(papd_comp_rfpwr_tbl_core0_rev3) /
10560
sizeof(papd_comp_rfpwr_tbl_core0_rev3[0]), 26, 576, 16}
10562
{&papd_comp_rfpwr_tbl_core1_rev3,
10563
sizeof(papd_comp_rfpwr_tbl_core1_rev3) /
10564
sizeof(papd_comp_rfpwr_tbl_core1_rev3[0]), 27, 576, 16}
10566
{&papd_comp_epsilon_tbl_core0_rev7,
10567
sizeof(papd_comp_epsilon_tbl_core0_rev7) /
10568
sizeof(papd_comp_epsilon_tbl_core0_rev7[0]), 31, 0, 32}
10570
{&papd_cal_scalars_tbl_core0_rev7,
10571
sizeof(papd_cal_scalars_tbl_core0_rev7) /
10572
sizeof(papd_cal_scalars_tbl_core0_rev7[0]), 32, 0, 32}
10574
{&papd_comp_epsilon_tbl_core1_rev7,
10575
sizeof(papd_comp_epsilon_tbl_core1_rev7) /
10576
sizeof(papd_comp_epsilon_tbl_core1_rev7[0]), 33, 0, 32}
10578
{&papd_cal_scalars_tbl_core1_rev7,
10579
sizeof(papd_cal_scalars_tbl_core1_rev7) /
10580
sizeof(papd_cal_scalars_tbl_core1_rev7[0]), 34, 0, 32}
10584
const u32 mimophytbl_info_sz_rev7 =
10585
sizeof(mimophytbl_info_rev7) / sizeof(mimophytbl_info_rev7[0]);
10587
const mimophytbl_info_t mimophytbl_info_rev16[] = {
10588
{&noise_var_tbl_rev7,
10589
sizeof(noise_var_tbl_rev7) / sizeof(noise_var_tbl_rev7[0]), 16, 0, 32}
10591
{&est_pwr_lut_core0_rev3,
10592
sizeof(est_pwr_lut_core0_rev3) / sizeof(est_pwr_lut_core0_rev3[0]), 26,
10595
{&est_pwr_lut_core1_rev3,
10596
sizeof(est_pwr_lut_core1_rev3) / sizeof(est_pwr_lut_core1_rev3[0]), 27,
10599
{&adj_pwr_lut_core0_rev3,
10600
sizeof(adj_pwr_lut_core0_rev3) / sizeof(adj_pwr_lut_core0_rev3[0]), 26,
10603
{&adj_pwr_lut_core1_rev3,
10604
sizeof(adj_pwr_lut_core1_rev3) / sizeof(adj_pwr_lut_core1_rev3[0]), 27,
10607
{&gainctrl_lut_core0_rev3,
10608
sizeof(gainctrl_lut_core0_rev3) / sizeof(gainctrl_lut_core0_rev3[0]),
10611
{&gainctrl_lut_core1_rev3,
10612
sizeof(gainctrl_lut_core1_rev3) / sizeof(gainctrl_lut_core1_rev3[0]),
10615
{&iq_lut_core0_rev3,
10616
sizeof(iq_lut_core0_rev3) / sizeof(iq_lut_core0_rev3[0]), 26, 320, 32}
10618
{&iq_lut_core1_rev3,
10619
sizeof(iq_lut_core1_rev3) / sizeof(iq_lut_core1_rev3[0]), 27, 320, 32}
10621
{&loft_lut_core0_rev3,
10622
sizeof(loft_lut_core0_rev3) / sizeof(loft_lut_core0_rev3[0]), 26, 448,
10625
{&loft_lut_core1_rev3,
10626
sizeof(loft_lut_core1_rev3) / sizeof(loft_lut_core1_rev3[0]), 27, 448,
10631
const u32 mimophytbl_info_sz_rev16 =
10632
sizeof(mimophytbl_info_rev16) / sizeof(mimophytbl_info_rev16[0]);