#ifndef __REF_VOLT_TABLE_H__ #define __REF_VOLT_TABLE_H__ const u32 v1_voltage_tbl[V1_VOLTAGE_COUNT] = { 4999168, 4990976, 4982784, 4974592, 4966400, 4957184, 4948992, 4940800, 4932608, 4924416, 4916224, 4907008, 4898816, 4890624, 4882432, 4874240, 4865024, 4856832, 4848640, 4840448, 4832256, 4823040, 4814848, 4806656, 4798464, 4790272, 4781056, 4772864, 4764672, 4756480, 4748288, 4739072, 4730880, 4722688, 4714496, 4706304, 4698112, 4688896, 4680704, 4672512, 4664320, 4656128, 4646912, 4638720, 4630528, 4622336, 4614144, 4604928, 4596736, 4588544, 4580352, 4572160, 4562944, 4554752, 4546560, 4538368, 4530176, 4520960, 4512768, 4504576, 4496384, 4488192, 4480000, 4470784, 4462592, 4454400, 4446208, 4438016, 4428800, 4420608, 4412416, 4404224, 4396032, 4386816, 4378624, 4370432, 4362240, 4354048, 4344832, 4336640, 4328448, 4320256, 4312064, 4302848, 4294656, 4286464, 4278272, 4270080, 4261888, 4252672, 4244480, 4236288, 4228096, 4219904, 4210688, 4202496, 4194304, 4186112, 4177920, 4168704, 4160512, 4152320, 4144128, 4135936, 4126720, 4118528, 4110336, 4102144, 4093952, 4085760, 4076544, 4068352, 4060160, 4051968, 4043776, 4034560, 4026368, 4018176, 4009984, 4001792, 3992576, 3984384, 3976192, 3968000, 3959808, 3950592, 3942400, 3934208, 3926016, 3917824, 3908608, 3900416, 3892224, 3884032, 3875840, 3867648, 3858432, 3850240, 3842048, 3833856, 3825664, 3816448, 3808256, 3800064, 3791872, 3783680, 3774464, 3766272, 3758080, 3749888, }; const u32 cv20_dv320_ratio_tbl[V15_VOLTAGE_COUNT] = { 64, 67, 70, 74, 77, 80, 83, 86, 90, 93, 96, 99, 102, 106, 109, 112, 115, 118, 122, 125, 128, 131, 134, 138, 141, 144, 147, 150, 154, 157, 160, 163, 166, 170, 173, 176, 179, 182, 186, 189, 192, 195, 198, 202, 205, 208, 211, 214, 218, 221, 224, 227, 230, 234, 237, 240, 243, 246, 250, 253, 256, 259, 262, 266, 269, 272, 275, 278, 282, 285, 288, 291, 294, 298, 301, 304, 307, 310, 314, 317, 320, 323, 326, 330, 333, 336, 339, 342, 346, 349, 352, 355, 358, 362, 365, 368, 371, 374, 378, 381, 384, 387, 390, 394, 397, 400, 403, 406, 410, 413, 416, 419, 422, 426, 429, 432, 435, 438, 442, 445, 448, 451, 454, 458, 461, 464, 467, 470, 474, 477, 480, 483, 486, 490, 493, 496, 499, 502, 506, 509, 512, 515, 518, 522, 525, 528, 531, 534, 538, 541, 544, 547, 550, 554, 557, 560, 563, 566, 570, 573, 576, 579, 582, 586, 589, 592, 595, 598, 602, 605, 608, 611, 614, 618, 621, 624, 627, 630, 634, 637, 640, 643, 646, 650, 653, 656, 659, 662, 666, 669, 672, 675, 678, 682, 685, 688, 691, 694, 698, 701, 704, 707, 710, 714, 717, 720, 723, 726, 730, 733, 736, 739, 742, 746, 749, 752, 755, 758, 762, 765, 768, 771, 774, 778, 781, 784, 787, 790, 794, 797, 800, 803, 806, 810, 813, 816, 819, 822, 826, 829, 832, 835, 838, 842, 845, 848, 851, 854, 858, 861, 864, 867, 870, 874, 877, /* 880, */ }; const u32 cv64_dv320_ratio_tbl[V35_VOLTAGE_COUNT] = { 205, 208, 211, 214, 218, 221, 224, 227, 230, 234, 237, 240, 243, 246, 250, 253, 256, 259, 262, 266, 269, 272, 275, 278, 282, 285, 288, 291, 294, 298, 301, 304, 307, 310, 314, 317, 320, 323, 326, 330, 333, 336, 339, 342, 346, 349, 352, 355, 358, 362, 365, 368, 371, 374, 378, 381, 384, 387, 390, 394, 397, 400, 403, 406, 410, 413, 416, 419, 422, 426, 429, 432, 435, 438, 442, 445, 448, 451, 454, 458, 461, 464, 467, 470, 474, 477, 480, 483, 486, 490, 493, 496, 499, 502, 506, 509, 512, 515, 518, 522, 525, 528, 531, 534, 538, 541, 544, 547, 550, 554, 557, 560, 563, 566, 570, 573, 576, 579, 582, 586, 589, 592, 595, 598, 602, 605, 608, 611, 614, 618, 621, 624, 627, 630, 634, 637, 640, 643, 646, 650, 653, 656, 659, 662, 666, 669, 672, 675, 678, 682, 685, 688, 691, 694, 698, 701, 704, 707, 710, 714, 717, 720, 723, 726, 730, 733, 736, 739, 742, 746, 749, 752, 755, 758, 762, 765, 768, 771, 774, 778, 781, 784, 787, 790, 794, 797, 800, 803, 806, 810, 813, 816, 819, 822, 826, 829, 832, 835, 838, 842, 845, 848, 851, 854, 858, 861, 864, 867, 870, 874, 877, 880, 883, 886, 890, 893, 896, 899, 902, 906, 909, 912, 915, 918, 922, 925, 928, 931, 934, 938, 941, 944, 947, 950, 954, 957, 960, 963, 966, 970, 973, 976, 979, 982, 986, 989, 992, 995, 998, 1002, 1005, 1008, 1011, 1014, 1018, /* 1021, */ }; const u32 v255_voltage_tbl[V255_VOLTAGE_COUNT] = { 4194304, 4186112, 4177920, 4168704, 4160512, 4152320, 4144128, 4135936, 4126720, 4118528, 4110336, 4102144, 4093952, 4085760, 4076544, 4068352, 4060160, 4051968, 4043776, 4034560, 4026368, 4018176, 4009984, 4001792, 3992576, 3984384, 3976192, 3968000, 3959808, 3950592, 3942400, 3934208, 3926016, 3917824, 3908608, 3900416, 3892224, 3884032, 3875840, 3867648, 3858432, 3850240, 3842048, 3833856, 3825664, 3816448, 3808256, 3800064, 3791872, 3783680, 3774464, 3766272, 3758080, 3749888, 3741696, 3732480, 3724288, 3716096, 3707904, 3699712, 3690496, 3682304, 3674112, 3665920, 3657728, 3649536, 3640320, 3632128, 3623936, 3615744, 3607552, 3598336, 3590144, 3581952, 3573760, 3565568, 3556352, 3548160, 3539968, 3531776, 3523584, 3514368, 3506176, 3497984, 3489792, 3481600, 3472384, 3464192, 3456000, 3447808, 3439616, 3431424, 3422208, 3414016, 3405824, 3397632, 3389440, 3380224, 3372032, 3363840, 3355648, 3347456, 3338240, 3330048, 3321856, 3313664, 3305472, 3296256, 3288064, 3279872, 3271680, 3263488, 3254272, 3246080, 3237888, 3229696, 3221504, 3213312, 3204096, 3195904, 3187712, 3179520, 3171328, 3162112, 3153920, 3145728, 3137536, 3129344, 3120128, 3111936, 3103744, 3095552, 3087360, 3078144, 3069952, 3061760, 3053568, 3045376, 3037184, 3027968, 3019776, 3011584, 3003392, 2995200, 2985984, 2977792, 2969600, 2961408, 2953216, 2944000, 2935808, 2927616, 2919424, 2911232, 2902016, 2893824, 2885632, 2877440, 2869248, 2860032, 2851840, 2843648, 2835456, 2827264, 2819072, 2809856, 2801664, 2793472, 2785280, 2777088, 2767872, 2759680, 2751488, 2743296, 2735104, 2725888, 2717696, 2709504, 2701312, 2693120, 2683904, 2675712, 2667520, 2659328, 2651136, 2641920, 2633728, 2625536, 2617344, 2609152, 2600960, 2591744, 2583552, 2575360, 2567168, 2558976, 2549760, 2541568, 2533376, 2525184, 2516992, 2507776, 2499584, 2491392, 2483200, 2475008, 2465792, 2457600, 2449408, 2441216, 2433024, 2423808, 2415616, 2407424, 2399232, 2391040, 2382848, 2373632, 2365440, 2357248, 2349056, 2340864, 2331648, 2323456, 2315264, 2307072, 2298880, 2289664, 2281472, 2273280, 2265088, 2256896, 2247680, 2239488, 2231296, 2223104, 2214912, 2205696, 2197504, 2189312, 2181120, 2172928, 2164736, 2155520, 2147328, 2139136, 2130944, 2122752, 2113536, 2105344, 2097152, 2088960, 2080768, 2071552, 2063360, 2055168, 2046976, 2038784, 2029568, 2021376, 2013184, 2004992, 1996800, 1988608, 1979392, 1971200, 1963008, 1954816, 1946624, 1937408, 1929216, 1921024, 1912832, 1904640, 1895424, 1887232, 1879040, 1870848, 1862656, 1853440, 1845248, 1837056, 1828864, 1820672, 1811456, 1803264, 1795072, 1786880, 1778688, 1770496, 1761280, 1753088, 1744896, 1736704, 1728512, 1719296, 1711104, 1702912, 1694720, 1686528, 1677312, 1669120, 1660928, 1652736, 1644544, 1635328, 1627136, 1618944, 1610752, 1602560, 1593344, 1585152, 1576960, 1568768, 1560576, 1552384, 1543168, 1534976, 1526784, 1518592, 1510400, 1501184, 1492992, 1484800, 1476608, 1468416, 1459200, 1451008, 1442816, 1434624, 1426432, 1417216, 1409024, 1400832, 1392640, 1384448, 1375232, 1367040, 1358848, 1350656, 1342464, 1334272, 1325056, 1316864, 1308672, 1300480, 1292288, 1283072, 1274880, 1266688, 1258496, 1250304, 1241088, 1232896, 1224704, 1216512, 1208320, 1199104, 1190912, 1182720, 1174528, 1166336, 1157120, 1148928, 1140736, 1132544, 1124352, 1116160, 1106944, 1098752, 1090560, 1082368, 1074176, 1064960, 1056768, 1048576, 1040384, 1032192, 1022976, 1014784, 1006592, 998400, 990208, 980992, 972800, 964608, 956416, 948224, 940032, 930816, }; const u32 gamma_22_tbl[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, 13, 14, 15, 16, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 30, 31, 32, 34, 35, 36, 38, 39, 41, 42, 44, 46, 47, 49, 51, 52, 54, 56, 58, 60, 61, 63, 65, 67, 69, 71, 73, 76, 78, 80, 82, 84, 87, 89, 91, 94, 96, 99, 101, 104, 106, 109, 111, 114, 117, 119, 122, 125, 128, 131, 133, 136, 139, 142, 145, 148, 152, 155, 158, 161, 164, 168, 171, 174, 178, 181, 184, 188, 191, 195, 199, 202, 206, 210, 213, 217, 221, 225, 229, 233, 237, 241, 245, 249, 253, 257, 261, 265, 270, 274, 278, 282, 287, 291, 296, 300, 305, 309, 314, 319, 323, 328, 333, 338, 342, 347, 352, 357, 362, 367, 372, 377, 383, 388, 393, 398, 404, 409, 414, 420, 425, 431, 436, 442, 447, 453, 459, 464, 470, 476, 482, 488, 494, 499, 505, 512, 518, 524, 530, 536, 542, 549, 555, 561, 568, 574, 580, 587, 593, 600, 607, 613, 620, 627, 634, 640, 647, 654, 661, 668, 675, 682, 689, 696, 704, 711, 718, 725, 733, 740, 747, 755, 762, 770, 778, 785, 793, 801, 808, 816, 824, 832, 840, 848, 856, 864, 872, 880, 888, 896, 904, 913, 921, 929, 938, 946, 955, 963, 972, 980, 989, 998, 1006, 1015, 1024, }; const u32 gamma_250_gra_table[256] = { 0, 1, 6, 15, 27, 45, 67, 94, 126, 163, 206, 254, 308, 367, 432, 503, 579, 662, 751, 846, 947, 1054, 1167, 1287, 1414, 1546, 1686, 1832, 1984, 2144, 2310, 2482, 2662, 2848, 3042, 3242, 3449, 3664, 3885, 4113, 4349, 4592, 4842, 5099, 5364, 5635, 5915, 6201, 6495, 6796, 7105, 7422, 7746, 8077, 8416, 8763, 9117, 9479, 9849, 10226, 10612, 11005, 11405, 11814, 12231, 12655, 13087, 13527, 13976, 14432, 14896, 15368, 15848, 16337, 16833, 17338, 17850, 18371, 18900, 19437, 19982, 20536, 21098, 21668, 22247, 22834, 23429, 24032, 24644, 25264, 25893, 26530, 27176, 27830, 28493, 29164, 29843, 30532, 31228, 31934, 32648, 33370, 34101, 34841, 35590, 36347, 37113, 37888, 38671, 39463, 40264, 41074, 41892, 42719, 43555, 44400, 45254, 46117, 46989, 47869, 48759, 49657, 50564, 51481, 52406, 53340, 54283, 55236, 56197, 57167, 58147, 59136, 60133, 61140, 62156, 63181, 64215, 65258, 66311, 67373, 68444, 69524, 70613, 71712, 72820, 73937, 75063, 76199, 77344, 78499, 79662, 80835, 82018, 83209, 84411, 85621, 86841, 88071, 89309, 90558, 91815, 93083, 94359, 95645, 96941, 98246, 99561, 100885, 102219, 103562, 104915, 106278, 107650, 109032, 110423, 111824, 113235, 114655, 116085, 117524, 118974, 120433, 121901, 123380, 124868, 126366, 127873, 129391, 130918, 132455, 134001, 135558, 137124, 138700, 140286, 141882, 143488, 145103, 146729, 148364, 150009, 151664, 153329, 155004, 156689, 158384, 160088, 161803, 163528, 165262, 167007, 168761, 170526, 172301, 174085, 175880, 177685, 179499, 181324, 183159, 185004, 186859, 188724, 190600, 192485, 194381, 196286, 198202, 200128, 202064, 204011, 205967, 207934, 209911, 211898, 213895, 215903, 217920, 219948, 221987, 224035, 226094, 228163, 230242, 232332, 234432, 236542, 238663, 240794, 242935, 245087, 247249, 249421, 251604, 253797, 256000, }; const struct str_flookup_table flookup_tbl[250] = { { 0, 0}, { 1, 21}, { 21, 8}, { 29, 6}, { 35, 4}, { 39, 5}, { 44, 3}, { 47, 4}, { 51, 3}, { 54, 3}, { 57, 3}, { 60, 2}, { 62, 3}, { 65, 2}, { 67, 2}, { 69, 2}, { 71, 3}, { 74, 2}, { 76, 2}, { 78, 2}, { 80, 1}, { 81, 2}, { 83, 2}, { 85, 2}, { 87, 1}, { 88, 2}, { 90, 2}, { 92, 1}, { 93, 2}, { 95, 1}, { 96, 2}, { 98, 1}, { 99, 2}, {101, 1}, {102, 1}, {103, 2}, {105, 1}, {106, 1}, {107, 2}, {109, 1}, {110, 1}, {111, 2}, {113, 1}, {114, 1}, {115, 1}, {116, 1}, {117, 2}, {119, 1}, {120, 1}, {121, 1}, {122, 1}, {123, 1}, {124, 1}, {125, 1}, {126, 2}, {128, 1}, {129, 1}, {130, 1}, {131, 1}, {132, 1}, {133, 1}, {134, 1}, {135, 1}, {136, 1}, {137, 1}, {138, 1}, {139, 1}, {140, 1}, {141, 1}, {142, 1}, { 0, 0}, {143, 1}, {144, 1}, {145, 1}, {146, 1}, {147, 1}, {148, 1}, {149, 1}, {150, 1}, {151, 1}, { 0, 0}, {152, 1}, {153, 1}, {154, 1}, {155, 1}, {156, 1}, { 0, 0}, {157, 1}, {158, 1}, {159, 1}, {160, 1}, {161, 1}, { 0, 0}, {162, 1}, {163, 1}, {164, 1}, {165, 1}, { 0, 0}, {166, 1}, {167, 1}, {168, 1}, { 0, 0}, {169, 1}, {170, 1}, {171, 1}, { 0, 0}, {172, 1}, {173, 1}, {174, 1}, { 0, 0}, {175, 1}, {176, 1}, {177, 1}, { 0, 0}, {178, 1}, {179, 1}, { 0, 0}, {180, 1}, {181, 1}, { 0, 0}, {182, 1}, {183, 1}, {184, 1}, { 0, 0}, {185, 1}, {186, 1}, { 0, 0}, {187, 1}, {188, 1}, { 0, 0}, {189, 1}, {190, 1}, { 0, 0}, {191, 1}, {192, 1}, { 0, 0}, {193, 1}, {194, 1}, { 0, 0}, {195, 1}, { 0, 0}, {196, 1}, {197, 1}, { 0, 0}, {198, 1}, {199, 1}, { 0, 0}, {200, 1}, { 0, 0}, {201, 1}, {202, 1}, { 0, 0}, {203, 1}, { 0, 0}, {204, 1}, {205, 1}, { 0, 0}, {206, 1}, { 0, 0}, {207, 1}, {208, 1}, { 0, 0}, {209, 1}, { 0, 0}, {210, 1}, {211, 1}, { 0, 0}, {212, 1}, { 0, 0}, {213, 1}, { 0, 0}, {214, 1}, {215, 1}, { 0, 0}, {216, 1}, { 0, 0}, {217, 1}, { 0, 0}, {218, 1}, {219, 1}, { 0, 0}, {220, 1}, { 0, 0}, {221, 1}, { 0, 0}, {222, 1}, { 0, 0}, {223, 1}, {224, 1}, { 0, 0}, {225, 1}, { 0, 0}, {226, 1}, { 0, 0}, {227, 1}, { 0, 0}, {228, 1}, { 0, 0}, {229, 1}, { 0, 0}, {230, 1}, { 0, 0}, {231, 1}, { 0, 0}, {232, 1}, {233, 1}, { 0, 0}, {234, 1}, { 0, 0}, {235, 1}, { 0, 0}, {236, 1}, { 0, 0}, {237, 1}, { 0, 0}, {238, 1}, { 0, 0}, {239, 1}, { 0, 0}, {240, 1}, { 0, 0}, {241, 1}, { 0, 0}, {242, 1}, { 0, 0}, {243, 1}, { 0, 0}, {244, 1}, { 0, 0}, {245, 1}, { 0, 0}, {246, 1}, { 0, 0}, { 0, 0}, {247, 1}, { 0, 0}, {248, 1}, { 0, 0}, {249, 1}, { 0, 0}, {250, 1}, { 0, 0}, {251, 1}, { 0, 0}, {252, 1}, { 0, 0}, {253, 1}, { 0, 0}, {254, 1}, { 0, 0}, /* { 0, 0}, {255, 1}, */ }; #endif