diff options
Diffstat (limited to 'drivers/staging/rtlwifi/phydm/rtl8822b')
17 files changed, 0 insertions, 11228 deletions
diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_bb.c b/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_bb.c deleted file mode 100644 index 52a113d731d9..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_bb.c +++ /dev/null @@ -1,1956 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -/*Image2HeaderVersion: 3.2*/ -#include "../mp_precomp.h" -#include "../phydm_precomp.h" -#include <linux/kernel.h> - -static bool check_positive(struct phy_dm_struct *dm, const u32 condition1, - const u32 condition2, const u32 condition3, - const u32 condition4) -{ - u8 _board_type = ((dm->board_type & BIT(4)) >> 4) << 0 | /* _GLNA*/ - ((dm->board_type & BIT(3)) >> 3) << 1 | /* _GPA*/ - ((dm->board_type & BIT(7)) >> 7) << 2 | /* _ALNA*/ - ((dm->board_type & BIT(6)) >> 6) << 3 | /* _APA */ - ((dm->board_type & BIT(2)) >> 2) << 4; /* _BT*/ - - u32 cond1 = condition1, cond2 = condition2, cond3 = condition3, - cond4 = condition4; - - u8 cut_version_for_para = - (dm->cut_version == ODM_CUT_A) ? 14 : dm->cut_version; - u8 pkg_type_for_para = (dm->package_type == 0) ? 14 : dm->package_type; - - u32 driver1 = cut_version_for_para << 24 | - (dm->support_interface & 0xF0) << 16 | - dm->support_platform << 16 | pkg_type_for_para << 12 | - (dm->support_interface & 0x0F) << 8 | _board_type; - - u32 driver2 = (dm->type_glna & 0xFF) << 0 | (dm->type_gpa & 0xFF) << 8 | - (dm->type_alna & 0xFF) << 16 | - (dm->type_apa & 0xFF) << 24; - - u32 driver3 = 0; - - u32 driver4 = (dm->type_glna & 0xFF00) >> 8 | (dm->type_gpa & 0xFF00) | - (dm->type_alna & 0xFF00) << 8 | - (dm->type_apa & 0xFF00) << 16; - - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", - __func__, cond1, cond2, cond3, cond4); - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", - __func__, driver1, driver2, driver3, driver4); - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - " (Platform, Interface) = (0x%X, 0x%X)\n", - dm->support_platform, dm->support_interface); - ODM_RT_TRACE(dm, ODM_COMP_INIT, - " (Board, Package) = (0x%X, 0x%X)\n", - dm->board_type, dm->package_type); - - /*============== value Defined Check ===============*/ - /*QFN type [15:12] and cut version [27:24] need to do value check*/ - - if (((cond1 & 0x0000F000) != 0) && - ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))) - return false; - if (((cond1 & 0x0F000000) != 0) && - ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))) - return false; - - /*=============== Bit Defined Check ================*/ - /* We don't care [31:28] */ - - cond1 &= 0x00FF0FFF; - driver1 &= 0x00FF0FFF; - - if ((cond1 & driver1) == cond1) { - u32 bit_mask = 0; - - if ((cond1 & 0x0F) == 0) /* board_type is DONTCARE*/ - return true; - - if ((cond1 & BIT(0)) != 0) /*GLNA*/ - bit_mask |= 0x000000FF; - if ((cond1 & BIT(1)) != 0) /*GPA*/ - bit_mask |= 0x0000FF00; - if ((cond1 & BIT(2)) != 0) /*ALNA*/ - bit_mask |= 0x00FF0000; - if ((cond1 & BIT(3)) != 0) /*APA*/ - bit_mask |= 0xFF000000; - - if (((cond2 & bit_mask) == (driver2 & bit_mask)) && - ((cond4 & bit_mask) == - (driver4 & - bit_mask))) /* board_type of each RF path is matched*/ - return true; - else - return false; - } else { - return false; - } -} - -/****************************************************************************** - * agc_tab.TXT - ******************************************************************************/ - -static u32 array_mp_8822b_agc_tab[] = { - 0x8000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x81C, 0xFF000003, - 0x81C, 0xF5000003, 0x81C, 0xF4020003, 0x81C, 0xF3040003, - 0x81C, 0xF2060003, 0x81C, 0xF1080003, 0x81C, 0xF00A0003, - 0x81C, 0xEF0C0003, 0x81C, 0xEE0E0003, 0x81C, 0xED100003, - 0x81C, 0xEC120003, 0x81C, 0xEB140003, 0x81C, 0xEA160003, - 0x81C, 0xE9180003, 0x81C, 0xE81A0003, 0x81C, 0xE71C0003, - 0x81C, 0xE61E0003, 0x81C, 0xE5200003, 0x81C, 0xE4220003, - 0x81C, 0xE3240003, 0x81C, 0xE2260003, 0x81C, 0xE1280003, - 0x81C, 0xE02A0003, 0x81C, 0xC32C0003, 0x81C, 0xC22E0003, - 0x81C, 0xC1300003, 0x81C, 0xC0320003, 0x81C, 0xA4340003, - 0x81C, 0xA3360003, 0x81C, 0xA2380003, 0x81C, 0xA13A0003, - 0x81C, 0xA03C0003, 0x81C, 0x823E0003, 0x81C, 0x81400003, - 0x81C, 0x80420003, 0x81C, 0x64440003, 0x81C, 0x63460003, - 0x81C, 0x62480003, 0x81C, 0x614A0003, 0x81C, 0x604C0003, - 0x81C, 0x454E0003, 0x81C, 0x44500003, 0x81C, 0x43520003, - 0x81C, 0x42540003, 0x81C, 0x41560003, 0x81C, 0x40580003, - 0x81C, 0x055A0003, 0x81C, 0x045C0003, 0x81C, 0x035E0003, - 0x81C, 0x02600003, 0x81C, 0x01620003, 0x81C, 0x00640003, - 0x81C, 0x00660003, 0x81C, 0x00680003, 0x81C, 0x006A0003, - 0x81C, 0x006C0003, 0x81C, 0x006E0003, 0x81C, 0x00700003, - 0x81C, 0x00720003, 0x81C, 0x00740003, 0x81C, 0x00760003, - 0x81C, 0x00780003, 0x81C, 0x007A0003, 0x81C, 0x007C0003, - 0x81C, 0x007E0003, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x81C, 0xFF000003, 0x81C, 0xF5000003, 0x81C, 0xF4020003, - 0x81C, 0xF3040003, 0x81C, 0xF2060003, 0x81C, 0xF1080003, - 0x81C, 0xF00A0003, 0x81C, 0xEF0C0003, 0x81C, 0xEE0E0003, - 0x81C, 0xED100003, 0x81C, 0xEC120003, 0x81C, 0xEB140003, - 0x81C, 0xEA160003, 0x81C, 0xE9180003, 0x81C, 0xE81A0003, - 0x81C, 0xE71C0003, 0x81C, 0xE61E0003, 0x81C, 0xE5200003, - 0x81C, 0xE4220003, 0x81C, 0xE3240003, 0x81C, 0xE2260003, - 0x81C, 0xE1280003, 0x81C, 0xE02A0003, 0x81C, 0xC32C0003, - 0x81C, 0xC22E0003, 0x81C, 0xC1300003, 0x81C, 0xC0320003, - 0x81C, 0xA4340003, 0x81C, 0xA3360003, 0x81C, 0xA2380003, - 0x81C, 0xA13A0003, 0x81C, 0xA03C0003, 0x81C, 0x823E0003, - 0x81C, 0x81400003, 0x81C, 0x80420003, 0x81C, 0x64440003, - 0x81C, 0x63460003, 0x81C, 0x62480003, 0x81C, 0x614A0003, - 0x81C, 0x604C0003, 0x81C, 0x454E0003, 0x81C, 0x44500003, - 0x81C, 0x43520003, 0x81C, 0x42540003, 0x81C, 0x41560003, - 0x81C, 0x40580003, 0x81C, 0x055A0003, 0x81C, 0x045C0003, - 0x81C, 0x035E0003, 0x81C, 0x02600003, 0x81C, 0x01620003, - 0x81C, 0x00640003, 0x81C, 0x00660003, 0x81C, 0x00680003, - 0x81C, 0x006A0003, 0x81C, 0x006C0003, 0x81C, 0x006E0003, - 0x81C, 0x00700003, 0x81C, 0x00720003, 0x81C, 0x00740003, - 0x81C, 0x00760003, 0x81C, 0x00780003, 0x81C, 0x007A0003, - 0x81C, 0x007C0003, 0x81C, 0x007E0003, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFF000003, 0x81C, 0xF5000003, - 0x81C, 0xF4020003, 0x81C, 0xF3040003, 0x81C, 0xF2060003, - 0x81C, 0xF1080003, 0x81C, 0xF00A0003, 0x81C, 0xEF0C0003, - 0x81C, 0xEE0E0003, 0x81C, 0xED100003, 0x81C, 0xEC120003, - 0x81C, 0xEB140003, 0x81C, 0xEA160003, 0x81C, 0xE9180003, - 0x81C, 0xE81A0003, 0x81C, 0xE71C0003, 0x81C, 0xE61E0003, - 0x81C, 0xE5200003, 0x81C, 0xE4220003, 0x81C, 0xE3240003, - 0x81C, 0xE2260003, 0x81C, 0xE1280003, 0x81C, 0xE02A0003, - 0x81C, 0xC32C0003, 0x81C, 0xC22E0003, 0x81C, 0xC1300003, - 0x81C, 0xC0320003, 0x81C, 0xA4340003, 0x81C, 0xA3360003, - 0x81C, 0xA2380003, 0x81C, 0xA13A0003, 0x81C, 0xA03C0003, - 0x81C, 0x823E0003, 0x81C, 0x81400003, 0x81C, 0x80420003, - 0x81C, 0x64440003, 0x81C, 0x63460003, 0x81C, 0x62480003, - 0x81C, 0x614A0003, 0x81C, 0x604C0003, 0x81C, 0x454E0003, - 0x81C, 0x44500003, 0x81C, 0x43520003, 0x81C, 0x42540003, - 0x81C, 0x41560003, 0x81C, 0x40580003, 0x81C, 0x055A0003, - 0x81C, 0x045C0003, 0x81C, 0x035E0003, 0x81C, 0x02600003, - 0x81C, 0x01620003, 0x81C, 0x00640003, 0x81C, 0x00660003, - 0x81C, 0x00680003, 0x81C, 0x006A0003, 0x81C, 0x006C0003, - 0x81C, 0x006E0003, 0x81C, 0x00700003, 0x81C, 0x00720003, - 0x81C, 0x00740003, 0x81C, 0x00760003, 0x81C, 0x00780003, - 0x81C, 0x007A0003, 0x81C, 0x007C0003, 0x81C, 0x007E0003, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x81C, 0xFF000003, - 0x81C, 0xF5000003, 0x81C, 0xF4020003, 0x81C, 0xF3040003, - 0x81C, 0xF2060003, 0x81C, 0xF1080003, 0x81C, 0xF00A0003, - 0x81C, 0xEF0C0003, 0x81C, 0xEE0E0003, 0x81C, 0xED100003, - 0x81C, 0xEC120003, 0x81C, 0xEB140003, 0x81C, 0xEA160003, - 0x81C, 0xE9180003, 0x81C, 0xE81A0003, 0x81C, 0xE71C0003, - 0x81C, 0xE61E0003, 0x81C, 0xE5200003, 0x81C, 0xE4220003, - 0x81C, 0xE3240003, 0x81C, 0xE2260003, 0x81C, 0xE1280003, - 0x81C, 0xE02A0003, 0x81C, 0xC32C0003, 0x81C, 0xC22E0003, - 0x81C, 0xC1300003, 0x81C, 0xC0320003, 0x81C, 0xA4340003, - 0x81C, 0xA3360003, 0x81C, 0xA2380003, 0x81C, 0xA13A0003, - 0x81C, 0xA03C0003, 0x81C, 0x823E0003, 0x81C, 0x81400003, - 0x81C, 0x80420003, 0x81C, 0x64440003, 0x81C, 0x63460003, - 0x81C, 0x62480003, 0x81C, 0x614A0003, 0x81C, 0x604C0003, - 0x81C, 0x454E0003, 0x81C, 0x44500003, 0x81C, 0x43520003, - 0x81C, 0x42540003, 0x81C, 0x41560003, 0x81C, 0x40580003, - 0x81C, 0x055A0003, 0x81C, 0x045C0003, 0x81C, 0x035E0003, - 0x81C, 0x02600003, 0x81C, 0x01620003, 0x81C, 0x00640003, - 0x81C, 0x00660003, 0x81C, 0x00680003, 0x81C, 0x006A0003, - 0x81C, 0x006C0003, 0x81C, 0x006E0003, 0x81C, 0x00700003, - 0x81C, 0x00720003, 0x81C, 0x00740003, 0x81C, 0x00760003, - 0x81C, 0x00780003, 0x81C, 0x007A0003, 0x81C, 0x007C0003, - 0x81C, 0x007E0003, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x81C, 0xFF000003, 0x81C, 0xFD000003, 0x81C, 0xFC020003, - 0x81C, 0xFB040003, 0x81C, 0xFA060003, 0x81C, 0xF9080003, - 0x81C, 0xF80A0003, 0x81C, 0xF70C0003, 0x81C, 0xF60E0003, - 0x81C, 0xF5100003, 0x81C, 0xF4120003, 0x81C, 0xF3140003, - 0x81C, 0xF2160003, 0x81C, 0xF1180003, 0x81C, 0xF01A0003, - 0x81C, 0xEF1C0003, 0x81C, 0xEE1E0003, 0x81C, 0xED200003, - 0x81C, 0xEC220003, 0x81C, 0xEB240003, 0x81C, 0xEA260003, - 0x81C, 0xE9280003, 0x81C, 0xE82A0003, 0x81C, 0xE72C0003, - 0x81C, 0xE62E0003, 0x81C, 0xE5300003, 0x81C, 0xC8320003, - 0x81C, 0xC7340003, 0x81C, 0xC6360003, 0x81C, 0xC5380003, - 0x81C, 0xC43A0003, 0x81C, 0xC33C0003, 0x81C, 0xC23E0003, - 0x81C, 0xC1400003, 0x81C, 0xC0420003, 0x81C, 0xA5440003, - 0x81C, 0xA4460003, 0x81C, 0xA3480003, 0x81C, 0xA24A0003, - 0x81C, 0xA14C0003, 0x81C, 0x834E0003, 0x81C, 0x82500003, - 0x81C, 0x81520003, 0x81C, 0x80540003, 0x81C, 0x65560003, - 0x81C, 0x64580003, 0x81C, 0x635A0003, 0x81C, 0x625C0003, - 0x81C, 0x435E0003, 0x81C, 0x42600003, 0x81C, 0x41620003, - 0x81C, 0x40640003, 0x81C, 0x06660003, 0x81C, 0x05680003, - 0x81C, 0x046A0003, 0x81C, 0x036C0003, 0x81C, 0x026E0003, - 0x81C, 0x01700003, 0x81C, 0x00720003, 0x81C, 0x00740003, - 0x81C, 0x00760003, 0x81C, 0x00780003, 0x81C, 0x007A0003, - 0x81C, 0x007C0003, 0x81C, 0x007E0003, 0x90012100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFF000003, 0x81C, 0xFE000003, - 0x81C, 0xFD020003, 0x81C, 0xFC040003, 0x81C, 0xFB060003, - 0x81C, 0xFA080003, 0x81C, 0xF90A0003, 0x81C, 0xF80C0003, - 0x81C, 0xF70E0003, 0x81C, 0xF6100003, 0x81C, 0xF5120003, - 0x81C, 0xF4140003, 0x81C, 0xF3160003, 0x81C, 0xF2180003, - 0x81C, 0xF11A0003, 0x81C, 0xF01C0003, 0x81C, 0xEF1E0003, - 0x81C, 0xEE200003, 0x81C, 0xED220003, 0x81C, 0xEC240003, - 0x81C, 0xEB260003, 0x81C, 0xEA280003, 0x81C, 0xE92A0003, - 0x81C, 0xE82C0003, 0x81C, 0xE72E0003, 0x81C, 0xE6300003, - 0x81C, 0xE5320003, 0x81C, 0xC8340003, 0x81C, 0xC7360003, - 0x81C, 0xC6380003, 0x81C, 0xC53A0003, 0x81C, 0xC43C0003, - 0x81C, 0xC33E0003, 0x81C, 0xC2400003, 0x81C, 0xC1420003, - 0x81C, 0xC0440003, 0x81C, 0xA3460003, 0x81C, 0xA2480003, - 0x81C, 0xA14A0003, 0x81C, 0xA04C0003, 0x81C, 0x824E0003, - 0x81C, 0x81500003, 0x81C, 0x80520003, 0x81C, 0x64540003, - 0x81C, 0x63560003, 0x81C, 0x62580003, 0x81C, 0x445A0003, - 0x81C, 0x435C0003, 0x81C, 0x425E0003, 0x81C, 0x41600003, - 0x81C, 0x40620003, 0x81C, 0x05640003, 0x81C, 0x04660003, - 0x81C, 0x03680003, 0x81C, 0x026A0003, 0x81C, 0x016C0003, - 0x81C, 0x006E0003, 0x81C, 0x00700003, 0x81C, 0x00720003, - 0x81C, 0x00740003, 0x81C, 0x00760003, 0x81C, 0x00780003, - 0x81C, 0x007A0003, 0x81C, 0x007C0003, 0x81C, 0x007E0003, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x81C, 0xFF000003, - 0x81C, 0xF5000003, 0x81C, 0xF4020003, 0x81C, 0xF3040003, - 0x81C, 0xF2060003, 0x81C, 0xF1080003, 0x81C, 0xF00A0003, - 0x81C, 0xEF0C0003, 0x81C, 0xEE0E0003, 0x81C, 0xED100003, - 0x81C, 0xEC120003, 0x81C, 0xEB140003, 0x81C, 0xEA160003, - 0x81C, 0xE9180003, 0x81C, 0xE81A0003, 0x81C, 0xE71C0003, - 0x81C, 0xE61E0003, 0x81C, 0xE5200003, 0x81C, 0xE4220003, - 0x81C, 0xE3240003, 0x81C, 0xE2260003, 0x81C, 0xE1280003, - 0x81C, 0xE02A0003, 0x81C, 0xC32C0003, 0x81C, 0xC22E0003, - 0x81C, 0xC1300003, 0x81C, 0xC0320003, 0x81C, 0xA4340003, - 0x81C, 0xA3360003, 0x81C, 0xA2380003, 0x81C, 0xA13A0003, - 0x81C, 0xA03C0003, 0x81C, 0x823E0003, 0x81C, 0x81400003, - 0x81C, 0x80420003, 0x81C, 0x64440003, 0x81C, 0x63460003, - 0x81C, 0x62480003, 0x81C, 0x614A0003, 0x81C, 0x604C0003, - 0x81C, 0x454E0003, 0x81C, 0x44500003, 0x81C, 0x43520003, - 0x81C, 0x42540003, 0x81C, 0x41560003, 0x81C, 0x40580003, - 0x81C, 0x055A0003, 0x81C, 0x045C0003, 0x81C, 0x035E0003, - 0x81C, 0x02600003, 0x81C, 0x01620003, 0x81C, 0x00640003, - 0x81C, 0x00660003, 0x81C, 0x00680003, 0x81C, 0x006A0003, - 0x81C, 0x006C0003, 0x81C, 0x006E0003, 0x81C, 0x00700003, - 0x81C, 0x00720003, 0x81C, 0x00740003, 0x81C, 0x00760003, - 0x81C, 0x00780003, 0x81C, 0x007A0003, 0x81C, 0x007C0003, - 0x81C, 0x007E0003, 0x90011000, 0x00000000, 0x40000000, 0x00000000, - 0x81C, 0xFF000003, 0x81C, 0xFE000003, 0x81C, 0xFD020003, - 0x81C, 0xFC040003, 0x81C, 0xFB060003, 0x81C, 0xFA080003, - 0x81C, 0xF90A0003, 0x81C, 0xF80C0003, 0x81C, 0xF70E0003, - 0x81C, 0xF6100003, 0x81C, 0xF5120003, 0x81C, 0xF4140003, - 0x81C, 0xF3160003, 0x81C, 0xF2180003, 0x81C, 0xF11A0003, - 0x81C, 0xF01C0003, 0x81C, 0xEF1E0003, 0x81C, 0xEE200003, - 0x81C, 0xED220003, 0x81C, 0xEC240003, 0x81C, 0xEB260003, - 0x81C, 0xEA280003, 0x81C, 0xE92A0003, 0x81C, 0xE82C0003, - 0x81C, 0xE72E0003, 0x81C, 0xE6300003, 0x81C, 0xE5320003, - 0x81C, 0xC8340003, 0x81C, 0xC7360003, 0x81C, 0xC6380003, - 0x81C, 0xC53A0003, 0x81C, 0xC43C0003, 0x81C, 0xC33E0003, - 0x81C, 0xC2400003, 0x81C, 0xC1420003, 0x81C, 0xC0440003, - 0x81C, 0xA3460003, 0x81C, 0xA2480003, 0x81C, 0xA14A0003, - 0x81C, 0xA04C0003, 0x81C, 0x824E0003, 0x81C, 0x81500003, - 0x81C, 0x80520003, 0x81C, 0x64540003, 0x81C, 0x63560003, - 0x81C, 0x62580003, 0x81C, 0x445A0003, 0x81C, 0x435C0003, - 0x81C, 0x425E0003, 0x81C, 0x41600003, 0x81C, 0x40620003, - 0x81C, 0x05640003, 0x81C, 0x04660003, 0x81C, 0x03680003, - 0x81C, 0x026A0003, 0x81C, 0x016C0003, 0x81C, 0x006E0003, - 0x81C, 0x00700003, 0x81C, 0x00720003, 0x81C, 0x00740003, - 0x81C, 0x00760003, 0x81C, 0x00780003, 0x81C, 0x007A0003, - 0x81C, 0x007C0003, 0x81C, 0x007E0003, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFF000003, 0x81C, 0xFD000003, - 0x81C, 0xFC020003, 0x81C, 0xFB040003, 0x81C, 0xFA060003, - 0x81C, 0xF9080003, 0x81C, 0xF80A0003, 0x81C, 0xF70C0003, - 0x81C, 0xF60E0003, 0x81C, 0xF5100003, 0x81C, 0xF4120003, - 0x81C, 0xF3140003, 0x81C, 0xF2160003, 0x81C, 0xF1180003, - 0x81C, 0xF01A0003, 0x81C, 0xEF1C0003, 0x81C, 0xEE1E0003, - 0x81C, 0xED200003, 0x81C, 0xEC220003, 0x81C, 0xEB240003, - 0x81C, 0xEA260003, 0x81C, 0xE9280003, 0x81C, 0xE82A0003, - 0x81C, 0xE72C0003, 0x81C, 0xE62E0003, 0x81C, 0xE5300003, - 0x81C, 0xC8320003, 0x81C, 0xC7340003, 0x81C, 0xC6360003, - 0x81C, 0xC5380003, 0x81C, 0xC43A0003, 0x81C, 0xC33C0003, - 0x81C, 0xC23E0003, 0x81C, 0xC1400003, 0x81C, 0xC0420003, - 0x81C, 0xA5440003, 0x81C, 0xA4460003, 0x81C, 0xA3480003, - 0x81C, 0xA24A0003, 0x81C, 0xA14C0003, 0x81C, 0x834E0003, - 0x81C, 0x82500003, 0x81C, 0x81520003, 0x81C, 0x80540003, - 0x81C, 0x65560003, 0x81C, 0x64580003, 0x81C, 0x635A0003, - 0x81C, 0x625C0003, 0x81C, 0x435E0003, 0x81C, 0x42600003, - 0x81C, 0x41620003, 0x81C, 0x40640003, 0x81C, 0x06660003, - 0x81C, 0x05680003, 0x81C, 0x046A0003, 0x81C, 0x036C0003, - 0x81C, 0x026E0003, 0x81C, 0x01700003, 0x81C, 0x00720003, - 0x81C, 0x00740003, 0x81C, 0x00760003, 0x81C, 0x00780003, - 0x81C, 0x007A0003, 0x81C, 0x007C0003, 0x81C, 0x007E0003, - 0x90002000, 0x00000000, 0x40000000, 0x00000000, 0x81C, 0xFF000003, - 0x81C, 0xFD000003, 0x81C, 0xFC020003, 0x81C, 0xFB040003, - 0x81C, 0xFA060003, 0x81C, 0xF9080003, 0x81C, 0xF80A0003, - 0x81C, 0xF70C0003, 0x81C, 0xF60E0003, 0x81C, 0xF5100003, - 0x81C, 0xF4120003, 0x81C, 0xF3140003, 0x81C, 0xF2160003, - 0x81C, 0xF1180003, 0x81C, 0xF01A0003, 0x81C, 0xEF1C0003, - 0x81C, 0xEE1E0003, 0x81C, 0xED200003, 0x81C, 0xEC220003, - 0x81C, 0xEB240003, 0x81C, 0xEA260003, 0x81C, 0xE9280003, - 0x81C, 0xE82A0003, 0x81C, 0xE72C0003, 0x81C, 0xE62E0003, - 0x81C, 0xE5300003, 0x81C, 0xC8320003, 0x81C, 0xC7340003, - 0x81C, 0xC6360003, 0x81C, 0xC5380003, 0x81C, 0xC43A0003, - 0x81C, 0xC33C0003, 0x81C, 0xC23E0003, 0x81C, 0xC1400003, - 0x81C, 0xC0420003, 0x81C, 0xA5440003, 0x81C, 0xA4460003, - 0x81C, 0xA3480003, 0x81C, 0xA24A0003, 0x81C, 0xA14C0003, - 0x81C, 0x834E0003, 0x81C, 0x82500003, 0x81C, 0x81520003, - 0x81C, 0x80540003, 0x81C, 0x65560003, 0x81C, 0x64580003, - 0x81C, 0x635A0003, 0x81C, 0x625C0003, 0x81C, 0x435E0003, - 0x81C, 0x42600003, 0x81C, 0x41620003, 0x81C, 0x40640003, - 0x81C, 0x06660003, 0x81C, 0x05680003, 0x81C, 0x046A0003, - 0x81C, 0x036C0003, 0x81C, 0x026E0003, 0x81C, 0x01700003, - 0x81C, 0x00720003, 0x81C, 0x00740003, 0x81C, 0x00760003, - 0x81C, 0x00780003, 0x81C, 0x007A0003, 0x81C, 0x007C0003, - 0x81C, 0x007E0003, 0xA0000000, 0x00000000, 0x81C, 0xFF000003, - 0x81C, 0xFE000003, 0x81C, 0xFD020003, 0x81C, 0xFC040003, - 0x81C, 0xFB060003, 0x81C, 0xFA080003, 0x81C, 0xF90A0003, - 0x81C, 0xF80C0003, 0x81C, 0xF70E0003, 0x81C, 0xF6100003, - 0x81C, 0xF5120003, 0x81C, 0xF4140003, 0x81C, 0xF3160003, - 0x81C, 0xF2180003, 0x81C, 0xF11A0003, 0x81C, 0xF01C0003, - 0x81C, 0xEF1E0003, 0x81C, 0xEE200003, 0x81C, 0xED220003, - 0x81C, 0xEC240003, 0x81C, 0xEB260003, 0x81C, 0xEA280003, - 0x81C, 0xE92A0003, 0x81C, 0xE82C0003, 0x81C, 0xE72E0003, - 0x81C, 0xE6300003, 0x81C, 0xE5320003, 0x81C, 0xC8340003, - 0x81C, 0xC7360003, 0x81C, 0xC6380003, 0x81C, 0xC53A0003, - 0x81C, 0xC43C0003, 0x81C, 0xC33E0003, 0x81C, 0xC2400003, - 0x81C, 0xC1420003, 0x81C, 0xC0440003, 0x81C, 0xA3460003, - 0x81C, 0xA2480003, 0x81C, 0xA14A0003, 0x81C, 0xA04C0003, - 0x81C, 0x824E0003, 0x81C, 0x81500003, 0x81C, 0x80520003, - 0x81C, 0x64540003, 0x81C, 0x63560003, 0x81C, 0x62580003, - 0x81C, 0x445A0003, 0x81C, 0x435C0003, 0x81C, 0x425E0003, - 0x81C, 0x41600003, 0x81C, 0x40620003, 0x81C, 0x05640003, - 0x81C, 0x04660003, 0x81C, 0x03680003, 0x81C, 0x026A0003, - 0x81C, 0x016C0003, 0x81C, 0x006E0003, 0x81C, 0x00700003, - 0x81C, 0x00720003, 0x81C, 0x00740003, 0x81C, 0x00760003, - 0x81C, 0x00780003, 0x81C, 0x007A0003, 0x81C, 0x007C0003, - 0x81C, 0x007E0003, 0xB0000000, 0x00000000, 0x8000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x81C, 0xF8000103, 0x81C, 0xF7020103, - 0x81C, 0xF6040103, 0x81C, 0xF5060103, 0x81C, 0xF4080103, - 0x81C, 0xF30A0103, 0x81C, 0xF20C0103, 0x81C, 0xF10E0103, - 0x81C, 0xF0100103, 0x81C, 0xEF120103, 0x81C, 0xEE140103, - 0x81C, 0xED160103, 0x81C, 0xEC180103, 0x81C, 0xEB1A0103, - 0x81C, 0xEA1C0103, 0x81C, 0xE91E0103, 0x81C, 0xE8200103, - 0x81C, 0xE7220103, 0x81C, 0xE6240103, 0x81C, 0xE5260103, - 0x81C, 0xE4280103, 0x81C, 0xE32A0103, 0x81C, 0xE22C0103, - 0x81C, 0xC32E0103, 0x81C, 0xC2300103, 0x81C, 0xC1320103, - 0x81C, 0xA3340103, 0x81C, 0xA2360103, 0x81C, 0xA1380103, - 0x81C, 0xA03A0103, 0x81C, 0x823C0103, 0x81C, 0x813E0103, - 0x81C, 0x80400103, 0x81C, 0x64420103, 0x81C, 0x63440103, - 0x81C, 0x62460103, 0x81C, 0x61480103, 0x81C, 0x434A0103, - 0x81C, 0x424C0103, 0x81C, 0x414E0103, 0x81C, 0x40500103, - 0x81C, 0x22520103, 0x81C, 0x21540103, 0x81C, 0x20560103, - 0x81C, 0x04580103, 0x81C, 0x035A0103, 0x81C, 0x025C0103, - 0x81C, 0x015E0103, 0x81C, 0x00600103, 0x81C, 0x00620103, - 0x81C, 0x00640103, 0x81C, 0x00660103, 0x81C, 0x00680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x81C, 0xFA000103, 0x81C, 0xF9020103, - 0x81C, 0xF8040103, 0x81C, 0xF7060103, 0x81C, 0xF6080103, - 0x81C, 0xF50A0103, 0x81C, 0xF40C0103, 0x81C, 0xF30E0103, - 0x81C, 0xF2100103, 0x81C, 0xF1120103, 0x81C, 0xF0140103, - 0x81C, 0xEF160103, 0x81C, 0xEE180103, 0x81C, 0xED1A0103, - 0x81C, 0xEC1C0103, 0x81C, 0xEB1E0103, 0x81C, 0xEA200103, - 0x81C, 0xE9220103, 0x81C, 0xE8240103, 0x81C, 0xE7260103, - 0x81C, 0xE6280103, 0x81C, 0xE52A0103, 0x81C, 0xC42C0103, - 0x81C, 0xC32E0103, 0x81C, 0xC2300103, 0x81C, 0xC1320103, - 0x81C, 0xA4340103, 0x81C, 0xA3360103, 0x81C, 0xA2380103, - 0x81C, 0xA13A0103, 0x81C, 0x833C0103, 0x81C, 0x823E0103, - 0x81C, 0x81400103, 0x81C, 0x63420103, 0x81C, 0x62440103, - 0x81C, 0x61460103, 0x81C, 0x60480103, 0x81C, 0x424A0103, - 0x81C, 0x414C0103, 0x81C, 0x404E0103, 0x81C, 0x22500103, - 0x81C, 0x21520103, 0x81C, 0x20540103, 0x81C, 0x03560103, - 0x81C, 0x02580103, 0x81C, 0x015A0103, 0x81C, 0x005C0103, - 0x81C, 0x005E0103, 0x81C, 0x00600103, 0x81C, 0x00620103, - 0x81C, 0x00640103, 0x81C, 0x00660103, 0x81C, 0x00680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF8000103, 0x81C, 0xF7020103, - 0x81C, 0xF6040103, 0x81C, 0xF5060103, 0x81C, 0xF4080103, - 0x81C, 0xF30A0103, 0x81C, 0xF20C0103, 0x81C, 0xF10E0103, - 0x81C, 0xF0100103, 0x81C, 0xEF120103, 0x81C, 0xEE140103, - 0x81C, 0xED160103, 0x81C, 0xEC180103, 0x81C, 0xEB1A0103, - 0x81C, 0xEA1C0103, 0x81C, 0xE91E0103, 0x81C, 0xE8200103, - 0x81C, 0xE7220103, 0x81C, 0xE6240103, 0x81C, 0xE5260103, - 0x81C, 0xE4280103, 0x81C, 0xE32A0103, 0x81C, 0xC32C0103, - 0x81C, 0xC22E0103, 0x81C, 0xC1300103, 0x81C, 0xC0320103, - 0x81C, 0xA3340103, 0x81C, 0xA2360103, 0x81C, 0xA1380103, - 0x81C, 0xA03A0103, 0x81C, 0x823C0103, 0x81C, 0x813E0103, - 0x81C, 0x80400103, 0x81C, 0x63420103, 0x81C, 0x62440103, - 0x81C, 0x61460103, 0x81C, 0x60480103, 0x81C, 0x424A0103, - 0x81C, 0x414C0103, 0x81C, 0x404E0103, 0x81C, 0x06500103, - 0x81C, 0x05520103, 0x81C, 0x04540103, 0x81C, 0x03560103, - 0x81C, 0x02580103, 0x81C, 0x015A0103, 0x81C, 0x005C0103, - 0x81C, 0x005E0103, 0x81C, 0x00600103, 0x81C, 0x00620103, - 0x81C, 0x00640103, 0x81C, 0x00660103, 0x81C, 0x00680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF8000103, 0x81C, 0xF7020103, - 0x81C, 0xF6040103, 0x81C, 0xF5060103, 0x81C, 0xF4080103, - 0x81C, 0xF30A0103, 0x81C, 0xF20C0103, 0x81C, 0xF10E0103, - 0x81C, 0xF0100103, 0x81C, 0xEF120103, 0x81C, 0xEE140103, - 0x81C, 0xED160103, 0x81C, 0xEC180103, 0x81C, 0xEB1A0103, - 0x81C, 0xEA1C0103, 0x81C, 0xE91E0103, 0x81C, 0xE8200103, - 0x81C, 0xE7220103, 0x81C, 0xE6240103, 0x81C, 0xE5260103, - 0x81C, 0xE4280103, 0x81C, 0xE32A0103, 0x81C, 0xC32C0103, - 0x81C, 0xC22E0103, 0x81C, 0xC1300103, 0x81C, 0xC0320103, - 0x81C, 0xA3340103, 0x81C, 0xA2360103, 0x81C, 0xA1380103, - 0x81C, 0xA03A0103, 0x81C, 0x823C0103, 0x81C, 0x813E0103, - 0x81C, 0x80400103, 0x81C, 0x63420103, 0x81C, 0x62440103, - 0x81C, 0x61460103, 0x81C, 0x60480103, 0x81C, 0x424A0103, - 0x81C, 0x414C0103, 0x81C, 0x404E0103, 0x81C, 0x22500103, - 0x81C, 0x21520103, 0x81C, 0x20540103, 0x81C, 0x03560103, - 0x81C, 0x02580103, 0x81C, 0x015A0103, 0x81C, 0x005C0103, - 0x81C, 0x005E0103, 0x81C, 0x00600103, 0x81C, 0x00620103, - 0x81C, 0x00640103, 0x81C, 0x00660103, 0x81C, 0x00680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF8000103, 0x81C, 0xF7020103, - 0x81C, 0xF6040103, 0x81C, 0xF5060103, 0x81C, 0xF4080103, - 0x81C, 0xF30A0103, 0x81C, 0xF20C0103, 0x81C, 0xF10E0103, - 0x81C, 0xF0100103, 0x81C, 0xEF120103, 0x81C, 0xEE140103, - 0x81C, 0xED160103, 0x81C, 0xEC180103, 0x81C, 0xEB1A0103, - 0x81C, 0xEA1C0103, 0x81C, 0xE91E0103, 0x81C, 0xE8200103, - 0x81C, 0xE7220103, 0x81C, 0xE6240103, 0x81C, 0xE5260103, - 0x81C, 0xE4280103, 0x81C, 0xE32A0103, 0x81C, 0xC32C0103, - 0x81C, 0xC22E0103, 0x81C, 0xC1300103, 0x81C, 0xC0320103, - 0x81C, 0xA3340103, 0x81C, 0xA2360103, 0x81C, 0xA1380103, - 0x81C, 0xA03A0103, 0x81C, 0x823C0103, 0x81C, 0x813E0103, - 0x81C, 0x80400103, 0x81C, 0x63420103, 0x81C, 0x62440103, - 0x81C, 0x61460103, 0x81C, 0x60480103, 0x81C, 0x424A0103, - 0x81C, 0x414C0103, 0x81C, 0x404E0103, 0x81C, 0x22500103, - 0x81C, 0x21520103, 0x81C, 0x20540103, 0x81C, 0x03560103, - 0x81C, 0x02580103, 0x81C, 0x015A0103, 0x81C, 0x005C0103, - 0x81C, 0x005E0103, 0x81C, 0x00600103, 0x81C, 0x00620103, - 0x81C, 0x00640103, 0x81C, 0x00660103, 0x81C, 0x00680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x90012100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFD000103, 0x81C, 0xFC020103, - 0x81C, 0xFB040103, 0x81C, 0xFA060103, 0x81C, 0xF9080103, - 0x81C, 0xF80A0103, 0x81C, 0xF70C0103, 0x81C, 0xF60E0103, - 0x81C, 0xF5100103, 0x81C, 0xF4120103, 0x81C, 0xF3140103, - 0x81C, 0xF2160103, 0x81C, 0xF1180103, 0x81C, 0xF01A0103, - 0x81C, 0xEF1C0103, 0x81C, 0xEE1E0103, 0x81C, 0xED200103, - 0x81C, 0xEC220103, 0x81C, 0xEB240103, 0x81C, 0xEA260103, - 0x81C, 0xE9280103, 0x81C, 0xE82A0103, 0x81C, 0xE72C0103, - 0x81C, 0xE62E0103, 0x81C, 0xE5300103, 0x81C, 0xE4320103, - 0x81C, 0xE3340103, 0x81C, 0xC6360103, 0x81C, 0xC5380103, - 0x81C, 0xC43A0103, 0x81C, 0xC33C0103, 0x81C, 0xC23E0103, - 0x81C, 0xA5400103, 0x81C, 0xA4420103, 0x81C, 0xA3440103, - 0x81C, 0xA2460103, 0x81C, 0xA1480103, 0x81C, 0x834A0103, - 0x81C, 0x824C0103, 0x81C, 0x814E0103, 0x81C, 0x63500103, - 0x81C, 0x62520103, 0x81C, 0x61540103, 0x81C, 0x43560103, - 0x81C, 0x42580103, 0x81C, 0x245A0103, 0x81C, 0x235C0103, - 0x81C, 0x225E0103, 0x81C, 0x21600103, 0x81C, 0x04620103, - 0x81C, 0x03640103, 0x81C, 0x02660103, 0x81C, 0x01680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF8000103, 0x81C, 0xF7020103, - 0x81C, 0xF6040103, 0x81C, 0xF5060103, 0x81C, 0xF4080103, - 0x81C, 0xF30A0103, 0x81C, 0xF20C0103, 0x81C, 0xF10E0103, - 0x81C, 0xF0100103, 0x81C, 0xEF120103, 0x81C, 0xEE140103, - 0x81C, 0xED160103, 0x81C, 0xEC180103, 0x81C, 0xEB1A0103, - 0x81C, 0xEA1C0103, 0x81C, 0xE91E0103, 0x81C, 0xE8200103, - 0x81C, 0xE7220103, 0x81C, 0xE6240103, 0x81C, 0xE5260103, - 0x81C, 0xE4280103, 0x81C, 0xE32A0103, 0x81C, 0xE22C0103, - 0x81C, 0xC32E0103, 0x81C, 0xC2300103, 0x81C, 0xC1320103, - 0x81C, 0xA3340103, 0x81C, 0xA2360103, 0x81C, 0xA1380103, - 0x81C, 0xA03A0103, 0x81C, 0x823C0103, 0x81C, 0x813E0103, - 0x81C, 0x80400103, 0x81C, 0x64420103, 0x81C, 0x63440103, - 0x81C, 0x62460103, 0x81C, 0x61480103, 0x81C, 0x434A0103, - 0x81C, 0x424C0103, 0x81C, 0x414E0103, 0x81C, 0x40500103, - 0x81C, 0x22520103, 0x81C, 0x21540103, 0x81C, 0x20560103, - 0x81C, 0x04580103, 0x81C, 0x035A0103, 0x81C, 0x025C0103, - 0x81C, 0x015E0103, 0x81C, 0x00600103, 0x81C, 0x00620103, - 0x81C, 0x00640103, 0x81C, 0x00660103, 0x81C, 0x00680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x90011000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFD000103, 0x81C, 0xFC020103, - 0x81C, 0xFB040103, 0x81C, 0xFA060103, 0x81C, 0xF9080103, - 0x81C, 0xF80A0103, 0x81C, 0xF70C0103, 0x81C, 0xF60E0103, - 0x81C, 0xF5100103, 0x81C, 0xF4120103, 0x81C, 0xF3140103, - 0x81C, 0xF2160103, 0x81C, 0xF1180103, 0x81C, 0xF01A0103, - 0x81C, 0xEE1C0103, 0x81C, 0xED1E0103, 0x81C, 0xEC200103, - 0x81C, 0xEB220103, 0x81C, 0xEA240103, 0x81C, 0xE9260103, - 0x81C, 0xE8280103, 0x81C, 0xE72A0103, 0x81C, 0xE62C0103, - 0x81C, 0xE52E0103, 0x81C, 0xE4300103, 0x81C, 0xE3320103, - 0x81C, 0xE2340103, 0x81C, 0xC5360103, 0x81C, 0xC4380103, - 0x81C, 0xC33A0103, 0x81C, 0xC23C0103, 0x81C, 0xA53E0103, - 0x81C, 0xA4400103, 0x81C, 0xA3420103, 0x81C, 0xA2440103, - 0x81C, 0xA1460103, 0x81C, 0x83480103, 0x81C, 0x824A0103, - 0x81C, 0x814C0103, 0x81C, 0x804E0103, 0x81C, 0x63500103, - 0x81C, 0x62520103, 0x81C, 0x61540103, 0x81C, 0x43560103, - 0x81C, 0x42580103, 0x81C, 0x415A0103, 0x81C, 0x405C0103, - 0x81C, 0x225E0103, 0x81C, 0x21600103, 0x81C, 0x20620103, - 0x81C, 0x03640103, 0x81C, 0x02660103, 0x81C, 0x01680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFD000103, 0x81C, 0xFC020103, - 0x81C, 0xFB040103, 0x81C, 0xFA060103, 0x81C, 0xF9080103, - 0x81C, 0xF80A0103, 0x81C, 0xF70C0103, 0x81C, 0xF60E0103, - 0x81C, 0xF5100103, 0x81C, 0xF4120103, 0x81C, 0xF3140103, - 0x81C, 0xF2160103, 0x81C, 0xF1180103, 0x81C, 0xF01A0103, - 0x81C, 0xEF1C0103, 0x81C, 0xEE1E0103, 0x81C, 0xED200103, - 0x81C, 0xEC220103, 0x81C, 0xEB240103, 0x81C, 0xEA260103, - 0x81C, 0xE9280103, 0x81C, 0xE82A0103, 0x81C, 0xE72C0103, - 0x81C, 0xE62E0103, 0x81C, 0xE5300103, 0x81C, 0xE4320103, - 0x81C, 0xE3340103, 0x81C, 0xE2360103, 0x81C, 0xC5380103, - 0x81C, 0xC43A0103, 0x81C, 0xC33C0103, 0x81C, 0xC23E0103, - 0x81C, 0xA5400103, 0x81C, 0xA4420103, 0x81C, 0xA3440103, - 0x81C, 0xA2460103, 0x81C, 0xA1480103, 0x81C, 0x834A0103, - 0x81C, 0x824C0103, 0x81C, 0x814E0103, 0x81C, 0x64500103, - 0x81C, 0x63520103, 0x81C, 0x62540103, 0x81C, 0x61560103, - 0x81C, 0x42580103, 0x81C, 0x415A0103, 0x81C, 0x405C0103, - 0x81C, 0x065E0103, 0x81C, 0x05600103, 0x81C, 0x04620103, - 0x81C, 0x03640103, 0x81C, 0x02660103, 0x81C, 0x01680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFE000103, 0x81C, 0xFD020103, - 0x81C, 0xFC040103, 0x81C, 0xFB060103, 0x81C, 0xFA080103, - 0x81C, 0xF90A0103, 0x81C, 0xF80C0103, 0x81C, 0xF70E0103, - 0x81C, 0xF6100103, 0x81C, 0xF5120103, 0x81C, 0xF4140103, - 0x81C, 0xF3160103, 0x81C, 0xF2180103, 0x81C, 0xF11A0103, - 0x81C, 0xF01C0103, 0x81C, 0xEF1E0103, 0x81C, 0xEE200103, - 0x81C, 0xED220103, 0x81C, 0xEC240103, 0x81C, 0xEB260103, - 0x81C, 0xEA280103, 0x81C, 0xE92A0103, 0x81C, 0xE82C0103, - 0x81C, 0xE72E0103, 0x81C, 0xE6300103, 0x81C, 0xE5320103, - 0x81C, 0xE4340103, 0x81C, 0xE3360103, 0x81C, 0xC6380103, - 0x81C, 0xC53A0103, 0x81C, 0xC43C0103, 0x81C, 0xC33E0103, - 0x81C, 0xA5400103, 0x81C, 0xA4420103, 0x81C, 0xA3440103, - 0x81C, 0xA2460103, 0x81C, 0xA1480103, 0x81C, 0xA04A0103, - 0x81C, 0x824C0103, 0x81C, 0x814E0103, 0x81C, 0x80500103, - 0x81C, 0x64520103, 0x81C, 0x63540103, 0x81C, 0x62560103, - 0x81C, 0x61580103, 0x81C, 0x605A0103, 0x81C, 0x235C0103, - 0x81C, 0x225E0103, 0x81C, 0x21600103, 0x81C, 0x20620103, - 0x81C, 0x03640103, 0x81C, 0x02660103, 0x81C, 0x01680103, - 0x81C, 0x006A0103, 0x81C, 0x006C0103, 0x81C, 0x006E0103, - 0x81C, 0x00700103, 0x81C, 0x00720103, 0x81C, 0x00740103, - 0x81C, 0x00760103, 0x81C, 0x00780103, 0x81C, 0x007A0103, - 0x81C, 0x007C0103, 0x81C, 0x007E0103, 0xA0000000, 0x00000000, - 0x81C, 0xFE000103, 0x81C, 0xFD020103, 0x81C, 0xFC040103, - 0x81C, 0xFB060103, 0x81C, 0xFA080103, 0x81C, 0xF90A0103, - 0x81C, 0xF80C0103, 0x81C, 0xF70E0103, 0x81C, 0xF6100103, - 0x81C, 0xF5120103, 0x81C, 0xF4140103, 0x81C, 0xF3160103, - 0x81C, 0xF2180103, 0x81C, 0xF11A0103, 0x81C, 0xF01C0103, - 0x81C, 0xEF1E0103, 0x81C, 0xEE200103, 0x81C, 0xED220103, - 0x81C, 0xEC240103, 0x81C, 0xEB260103, 0x81C, 0xEA280103, - 0x81C, 0xE92A0103, 0x81C, 0xE82C0103, 0x81C, 0xE72E0103, - 0x81C, 0xE6300103, 0x81C, 0xE5320103, 0x81C, 0xE4340103, - 0x81C, 0xE3360103, 0x81C, 0xC6380103, 0x81C, 0xC53A0103, - 0x81C, 0xC43C0103, 0x81C, 0xC33E0103, 0x81C, 0xA5400103, - 0x81C, 0xA4420103, 0x81C, 0xA3440103, 0x81C, 0xA2460103, - 0x81C, 0xA1480103, 0x81C, 0xA04A0103, 0x81C, 0x824C0103, - 0x81C, 0x814E0103, 0x81C, 0x80500103, 0x81C, 0x64520103, - 0x81C, 0x63540103, 0x81C, 0x62560103, 0x81C, 0x61580103, - 0x81C, 0x605A0103, 0x81C, 0x235C0103, 0x81C, 0x225E0103, - 0x81C, 0x21600103, 0x81C, 0x20620103, 0x81C, 0x03640103, - 0x81C, 0x02660103, 0x81C, 0x01680103, 0x81C, 0x006A0103, - 0x81C, 0x006C0103, 0x81C, 0x006E0103, 0x81C, 0x00700103, - 0x81C, 0x00720103, 0x81C, 0x00740103, 0x81C, 0x00760103, - 0x81C, 0x00780103, 0x81C, 0x007A0103, 0x81C, 0x007C0103, - 0x81C, 0x007E0103, 0xB0000000, 0x00000000, 0x8000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x81C, 0xF8000203, 0x81C, 0xF7020203, - 0x81C, 0xF6040203, 0x81C, 0xF5060203, 0x81C, 0xF4080203, - 0x81C, 0xF30A0203, 0x81C, 0xF20C0203, 0x81C, 0xF10E0203, - 0x81C, 0xF0100203, 0x81C, 0xEF120203, 0x81C, 0xEE140203, - 0x81C, 0xED160203, 0x81C, 0xEC180203, 0x81C, 0xEB1A0203, - 0x81C, 0xEA1C0203, 0x81C, 0xE91E0203, 0x81C, 0xE8200203, - 0x81C, 0xE7220203, 0x81C, 0xE6240203, 0x81C, 0xE5260203, - 0x81C, 0xE4280203, 0x81C, 0xE32A0203, 0x81C, 0xC42C0203, - 0x81C, 0xC32E0203, 0x81C, 0xC2300203, 0x81C, 0xC1320203, - 0x81C, 0xA3340203, 0x81C, 0xA2360203, 0x81C, 0xA1380203, - 0x81C, 0xA03A0203, 0x81C, 0x823C0203, 0x81C, 0x813E0203, - 0x81C, 0x80400203, 0x81C, 0x65420203, 0x81C, 0x64440203, - 0x81C, 0x63460203, 0x81C, 0x62480203, 0x81C, 0x614A0203, - 0x81C, 0x424C0203, 0x81C, 0x414E0203, 0x81C, 0x40500203, - 0x81C, 0x22520203, 0x81C, 0x21540203, 0x81C, 0x20560203, - 0x81C, 0x04580203, 0x81C, 0x035A0203, 0x81C, 0x025C0203, - 0x81C, 0x015E0203, 0x81C, 0x00600203, 0x81C, 0x00620203, - 0x81C, 0x00640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x81C, 0xF9000203, 0x81C, 0xF8020203, - 0x81C, 0xF7040203, 0x81C, 0xF6060203, 0x81C, 0xF5080203, - 0x81C, 0xF40A0203, 0x81C, 0xF30C0203, 0x81C, 0xF20E0203, - 0x81C, 0xF1100203, 0x81C, 0xF0120203, 0x81C, 0xEF140203, - 0x81C, 0xEE160203, 0x81C, 0xED180203, 0x81C, 0xEC1A0203, - 0x81C, 0xEB1C0203, 0x81C, 0xEA1E0203, 0x81C, 0xE9200203, - 0x81C, 0xE8220203, 0x81C, 0xE7240203, 0x81C, 0xE6260203, - 0x81C, 0xE5280203, 0x81C, 0xC42A0203, 0x81C, 0xC32C0203, - 0x81C, 0xC22E0203, 0x81C, 0xC1300203, 0x81C, 0xC0320203, - 0x81C, 0xA3340203, 0x81C, 0xA2360203, 0x81C, 0xA1380203, - 0x81C, 0xA03A0203, 0x81C, 0x823C0203, 0x81C, 0x813E0203, - 0x81C, 0x80400203, 0x81C, 0x64420203, 0x81C, 0x63440203, - 0x81C, 0x62460203, 0x81C, 0x61480203, 0x81C, 0x604A0203, - 0x81C, 0x414C0203, 0x81C, 0x404E0203, 0x81C, 0x22500203, - 0x81C, 0x21520203, 0x81C, 0x20540203, 0x81C, 0x03560203, - 0x81C, 0x02580203, 0x81C, 0x015A0203, 0x81C, 0x005C0203, - 0x81C, 0x005E0203, 0x81C, 0x00600203, 0x81C, 0x00620203, - 0x81C, 0x00640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF7000203, 0x81C, 0xF6020203, - 0x81C, 0xF5040203, 0x81C, 0xF4060203, 0x81C, 0xF3080203, - 0x81C, 0xF20A0203, 0x81C, 0xF10C0203, 0x81C, 0xF00E0203, - 0x81C, 0xEF100203, 0x81C, 0xEE120203, 0x81C, 0xED140203, - 0x81C, 0xEC160203, 0x81C, 0xEB180203, 0x81C, 0xEA1A0203, - 0x81C, 0xE91C0203, 0x81C, 0xE81E0203, 0x81C, 0xE7200203, - 0x81C, 0xE6220203, 0x81C, 0xE5240203, 0x81C, 0xE4260203, - 0x81C, 0xE3280203, 0x81C, 0xC42A0203, 0x81C, 0xC32C0203, - 0x81C, 0xC22E0203, 0x81C, 0xC1300203, 0x81C, 0xC0320203, - 0x81C, 0xA3340203, 0x81C, 0xA2360203, 0x81C, 0xA1380203, - 0x81C, 0xA03A0203, 0x81C, 0x823C0203, 0x81C, 0x813E0203, - 0x81C, 0x80400203, 0x81C, 0x63420203, 0x81C, 0x62440203, - 0x81C, 0x61460203, 0x81C, 0x60480203, 0x81C, 0x424A0203, - 0x81C, 0x414C0203, 0x81C, 0x404E0203, 0x81C, 0x06500203, - 0x81C, 0x05520203, 0x81C, 0x04540203, 0x81C, 0x03560203, - 0x81C, 0x02580203, 0x81C, 0x015A0203, 0x81C, 0x005C0203, - 0x81C, 0x005E0203, 0x81C, 0x00600203, 0x81C, 0x00620203, - 0x81C, 0x00640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF7000203, 0x81C, 0xF6020203, - 0x81C, 0xF5040203, 0x81C, 0xF4060203, 0x81C, 0xF3080203, - 0x81C, 0xF20A0203, 0x81C, 0xF10C0203, 0x81C, 0xF00E0203, - 0x81C, 0xEF100203, 0x81C, 0xEE120203, 0x81C, 0xED140203, - 0x81C, 0xEC160203, 0x81C, 0xEB180203, 0x81C, 0xEA1A0203, - 0x81C, 0xE91C0203, 0x81C, 0xE81E0203, 0x81C, 0xE7200203, - 0x81C, 0xE6220203, 0x81C, 0xE5240203, 0x81C, 0xE4260203, - 0x81C, 0xE3280203, 0x81C, 0xC42A0203, 0x81C, 0xC32C0203, - 0x81C, 0xC22E0203, 0x81C, 0xC1300203, 0x81C, 0xC0320203, - 0x81C, 0xA3340203, 0x81C, 0xA2360203, 0x81C, 0xA1380203, - 0x81C, 0xA03A0203, 0x81C, 0x823C0203, 0x81C, 0x813E0203, - 0x81C, 0x80400203, 0x81C, 0x64420203, 0x81C, 0x63440203, - 0x81C, 0x62460203, 0x81C, 0x61480203, 0x81C, 0x604A0203, - 0x81C, 0x414C0203, 0x81C, 0x404E0203, 0x81C, 0x22500203, - 0x81C, 0x21520203, 0x81C, 0x20540203, 0x81C, 0x03560203, - 0x81C, 0x02580203, 0x81C, 0x015A0203, 0x81C, 0x005C0203, - 0x81C, 0x005E0203, 0x81C, 0x00600203, 0x81C, 0x00620203, - 0x81C, 0x00640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF7000203, 0x81C, 0xF6020203, - 0x81C, 0xF5040203, 0x81C, 0xF4060203, 0x81C, 0xF3080203, - 0x81C, 0xF20A0203, 0x81C, 0xF10C0203, 0x81C, 0xF00E0203, - 0x81C, 0xEF100203, 0x81C, 0xEE120203, 0x81C, 0xED140203, - 0x81C, 0xEC160203, 0x81C, 0xEB180203, 0x81C, 0xEA1A0203, - 0x81C, 0xE91C0203, 0x81C, 0xE81E0203, 0x81C, 0xE7200203, - 0x81C, 0xE6220203, 0x81C, 0xE5240203, 0x81C, 0xE4260203, - 0x81C, 0xE3280203, 0x81C, 0xC42A0203, 0x81C, 0xC32C0203, - 0x81C, 0xC22E0203, 0x81C, 0xC1300203, 0x81C, 0xC0320203, - 0x81C, 0xA3340203, 0x81C, 0xA2360203, 0x81C, 0xA1380203, - 0x81C, 0xA03A0203, 0x81C, 0x823C0203, 0x81C, 0x813E0203, - 0x81C, 0x80400203, 0x81C, 0x64420203, 0x81C, 0x63440203, - 0x81C, 0x62460203, 0x81C, 0x61480203, 0x81C, 0x604A0203, - 0x81C, 0x414C0203, 0x81C, 0x404E0203, 0x81C, 0x22500203, - 0x81C, 0x21520203, 0x81C, 0x20540203, 0x81C, 0x03560203, - 0x81C, 0x02580203, 0x81C, 0x015A0203, 0x81C, 0x005C0203, - 0x81C, 0x005E0203, 0x81C, 0x00600203, 0x81C, 0x00620203, - 0x81C, 0x00640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x90012100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFB000203, 0x81C, 0xFA020203, - 0x81C, 0xF9040203, 0x81C, 0xF8060203, 0x81C, 0xF7080203, - 0x81C, 0xF60A0203, 0x81C, 0xF50C0203, 0x81C, 0xF40E0203, - 0x81C, 0xF3100203, 0x81C, 0xF2120203, 0x81C, 0xF1140203, - 0x81C, 0xF0160203, 0x81C, 0xEF180203, 0x81C, 0xEE1A0203, - 0x81C, 0xED1C0203, 0x81C, 0xEC1E0203, 0x81C, 0xEB200203, - 0x81C, 0xEA220203, 0x81C, 0xE9240203, 0x81C, 0xE8260203, - 0x81C, 0xE7280203, 0x81C, 0xE62A0203, 0x81C, 0xE52C0203, - 0x81C, 0xE42E0203, 0x81C, 0xE3300203, 0x81C, 0xE2320203, - 0x81C, 0xC6340203, 0x81C, 0xC5360203, 0x81C, 0xC4380203, - 0x81C, 0xC33A0203, 0x81C, 0xC23C0203, 0x81C, 0xC13E0203, - 0x81C, 0xC0400203, 0x81C, 0xA3420203, 0x81C, 0xA2440203, - 0x81C, 0xA1460203, 0x81C, 0xA0480203, 0x81C, 0x824A0203, - 0x81C, 0x814C0203, 0x81C, 0x804E0203, 0x81C, 0x63500203, - 0x81C, 0x62520203, 0x81C, 0x61540203, 0x81C, 0x60560203, - 0x81C, 0x24580203, 0x81C, 0x235A0203, 0x81C, 0x225C0203, - 0x81C, 0x215E0203, 0x81C, 0x20600203, 0x81C, 0x03620203, - 0x81C, 0x02640203, 0x81C, 0x01660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF8000203, 0x81C, 0xF7020203, - 0x81C, 0xF6040203, 0x81C, 0xF5060203, 0x81C, 0xF4080203, - 0x81C, 0xF30A0203, 0x81C, 0xF20C0203, 0x81C, 0xF10E0203, - 0x81C, 0xF0100203, 0x81C, 0xEF120203, 0x81C, 0xEE140203, - 0x81C, 0xED160203, 0x81C, 0xEC180203, 0x81C, 0xEB1A0203, - 0x81C, 0xEA1C0203, 0x81C, 0xE91E0203, 0x81C, 0xE8200203, - 0x81C, 0xE7220203, 0x81C, 0xE6240203, 0x81C, 0xE5260203, - 0x81C, 0xE4280203, 0x81C, 0xE32A0203, 0x81C, 0xC42C0203, - 0x81C, 0xC32E0203, 0x81C, 0xC2300203, 0x81C, 0xC1320203, - 0x81C, 0xA3340203, 0x81C, 0xA2360203, 0x81C, 0xA1380203, - 0x81C, 0xA03A0203, 0x81C, 0x823C0203, 0x81C, 0x813E0203, - 0x81C, 0x80400203, 0x81C, 0x65420203, 0x81C, 0x64440203, - 0x81C, 0x63460203, 0x81C, 0x62480203, 0x81C, 0x614A0203, - 0x81C, 0x424C0203, 0x81C, 0x414E0203, 0x81C, 0x40500203, - 0x81C, 0x22520203, 0x81C, 0x21540203, 0x81C, 0x20560203, - 0x81C, 0x04580203, 0x81C, 0x035A0203, 0x81C, 0x025C0203, - 0x81C, 0x015E0203, 0x81C, 0x00600203, 0x81C, 0x00620203, - 0x81C, 0x00640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x90011000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFC000203, 0x81C, 0xFB020203, - 0x81C, 0xFA040203, 0x81C, 0xF9060203, 0x81C, 0xF8080203, - 0x81C, 0xF70A0203, 0x81C, 0xF60C0203, 0x81C, 0xF50E0203, - 0x81C, 0xF4100203, 0x81C, 0xF3120203, 0x81C, 0xF2140203, - 0x81C, 0xF1160203, 0x81C, 0xF0180203, 0x81C, 0xEE1A0203, - 0x81C, 0xED1C0203, 0x81C, 0xEC1E0203, 0x81C, 0xEB200203, - 0x81C, 0xEA220203, 0x81C, 0xE9240203, 0x81C, 0xE8260203, - 0x81C, 0xE7280203, 0x81C, 0xE62A0203, 0x81C, 0xE52C0203, - 0x81C, 0xE42E0203, 0x81C, 0xE3300203, 0x81C, 0xE2320203, - 0x81C, 0xC6340203, 0x81C, 0xC5360203, 0x81C, 0xC4380203, - 0x81C, 0xC33A0203, 0x81C, 0xA63C0203, 0x81C, 0xA53E0203, - 0x81C, 0xA4400203, 0x81C, 0xA3420203, 0x81C, 0xA2440203, - 0x81C, 0xA1460203, 0x81C, 0x83480203, 0x81C, 0x824A0203, - 0x81C, 0x814C0203, 0x81C, 0x804E0203, 0x81C, 0x63500203, - 0x81C, 0x62520203, 0x81C, 0x61540203, 0x81C, 0x42560203, - 0x81C, 0x41580203, 0x81C, 0x405A0203, 0x81C, 0x225C0203, - 0x81C, 0x215E0203, 0x81C, 0x20600203, 0x81C, 0x04620203, - 0x81C, 0x03640203, 0x81C, 0x02660203, 0x81C, 0x01680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFC000203, 0x81C, 0xFB020203, - 0x81C, 0xFA040203, 0x81C, 0xF9060203, 0x81C, 0xF8080203, - 0x81C, 0xF70A0203, 0x81C, 0xF60C0203, 0x81C, 0xF50E0203, - 0x81C, 0xF4100203, 0x81C, 0xF3120203, 0x81C, 0xF2140203, - 0x81C, 0xF1160203, 0x81C, 0xF0180203, 0x81C, 0xEF1A0203, - 0x81C, 0xEE1C0203, 0x81C, 0xED1E0203, 0x81C, 0xEC200203, - 0x81C, 0xEB220203, 0x81C, 0xEA240203, 0x81C, 0xE9260203, - 0x81C, 0xE8280203, 0x81C, 0xE72A0203, 0x81C, 0xE62C0203, - 0x81C, 0xE52E0203, 0x81C, 0xE4300203, 0x81C, 0xE3320203, - 0x81C, 0xE2340203, 0x81C, 0xE1360203, 0x81C, 0xC5380203, - 0x81C, 0xC43A0203, 0x81C, 0xC33C0203, 0x81C, 0xC23E0203, - 0x81C, 0xC1400203, 0x81C, 0xA3420203, 0x81C, 0xA2440203, - 0x81C, 0xA1460203, 0x81C, 0xA0480203, 0x81C, 0x834A0203, - 0x81C, 0x824C0203, 0x81C, 0x814E0203, 0x81C, 0x64500203, - 0x81C, 0x63520203, 0x81C, 0x62540203, 0x81C, 0x61560203, - 0x81C, 0x25580203, 0x81C, 0x245A0203, 0x81C, 0x235C0203, - 0x81C, 0x225E0203, 0x81C, 0x21600203, 0x81C, 0x04620203, - 0x81C, 0x03640203, 0x81C, 0x02660203, 0x81C, 0x01680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFC000203, 0x81C, 0xFB020203, - 0x81C, 0xFA040203, 0x81C, 0xF9060203, 0x81C, 0xF8080203, - 0x81C, 0xF70A0203, 0x81C, 0xF60C0203, 0x81C, 0xF50E0203, - 0x81C, 0xF4100203, 0x81C, 0xF3120203, 0x81C, 0xF2140203, - 0x81C, 0xF1160203, 0x81C, 0xF0180203, 0x81C, 0xEF1A0203, - 0x81C, 0xEE1C0203, 0x81C, 0xED1E0203, 0x81C, 0xEC200203, - 0x81C, 0xEB220203, 0x81C, 0xEA240203, 0x81C, 0xE9260203, - 0x81C, 0xE8280203, 0x81C, 0xE72A0203, 0x81C, 0xE62C0203, - 0x81C, 0xE52E0203, 0x81C, 0xE4300203, 0x81C, 0xE3320203, - 0x81C, 0xE2340203, 0x81C, 0xC6360203, 0x81C, 0xC5380203, - 0x81C, 0xC43A0203, 0x81C, 0xC33C0203, 0x81C, 0xA63E0203, - 0x81C, 0xA5400203, 0x81C, 0xA4420203, 0x81C, 0xA3440203, - 0x81C, 0xA2460203, 0x81C, 0xA1480203, 0x81C, 0x834A0203, - 0x81C, 0x824C0203, 0x81C, 0x814E0203, 0x81C, 0x64500203, - 0x81C, 0x63520203, 0x81C, 0x62540203, 0x81C, 0x61560203, - 0x81C, 0x60580203, 0x81C, 0x405A0203, 0x81C, 0x215C0203, - 0x81C, 0x205E0203, 0x81C, 0x03600203, 0x81C, 0x02620203, - 0x81C, 0x01640203, 0x81C, 0x00660203, 0x81C, 0x00680203, - 0x81C, 0x006A0203, 0x81C, 0x006C0203, 0x81C, 0x006E0203, - 0x81C, 0x00700203, 0x81C, 0x00720203, 0x81C, 0x00740203, - 0x81C, 0x00760203, 0x81C, 0x00780203, 0x81C, 0x007A0203, - 0x81C, 0x007C0203, 0x81C, 0x007E0203, 0xA0000000, 0x00000000, - 0x81C, 0xFD000203, 0x81C, 0xFC020203, 0x81C, 0xFB040203, - 0x81C, 0xFA060203, 0x81C, 0xF9080203, 0x81C, 0xF80A0203, - 0x81C, 0xF70C0203, 0x81C, 0xF60E0203, 0x81C, 0xF5100203, - 0x81C, 0xF4120203, 0x81C, 0xF3140203, 0x81C, 0xF2160203, - 0x81C, 0xF1180203, 0x81C, 0xF01A0203, 0x81C, 0xEF1C0203, - 0x81C, 0xEE1E0203, 0x81C, 0xED200203, 0x81C, 0xEC220203, - 0x81C, 0xEB240203, 0x81C, 0xEA260203, 0x81C, 0xE9280203, - 0x81C, 0xE82A0203, 0x81C, 0xE72C0203, 0x81C, 0xE62E0203, - 0x81C, 0xE5300203, 0x81C, 0xE4320203, 0x81C, 0xE3340203, - 0x81C, 0xC6360203, 0x81C, 0xC5380203, 0x81C, 0xC43A0203, - 0x81C, 0xC33C0203, 0x81C, 0xA63E0203, 0x81C, 0xA5400203, - 0x81C, 0xA4420203, 0x81C, 0xA3440203, 0x81C, 0xA2460203, - 0x81C, 0xA1480203, 0x81C, 0x834A0203, 0x81C, 0x824C0203, - 0x81C, 0x814E0203, 0x81C, 0x64500203, 0x81C, 0x63520203, - 0x81C, 0x62540203, 0x81C, 0x61560203, 0x81C, 0x60580203, - 0x81C, 0x235A0203, 0x81C, 0x225C0203, 0x81C, 0x215E0203, - 0x81C, 0x20600203, 0x81C, 0x03620203, 0x81C, 0x02640203, - 0x81C, 0x01660203, 0x81C, 0x00680203, 0x81C, 0x006A0203, - 0x81C, 0x006C0203, 0x81C, 0x006E0203, 0x81C, 0x00700203, - 0x81C, 0x00720203, 0x81C, 0x00740203, 0x81C, 0x00760203, - 0x81C, 0x00780203, 0x81C, 0x007A0203, 0x81C, 0x007C0203, - 0x81C, 0x007E0203, 0xB0000000, 0x00000000, 0x8000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x81C, 0xF8000303, 0x81C, 0xF7020303, - 0x81C, 0xF6040303, 0x81C, 0xF5060303, 0x81C, 0xF4080303, - 0x81C, 0xF30A0303, 0x81C, 0xF20C0303, 0x81C, 0xF10E0303, - 0x81C, 0xF0100303, 0x81C, 0xEF120303, 0x81C, 0xEE140303, - 0x81C, 0xED160303, 0x81C, 0xEC180303, 0x81C, 0xEB1A0303, - 0x81C, 0xEA1C0303, 0x81C, 0xE91E0303, 0x81C, 0xCA200303, - 0x81C, 0xC9220303, 0x81C, 0xC8240303, 0x81C, 0xC7260303, - 0x81C, 0xC6280303, 0x81C, 0xC52A0303, 0x81C, 0xC42C0303, - 0x81C, 0xC32E0303, 0x81C, 0xC2300303, 0x81C, 0xC1320303, - 0x81C, 0xA3340303, 0x81C, 0xA2360303, 0x81C, 0xA1380303, - 0x81C, 0xA03A0303, 0x81C, 0x823C0303, 0x81C, 0x813E0303, - 0x81C, 0x80400303, 0x81C, 0x65420303, 0x81C, 0x64440303, - 0x81C, 0x63460303, 0x81C, 0x62480303, 0x81C, 0x614A0303, - 0x81C, 0x424C0303, 0x81C, 0x414E0303, 0x81C, 0x40500303, - 0x81C, 0x22520303, 0x81C, 0x21540303, 0x81C, 0x20560303, - 0x81C, 0x04580303, 0x81C, 0x035A0303, 0x81C, 0x025C0303, - 0x81C, 0x015E0303, 0x81C, 0x00600303, 0x81C, 0x00620303, - 0x81C, 0x00640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x81C, 0xF9000303, 0x81C, 0xF8020303, - 0x81C, 0xF7040303, 0x81C, 0xF6060303, 0x81C, 0xF5080303, - 0x81C, 0xF40A0303, 0x81C, 0xF30C0303, 0x81C, 0xF20E0303, - 0x81C, 0xF1100303, 0x81C, 0xF0120303, 0x81C, 0xEF140303, - 0x81C, 0xEE160303, 0x81C, 0xED180303, 0x81C, 0xEC1A0303, - 0x81C, 0xEB1C0303, 0x81C, 0xEA1E0303, 0x81C, 0xC9200303, - 0x81C, 0xC8220303, 0x81C, 0xC7240303, 0x81C, 0xC6260303, - 0x81C, 0xC5280303, 0x81C, 0xC42A0303, 0x81C, 0xC32C0303, - 0x81C, 0xC22E0303, 0x81C, 0xC1300303, 0x81C, 0xC0320303, - 0x81C, 0xA3340303, 0x81C, 0xA2360303, 0x81C, 0xA1380303, - 0x81C, 0xA03A0303, 0x81C, 0x823C0303, 0x81C, 0x813E0303, - 0x81C, 0x80400303, 0x81C, 0x64420303, 0x81C, 0x63440303, - 0x81C, 0x62460303, 0x81C, 0x61480303, 0x81C, 0x604A0303, - 0x81C, 0x414C0303, 0x81C, 0x404E0303, 0x81C, 0x22500303, - 0x81C, 0x21520303, 0x81C, 0x20540303, 0x81C, 0x03560303, - 0x81C, 0x02580303, 0x81C, 0x015A0303, 0x81C, 0x005C0303, - 0x81C, 0x005E0303, 0x81C, 0x00600303, 0x81C, 0x00620303, - 0x81C, 0x00640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF7000303, 0x81C, 0xF6020303, - 0x81C, 0xF5040303, 0x81C, 0xF4060303, 0x81C, 0xF3080303, - 0x81C, 0xF20A0303, 0x81C, 0xF10C0303, 0x81C, 0xF00E0303, - 0x81C, 0xEF100303, 0x81C, 0xEE120303, 0x81C, 0xED140303, - 0x81C, 0xEC160303, 0x81C, 0xEB180303, 0x81C, 0xEA1A0303, - 0x81C, 0xE91C0303, 0x81C, 0xCA1E0303, 0x81C, 0xC9200303, - 0x81C, 0xC8220303, 0x81C, 0xC7240303, 0x81C, 0xC6260303, - 0x81C, 0xC5280303, 0x81C, 0xC42A0303, 0x81C, 0xC32C0303, - 0x81C, 0xC22E0303, 0x81C, 0xC1300303, 0x81C, 0xA4320303, - 0x81C, 0xA3340303, 0x81C, 0xA2360303, 0x81C, 0xA1380303, - 0x81C, 0xA03A0303, 0x81C, 0x823C0303, 0x81C, 0x813E0303, - 0x81C, 0x80400303, 0x81C, 0x64420303, 0x81C, 0x63440303, - 0x81C, 0x62460303, 0x81C, 0x61480303, 0x81C, 0x604A0303, - 0x81C, 0x414C0303, 0x81C, 0x404E0303, 0x81C, 0x06500303, - 0x81C, 0x05520303, 0x81C, 0x04540303, 0x81C, 0x03560303, - 0x81C, 0x02580303, 0x81C, 0x015A0303, 0x81C, 0x005C0303, - 0x81C, 0x005E0303, 0x81C, 0x00600303, 0x81C, 0x00620303, - 0x81C, 0x00640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF7000303, 0x81C, 0xF6020303, - 0x81C, 0xF5040303, 0x81C, 0xF4060303, 0x81C, 0xF3080303, - 0x81C, 0xF20A0303, 0x81C, 0xF10C0303, 0x81C, 0xF00E0303, - 0x81C, 0xEF100303, 0x81C, 0xEE120303, 0x81C, 0xED140303, - 0x81C, 0xEC160303, 0x81C, 0xEB180303, 0x81C, 0xEA1A0303, - 0x81C, 0xE91C0303, 0x81C, 0xCA1E0303, 0x81C, 0xC9200303, - 0x81C, 0xC8220303, 0x81C, 0xC7240303, 0x81C, 0xC6260303, - 0x81C, 0xC5280303, 0x81C, 0xC42A0303, 0x81C, 0xC32C0303, - 0x81C, 0xC22E0303, 0x81C, 0xC1300303, 0x81C, 0xA4320303, - 0x81C, 0xA3340303, 0x81C, 0xA2360303, 0x81C, 0xA1380303, - 0x81C, 0xA03A0303, 0x81C, 0x823C0303, 0x81C, 0x813E0303, - 0x81C, 0x80400303, 0x81C, 0x64420303, 0x81C, 0x63440303, - 0x81C, 0x62460303, 0x81C, 0x61480303, 0x81C, 0x604A0303, - 0x81C, 0x414C0303, 0x81C, 0x404E0303, 0x81C, 0x22500303, - 0x81C, 0x21520303, 0x81C, 0x20540303, 0x81C, 0x03560303, - 0x81C, 0x02580303, 0x81C, 0x015A0303, 0x81C, 0x005C0303, - 0x81C, 0x005E0303, 0x81C, 0x00600303, 0x81C, 0x00620303, - 0x81C, 0x00640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF7000303, 0x81C, 0xF6020303, - 0x81C, 0xF5040303, 0x81C, 0xF4060303, 0x81C, 0xF3080303, - 0x81C, 0xF20A0303, 0x81C, 0xF10C0303, 0x81C, 0xF00E0303, - 0x81C, 0xEF100303, 0x81C, 0xEE120303, 0x81C, 0xED140303, - 0x81C, 0xEC160303, 0x81C, 0xEB180303, 0x81C, 0xEA1A0303, - 0x81C, 0xE91C0303, 0x81C, 0xCA1E0303, 0x81C, 0xC9200303, - 0x81C, 0xC8220303, 0x81C, 0xC7240303, 0x81C, 0xC6260303, - 0x81C, 0xC5280303, 0x81C, 0xC42A0303, 0x81C, 0xC32C0303, - 0x81C, 0xC22E0303, 0x81C, 0xC1300303, 0x81C, 0xA4320303, - 0x81C, 0xA3340303, 0x81C, 0xA2360303, 0x81C, 0xA1380303, - 0x81C, 0xA03A0303, 0x81C, 0x823C0303, 0x81C, 0x813E0303, - 0x81C, 0x80400303, 0x81C, 0x64420303, 0x81C, 0x63440303, - 0x81C, 0x62460303, 0x81C, 0x61480303, 0x81C, 0x604A0303, - 0x81C, 0x414C0303, 0x81C, 0x404E0303, 0x81C, 0x22500303, - 0x81C, 0x21520303, 0x81C, 0x20540303, 0x81C, 0x03560303, - 0x81C, 0x02580303, 0x81C, 0x015A0303, 0x81C, 0x005C0303, - 0x81C, 0x005E0303, 0x81C, 0x00600303, 0x81C, 0x00620303, - 0x81C, 0x00640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x90012100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFB000303, 0x81C, 0xFA020303, - 0x81C, 0xF9040303, 0x81C, 0xF8060303, 0x81C, 0xF7080303, - 0x81C, 0xF60A0303, 0x81C, 0xF50C0303, 0x81C, 0xF40E0303, - 0x81C, 0xF3100303, 0x81C, 0xF2120303, 0x81C, 0xF1140303, - 0x81C, 0xF0160303, 0x81C, 0xEF180303, 0x81C, 0xEE1A0303, - 0x81C, 0xED1C0303, 0x81C, 0xEC1E0303, 0x81C, 0xEB200303, - 0x81C, 0xEA220303, 0x81C, 0xE9240303, 0x81C, 0xE8260303, - 0x81C, 0xE7280303, 0x81C, 0xE62A0303, 0x81C, 0xE52C0303, - 0x81C, 0xE42E0303, 0x81C, 0xE3300303, 0x81C, 0xE2320303, - 0x81C, 0xC6340303, 0x81C, 0xC5360303, 0x81C, 0xC4380303, - 0x81C, 0xC33A0303, 0x81C, 0xC23C0303, 0x81C, 0xC13E0303, - 0x81C, 0xA4400303, 0x81C, 0xA3420303, 0x81C, 0xA2440303, - 0x81C, 0xA1460303, 0x81C, 0x83480303, 0x81C, 0x824A0303, - 0x81C, 0x814C0303, 0x81C, 0x804E0303, 0x81C, 0x63500303, - 0x81C, 0x62520303, 0x81C, 0x43540303, 0x81C, 0x42560303, - 0x81C, 0x41580303, 0x81C, 0x235A0303, 0x81C, 0x225C0303, - 0x81C, 0x215E0303, 0x81C, 0x20600303, 0x81C, 0x04620303, - 0x81C, 0x03640303, 0x81C, 0x02660303, 0x81C, 0x01680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xF8000303, 0x81C, 0xF7020303, - 0x81C, 0xF6040303, 0x81C, 0xF5060303, 0x81C, 0xF4080303, - 0x81C, 0xF30A0303, 0x81C, 0xF20C0303, 0x81C, 0xF10E0303, - 0x81C, 0xF0100303, 0x81C, 0xEF120303, 0x81C, 0xEE140303, - 0x81C, 0xED160303, 0x81C, 0xEC180303, 0x81C, 0xEB1A0303, - 0x81C, 0xEA1C0303, 0x81C, 0xE91E0303, 0x81C, 0xCA200303, - 0x81C, 0xC9220303, 0x81C, 0xC8240303, 0x81C, 0xC7260303, - 0x81C, 0xC6280303, 0x81C, 0xC52A0303, 0x81C, 0xC42C0303, - 0x81C, 0xC32E0303, 0x81C, 0xC2300303, 0x81C, 0xC1320303, - 0x81C, 0xA3340303, 0x81C, 0xA2360303, 0x81C, 0xA1380303, - 0x81C, 0xA03A0303, 0x81C, 0x823C0303, 0x81C, 0x813E0303, - 0x81C, 0x80400303, 0x81C, 0x65420303, 0x81C, 0x64440303, - 0x81C, 0x63460303, 0x81C, 0x62480303, 0x81C, 0x614A0303, - 0x81C, 0x424C0303, 0x81C, 0x414E0303, 0x81C, 0x40500303, - 0x81C, 0x22520303, 0x81C, 0x21540303, 0x81C, 0x20560303, - 0x81C, 0x04580303, 0x81C, 0x035A0303, 0x81C, 0x025C0303, - 0x81C, 0x015E0303, 0x81C, 0x00600303, 0x81C, 0x00620303, - 0x81C, 0x00640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x90011000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFB000303, 0x81C, 0xFA020303, - 0x81C, 0xF9040303, 0x81C, 0xF8060303, 0x81C, 0xF7080303, - 0x81C, 0xF60A0303, 0x81C, 0xF50C0303, 0x81C, 0xF40E0303, - 0x81C, 0xF3100303, 0x81C, 0xF2120303, 0x81C, 0xF1140303, - 0x81C, 0xF0160303, 0x81C, 0xEE180303, 0x81C, 0xED1A0303, - 0x81C, 0xEC1C0303, 0x81C, 0xEB1E0303, 0x81C, 0xEA200303, - 0x81C, 0xE9220303, 0x81C, 0xE8240303, 0x81C, 0xE7260303, - 0x81C, 0xE6280303, 0x81C, 0xE52A0303, 0x81C, 0xE42C0303, - 0x81C, 0xE32E0303, 0x81C, 0xE2300303, 0x81C, 0xE1320303, - 0x81C, 0xC6340303, 0x81C, 0xC5360303, 0x81C, 0xC4380303, - 0x81C, 0xC33A0303, 0x81C, 0xA63C0303, 0x81C, 0xA53E0303, - 0x81C, 0xA4400303, 0x81C, 0xA3420303, 0x81C, 0xA2440303, - 0x81C, 0xA1460303, 0x81C, 0x83480303, 0x81C, 0x824A0303, - 0x81C, 0x814C0303, 0x81C, 0x804E0303, 0x81C, 0x63500303, - 0x81C, 0x62520303, 0x81C, 0x61540303, 0x81C, 0x42560303, - 0x81C, 0x41580303, 0x81C, 0x405A0303, 0x81C, 0x225C0303, - 0x81C, 0x215E0303, 0x81C, 0x20600303, 0x81C, 0x04620303, - 0x81C, 0x03640303, 0x81C, 0x02660303, 0x81C, 0x01680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFB000303, 0x81C, 0xFA020303, - 0x81C, 0xF9040303, 0x81C, 0xF8060303, 0x81C, 0xF7080303, - 0x81C, 0xF60A0303, 0x81C, 0xF50C0303, 0x81C, 0xF40E0303, - 0x81C, 0xF3100303, 0x81C, 0xF2120303, 0x81C, 0xF1140303, - 0x81C, 0xF0160303, 0x81C, 0xEF180303, 0x81C, 0xEE1A0303, - 0x81C, 0xED1C0303, 0x81C, 0xEC1E0303, 0x81C, 0xEB200303, - 0x81C, 0xEA220303, 0x81C, 0xE9240303, 0x81C, 0xE8260303, - 0x81C, 0xE7280303, 0x81C, 0xE62A0303, 0x81C, 0xE52C0303, - 0x81C, 0xE42E0303, 0x81C, 0xE3300303, 0x81C, 0xE2320303, - 0x81C, 0xE1340303, 0x81C, 0xC5360303, 0x81C, 0xC4380303, - 0x81C, 0xC33A0303, 0x81C, 0xC23C0303, 0x81C, 0xC13E0303, - 0x81C, 0xA4400303, 0x81C, 0xA3420303, 0x81C, 0xA2440303, - 0x81C, 0xA1460303, 0x81C, 0x83480303, 0x81C, 0x824A0303, - 0x81C, 0x814C0303, 0x81C, 0x804E0303, 0x81C, 0x64500303, - 0x81C, 0x63520303, 0x81C, 0x62540303, 0x81C, 0x61560303, - 0x81C, 0x60580303, 0x81C, 0x235A0303, 0x81C, 0x225C0303, - 0x81C, 0x215E0303, 0x81C, 0x20600303, 0x81C, 0x04620303, - 0x81C, 0x03640303, 0x81C, 0x02660303, 0x81C, 0x01680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFC000303, 0x81C, 0xFB020303, - 0x81C, 0xFA040303, 0x81C, 0xF9060303, 0x81C, 0xF8080303, - 0x81C, 0xF70A0303, 0x81C, 0xF60C0303, 0x81C, 0xF50E0303, - 0x81C, 0xF4100303, 0x81C, 0xF3120303, 0x81C, 0xF2140303, - 0x81C, 0xF1160303, 0x81C, 0xF0180303, 0x81C, 0xEF1A0303, - 0x81C, 0xEE1C0303, 0x81C, 0xED1E0303, 0x81C, 0xEC200303, - 0x81C, 0xEB220303, 0x81C, 0xEA240303, 0x81C, 0xE9260303, - 0x81C, 0xE8280303, 0x81C, 0xE72A0303, 0x81C, 0xE62C0303, - 0x81C, 0xE52E0303, 0x81C, 0xE4300303, 0x81C, 0xE3320303, - 0x81C, 0xE2340303, 0x81C, 0xC6360303, 0x81C, 0xC5380303, - 0x81C, 0xC43A0303, 0x81C, 0xC33C0303, 0x81C, 0xA63E0303, - 0x81C, 0xA5400303, 0x81C, 0xA4420303, 0x81C, 0xA3440303, - 0x81C, 0xA2460303, 0x81C, 0x84480303, 0x81C, 0x834A0303, - 0x81C, 0x824C0303, 0x81C, 0x814E0303, 0x81C, 0x80500303, - 0x81C, 0x63520303, 0x81C, 0x62540303, 0x81C, 0x61560303, - 0x81C, 0x60580303, 0x81C, 0x225A0303, 0x81C, 0x055C0303, - 0x81C, 0x045E0303, 0x81C, 0x03600303, 0x81C, 0x02620303, - 0x81C, 0x01640303, 0x81C, 0x00660303, 0x81C, 0x00680303, - 0x81C, 0x006A0303, 0x81C, 0x006C0303, 0x81C, 0x006E0303, - 0x81C, 0x00700303, 0x81C, 0x00720303, 0x81C, 0x00740303, - 0x81C, 0x00760303, 0x81C, 0x00780303, 0x81C, 0x007A0303, - 0x81C, 0x007C0303, 0x81C, 0x007E0303, 0xA0000000, 0x00000000, - 0x81C, 0xFC000303, 0x81C, 0xFB020303, 0x81C, 0xFA040303, - 0x81C, 0xF9060303, 0x81C, 0xF8080303, 0x81C, 0xF70A0303, - 0x81C, 0xF60C0303, 0x81C, 0xF50E0303, 0x81C, 0xF4100303, - 0x81C, 0xF3120303, 0x81C, 0xF2140303, 0x81C, 0xF1160303, - 0x81C, 0xF0180303, 0x81C, 0xEF1A0303, 0x81C, 0xEE1C0303, - 0x81C, 0xED1E0303, 0x81C, 0xEC200303, 0x81C, 0xEB220303, - 0x81C, 0xEA240303, 0x81C, 0xE9260303, 0x81C, 0xE8280303, - 0x81C, 0xE72A0303, 0x81C, 0xE62C0303, 0x81C, 0xE52E0303, - 0x81C, 0xE4300303, 0x81C, 0xE3320303, 0x81C, 0xE2340303, - 0x81C, 0xC6360303, 0x81C, 0xC5380303, 0x81C, 0xC43A0303, - 0x81C, 0xC33C0303, 0x81C, 0xA63E0303, 0x81C, 0xA5400303, - 0x81C, 0xA4420303, 0x81C, 0xA3440303, 0x81C, 0xA2460303, - 0x81C, 0x84480303, 0x81C, 0x834A0303, 0x81C, 0x824C0303, - 0x81C, 0x814E0303, 0x81C, 0x80500303, 0x81C, 0x63520303, - 0x81C, 0x62540303, 0x81C, 0x61560303, 0x81C, 0x60580303, - 0x81C, 0x235A0303, 0x81C, 0x225C0303, 0x81C, 0x215E0303, - 0x81C, 0x20600303, 0x81C, 0x03620303, 0x81C, 0x02640303, - 0x81C, 0x01660303, 0x81C, 0x00680303, 0x81C, 0x006A0303, - 0x81C, 0x006C0303, 0x81C, 0x006E0303, 0x81C, 0x00700303, - 0x81C, 0x00720303, 0x81C, 0x00740303, 0x81C, 0x00760303, - 0x81C, 0x00780303, 0x81C, 0x007A0303, 0x81C, 0x007C0303, - 0x81C, 0x007E0303, 0xB0000000, 0x00000000, 0x8000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x81C, 0xFF000403, 0x81C, 0xF5000403, - 0x81C, 0xF4020403, 0x81C, 0xF3040403, 0x81C, 0xF2060403, - 0x81C, 0xF1080403, 0x81C, 0xF00A0403, 0x81C, 0xEF0C0403, - 0x81C, 0xEE0E0403, 0x81C, 0xED100403, 0x81C, 0xEC120403, - 0x81C, 0xEB140403, 0x81C, 0xEA160403, 0x81C, 0xE9180403, - 0x81C, 0xE81A0403, 0x81C, 0xE71C0403, 0x81C, 0xE61E0403, - 0x81C, 0xE5200403, 0x81C, 0xE4220403, 0x81C, 0xE3240403, - 0x81C, 0xE2260403, 0x81C, 0xE1280403, 0x81C, 0xE02A0403, - 0x81C, 0xC32C0403, 0x81C, 0xC22E0403, 0x81C, 0xC1300403, - 0x81C, 0xC0320403, 0x81C, 0xA4340403, 0x81C, 0xA3360403, - 0x81C, 0xA2380403, 0x81C, 0xA13A0403, 0x81C, 0xA03C0403, - 0x81C, 0x823E0403, 0x81C, 0x81400403, 0x81C, 0x80420403, - 0x81C, 0x64440403, 0x81C, 0x63460403, 0x81C, 0x62480403, - 0x81C, 0x614A0403, 0x81C, 0x604C0403, 0x81C, 0x454E0403, - 0x81C, 0x44500403, 0x81C, 0x43520403, 0x81C, 0x42540403, - 0x81C, 0x41560403, 0x81C, 0x40580403, 0x81C, 0x055A0403, - 0x81C, 0x045C0403, 0x81C, 0x035E0403, 0x81C, 0x02600403, - 0x81C, 0x01620403, 0x81C, 0x00640403, 0x81C, 0x00660403, - 0x81C, 0x00680403, 0x81C, 0x006A0403, 0x81C, 0x006C0403, - 0x81C, 0x006E0403, 0x81C, 0x00700403, 0x81C, 0x00720403, - 0x81C, 0x00740403, 0x81C, 0x00760403, 0x81C, 0x00780403, - 0x81C, 0x007A0403, 0x81C, 0x007C0403, 0x81C, 0x007E0403, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x81C, 0xFF000403, - 0x81C, 0xF5000403, 0x81C, 0xF4020403, 0x81C, 0xF3040403, - 0x81C, 0xF2060403, 0x81C, 0xF1080403, 0x81C, 0xF00A0403, - 0x81C, 0xEF0C0403, 0x81C, 0xEE0E0403, 0x81C, 0xED100403, - 0x81C, 0xEC120403, 0x81C, 0xEB140403, 0x81C, 0xEA160403, - 0x81C, 0xE9180403, 0x81C, 0xE81A0403, 0x81C, 0xE71C0403, - 0x81C, 0xE61E0403, 0x81C, 0xE5200403, 0x81C, 0xE4220403, - 0x81C, 0xE3240403, 0x81C, 0xE2260403, 0x81C, 0xE1280403, - 0x81C, 0xE02A0403, 0x81C, 0xC32C0403, 0x81C, 0xC22E0403, - 0x81C, 0xC1300403, 0x81C, 0xC0320403, 0x81C, 0xA4340403, - 0x81C, 0xA3360403, 0x81C, 0xA2380403, 0x81C, 0xA13A0403, - 0x81C, 0xA03C0403, 0x81C, 0x823E0403, 0x81C, 0x81400403, - 0x81C, 0x80420403, 0x81C, 0x64440403, 0x81C, 0x63460403, - 0x81C, 0x62480403, 0x81C, 0x614A0403, 0x81C, 0x604C0403, - 0x81C, 0x454E0403, 0x81C, 0x44500403, 0x81C, 0x43520403, - 0x81C, 0x42540403, 0x81C, 0x41560403, 0x81C, 0x40580403, - 0x81C, 0x055A0403, 0x81C, 0x045C0403, 0x81C, 0x035E0403, - 0x81C, 0x02600403, 0x81C, 0x01620403, 0x81C, 0x00640403, - 0x81C, 0x00660403, 0x81C, 0x00680403, 0x81C, 0x006A0403, - 0x81C, 0x006C0403, 0x81C, 0x006E0403, 0x81C, 0x00700403, - 0x81C, 0x00720403, 0x81C, 0x00740403, 0x81C, 0x00760403, - 0x81C, 0x00780403, 0x81C, 0x007A0403, 0x81C, 0x007C0403, - 0x81C, 0x007E0403, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x81C, 0xFF000403, 0x81C, 0xF5000403, 0x81C, 0xF4020403, - 0x81C, 0xF3040403, 0x81C, 0xF2060403, 0x81C, 0xF1080403, - 0x81C, 0xF00A0403, 0x81C, 0xEF0C0403, 0x81C, 0xEE0E0403, - 0x81C, 0xED100403, 0x81C, 0xEC120403, 0x81C, 0xEB140403, - 0x81C, 0xEA160403, 0x81C, 0xE9180403, 0x81C, 0xE81A0403, - 0x81C, 0xE71C0403, 0x81C, 0xE61E0403, 0x81C, 0xE5200403, - 0x81C, 0xE4220403, 0x81C, 0xE3240403, 0x81C, 0xE2260403, - 0x81C, 0xE1280403, 0x81C, 0xE02A0403, 0x81C, 0xC32C0403, - 0x81C, 0xC22E0403, 0x81C, 0xC1300403, 0x81C, 0xC0320403, - 0x81C, 0xA4340403, 0x81C, 0xA3360403, 0x81C, 0xA2380403, - 0x81C, 0xA13A0403, 0x81C, 0xA03C0403, 0x81C, 0x823E0403, - 0x81C, 0x81400403, 0x81C, 0x80420403, 0x81C, 0x64440403, - 0x81C, 0x63460403, 0x81C, 0x62480403, 0x81C, 0x614A0403, - 0x81C, 0x604C0403, 0x81C, 0x454E0403, 0x81C, 0x44500403, - 0x81C, 0x43520403, 0x81C, 0x42540403, 0x81C, 0x41560403, - 0x81C, 0x40580403, 0x81C, 0x055A0403, 0x81C, 0x045C0403, - 0x81C, 0x035E0403, 0x81C, 0x02600403, 0x81C, 0x01620403, - 0x81C, 0x00640403, 0x81C, 0x00660403, 0x81C, 0x00680403, - 0x81C, 0x006A0403, 0x81C, 0x006C0403, 0x81C, 0x006E0403, - 0x81C, 0x00700403, 0x81C, 0x00720403, 0x81C, 0x00740403, - 0x81C, 0x00760403, 0x81C, 0x00780403, 0x81C, 0x007A0403, - 0x81C, 0x007C0403, 0x81C, 0x007E0403, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFF000403, 0x81C, 0xF5000403, - 0x81C, 0xF4020403, 0x81C, 0xF3040403, 0x81C, 0xF2060403, - 0x81C, 0xF1080403, 0x81C, 0xF00A0403, 0x81C, 0xEF0C0403, - 0x81C, 0xEE0E0403, 0x81C, 0xED100403, 0x81C, 0xEC120403, - 0x81C, 0xEB140403, 0x81C, 0xEA160403, 0x81C, 0xE9180403, - 0x81C, 0xE81A0403, 0x81C, 0xE71C0403, 0x81C, 0xE61E0403, - 0x81C, 0xE5200403, 0x81C, 0xE4220403, 0x81C, 0xE3240403, - 0x81C, 0xE2260403, 0x81C, 0xE1280403, 0x81C, 0xE02A0403, - 0x81C, 0xC32C0403, 0x81C, 0xC22E0403, 0x81C, 0xC1300403, - 0x81C, 0xC0320403, 0x81C, 0xA4340403, 0x81C, 0xA3360403, - 0x81C, 0xA2380403, 0x81C, 0xA13A0403, 0x81C, 0xA03C0403, - 0x81C, 0x823E0403, 0x81C, 0x81400403, 0x81C, 0x80420403, - 0x81C, 0x64440403, 0x81C, 0x63460403, 0x81C, 0x62480403, - 0x81C, 0x614A0403, 0x81C, 0x604C0403, 0x81C, 0x454E0403, - 0x81C, 0x44500403, 0x81C, 0x43520403, 0x81C, 0x42540403, - 0x81C, 0x41560403, 0x81C, 0x40580403, 0x81C, 0x055A0403, - 0x81C, 0x045C0403, 0x81C, 0x035E0403, 0x81C, 0x02600403, - 0x81C, 0x01620403, 0x81C, 0x00640403, 0x81C, 0x00660403, - 0x81C, 0x00680403, 0x81C, 0x006A0403, 0x81C, 0x006C0403, - 0x81C, 0x006E0403, 0x81C, 0x00700403, 0x81C, 0x00720403, - 0x81C, 0x00740403, 0x81C, 0x00760403, 0x81C, 0x00780403, - 0x81C, 0x007A0403, 0x81C, 0x007C0403, 0x81C, 0x007E0403, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x81C, 0xFF000403, - 0x81C, 0xFF000403, 0x81C, 0xFF020403, 0x81C, 0xFE040403, - 0x81C, 0xFD060403, 0x81C, 0xFC080403, 0x81C, 0xFB0A0403, - 0x81C, 0xFA0C0403, 0x81C, 0xF90E0403, 0x81C, 0xF8100403, - 0x81C, 0xF7120403, 0x81C, 0xF6140403, 0x81C, 0xF5160403, - 0x81C, 0xF4180403, 0x81C, 0xF31A0403, 0x81C, 0xF21C0403, - 0x81C, 0xD51E0403, 0x81C, 0xD4200403, 0x81C, 0xD3220403, - 0x81C, 0xD2240403, 0x81C, 0xB6260403, 0x81C, 0xB5280403, - 0x81C, 0xB42A0403, 0x81C, 0xB32C0403, 0x81C, 0xB22E0403, - 0x81C, 0xB1300403, 0x81C, 0xB0320403, 0x81C, 0xAF340403, - 0x81C, 0xAE360403, 0x81C, 0xAD380403, 0x81C, 0xAC3A0403, - 0x81C, 0xAB3C0403, 0x81C, 0xAA3E0403, 0x81C, 0xA9400403, - 0x81C, 0xA8420403, 0x81C, 0xA7440403, 0x81C, 0xA6460403, - 0x81C, 0xA5480403, 0x81C, 0xA44A0403, 0x81C, 0xA34C0403, - 0x81C, 0x854E0403, 0x81C, 0x84500403, 0x81C, 0x83520403, - 0x81C, 0x82540403, 0x81C, 0x81560403, 0x81C, 0x80580403, - 0x81C, 0x485A0403, 0x81C, 0x475C0403, 0x81C, 0x465E0403, - 0x81C, 0x45600403, 0x81C, 0x44620403, 0x81C, 0x0A640403, - 0x81C, 0x09660403, 0x81C, 0x08680403, 0x81C, 0x076A0403, - 0x81C, 0x066C0403, 0x81C, 0x056E0403, 0x81C, 0x04700403, - 0x81C, 0x03720403, 0x81C, 0x02740403, 0x81C, 0x01760403, - 0x81C, 0x00780403, 0x81C, 0x007A0403, 0x81C, 0x007C0403, - 0x81C, 0x007E0403, 0x90012100, 0x00000000, 0x40000000, 0x00000000, - 0x81C, 0xFF000403, 0x81C, 0xFF000403, 0x81C, 0xFF020403, - 0x81C, 0xFE040403, 0x81C, 0xFD060403, 0x81C, 0xFC080403, - 0x81C, 0xFB0A0403, 0x81C, 0xFA0C0403, 0x81C, 0xF90E0403, - 0x81C, 0xF8100403, 0x81C, 0xF7120403, 0x81C, 0xF6140403, - 0x81C, 0xF5160403, 0x81C, 0xF4180403, 0x81C, 0xF31A0403, - 0x81C, 0xF21C0403, 0x81C, 0xD51E0403, 0x81C, 0xD4200403, - 0x81C, 0xD3220403, 0x81C, 0xD2240403, 0x81C, 0xB6260403, - 0x81C, 0xB5280403, 0x81C, 0xB42A0403, 0x81C, 0xB32C0403, - 0x81C, 0xB22E0403, 0x81C, 0xB1300403, 0x81C, 0xB0320403, - 0x81C, 0xAF340403, 0x81C, 0xAE360403, 0x81C, 0xAD380403, - 0x81C, 0xAC3A0403, 0x81C, 0xAB3C0403, 0x81C, 0xAA3E0403, - 0x81C, 0xA9400403, 0x81C, 0xA8420403, 0x81C, 0xA7440403, - 0x81C, 0xA6460403, 0x81C, 0xA5480403, 0x81C, 0xA44A0403, - 0x81C, 0xA34C0403, 0x81C, 0x854E0403, 0x81C, 0x84500403, - 0x81C, 0x83520403, 0x81C, 0x82540403, 0x81C, 0x81560403, - 0x81C, 0x80580403, 0x81C, 0x485A0403, 0x81C, 0x475C0403, - 0x81C, 0x465E0403, 0x81C, 0x45600403, 0x81C, 0x44620403, - 0x81C, 0x0A640403, 0x81C, 0x09660403, 0x81C, 0x08680403, - 0x81C, 0x076A0403, 0x81C, 0x066C0403, 0x81C, 0x056E0403, - 0x81C, 0x04700403, 0x81C, 0x03720403, 0x81C, 0x02740403, - 0x81C, 0x01760403, 0x81C, 0x00780403, 0x81C, 0x007A0403, - 0x81C, 0x007C0403, 0x81C, 0x007E0403, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFF000403, 0x81C, 0xF5000403, - 0x81C, 0xF4020403, 0x81C, 0xF3040403, 0x81C, 0xF2060403, - 0x81C, 0xF1080403, 0x81C, 0xF00A0403, 0x81C, 0xEF0C0403, - 0x81C, 0xEE0E0403, 0x81C, 0xED100403, 0x81C, 0xEC120403, - 0x81C, 0xEB140403, 0x81C, 0xEA160403, 0x81C, 0xE9180403, - 0x81C, 0xE81A0403, 0x81C, 0xE71C0403, 0x81C, 0xE61E0403, - 0x81C, 0xE5200403, 0x81C, 0xE4220403, 0x81C, 0xE3240403, - 0x81C, 0xE2260403, 0x81C, 0xE1280403, 0x81C, 0xE02A0403, - 0x81C, 0xC32C0403, 0x81C, 0xC22E0403, 0x81C, 0xC1300403, - 0x81C, 0xC0320403, 0x81C, 0xA4340403, 0x81C, 0xA3360403, - 0x81C, 0xA2380403, 0x81C, 0xA13A0403, 0x81C, 0xA03C0403, - 0x81C, 0x823E0403, 0x81C, 0x81400403, 0x81C, 0x80420403, - 0x81C, 0x64440403, 0x81C, 0x63460403, 0x81C, 0x62480403, - 0x81C, 0x614A0403, 0x81C, 0x604C0403, 0x81C, 0x454E0403, - 0x81C, 0x44500403, 0x81C, 0x43520403, 0x81C, 0x42540403, - 0x81C, 0x41560403, 0x81C, 0x40580403, 0x81C, 0x055A0403, - 0x81C, 0x045C0403, 0x81C, 0x035E0403, 0x81C, 0x02600403, - 0x81C, 0x01620403, 0x81C, 0x00640403, 0x81C, 0x00660403, - 0x81C, 0x00680403, 0x81C, 0x006A0403, 0x81C, 0x006C0403, - 0x81C, 0x006E0403, 0x81C, 0x00700403, 0x81C, 0x00720403, - 0x81C, 0x00740403, 0x81C, 0x00760403, 0x81C, 0x00780403, - 0x81C, 0x007A0403, 0x81C, 0x007C0403, 0x81C, 0x007E0403, - 0x90011000, 0x00000000, 0x40000000, 0x00000000, 0x81C, 0xFF000403, - 0x81C, 0xFF000403, 0x81C, 0xFF020403, 0x81C, 0xFE040403, - 0x81C, 0xFD060403, 0x81C, 0xFC080403, 0x81C, 0xFB0A0403, - 0x81C, 0xFA0C0403, 0x81C, 0xF90E0403, 0x81C, 0xF8100403, - 0x81C, 0xF7120403, 0x81C, 0xF6140403, 0x81C, 0xF5160403, - 0x81C, 0xF4180403, 0x81C, 0xF31A0403, 0x81C, 0xF21C0403, - 0x81C, 0xD51E0403, 0x81C, 0xD4200403, 0x81C, 0xD3220403, - 0x81C, 0xD2240403, 0x81C, 0xB6260403, 0x81C, 0xB5280403, - 0x81C, 0xB42A0403, 0x81C, 0xB32C0403, 0x81C, 0xB22E0403, - 0x81C, 0xB1300403, 0x81C, 0xB0320403, 0x81C, 0xAF340403, - 0x81C, 0xAE360403, 0x81C, 0xAD380403, 0x81C, 0xAC3A0403, - 0x81C, 0xAB3C0403, 0x81C, 0xAA3E0403, 0x81C, 0xA9400403, - 0x81C, 0xA8420403, 0x81C, 0xA7440403, 0x81C, 0xA6460403, - 0x81C, 0xA5480403, 0x81C, 0xA44A0403, 0x81C, 0xA34C0403, - 0x81C, 0x854E0403, 0x81C, 0x84500403, 0x81C, 0x83520403, - 0x81C, 0x82540403, 0x81C, 0x81560403, 0x81C, 0x80580403, - 0x81C, 0x485A0403, 0x81C, 0x475C0403, 0x81C, 0x465E0403, - 0x81C, 0x45600403, 0x81C, 0x44620403, 0x81C, 0x0A640403, - 0x81C, 0x09660403, 0x81C, 0x08680403, 0x81C, 0x076A0403, - 0x81C, 0x066C0403, 0x81C, 0x056E0403, 0x81C, 0x04700403, - 0x81C, 0x03720403, 0x81C, 0x02740403, 0x81C, 0x01760403, - 0x81C, 0x00780403, 0x81C, 0x007A0403, 0x81C, 0x007C0403, - 0x81C, 0x007E0403, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x81C, 0xFF000403, 0x81C, 0xFF000403, 0x81C, 0xFF020403, - 0x81C, 0xFE040403, 0x81C, 0xFD060403, 0x81C, 0xFC080403, - 0x81C, 0xFB0A0403, 0x81C, 0xFA0C0403, 0x81C, 0xF90E0403, - 0x81C, 0xF8100403, 0x81C, 0xF7120403, 0x81C, 0xF6140403, - 0x81C, 0xF5160403, 0x81C, 0xF4180403, 0x81C, 0xF31A0403, - 0x81C, 0xF21C0403, 0x81C, 0xD51E0403, 0x81C, 0xD4200403, - 0x81C, 0xD3220403, 0x81C, 0xD2240403, 0x81C, 0xB6260403, - 0x81C, 0xB5280403, 0x81C, 0xB42A0403, 0x81C, 0xB32C0403, - 0x81C, 0xB22E0403, 0x81C, 0xB1300403, 0x81C, 0xB0320403, - 0x81C, 0xAF340403, 0x81C, 0xAE360403, 0x81C, 0xAD380403, - 0x81C, 0xAC3A0403, 0x81C, 0xAB3C0403, 0x81C, 0xAA3E0403, - 0x81C, 0xA9400403, 0x81C, 0xA8420403, 0x81C, 0xA7440403, - 0x81C, 0xA6460403, 0x81C, 0xA5480403, 0x81C, 0xA44A0403, - 0x81C, 0xA34C0403, 0x81C, 0x854E0403, 0x81C, 0x84500403, - 0x81C, 0x83520403, 0x81C, 0x82540403, 0x81C, 0x81560403, - 0x81C, 0x80580403, 0x81C, 0x485A0403, 0x81C, 0x475C0403, - 0x81C, 0x465E0403, 0x81C, 0x45600403, 0x81C, 0x44620403, - 0x81C, 0x0A640403, 0x81C, 0x09660403, 0x81C, 0x08680403, - 0x81C, 0x076A0403, 0x81C, 0x066C0403, 0x81C, 0x056E0403, - 0x81C, 0x04700403, 0x81C, 0x03720403, 0x81C, 0x02740403, - 0x81C, 0x01760403, 0x81C, 0x00780403, 0x81C, 0x007A0403, - 0x81C, 0x007C0403, 0x81C, 0x007E0403, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x81C, 0xFF000403, 0x81C, 0xFF000403, - 0x81C, 0xFF020403, 0x81C, 0xFE040403, 0x81C, 0xFD060403, - 0x81C, 0xFC080403, 0x81C, 0xFB0A0403, 0x81C, 0xFA0C0403, - 0x81C, 0xF90E0403, 0x81C, 0xF8100403, 0x81C, 0xF7120403, - 0x81C, 0xF6140403, 0x81C, 0xF5160403, 0x81C, 0xF4180403, - 0x81C, 0xF31A0403, 0x81C, 0xF21C0403, 0x81C, 0xD51E0403, - 0x81C, 0xD4200403, 0x81C, 0xD3220403, 0x81C, 0xD2240403, - 0x81C, 0xB6260403, 0x81C, 0xB5280403, 0x81C, 0xB42A0403, - 0x81C, 0xB32C0403, 0x81C, 0xB22E0403, 0x81C, 0xB1300403, - 0x81C, 0xB0320403, 0x81C, 0xAF340403, 0x81C, 0xAE360403, - 0x81C, 0xAD380403, 0x81C, 0xAC3A0403, 0x81C, 0xAB3C0403, - 0x81C, 0xAA3E0403, 0x81C, 0xA9400403, 0x81C, 0xA8420403, - 0x81C, 0xA7440403, 0x81C, 0xA6460403, 0x81C, 0xA5480403, - 0x81C, 0xA44A0403, 0x81C, 0xA34C0403, 0x81C, 0x854E0403, - 0x81C, 0x84500403, 0x81C, 0x83520403, 0x81C, 0x82540403, - 0x81C, 0x81560403, 0x81C, 0x80580403, 0x81C, 0x485A0403, - 0x81C, 0x475C0403, 0x81C, 0x465E0403, 0x81C, 0x45600403, - 0x81C, 0x44620403, 0x81C, 0x0A640403, 0x81C, 0x09660403, - 0x81C, 0x08680403, 0x81C, 0x076A0403, 0x81C, 0x066C0403, - 0x81C, 0x056E0403, 0x81C, 0x04700403, 0x81C, 0x03720403, - 0x81C, 0x02740403, 0x81C, 0x01760403, 0x81C, 0x00780403, - 0x81C, 0x007A0403, 0x81C, 0x007C0403, 0x81C, 0x007E0403, - 0xA0000000, 0x00000000, 0x81C, 0xFF000403, 0x81C, 0xFF000403, - 0x81C, 0xFF020403, 0x81C, 0xFE040403, 0x81C, 0xFD060403, - 0x81C, 0xFC080403, 0x81C, 0xFB0A0403, 0x81C, 0xFA0C0403, - 0x81C, 0xF90E0403, 0x81C, 0xF8100403, 0x81C, 0xF7120403, - 0x81C, 0xF6140403, 0x81C, 0xF5160403, 0x81C, 0xF4180403, - 0x81C, 0xF31A0403, 0x81C, 0xF21C0403, 0x81C, 0xD51E0403, - 0x81C, 0xD4200403, 0x81C, 0xD3220403, 0x81C, 0xD2240403, - 0x81C, 0xB6260403, 0x81C, 0xB5280403, 0x81C, 0xB42A0403, - 0x81C, 0xB32C0403, 0x81C, 0xB22E0403, 0x81C, 0xB1300403, - 0x81C, 0xB0320403, 0x81C, 0xAF340403, 0x81C, 0xAE360403, - 0x81C, 0xAD380403, 0x81C, 0xAC3A0403, 0x81C, 0xAB3C0403, - 0x81C, 0xAA3E0403, 0x81C, 0xA9400403, 0x81C, 0xA8420403, - 0x81C, 0xA7440403, 0x81C, 0xA6460403, 0x81C, 0xA5480403, - 0x81C, 0xA44A0403, 0x81C, 0xA34C0403, 0x81C, 0x854E0403, - 0x81C, 0x84500403, 0x81C, 0x83520403, 0x81C, 0x82540403, - 0x81C, 0x81560403, 0x81C, 0x80580403, 0x81C, 0x485A0403, - 0x81C, 0x475C0403, 0x81C, 0x465E0403, 0x81C, 0x45600403, - 0x81C, 0x44620403, 0x81C, 0x0A640403, 0x81C, 0x09660403, - 0x81C, 0x08680403, 0x81C, 0x076A0403, 0x81C, 0x066C0403, - 0x81C, 0x056E0403, 0x81C, 0x04700403, 0x81C, 0x03720403, - 0x81C, 0x02740403, 0x81C, 0x01760403, 0x81C, 0x00780403, - 0x81C, 0x007A0403, 0x81C, 0x007C0403, 0x81C, 0x007E0403, - 0xB0000000, 0x00000000, 0xC50, 0x00000022, 0xC50, 0x00000020, - 0xE50, 0x00000022, 0xE50, 0x00000020, - -}; - -void odm_read_and_config_mp_8822b_agc_tab(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 c_cond; - bool is_matched = true, is_skipped = false; - u32 *array = array_mp_8822b_agc_tab; - - u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_agc_tab); i = i + 2) { - v1 = array[i]; - v2 = array[i + 1]; - - if (v1 & BIT(31)) { /* positive condition*/ - c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28); - if (c_cond == COND_ENDIF) { /*end*/ - is_matched = true; - is_skipped = false; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ENDIF\n"); - } else if (c_cond == COND_ELSE) { /*else*/ - is_matched = is_skipped ? false : true; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ELSE\n"); - } else { /*if , else if*/ - pre_v1 = v1; - pre_v2 = v2; - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "IF or ELSE IF\n"); - } - } else if (v1 & BIT(30)) { /*negative condition*/ - if (is_skipped) { - is_matched = false; - continue; - } - - if (check_positive(dm, pre_v1, pre_v2, v1, v2)) { - is_matched = true; - is_skipped = true; - } else { - is_matched = false; - is_skipped = false; - } - } else if (is_matched) { - odm_config_bb_agc_8822b(dm, v1, MASKDWORD, v2); - } - } -} - -u32 odm_get_version_mp_8822b_agc_tab(void) { return 67; } - -/****************************************************************************** - * phy_reg.TXT - ******************************************************************************/ - -static u32 array_mp_8822b_phy_reg[] = { - 0x800, 0x9020D010, 0x804, 0x800181A0, 0x808, 0x0E028233, - 0x80C, 0x10000013, 0x810, 0x21101263, 0x814, 0x020C3D10, - 0x818, 0x84A10385, 0x81C, 0x1E1E081F, 0x820, 0x0001AAAA, - 0x824, 0x00030FE0, 0x828, 0x0000CCCC, 0x82C, 0x75CB7010, - 0x830, 0x79A0EA2A, 0x834, 0x072E6986, 0x838, 0x87766441, - 0x83C, 0x9194B2B6, 0x840, 0x171740E0, 0x844, 0x4D3D7CDB, - 0x848, 0x4AD0408B, 0x84C, 0x6AFBF7A5, 0x850, 0x28A74706, - 0x854, 0x0001520C, 0x858, 0x4060C000, 0x85C, 0x74010160, - 0x860, 0x68A7C321, 0x864, 0x79F27432, 0x868, 0x8CA7A314, - 0x86C, 0x778C2878, 0x870, 0x77777777, 0x874, 0x27612C2E, - 0x878, 0xC0003152, 0x87C, 0x5C8FC000, 0x880, 0x00000000, - 0x884, 0x00000000, 0x888, 0x00000000, 0x88C, 0x00000000, - 0x890, 0x00000000, 0x894, 0x00000000, 0x898, 0x00000000, - 0x89C, 0x00000000, 0x8A0, 0x00000013, 0x8A4, 0x7F7F7F7F, - 0x8A8, 0x2202033E, 0x8AC, 0xF00F000A, 0x8B0, 0x00000600, - 0x8B4, 0x000FC080, 0x8B8, 0xEC0057F7, 0x8BC, 0xACB520A3, - 0x8C0, 0xFFE04020, 0x8C4, 0x47C00000, 0x8C8, 0x000251A5, - 0x8CC, 0x08108000, 0x8D0, 0x0000B800, 0x8D4, 0x860308A0, - 0x8D8, 0x21095612, 0x8DC, 0x00000000, 0x8E0, 0x32D16777, - 0x8E4, 0x4C098935, 0x8E8, 0xFFFFC42C, 0x8EC, 0x99999999, - 0x8F0, 0x00009999, 0x8F4, 0x00D80FA1, 0x8F8, 0x40000080, - 0x8FC, 0x00000130, 0x900, 0x00800000, 0x904, 0x00000000, - 0x908, 0x00000000, 0x90C, 0xD3000000, 0x910, 0x0000FC00, - 0x914, 0xC6380000, 0x918, 0x1C1028C0, 0x91C, 0x64B11A1C, - 0x920, 0xE0767233, 0x924, 0x855A2500, 0x928, 0x4AB0E4E4, - 0x92C, 0xFFFEB200, 0x930, 0xFFFFFFFE, 0x934, 0x001FFFFF, - 0x938, 0x00008480, 0x93C, 0xE41C0642, 0x940, 0x0E470430, - 0x944, 0x00000000, 0x948, 0xAC000000, 0x94C, 0x10000083, - 0x950, 0x32010080, 0x954, 0x84510080, 0x958, 0x00000001, - 0x95C, 0x04248000, 0x960, 0x00000000, 0x964, 0x00000000, - 0x968, 0x00000000, 0x96C, 0x00000000, 0x970, 0x00001FFF, - 0x974, 0x44000FFF, 0x978, 0x00000000, 0x97C, 0x00000000, - 0x980, 0x00000000, 0x984, 0x00000000, 0x988, 0x00000000, - 0x98C, 0x23440000, 0x990, 0x27100000, 0x994, 0xFFFF0100, - 0x998, 0xFFFFFF5C, 0x99C, 0xFFFFFFFF, 0x9A0, 0x000000FF, - 0x9A4, 0x80000088, 0x9A8, 0x0C2F0000, 0x9AC, 0x01560000, - 0x9B0, 0x70000000, 0x9B4, 0x00000000, 0x9B8, 0x00000000, - 0x9BC, 0x00000000, 0x9C0, 0x00000000, 0x9C4, 0x00000000, - 0x9C8, 0x00000000, 0x9CC, 0x00000000, 0x9D0, 0x00000000, - 0x9D4, 0x00000000, 0x9D8, 0x00000000, 0x9DC, 0x00000000, - 0x9E0, 0x00000000, 0x9E4, 0x02000402, 0x9E8, 0x000022D4, - 0x9EC, 0x00000000, 0x9F0, 0x00010080, 0x9F4, 0x00000000, - 0x9F8, 0x00000000, 0x9FC, 0xEFFFF7F7, 0xA00, 0x00D047C8, - 0xA04, 0x81FF800C, 0xA08, 0x8C838300, 0xA0C, 0x2E20100F, - 0xA10, 0x9500BB78, 0xA14, 0x1114D028, 0xA18, 0x00881117, - 0xA1C, 0x89140F00, 0xA20, 0x84880000, 0xA24, 0x384F6577, - 0xA28, 0x00001525, 0xA2C, 0x00920000, 0xA70, 0x101FFF00, - 0xA74, 0x00000148, 0xA78, 0x00000900, 0xA7C, 0x225B0606, - 0xA80, 0x218675B2, 0xA84, 0x80208C00, 0xA88, 0x040C0000, - 0xA8C, 0x12345678, 0xA90, 0xABCDEF00, 0xA94, 0x001B1B89, - 0xA98, 0x030A0000, 0xA9C, 0x00060000, 0xAA0, 0x00000000, - 0xAA4, 0x0004000F, 0xAA8, 0x00000200, 0xB00, 0xE1000440, - 0xB04, 0x00800000, 0xB08, 0xFF02030B, 0xB0C, 0x01EAA406, - 0xB10, 0x00030690, 0xB14, 0x006000FA, 0xB18, 0x00000002, - 0xB1C, 0x00000002, 0xB20, 0x4B00001F, 0xB24, 0x4E8E3E40, - 0xB28, 0x03020100, 0xB2C, 0x07060504, 0xB30, 0x0B0A0908, - 0xB34, 0x0F0E0D0C, 0xB38, 0x13121110, 0xB3C, 0x0000003A, - 0xB40, 0x00000000, 0xB44, 0x80000000, 0xB48, 0x3F0000FA, - 0xB4C, 0x88C80020, 0xB50, 0x00000000, 0xB54, 0x00004241, - 0xB58, 0xE0008208, 0xB5C, 0x41EFFFF9, 0xB60, 0x00000000, - 0xB64, 0x00200063, 0xB68, 0x0000003A, 0xB6C, 0x00000102, - 0xB70, 0x4E6D1870, 0xB74, 0x03020100, 0xB78, 0x07060504, - 0xB7C, 0x0B0A0908, 0xB80, 0x0F0E0D0C, 0xB84, 0x13121110, - 0xB88, 0x00000000, 0xB8C, 0x00000000, 0xC00, 0x00000007, - 0xC04, 0x00000020, 0xC08, 0x60403231, 0xC0C, 0x00012345, - 0xC10, 0x00000100, 0xC14, 0x01000000, 0xC18, 0x00000000, - 0xC1C, 0x40040053, 0xC20, 0x40020103, 0xC24, 0x00000000, - 0xC28, 0x00000000, 0xC2C, 0x00000000, 0xC30, 0x00000000, - 0xC34, 0x00000000, 0xC38, 0x00000000, 0xC3C, 0x00000000, - 0xC40, 0x00000000, 0xC44, 0x00000000, 0xC48, 0x00000000, - 0xC4C, 0x00000000, 0xC50, 0x00000020, 0xC54, 0x00000000, - 0xC58, 0xD8020402, 0xC5C, 0xDE000120, 0xC68, 0x5979993F, - 0xC6C, 0x0000122A, 0xC70, 0x99795979, 0xC74, 0x99795979, - 0xC78, 0x99799979, 0xC7C, 0x99791979, 0xC80, 0x19791979, - 0xC84, 0x19791979, 0xC88, 0x00000000, 0xC8C, 0x07000000, - 0xC94, 0x01000100, 0xC98, 0x201C8000, 0xC9C, 0x00000000, - 0xCA0, 0x0000A555, 0xCA4, 0x08040201, 0xCA8, 0x80402010, - 0xCAC, 0x00000000, 0xCB0, 0x77777777, 0xCB4, 0x00007777, - 0xCB8, 0x00000000, 0xCBC, 0x00000000, 0xCC0, 0x00000000, - 0xCC4, 0x00000000, 0xCC8, 0x00000000, 0xCCC, 0x00000000, - 0xCD0, 0x00000000, 0xCD4, 0x00000000, 0xCD8, 0x00000000, - 0xCDC, 0x00000000, 0xCE0, 0x00000000, 0xCE4, 0x00000000, - 0xCE8, 0x00000000, 0xCEC, 0x00000000, 0xE00, 0x00000007, - 0xE04, 0x00000020, 0xE08, 0x60403231, 0xE0C, 0x00012345, - 0xE10, 0x00000100, 0xE14, 0x01000000, 0xE18, 0x00000000, - 0xE1C, 0x40040053, 0xE20, 0x40020103, 0xE24, 0x00000000, - 0xE28, 0x00000000, 0xE2C, 0x00000000, 0xE30, 0x00000000, - 0xE34, 0x00000000, 0xE38, 0x00000000, 0xE3C, 0x00000000, - 0xE40, 0x00000000, 0xE44, 0x00000000, 0xE48, 0x00000000, - 0xE4C, 0x00000000, 0xE50, 0x00000020, 0xE54, 0x00000000, - 0xE58, 0xD8020402, 0xE5C, 0xDE000120, 0xE68, 0x5979993F, - 0xE6C, 0x0000122A, 0xE70, 0x99795979, 0xE74, 0x99795979, - 0xE78, 0x99799979, 0xE7C, 0x99791979, 0xE80, 0x19791979, - 0xE84, 0x19791979, 0xE88, 0x00000000, 0xE8C, 0x07000000, - 0xE94, 0x01000100, 0xE98, 0x201C8000, 0xE9C, 0x00000000, - 0xEA0, 0x0000A555, 0xEA4, 0x08040201, 0xEA8, 0x80402010, - 0xEAC, 0x00000000, 0xEB0, 0x77777777, 0xEB4, 0x00007777, - 0xEB8, 0x00000000, 0xEBC, 0x00000000, 0xEC0, 0x00000000, - 0xEC4, 0x00000000, 0xEC8, 0x00000000, 0xECC, 0x00000000, - 0xED0, 0x00000000, 0xED4, 0x00000000, 0xED8, 0x00000000, - 0xEDC, 0x00000000, 0xEE0, 0x00000000, 0xEE4, 0x00000000, - 0xEE8, 0x00000000, 0xEEC, 0x00000000, 0x1900, 0x00000000, - 0x1904, 0x00238000, 0x1908, 0x00000000, 0x190C, 0x00000000, - 0x1910, 0x00000000, 0x1914, 0x00000000, 0x1918, 0x00000000, - 0x191C, 0x00000000, 0x1920, 0x00000000, 0x1924, 0x00000000, - 0x1928, 0x00000000, 0x192C, 0x00000000, 0x1930, 0x00000000, - 0x1934, 0x00000000, 0x1938, 0x00000000, 0x193C, 0x00000000, - 0x1940, 0x00000000, 0x1944, 0x00000000, 0x1948, 0x00000000, - 0x194C, 0x00000000, 0x1950, 0x00000000, 0x1954, 0x00000000, - 0x1958, 0x00000000, 0x195C, 0x00000000, 0x1960, 0x00000000, - 0x1964, 0x00000000, 0x1968, 0x00000000, 0x196C, 0x00000000, - 0x1970, 0x00000000, 0x1974, 0x00000000, 0x1978, 0x00000000, - 0x197C, 0x00000000, 0x1980, 0x00000000, 0x1984, 0x03000000, - 0x1988, 0x21401E88, 0x198C, 0x00004000, 0x1990, 0x00000000, - 0x1994, 0x00000000, 0x1998, 0x00000053, 0x199C, 0x00000000, - 0x19A0, 0x00000000, 0x19A4, 0x00000000, 0x19A8, 0x00000000, - 0x19AC, 0x0E47E47F, 0x19B0, 0x00000000, 0x19B4, 0x0E47E47F, - 0x19B8, 0x00000000, 0x19BC, 0x00000000, 0x19C0, 0x00000000, - 0x19C4, 0x00000000, 0x19C8, 0x00000000, 0x19CC, 0x00000000, - 0x19D0, 0x00000000, 0x19D4, 0xAAAAAAAA, 0x19D8, 0x00000AAA, - 0x19DC, 0x133E0F37, 0x19E0, 0x00000000, 0x19E4, 0x00000000, - 0x19E8, 0x00000000, 0x19EC, 0x00000000, 0x19F0, 0x00000000, - 0x19F4, 0x00000000, 0x19F8, 0x01A00000, 0x19FC, 0x00000000, - 0x1C00, 0x00000100, 0x1C04, 0x01000000, 0x1C08, 0x00000100, - 0x1C0C, 0x01000000, 0x1C10, 0x00000100, 0x1C14, 0x01000000, - 0x1C18, 0x00000100, 0x1C1C, 0x01000000, 0x1C20, 0x00000100, - 0x1C24, 0x01000000, 0x1C28, 0x00000100, 0x1C2C, 0x01000000, - 0x1C30, 0x00000100, 0x1C34, 0x01000000, 0x1C38, 0x00000000, - 0x1C3C, 0x00000000, 0x1C40, 0x000C0100, 0x1C44, 0x000000F3, - 0x1C48, 0x1A8249A8, 0x1C4C, 0x1461C826, 0x1C50, 0x0001469E, - 0x1C54, 0x58D158D1, 0x1C58, 0x04490088, 0x1C5C, 0x04004400, - 0x1C60, 0x00000000, 0x1C64, 0x04004400, 0x1C68, 0x00000100, - 0x1C6C, 0x01000000, 0x1C70, 0x00000100, 0x1C74, 0x01000000, - 0x1C78, 0x00000000, 0x1C7C, 0x00000010, 0x1C80, 0x5FFF5FFF, - 0x1C84, 0x5FFF5FFF, 0x1C88, 0x5FFF5FFF, 0x1C8C, 0x5FFF5FFF, - 0x1C90, 0x5FFF5FFF, 0x1C94, 0x5FFF5FFF, 0x1C98, 0x5FFF5FFF, - 0x1C9C, 0x5FFF5FFF, 0x1CA0, 0x00000100, 0x1CA4, 0x01000000, - 0x1CA8, 0x00000100, 0x1CAC, 0x5FFF5FFF, 0x1CB0, 0x00000100, - 0x1CB4, 0x01000000, 0x1CB8, 0x00000000, 0x1CBC, 0x00000000, - 0x1CC0, 0x00000100, 0x1CC4, 0x01000000, 0x1CC8, 0x00000100, - 0x1CCC, 0x01000000, 0x1CD0, 0x00000100, 0x1CD4, 0x01000000, - 0x1CD8, 0x00000100, 0x1CDC, 0x01000000, 0x1CE0, 0x00000100, - 0x1CE4, 0x01000000, 0x1CE8, 0x00000100, 0x1CEC, 0x01000000, - 0x1CF0, 0x00000100, 0x1CF4, 0x01000000, 0x1CF8, 0x00000000, - 0x1CFC, 0x00000000, 0xC60, 0x70038040, 0xC60, 0x70038040, - 0xC60, 0x70146040, 0xC60, 0x70246040, 0xC60, 0x70346040, - 0xC60, 0x70446040, 0xC60, 0x70532040, 0xC60, 0x70646040, - 0xC60, 0x70738040, 0xC60, 0x70838040, 0xC60, 0x70938040, - 0xC60, 0x70A38040, 0xC60, 0x70B36040, 0xC60, 0x70C06040, - 0xC60, 0x70D06040, 0xC60, 0x70E76040, 0xC60, 0x70F06040, - 0xE60, 0x70038040, 0xE60, 0x70038040, 0xE60, 0x70146040, - 0xE60, 0x70246040, 0xE60, 0x70346040, 0xE60, 0x70446040, - 0xE60, 0x70532040, 0xE60, 0x70646040, 0xE60, 0x70738040, - 0xE60, 0x70838040, 0xE60, 0x70938040, 0xE60, 0x70A38040, - 0xE60, 0x70B36040, 0xE60, 0x70C06040, 0xE60, 0x70D06040, - 0xE60, 0x70E76040, 0xE60, 0x70F06040, 0xC64, 0x00800000, - 0xC64, 0x08800001, 0xC64, 0x00800002, 0xC64, 0x00800003, - 0xC64, 0x00800004, 0xC64, 0x00800005, 0xC64, 0x00800006, - 0xC64, 0x08800007, 0xC64, 0x00004000, 0xE64, 0x00800000, - 0xE64, 0x08800001, 0xE64, 0x00800002, 0xE64, 0x00800003, - 0xE64, 0x00800004, 0xE64, 0x00800005, 0xE64, 0x00800006, - 0xE64, 0x08800007, 0xE64, 0x00004000, 0x1B00, 0xF8000008, - 0x1B00, 0xF80A7008, 0x1B00, 0xF8015008, 0x1B00, 0xF8000008, - 0x1B04, 0xE24629D2, 0x1B08, 0x00000080, 0x1B0C, 0x00000000, - 0x1B10, 0x00010C00, 0x1B14, 0x00000000, 0x1B18, 0x00292903, - 0x1B1C, 0xA2193C32, 0x1B20, 0x01840008, 0x1B24, 0x01860008, - 0x1B28, 0x80060300, 0x1B2C, 0x00000003, 0x1B30, 0x20000000, - 0x1B34, 0x00000800, 0x1B3C, 0x20000000, 0x1BC0, 0x01000000, - 0x1BCC, 0x00000000, 0x1B00, 0xF800000A, 0x1B1C, 0xA2193C32, - 0x1B20, 0x01840008, 0x1B24, 0x01860008, 0x1B28, 0x80060300, - 0x1B2C, 0x00000003, 0x1B30, 0x20000000, 0x1B34, 0x00000800, - 0x1B3C, 0x20000000, 0x1BC0, 0x01000000, 0x1BCC, 0x00000000, - 0x1B00, 0xF8000000, 0x1B80, 0x00000007, 0x1B80, 0x090A0005, - 0x1B80, 0x090A0007, 0x1B80, 0x0FFE0015, 0x1B80, 0x0FFE0017, - 0x1B80, 0x00220025, 0x1B80, 0x00220027, 0x1B80, 0x00040035, - 0x1B80, 0x00040037, 0x1B80, 0x05C00045, 0x1B80, 0x05C00047, - 0x1B80, 0x00070055, 0x1B80, 0x00070057, 0x1B80, 0x64000065, - 0x1B80, 0x64000067, 0x1B80, 0x00020075, 0x1B80, 0x00020077, - 0x1B80, 0x00080085, 0x1B80, 0x00080087, 0x1B80, 0x80000095, - 0x1B80, 0x80000097, 0x1B80, 0x090800A5, 0x1B80, 0x090800A7, - 0x1B80, 0x0F0200B5, 0x1B80, 0x0F0200B7, 0x1B80, 0x002200C5, - 0x1B80, 0x002200C7, 0x1B80, 0x000400D5, 0x1B80, 0x000400D7, - 0x1B80, 0x05C000E5, 0x1B80, 0x05C000E7, 0x1B80, 0x000700F5, - 0x1B80, 0x000700F7, 0x1B80, 0x64020105, 0x1B80, 0x64020107, - 0x1B80, 0x00020115, 0x1B80, 0x00020117, 0x1B80, 0x00040125, - 0x1B80, 0x00040127, 0x1B80, 0x4A000135, 0x1B80, 0x4A000137, - 0x1B80, 0x4B040145, 0x1B80, 0x4B040147, 0x1B80, 0x85030155, - 0x1B80, 0x85030157, 0x1B80, 0x40090165, 0x1B80, 0x40090167, - 0x1B80, 0xE0210175, 0x1B80, 0xE0210177, 0x1B80, 0x4B050185, - 0x1B80, 0x4B050187, 0x1B80, 0x86030195, 0x1B80, 0x86030197, - 0x1B80, 0x400B01A5, 0x1B80, 0x400B01A7, 0x1B80, 0xE02101B5, - 0x1B80, 0xE02101B7, 0x1B80, 0x4B0001C5, 0x1B80, 0x4B0001C7, - 0x1B80, 0x000701D5, 0x1B80, 0x000701D7, 0x1B80, 0x4C0001E5, - 0x1B80, 0x4C0001E7, 0x1B80, 0x000401F5, 0x1B80, 0x000401F7, - 0x1B80, 0x30000205, 0x1B80, 0x30000207, 0x1B80, 0xFE000215, - 0x1B80, 0xFE000217, 0x1B80, 0xFF000225, 0x1B80, 0xFF000227, - 0x1B80, 0xE1750235, 0x1B80, 0xE1750237, 0x1B80, 0xF00D0245, - 0x1B80, 0xF00D0247, 0x1B80, 0xF10D0255, 0x1B80, 0xF10D0257, - 0x1B80, 0xF20D0265, 0x1B80, 0xF20D0267, 0x1B80, 0xF30D0275, - 0x1B80, 0xF30D0277, 0x1B80, 0xF40D0285, 0x1B80, 0xF40D0287, - 0x1B80, 0xF50D0295, 0x1B80, 0xF50D0297, 0x1B80, 0xF60D02A5, - 0x1B80, 0xF60D02A7, 0x1B80, 0xF70D02B5, 0x1B80, 0xF70D02B7, - 0x1B80, 0xF80D02C5, 0x1B80, 0xF80D02C7, 0x1B80, 0xF90D02D5, - 0x1B80, 0xF90D02D7, 0x1B80, 0xFA0D02E5, 0x1B80, 0xFA0D02E7, - 0x1B80, 0xFB0D02F5, 0x1B80, 0xFB0D02F7, 0x1B80, 0x00010305, - 0x1B80, 0x00010307, 0x1B80, 0x303D0315, 0x1B80, 0x303D0317, - 0x1B80, 0x30550325, 0x1B80, 0x30550327, 0x1B80, 0x30A00335, - 0x1B80, 0x30A00337, 0x1B80, 0x30A30345, 0x1B80, 0x30A30347, - 0x1B80, 0x30570355, 0x1B80, 0x30570357, 0x1B80, 0x30620365, - 0x1B80, 0x30620367, 0x1B80, 0x306D0375, 0x1B80, 0x306D0377, - 0x1B80, 0x30AD0385, 0x1B80, 0x30AD0387, 0x1B80, 0x30A70395, - 0x1B80, 0x30A70397, 0x1B80, 0x30BB03A5, 0x1B80, 0x30BB03A7, - 0x1B80, 0x30C603B5, 0x1B80, 0x30C603B7, 0x1B80, 0x30D103C5, - 0x1B80, 0x30D103C7, 0x1B80, 0xE11403D5, 0x1B80, 0xE11403D7, - 0x1B80, 0x4D0403E5, 0x1B80, 0x4D0403E7, 0x1B80, 0x208003F5, - 0x1B80, 0x208003F7, 0x1B80, 0x00000405, 0x1B80, 0x00000407, - 0x1B80, 0x4D000415, 0x1B80, 0x4D000417, 0x1B80, 0x55070425, - 0x1B80, 0x55070427, 0x1B80, 0xE10C0435, 0x1B80, 0xE10C0437, - 0x1B80, 0xE10C0445, 0x1B80, 0xE10C0447, 0x1B80, 0x4D040455, - 0x1B80, 0x4D040457, 0x1B80, 0x20880465, 0x1B80, 0x20880467, - 0x1B80, 0x02000475, 0x1B80, 0x02000477, 0x1B80, 0x4D000485, - 0x1B80, 0x4D000487, 0x1B80, 0x550F0495, 0x1B80, 0x550F0497, - 0x1B80, 0xE10C04A5, 0x1B80, 0xE10C04A7, 0x1B80, 0x4F0204B5, - 0x1B80, 0x4F0204B7, 0x1B80, 0x4E0004C5, 0x1B80, 0x4E0004C7, - 0x1B80, 0x530204D5, 0x1B80, 0x530204D7, 0x1B80, 0x520104E5, - 0x1B80, 0x520104E7, 0x1B80, 0xE11004F5, 0x1B80, 0xE11004F7, - 0x1B80, 0x4D080505, 0x1B80, 0x4D080507, 0x1B80, 0x57100515, - 0x1B80, 0x57100517, 0x1B80, 0x57000525, 0x1B80, 0x57000527, - 0x1B80, 0x4D000535, 0x1B80, 0x4D000537, 0x1B80, 0x00010545, - 0x1B80, 0x00010547, 0x1B80, 0xE1140555, 0x1B80, 0xE1140557, - 0x1B80, 0x00010565, 0x1B80, 0x00010567, 0x1B80, 0x30770575, - 0x1B80, 0x30770577, 0x1B80, 0x00230585, 0x1B80, 0x00230587, - 0x1B80, 0xE1680595, 0x1B80, 0xE1680597, 0x1B80, 0x000205A5, - 0x1B80, 0x000205A7, 0x1B80, 0x54E905B5, 0x1B80, 0x54E905B7, - 0x1B80, 0x0BA605C5, 0x1B80, 0x0BA605C7, 0x1B80, 0x002305D5, - 0x1B80, 0x002305D7, 0x1B80, 0xE16805E5, 0x1B80, 0xE16805E7, - 0x1B80, 0x000205F5, 0x1B80, 0x000205F7, 0x1B80, 0x4D300605, - 0x1B80, 0x4D300607, 0x1B80, 0x30900615, 0x1B80, 0x30900617, - 0x1B80, 0x30730625, 0x1B80, 0x30730627, 0x1B80, 0x00220635, - 0x1B80, 0x00220637, 0x1B80, 0xE1680645, 0x1B80, 0xE1680647, - 0x1B80, 0x00020655, 0x1B80, 0x00020657, 0x1B80, 0x54E80665, - 0x1B80, 0x54E80667, 0x1B80, 0x0BA60675, 0x1B80, 0x0BA60677, - 0x1B80, 0x00220685, 0x1B80, 0x00220687, 0x1B80, 0xE1680695, - 0x1B80, 0xE1680697, 0x1B80, 0x000206A5, 0x1B80, 0x000206A7, - 0x1B80, 0x4D3006B5, 0x1B80, 0x4D3006B7, 0x1B80, 0x309006C5, - 0x1B80, 0x309006C7, 0x1B80, 0x63F106D5, 0x1B80, 0x63F106D7, - 0x1B80, 0xE11406E5, 0x1B80, 0xE11406E7, 0x1B80, 0xE16806F5, - 0x1B80, 0xE16806F7, 0x1B80, 0x63F40705, 0x1B80, 0x63F40707, - 0x1B80, 0xE1140715, 0x1B80, 0xE1140717, 0x1B80, 0xE1680725, - 0x1B80, 0xE1680727, 0x1B80, 0x0BA80735, 0x1B80, 0x0BA80737, - 0x1B80, 0x63F80745, 0x1B80, 0x63F80747, 0x1B80, 0xE1140755, - 0x1B80, 0xE1140757, 0x1B80, 0xE1680765, 0x1B80, 0xE1680767, - 0x1B80, 0x0BA90775, 0x1B80, 0x0BA90777, 0x1B80, 0x63FC0785, - 0x1B80, 0x63FC0787, 0x1B80, 0xE1140795, 0x1B80, 0xE1140797, - 0x1B80, 0xE16807A5, 0x1B80, 0xE16807A7, 0x1B80, 0x63FF07B5, - 0x1B80, 0x63FF07B7, 0x1B80, 0xE11407C5, 0x1B80, 0xE11407C7, - 0x1B80, 0xE16807D5, 0x1B80, 0xE16807D7, 0x1B80, 0x630007E5, - 0x1B80, 0x630007E7, 0x1B80, 0xE11407F5, 0x1B80, 0xE11407F7, - 0x1B80, 0xE1680805, 0x1B80, 0xE1680807, 0x1B80, 0x63030815, - 0x1B80, 0x63030817, 0x1B80, 0xE1140825, 0x1B80, 0xE1140827, - 0x1B80, 0xE1680835, 0x1B80, 0xE1680837, 0x1B80, 0xF4D40845, - 0x1B80, 0xF4D40847, 0x1B80, 0x63070855, 0x1B80, 0x63070857, - 0x1B80, 0xE1140865, 0x1B80, 0xE1140867, 0x1B80, 0xE1680875, - 0x1B80, 0xE1680877, 0x1B80, 0xF5DB0885, 0x1B80, 0xF5DB0887, - 0x1B80, 0x630B0895, 0x1B80, 0x630B0897, 0x1B80, 0xE11408A5, - 0x1B80, 0xE11408A7, 0x1B80, 0xE16808B5, 0x1B80, 0xE16808B7, - 0x1B80, 0x630E08C5, 0x1B80, 0x630E08C7, 0x1B80, 0xE11408D5, - 0x1B80, 0xE11408D7, 0x1B80, 0xE16808E5, 0x1B80, 0xE16808E7, - 0x1B80, 0x4D3008F5, 0x1B80, 0x4D3008F7, 0x1B80, 0x55010905, - 0x1B80, 0x55010907, 0x1B80, 0x57040915, 0x1B80, 0x57040917, - 0x1B80, 0x57000925, 0x1B80, 0x57000927, 0x1B80, 0x96000935, - 0x1B80, 0x96000937, 0x1B80, 0x57080945, 0x1B80, 0x57080947, - 0x1B80, 0x57000955, 0x1B80, 0x57000957, 0x1B80, 0x95000965, - 0x1B80, 0x95000967, 0x1B80, 0x4D000975, 0x1B80, 0x4D000977, - 0x1B80, 0x6C070985, 0x1B80, 0x6C070987, 0x1B80, 0x7B200995, - 0x1B80, 0x7B200997, 0x1B80, 0x7A0009A5, 0x1B80, 0x7A0009A7, - 0x1B80, 0x790009B5, 0x1B80, 0x790009B7, 0x1B80, 0x7F2009C5, - 0x1B80, 0x7F2009C7, 0x1B80, 0x7E0009D5, 0x1B80, 0x7E0009D7, - 0x1B80, 0x7D0009E5, 0x1B80, 0x7D0009E7, 0x1B80, 0x000109F5, - 0x1B80, 0x000109F7, 0x1B80, 0x62850A05, 0x1B80, 0x62850A07, - 0x1B80, 0xE1140A15, 0x1B80, 0xE1140A17, 0x1B80, 0x00010A25, - 0x1B80, 0x00010A27, 0x1B80, 0x5C320A35, 0x1B80, 0x5C320A37, - 0x1B80, 0xE1640A45, 0x1B80, 0xE1640A47, 0x1B80, 0xE1420A55, - 0x1B80, 0xE1420A57, 0x1B80, 0x00010A65, 0x1B80, 0x00010A67, - 0x1B80, 0x5C320A75, 0x1B80, 0x5C320A77, 0x1B80, 0x63F40A85, - 0x1B80, 0x63F40A87, 0x1B80, 0x62850A95, 0x1B80, 0x62850A97, - 0x1B80, 0x0BB00AA5, 0x1B80, 0x0BB00AA7, 0x1B80, 0xE1140AB5, - 0x1B80, 0xE1140AB7, 0x1B80, 0xE1680AC5, 0x1B80, 0xE1680AC7, - 0x1B80, 0x5C320AD5, 0x1B80, 0x5C320AD7, 0x1B80, 0x63FC0AE5, - 0x1B80, 0x63FC0AE7, 0x1B80, 0x62850AF5, 0x1B80, 0x62850AF7, - 0x1B80, 0x0BB10B05, 0x1B80, 0x0BB10B07, 0x1B80, 0xE1140B15, - 0x1B80, 0xE1140B17, 0x1B80, 0xE1680B25, 0x1B80, 0xE1680B27, - 0x1B80, 0x63030B35, 0x1B80, 0x63030B37, 0x1B80, 0xE1140B45, - 0x1B80, 0xE1140B47, 0x1B80, 0xE1680B55, 0x1B80, 0xE1680B57, - 0x1B80, 0xF7040B65, 0x1B80, 0xF7040B67, 0x1B80, 0x630B0B75, - 0x1B80, 0x630B0B77, 0x1B80, 0xE1140B85, 0x1B80, 0xE1140B87, - 0x1B80, 0xE1680B95, 0x1B80, 0xE1680B97, 0x1B80, 0x00010BA5, - 0x1B80, 0x00010BA7, 0x1B80, 0x30DF0BB5, 0x1B80, 0x30DF0BB7, - 0x1B80, 0x00230BC5, 0x1B80, 0x00230BC7, 0x1B80, 0xE16D0BD5, - 0x1B80, 0xE16D0BD7, 0x1B80, 0x00020BE5, 0x1B80, 0x00020BE7, - 0x1B80, 0x54E90BF5, 0x1B80, 0x54E90BF7, 0x1B80, 0x0BA60C05, - 0x1B80, 0x0BA60C07, 0x1B80, 0x00230C15, 0x1B80, 0x00230C17, - 0x1B80, 0xE16D0C25, 0x1B80, 0xE16D0C27, 0x1B80, 0x00020C35, - 0x1B80, 0x00020C37, 0x1B80, 0x4D100C45, 0x1B80, 0x4D100C47, - 0x1B80, 0x30900C55, 0x1B80, 0x30900C57, 0x1B80, 0x30D90C65, - 0x1B80, 0x30D90C67, 0x1B80, 0x00220C75, 0x1B80, 0x00220C77, - 0x1B80, 0xE16D0C85, 0x1B80, 0xE16D0C87, 0x1B80, 0x00020C95, - 0x1B80, 0x00020C97, 0x1B80, 0x54E80CA5, 0x1B80, 0x54E80CA7, - 0x1B80, 0x0BA60CB5, 0x1B80, 0x0BA60CB7, 0x1B80, 0x00220CC5, - 0x1B80, 0x00220CC7, 0x1B80, 0xE16D0CD5, 0x1B80, 0xE16D0CD7, - 0x1B80, 0x00020CE5, 0x1B80, 0x00020CE7, 0x1B80, 0x4D100CF5, - 0x1B80, 0x4D100CF7, 0x1B80, 0x30900D05, 0x1B80, 0x30900D07, - 0x1B80, 0x5C320D15, 0x1B80, 0x5C320D17, 0x1B80, 0x54F00D25, - 0x1B80, 0x54F00D27, 0x1B80, 0x67F10D35, 0x1B80, 0x67F10D37, - 0x1B80, 0xE1420D45, 0x1B80, 0xE1420D47, 0x1B80, 0xE16D0D55, - 0x1B80, 0xE16D0D57, 0x1B80, 0x67F40D65, 0x1B80, 0x67F40D67, - 0x1B80, 0xE1420D75, 0x1B80, 0xE1420D77, 0x1B80, 0xE16D0D85, - 0x1B80, 0xE16D0D87, 0x1B80, 0x5C320D95, 0x1B80, 0x5C320D97, - 0x1B80, 0x54F10DA5, 0x1B80, 0x54F10DA7, 0x1B80, 0x0BA80DB5, - 0x1B80, 0x0BA80DB7, 0x1B80, 0x67F80DC5, 0x1B80, 0x67F80DC7, - 0x1B80, 0xE1420DD5, 0x1B80, 0xE1420DD7, 0x1B80, 0xE16D0DE5, - 0x1B80, 0xE16D0DE7, 0x1B80, 0x5C320DF5, 0x1B80, 0x5C320DF7, - 0x1B80, 0x54F10E05, 0x1B80, 0x54F10E07, 0x1B80, 0x0BA90E15, - 0x1B80, 0x0BA90E17, 0x1B80, 0x67FC0E25, 0x1B80, 0x67FC0E27, - 0x1B80, 0xE1420E35, 0x1B80, 0xE1420E37, 0x1B80, 0xE16D0E45, - 0x1B80, 0xE16D0E47, 0x1B80, 0x67FF0E55, 0x1B80, 0x67FF0E57, - 0x1B80, 0xE1420E65, 0x1B80, 0xE1420E67, 0x1B80, 0xE16D0E75, - 0x1B80, 0xE16D0E77, 0x1B80, 0x5C320E85, 0x1B80, 0x5C320E87, - 0x1B80, 0x54F20E95, 0x1B80, 0x54F20E97, 0x1B80, 0x67000EA5, - 0x1B80, 0x67000EA7, 0x1B80, 0xE1420EB5, 0x1B80, 0xE1420EB7, - 0x1B80, 0xE16D0EC5, 0x1B80, 0xE16D0EC7, 0x1B80, 0x67030ED5, - 0x1B80, 0x67030ED7, 0x1B80, 0xE1420EE5, 0x1B80, 0xE1420EE7, - 0x1B80, 0xE16D0EF5, 0x1B80, 0xE16D0EF7, 0x1B80, 0xF9CC0F05, - 0x1B80, 0xF9CC0F07, 0x1B80, 0x67070F15, 0x1B80, 0x67070F17, - 0x1B80, 0xE1420F25, 0x1B80, 0xE1420F27, 0x1B80, 0xE16D0F35, - 0x1B80, 0xE16D0F37, 0x1B80, 0xFAD30F45, 0x1B80, 0xFAD30F47, - 0x1B80, 0x5C320F55, 0x1B80, 0x5C320F57, 0x1B80, 0x54F30F65, - 0x1B80, 0x54F30F67, 0x1B80, 0x670B0F75, 0x1B80, 0x670B0F77, - 0x1B80, 0xE1420F85, 0x1B80, 0xE1420F87, 0x1B80, 0xE16D0F95, - 0x1B80, 0xE16D0F97, 0x1B80, 0x670E0FA5, 0x1B80, 0x670E0FA7, - 0x1B80, 0xE1420FB5, 0x1B80, 0xE1420FB7, 0x1B80, 0xE16D0FC5, - 0x1B80, 0xE16D0FC7, 0x1B80, 0x4D100FD5, 0x1B80, 0x4D100FD7, - 0x1B80, 0x30900FE5, 0x1B80, 0x30900FE7, 0x1B80, 0x00010FF5, - 0x1B80, 0x00010FF7, 0x1B80, 0x7B241005, 0x1B80, 0x7B241007, - 0x1B80, 0x7A401015, 0x1B80, 0x7A401017, 0x1B80, 0x79001025, - 0x1B80, 0x79001027, 0x1B80, 0x55031035, 0x1B80, 0x55031037, - 0x1B80, 0x310C1045, 0x1B80, 0x310C1047, 0x1B80, 0x7B1C1055, - 0x1B80, 0x7B1C1057, 0x1B80, 0x7A401065, 0x1B80, 0x7A401067, - 0x1B80, 0x550B1075, 0x1B80, 0x550B1077, 0x1B80, 0x310C1085, - 0x1B80, 0x310C1087, 0x1B80, 0x7B201095, 0x1B80, 0x7B201097, - 0x1B80, 0x7A0010A5, 0x1B80, 0x7A0010A7, 0x1B80, 0x551310B5, - 0x1B80, 0x551310B7, 0x1B80, 0x740110C5, 0x1B80, 0x740110C7, - 0x1B80, 0x740010D5, 0x1B80, 0x740010D7, 0x1B80, 0x8E0010E5, - 0x1B80, 0x8E0010E7, 0x1B80, 0x000110F5, 0x1B80, 0x000110F7, - 0x1B80, 0x57021105, 0x1B80, 0x57021107, 0x1B80, 0x57001115, - 0x1B80, 0x57001117, 0x1B80, 0x97001125, 0x1B80, 0x97001127, - 0x1B80, 0x00011135, 0x1B80, 0x00011137, 0x1B80, 0x4F781145, - 0x1B80, 0x4F781147, 0x1B80, 0x53881155, 0x1B80, 0x53881157, - 0x1B80, 0xE1221165, 0x1B80, 0xE1221167, 0x1B80, 0x54801175, - 0x1B80, 0x54801177, 0x1B80, 0x54001185, 0x1B80, 0x54001187, - 0x1B80, 0xE1221195, 0x1B80, 0xE1221197, 0x1B80, 0x548111A5, - 0x1B80, 0x548111A7, 0x1B80, 0x540011B5, 0x1B80, 0x540011B7, - 0x1B80, 0xE12211C5, 0x1B80, 0xE12211C7, 0x1B80, 0x548211D5, - 0x1B80, 0x548211D7, 0x1B80, 0x540011E5, 0x1B80, 0x540011E7, - 0x1B80, 0xE12D11F5, 0x1B80, 0xE12D11F7, 0x1B80, 0xBF1D1205, - 0x1B80, 0xBF1D1207, 0x1B80, 0x301D1215, 0x1B80, 0x301D1217, - 0x1B80, 0xE1001225, 0x1B80, 0xE1001227, 0x1B80, 0xE1051235, - 0x1B80, 0xE1051237, 0x1B80, 0xE1091245, 0x1B80, 0xE1091247, - 0x1B80, 0xE1101255, 0x1B80, 0xE1101257, 0x1B80, 0xE1641265, - 0x1B80, 0xE1641267, 0x1B80, 0x55131275, 0x1B80, 0x55131277, - 0x1B80, 0xE10C1285, 0x1B80, 0xE10C1287, 0x1B80, 0x55151295, - 0x1B80, 0x55151297, 0x1B80, 0xE11012A5, 0x1B80, 0xE11012A7, - 0x1B80, 0xE16412B5, 0x1B80, 0xE16412B7, 0x1B80, 0x000112C5, - 0x1B80, 0x000112C7, 0x1B80, 0x54BF12D5, 0x1B80, 0x54BF12D7, - 0x1B80, 0x54C012E5, 0x1B80, 0x54C012E7, 0x1B80, 0x54A312F5, - 0x1B80, 0x54A312F7, 0x1B80, 0x54C11305, 0x1B80, 0x54C11307, - 0x1B80, 0x54A41315, 0x1B80, 0x54A41317, 0x1B80, 0x4C181325, - 0x1B80, 0x4C181327, 0x1B80, 0xBF071335, 0x1B80, 0xBF071337, - 0x1B80, 0x54C21345, 0x1B80, 0x54C21347, 0x1B80, 0x54A41355, - 0x1B80, 0x54A41357, 0x1B80, 0xBF041365, 0x1B80, 0xBF041367, - 0x1B80, 0x54C11375, 0x1B80, 0x54C11377, 0x1B80, 0x54A31385, - 0x1B80, 0x54A31387, 0x1B80, 0xBF011395, 0x1B80, 0xBF011397, - 0x1B80, 0xE17213A5, 0x1B80, 0xE17213A7, 0x1B80, 0x54DF13B5, - 0x1B80, 0x54DF13B7, 0x1B80, 0x000113C5, 0x1B80, 0x000113C7, - 0x1B80, 0x54BF13D5, 0x1B80, 0x54BF13D7, 0x1B80, 0x54E513E5, - 0x1B80, 0x54E513E7, 0x1B80, 0x050A13F5, 0x1B80, 0x050A13F7, - 0x1B80, 0x54DF1405, 0x1B80, 0x54DF1407, 0x1B80, 0x00011415, - 0x1B80, 0x00011417, 0x1B80, 0x7F201425, 0x1B80, 0x7F201427, - 0x1B80, 0x7E001435, 0x1B80, 0x7E001437, 0x1B80, 0x7D001445, - 0x1B80, 0x7D001447, 0x1B80, 0x55011455, 0x1B80, 0x55011457, - 0x1B80, 0x5C311465, 0x1B80, 0x5C311467, 0x1B80, 0xE10C1475, - 0x1B80, 0xE10C1477, 0x1B80, 0xE1101485, 0x1B80, 0xE1101487, - 0x1B80, 0x54801495, 0x1B80, 0x54801497, 0x1B80, 0x540014A5, - 0x1B80, 0x540014A7, 0x1B80, 0xE10C14B5, 0x1B80, 0xE10C14B7, - 0x1B80, 0xE11014C5, 0x1B80, 0xE11014C7, 0x1B80, 0x548114D5, - 0x1B80, 0x548114D7, 0x1B80, 0x540014E5, 0x1B80, 0x540014E7, - 0x1B80, 0xE10C14F5, 0x1B80, 0xE10C14F7, 0x1B80, 0xE1101505, - 0x1B80, 0xE1101507, 0x1B80, 0x54821515, 0x1B80, 0x54821517, - 0x1B80, 0x54001525, 0x1B80, 0x54001527, 0x1B80, 0xE12D1535, - 0x1B80, 0xE12D1537, 0x1B80, 0xBFE91545, 0x1B80, 0xBFE91547, - 0x1B80, 0x301D1555, 0x1B80, 0x301D1557, 0x1B80, 0x00231565, - 0x1B80, 0x00231567, 0x1B80, 0x7B201575, 0x1B80, 0x7B201577, - 0x1B80, 0x7A001585, 0x1B80, 0x7A001587, 0x1B80, 0x79001595, - 0x1B80, 0x79001597, 0x1B80, 0xE16815A5, 0x1B80, 0xE16815A7, - 0x1B80, 0x000215B5, 0x1B80, 0x000215B7, 0x1B80, 0x000115C5, - 0x1B80, 0x000115C7, 0x1B80, 0x002215D5, 0x1B80, 0x002215D7, - 0x1B80, 0x7B2015E5, 0x1B80, 0x7B2015E7, 0x1B80, 0x7A0015F5, - 0x1B80, 0x7A0015F7, 0x1B80, 0x79001605, 0x1B80, 0x79001607, - 0x1B80, 0xE1681615, 0x1B80, 0xE1681617, 0x1B80, 0x00021625, - 0x1B80, 0x00021627, 0x1B80, 0x00011635, 0x1B80, 0x00011637, - 0x1B80, 0x549F1645, 0x1B80, 0x549F1647, 0x1B80, 0x54FF1655, - 0x1B80, 0x54FF1657, 0x1B80, 0x54001665, 0x1B80, 0x54001667, - 0x1B80, 0x00011675, 0x1B80, 0x00011677, 0x1B80, 0x5C311685, - 0x1B80, 0x5C311687, 0x1B80, 0x07141695, 0x1B80, 0x07141697, - 0x1B80, 0x540016A5, 0x1B80, 0x540016A7, 0x1B80, 0x5C3216B5, - 0x1B80, 0x5C3216B7, 0x1B80, 0x000116C5, 0x1B80, 0x000116C7, - 0x1B80, 0x5C3216D5, 0x1B80, 0x5C3216D7, 0x1B80, 0x071416E5, - 0x1B80, 0x071416E7, 0x1B80, 0x540016F5, 0x1B80, 0x540016F7, - 0x1B80, 0x5C311705, 0x1B80, 0x5C311707, 0x1B80, 0x00011715, - 0x1B80, 0x00011717, 0x1B80, 0x4C981725, 0x1B80, 0x4C981727, - 0x1B80, 0x4C181735, 0x1B80, 0x4C181737, 0x1B80, 0x00011745, - 0x1B80, 0x00011747, 0x1B80, 0x5C321755, 0x1B80, 0x5C321757, - 0x1B80, 0x62841765, 0x1B80, 0x62841767, 0x1B80, 0x66861775, - 0x1B80, 0x66861777, 0x1B80, 0x6C031785, 0x1B80, 0x6C031787, - 0x1B80, 0x7B201795, 0x1B80, 0x7B201797, 0x1B80, 0x7A0017A5, - 0x1B80, 0x7A0017A7, 0x1B80, 0x790017B5, 0x1B80, 0x790017B7, - 0x1B80, 0x7F2017C5, 0x1B80, 0x7F2017C7, 0x1B80, 0x7E0017D5, - 0x1B80, 0x7E0017D7, 0x1B80, 0x7D0017E5, 0x1B80, 0x7D0017E7, - 0x1B80, 0x090117F5, 0x1B80, 0x090117F7, 0x1B80, 0x0C011805, - 0x1B80, 0x0C011807, 0x1B80, 0x0BA61815, 0x1B80, 0x0BA61817, - 0x1B80, 0x00011825, 0x1B80, 0x00011827, 0x1B80, 0x00000006, - 0x1B80, 0x00000002, - -}; - -void odm_read_and_config_mp_8822b_phy_reg(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 c_cond; - bool is_matched = true, is_skipped = false; - u32 *array = array_mp_8822b_phy_reg; - - u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_phy_reg); i = i + 2) { - v1 = array[i]; - v2 = array[i + 1]; - - if (v1 & BIT(31)) { /* positive condition*/ - c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28); - if (c_cond == COND_ENDIF) { /*end*/ - is_matched = true; - is_skipped = false; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ENDIF\n"); - } else if (c_cond == COND_ELSE) { /*else*/ - is_matched = is_skipped ? false : true; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ELSE\n"); - } else { /*if , else if*/ - pre_v1 = v1; - pre_v2 = v2; - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "IF or ELSE IF\n"); - } - } else if (v1 & BIT(30)) { /*negative condition*/ - if (is_skipped) { - is_matched = false; - continue; - } - - if (check_positive(dm, pre_v1, pre_v2, v1, v2)) { - is_matched = true; - is_skipped = true; - } else { - is_matched = false; - is_skipped = false; - } - } else if (is_matched) { - odm_config_bb_phy_8822b(dm, v1, MASKDWORD, v2); - } - } -} - -u32 odm_get_version_mp_8822b_phy_reg(void) { return 67; } - -/****************************************************************************** - * phy_reg_pg.TXT - ******************************************************************************/ - -static u32 array_mp_8822b_phy_reg_pg[] = { - 0, 0, 0, 0x00000c20, 0xffffffff, 0x32343638, - 0, 0, 0, 0x00000c24, 0xffffffff, 0x36384042, - 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303234, - 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34363840, - 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, - 0, 0, 1, 0x00000c34, 0xffffffff, 0x34363840, - 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, - 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34363840, - 0, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, - 0, 0, 0, 0x00000c44, 0xffffffff, 0x38402224, - 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323436, - 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, - 0, 1, 0, 0x00000e20, 0xffffffff, 0x32343638, - 0, 1, 0, 0x00000e24, 0xffffffff, 0x36384042, - 0, 1, 0, 0x00000e28, 0xffffffff, 0x28303234, - 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34363840, - 0, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, - 0, 1, 1, 0x00000e34, 0xffffffff, 0x34363840, - 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, - 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34363840, - 0, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, - 0, 1, 0, 0x00000e44, 0xffffffff, 0x38402224, - 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323436, - 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, - 1, 0, 0, 0x00000c24, 0xffffffff, 0x34363840, - 1, 0, 0, 0x00000c28, 0xffffffff, 0x26283032, - 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32343638, - 1, 0, 0, 0x00000c30, 0xffffffff, 0x24262830, - 1, 0, 1, 0x00000c34, 0xffffffff, 0x32343638, - 1, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, - 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32343638, - 1, 0, 0, 0x00000c40, 0xffffffff, 0x24262830, - 1, 0, 0, 0x00000c44, 0xffffffff, 0x36382022, - 1, 0, 1, 0x00000c48, 0xffffffff, 0x28303234, - 1, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, - 1, 1, 0, 0x00000e24, 0xffffffff, 0x34363840, - 1, 1, 0, 0x00000e28, 0xffffffff, 0x26283032, - 1, 1, 0, 0x00000e2c, 0xffffffff, 0x32343638, - 1, 1, 0, 0x00000e30, 0xffffffff, 0x24262830, - 1, 1, 1, 0x00000e34, 0xffffffff, 0x32343638, - 1, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, - 1, 1, 0, 0x00000e3c, 0xffffffff, 0x32343638, - 1, 1, 0, 0x00000e40, 0xffffffff, 0x24262830, - 1, 1, 0, 0x00000e44, 0xffffffff, 0x36382022, - 1, 1, 1, 0x00000e48, 0xffffffff, 0x28303234, - 1, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, -}; - -void odm_read_and_config_mp_8822b_phy_reg_pg(struct phy_dm_struct *dm) -{ - u32 i = 0; - u32 *array = array_mp_8822b_phy_reg_pg; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - dm->phy_reg_pg_version = 1; - dm->phy_reg_pg_value_type = PHY_REG_PG_EXACT_VALUE; - - for (i = 0; i < ARRAY_SIZE(array_mp_8822b_phy_reg_pg); i += 6) { - u32 v1 = array[i]; - u32 v2 = array[i + 1]; - u32 v3 = array[i + 2]; - u32 v4 = array[i + 3]; - u32 v5 = array[i + 4]; - u32 v6 = array[i + 5]; - - odm_config_bb_phy_reg_pg_8822b(dm, v1, v2, v3, v4, v5, v6); - } -} diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_bb.h b/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_bb.h deleted file mode 100644 index a12745051678..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_bb.h +++ /dev/null @@ -1,43 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -/*Image2HeaderVersion: 3.2*/ -#ifndef __INC_MP_BB_HW_IMG_8822B_H -#define __INC_MP_BB_HW_IMG_8822B_H - -/****************************************************************************** - * agc_tab.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_agc_tab(/* tc: Test Chip, mp: mp Chip*/ - struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_agc_tab(void); - -/****************************************************************************** - * phy_reg.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_phy_reg(/* tc: Test Chip, mp: mp Chip*/ - struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_phy_reg(void); - -/****************************************************************************** - * phy_reg_pg.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_phy_reg_pg(/* tc: Test Chip, mp: mp Chip*/ - struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_phy_reg_pg(void); - -#endif diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_mac.c b/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_mac.c deleted file mode 100644 index aed97e437e76..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_mac.c +++ /dev/null @@ -1,211 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -/*Image2HeaderVersion: 3.2*/ -#include "../mp_precomp.h" -#include "../phydm_precomp.h" -#include <linux/kernel.h> - -static bool check_positive(struct phy_dm_struct *dm, const u32 condition1, - const u32 condition2, const u32 condition3, - const u32 condition4) -{ - u8 _board_type = ((dm->board_type & BIT(4)) >> 4) << 0 | /* _GLNA*/ - ((dm->board_type & BIT(3)) >> 3) << 1 | /* _GPA*/ - ((dm->board_type & BIT(7)) >> 7) << 2 | /* _ALNA*/ - ((dm->board_type & BIT(6)) >> 6) << 3 | /* _APA */ - ((dm->board_type & BIT(2)) >> 2) << 4; /* _BT*/ - - u32 cond1 = condition1, cond2 = condition2, cond3 = condition3, - cond4 = condition4; - - u8 cut_version_for_para = - (dm->cut_version == ODM_CUT_A) ? 14 : dm->cut_version; - u8 pkg_type_for_para = (dm->package_type == 0) ? 14 : dm->package_type; - - u32 driver1 = cut_version_for_para << 24 | - (dm->support_interface & 0xF0) << 16 | - dm->support_platform << 16 | pkg_type_for_para << 12 | - (dm->support_interface & 0x0F) << 8 | _board_type; - - u32 driver2 = (dm->type_glna & 0xFF) << 0 | (dm->type_gpa & 0xFF) << 8 | - (dm->type_alna & 0xFF) << 16 | - (dm->type_apa & 0xFF) << 24; - - u32 driver3 = 0; - - u32 driver4 = (dm->type_glna & 0xFF00) >> 8 | (dm->type_gpa & 0xFF00) | - (dm->type_alna & 0xFF00) << 8 | - (dm->type_apa & 0xFF00) << 16; - - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", - __func__, cond1, cond2, cond3, cond4); - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", - __func__, driver1, driver2, driver3, driver4); - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - " (Platform, Interface) = (0x%X, 0x%X)\n", - dm->support_platform, dm->support_interface); - ODM_RT_TRACE(dm, ODM_COMP_INIT, - " (Board, Package) = (0x%X, 0x%X)\n", - dm->board_type, dm->package_type); - - /*============== value Defined Check ===============*/ - /*QFN type [15:12] and cut version [27:24] need to do value check*/ - - if (((cond1 & 0x0000F000) != 0) && - ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))) - return false; - if (((cond1 & 0x0F000000) != 0) && - ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))) - return false; - - /*=============== Bit Defined Check ================*/ - /* We don't care [31:28] */ - - cond1 &= 0x00FF0FFF; - driver1 &= 0x00FF0FFF; - - if ((cond1 & driver1) == cond1) { - u32 bit_mask = 0; - - if ((cond1 & 0x0F) == 0) /* board_type is DONTCARE*/ - return true; - - if ((cond1 & BIT(0)) != 0) /*GLNA*/ - bit_mask |= 0x000000FF; - if ((cond1 & BIT(1)) != 0) /*GPA*/ - bit_mask |= 0x0000FF00; - if ((cond1 & BIT(2)) != 0) /*ALNA*/ - bit_mask |= 0x00FF0000; - if ((cond1 & BIT(3)) != 0) /*APA*/ - bit_mask |= 0xFF000000; - - if (((cond2 & bit_mask) == (driver2 & bit_mask)) && - ((cond4 & bit_mask) == - (driver4 & - bit_mask))) /* board_type of each RF path is matched*/ - return true; - else - return false; - } else { - return false; - } -} - -/****************************************************************************** - * mac_reg.TXT - ******************************************************************************/ - -static u32 array_mp_8822b_mac_reg[] = { - 0x029, 0x000000F9, 0x420, 0x00000080, 0x421, 0x0000000F, - 0x428, 0x0000000A, 0x429, 0x00000010, 0x430, 0x00000000, - 0x431, 0x00000000, 0x432, 0x00000000, 0x433, 0x00000001, - 0x434, 0x00000004, 0x435, 0x00000005, 0x436, 0x00000007, - 0x437, 0x00000008, 0x43C, 0x00000004, 0x43D, 0x00000005, - 0x43E, 0x00000007, 0x43F, 0x00000008, 0x440, 0x0000005D, - 0x441, 0x00000001, 0x442, 0x00000000, 0x444, 0x00000010, - 0x445, 0x000000F0, 0x446, 0x00000001, 0x447, 0x000000FE, - 0x448, 0x00000000, 0x449, 0x00000000, 0x44A, 0x00000000, - 0x44B, 0x00000040, 0x44C, 0x00000010, 0x44D, 0x000000F0, - 0x44E, 0x0000003F, 0x44F, 0x00000000, 0x450, 0x00000000, - 0x451, 0x00000000, 0x452, 0x00000000, 0x453, 0x00000040, - 0x455, 0x00000070, 0x45E, 0x00000004, 0x49C, 0x00000010, - 0x49D, 0x000000F0, 0x49E, 0x00000000, 0x49F, 0x00000006, - 0x4A0, 0x000000E0, 0x4A1, 0x00000003, 0x4A2, 0x00000000, - 0x4A3, 0x00000040, 0x4A4, 0x00000015, 0x4A5, 0x000000F0, - 0x4A6, 0x00000000, 0x4A7, 0x00000006, 0x4A8, 0x000000E0, - 0x4A9, 0x00000000, 0x4AA, 0x00000000, 0x4AB, 0x00000000, - 0x7DA, 0x00000008, 0x1448, 0x00000006, 0x144A, 0x00000006, - 0x144C, 0x00000006, 0x144E, 0x00000006, 0x4C8, 0x000000FF, - 0x4C9, 0x00000008, 0x4CA, 0x00000020, 0x4CB, 0x00000020, - 0x4CC, 0x000000FF, 0x4CD, 0x000000FF, 0x4CE, 0x00000001, - 0x4CF, 0x00000008, 0x500, 0x00000026, 0x501, 0x000000A2, - 0x502, 0x0000002F, 0x503, 0x00000000, 0x504, 0x00000028, - 0x505, 0x000000A3, 0x506, 0x0000005E, 0x507, 0x00000000, - 0x508, 0x0000002B, 0x509, 0x000000A4, 0x50A, 0x0000005E, - 0x50B, 0x00000000, 0x50C, 0x0000004F, 0x50D, 0x000000A4, - 0x50E, 0x00000000, 0x50F, 0x00000000, 0x512, 0x0000001C, - 0x514, 0x0000000A, 0x516, 0x0000000A, 0x521, 0x0000002F, - 0x525, 0x0000004F, 0x551, 0x00000010, 0x559, 0x00000002, - 0x55C, 0x00000050, 0x55D, 0x000000FF, 0x577, 0x0000000B, - 0x5BE, 0x00000064, 0x605, 0x00000030, 0x608, 0x0000000E, - 0x609, 0x00000022, 0x60C, 0x00000018, 0x6A0, 0x000000FF, - 0x6A1, 0x000000FF, 0x6A2, 0x000000FF, 0x6A3, 0x000000FF, - 0x6A4, 0x000000FF, 0x6A5, 0x000000FF, 0x6DE, 0x00000084, - 0x620, 0x000000FF, 0x621, 0x000000FF, 0x622, 0x000000FF, - 0x623, 0x000000FF, 0x624, 0x000000FF, 0x625, 0x000000FF, - 0x626, 0x000000FF, 0x627, 0x000000FF, 0x638, 0x00000050, - 0x63C, 0x0000000A, 0x63D, 0x0000000A, 0x63E, 0x0000000E, - 0x63F, 0x0000000E, 0x640, 0x00000040, 0x642, 0x00000040, - 0x643, 0x00000000, 0x652, 0x000000C8, 0x66E, 0x00000005, - 0x718, 0x00000040, 0x7D4, 0x00000098, - -}; - -void odm_read_and_config_mp_8822b_mac_reg(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 c_cond; - bool is_matched = true, is_skipped = false; - u32 *array = array_mp_8822b_mac_reg; - - u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_mac_reg); i = i + 2) { - v1 = array[i]; - v2 = array[i + 1]; - - if (v1 & BIT(31)) { /* positive condition*/ - c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28); - if (c_cond == COND_ENDIF) { /*end*/ - is_matched = true; - is_skipped = false; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ENDIF\n"); - } else if (c_cond == COND_ELSE) { /*else*/ - is_matched = is_skipped ? false : true; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ELSE\n"); - } else { /*if , else if*/ - pre_v1 = v1; - pre_v2 = v2; - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "IF or ELSE IF\n"); - } - } else if (v1 & BIT(30)) { /*negative condition*/ - if (is_skipped) { - is_matched = false; - continue; - } - - if (check_positive(dm, pre_v1, pre_v2, v1, v2)) { - is_matched = true; - is_skipped = true; - } else { - is_matched = false; - is_skipped = false; - } - } else if (is_matched) { - odm_config_mac_8822b(dm, v1, (u8)v2); - } - } -} - -u32 odm_get_version_mp_8822b_mac_reg(void) { return 67; } diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_mac.h b/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_mac.h deleted file mode 100644 index 2f8107bd0205..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_mac.h +++ /dev/null @@ -1,27 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -/*Image2HeaderVersion: 3.2*/ -#ifndef __INC_MP_MAC_HW_IMG_8822B_H -#define __INC_MP_MAC_HW_IMG_8822B_H - -/****************************************************************************** - * mac_reg.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_mac_reg(/* tc: Test Chip, mp: mp Chip*/ - struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_mac_reg(void); - -#endif diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_rf.c b/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_rf.c deleted file mode 100644 index b8d33d7637b5..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_rf.c +++ /dev/null @@ -1,4730 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -/*Image2HeaderVersion: 3.2*/ -#include "../mp_precomp.h" -#include "../phydm_precomp.h" -#include <linux/kernel.h> - -static bool check_positive(struct phy_dm_struct *dm, const u32 condition1, - const u32 condition2, const u32 condition3, - const u32 condition4) -{ - u8 _board_type = ((dm->board_type & BIT(4)) >> 4) << 0 | /* _GLNA*/ - ((dm->board_type & BIT(3)) >> 3) << 1 | /* _GPA*/ - ((dm->board_type & BIT(7)) >> 7) << 2 | /* _ALNA*/ - ((dm->board_type & BIT(6)) >> 6) << 3 | /* _APA */ - ((dm->board_type & BIT(2)) >> 2) << 4; /* _BT*/ - - u32 cond1 = condition1, cond2 = condition2, cond3 = condition3, - cond4 = condition4; - - u8 cut_version_for_para = - (dm->cut_version == ODM_CUT_A) ? 14 : dm->cut_version; - u8 pkg_type_for_para = (dm->package_type == 0) ? 14 : dm->package_type; - - u32 driver1 = cut_version_for_para << 24 | - (dm->support_interface & 0xF0) << 16 | - dm->support_platform << 16 | pkg_type_for_para << 12 | - (dm->support_interface & 0x0F) << 8 | _board_type; - - u32 driver2 = (dm->type_glna & 0xFF) << 0 | (dm->type_gpa & 0xFF) << 8 | - (dm->type_alna & 0xFF) << 16 | - (dm->type_apa & 0xFF) << 24; - - u32 driver3 = 0; - - u32 driver4 = (dm->type_glna & 0xFF00) >> 8 | (dm->type_gpa & 0xFF00) | - (dm->type_alna & 0xFF00) << 8 | - (dm->type_apa & 0xFF00) << 16; - - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n", - __func__, cond1, cond2, cond3, cond4); - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n", - __func__, driver1, driver2, driver3, driver4); - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - " (Platform, Interface) = (0x%X, 0x%X)\n", - dm->support_platform, dm->support_interface); - ODM_RT_TRACE(dm, ODM_COMP_INIT, - " (Board, Package) = (0x%X, 0x%X)\n", - dm->board_type, dm->package_type); - - /*============== value Defined Check ===============*/ - /*QFN type [15:12] and cut version [27:24] need to do value check*/ - - if (((cond1 & 0x0000F000) != 0) && - ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))) - return false; - if (((cond1 & 0x0F000000) != 0) && - ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))) - return false; - - /*=============== Bit Defined Check ================*/ - /* We don't care [31:28] */ - - cond1 &= 0x00FF0FFF; - driver1 &= 0x00FF0FFF; - - if ((cond1 & driver1) == cond1) { - u32 bit_mask = 0; - - if ((cond1 & 0x0F) == 0) /* board_type is DONTCARE*/ - return true; - - if ((cond1 & BIT(0)) != 0) /*GLNA*/ - bit_mask |= 0x000000FF; - if ((cond1 & BIT(1)) != 0) /*GPA*/ - bit_mask |= 0x0000FF00; - if ((cond1 & BIT(2)) != 0) /*ALNA*/ - bit_mask |= 0x00FF0000; - if ((cond1 & BIT(3)) != 0) /*APA*/ - bit_mask |= 0xFF000000; - - if (((cond2 & bit_mask) == (driver2 & bit_mask)) && - ((cond4 & bit_mask) == - (driver4 & - bit_mask))) /* board_type of each RF path is matched*/ - return true; - else - return false; - } else { - return false; - } -} - -/****************************************************************************** - * radioa.TXT - ******************************************************************************/ - -static u32 array_mp_8822b_radioa[] = { - 0x000, 0x00030000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0xA0000000, 0x00000000, 0x001, 0x00040029, - 0xB0000000, 0x00000000, 0x018, 0x00010D24, 0x0EF, 0x00080000, - 0x033, 0x00000002, 0x03E, 0x0000003F, 0x03F, 0x000C0F4E, - 0x033, 0x00000001, 0x03E, 0x00000034, 0x03F, 0x0004080E, - 0x0EF, 0x00080000, 0x0DF, 0x00002449, 0x033, 0x00000024, - 0x03E, 0x0000003F, 0x03F, 0x00060FDE, 0x0EF, 0x00000000, - 0x0EF, 0x00080000, 0x033, 0x00000025, 0x03E, 0x00000037, - 0x03F, 0x0007EFCE, 0x0EF, 0x00000000, 0x0EF, 0x00080000, - 0x033, 0x00000026, 0x03E, 0x00000037, 0x03F, 0x000DEFCE, - 0x0EF, 0x00000000, 0x07F, 0x00000000, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FF0F8, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x0B0, 0x000FB0F8, 0xA0000000, 0x00000000, - 0x0B0, 0x000FF0F8, 0xB0000000, 0x00000000, 0x0B1, 0x0007DBE4, - 0x0B2, 0x000225D1, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x000FC760, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x0B3, 0x0007C330, 0xA0000000, 0x00000000, 0x0B3, 0x000FC760, - 0xB0000000, 0x00000000, 0x0B4, 0x00099DD0, 0x0B5, 0x000400FC, - 0x0B6, 0x000187F0, 0x0B7, 0x00030018, 0x0B8, 0x00080800, - 0x0B9, 0x00000000, 0x0BA, 0x00008000, 0x0BB, 0x00000000, - 0x0BC, 0x00040030, 0x0BD, 0x00000000, 0x0BE, 0x00000000, - 0x0BF, 0x00000000, 0x0C0, 0x00000000, 0x0C1, 0x00000000, - 0x0C2, 0x00000000, 0x0C3, 0x00000000, 0x0C4, 0x00002402, - 0x0C5, 0x00000009, 0x0C6, 0x00040299, 0x0C7, 0x00055555, - 0x0C8, 0x0000C16C, 0x0C9, 0x0001C140, 0x0CA, 0x00000000, - 0x0CB, 0x00000000, 0x0CC, 0x00000000, 0x0CD, 0x00000000, - 0x0CE, 0x00090C00, 0x0CF, 0x0006D200, 0x0DF, 0x00000009, - 0x018, 0x00010524, 0x089, 0x00000207, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x08A, 0x000FE186, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x08A, 0x000FE186, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FF186, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x08A, 0x000FE186, 0xA0000000, 0x00000000, - 0x08A, 0x000FF186, 0xB0000000, 0x00000000, 0x08B, 0x00061E3C, - 0x08C, 0x000112C7, 0x08D, 0x000F4988, 0x08E, 0x00064D40, - 0x0EF, 0x00020000, 0x033, 0x00000007, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004080, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0xA0000000, 0x00000000, - 0x03E, 0x00004000, 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000DFF86, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C0006, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0xA0000000, 0x00000000, - 0x03F, 0x000C3186, 0xB0000000, 0x00000000, 0x033, 0x00000006, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0xA0000000, 0x00000000, 0x03E, 0x00004080, 0xB0000000, 0x00000000, - 0x03F, 0x000C3186, 0x033, 0x00000005, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x000040C8, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x000040C8, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x000040C8, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x000040C8, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x000040C8, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004084, 0xA0000000, 0x00000000, - 0x03E, 0x000040C8, 0xB0000000, 0x00000000, 0x03F, 0x000C3186, - 0x033, 0x00000004, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03E, 0x00004190, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x03E, 0x00004190, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004190, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004190, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03E, 0x00004190, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x03E, 0x00004108, 0xA0000000, 0x00000000, 0x03E, 0x00004190, - 0xB0000000, 0x00000000, 0x03F, 0x000C3186, 0x033, 0x00000003, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004998, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004998, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004998, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004998, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004998, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x0000490C, - 0xA0000000, 0x00000000, 0x03E, 0x00004998, 0xB0000000, 0x00000000, - 0x03F, 0x000C3186, 0x033, 0x00000002, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00005840, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00005840, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00005840, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00005840, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00005840, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00005E00, 0xA0000000, 0x00000000, - 0x03E, 0x00005840, 0xB0000000, 0x00000000, 0x03F, 0x000C3186, - 0x033, 0x00000001, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03E, 0x000058C2, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x03E, 0x000058C2, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x000058C2, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x000058C2, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03E, 0x000058C2, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x03E, 0x00005862, 0xA0000000, 0x00000000, 0x03E, 0x000058C2, - 0xB0000000, 0x00000000, 0x03F, 0x000C3186, 0x033, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00005930, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00005930, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00005930, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00005930, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00005930, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00005948, - 0xA0000000, 0x00000000, 0x03E, 0x00005930, 0xB0000000, 0x00000000, - 0x03F, 0x000C3186, 0x033, 0x0000000F, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004080, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004080, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0xA0000000, 0x00000000, - 0x03E, 0x00004000, 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000DFF86, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000DFF86, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C0006, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0xA0000000, 0x00000000, - 0x03F, 0x000C3186, 0xB0000000, 0x00000000, 0x033, 0x0000000E, - 0x03E, 0x00004080, 0x03F, 0x000C3186, 0x033, 0x0000000D, - 0x03E, 0x000040C8, 0x03F, 0x000C3186, 0x033, 0x0000000C, - 0x03E, 0x00004190, 0x03F, 0x000C3186, 0x033, 0x0000000B, - 0x03E, 0x00004998, 0x03F, 0x000C3186, 0x033, 0x0000000A, - 0x03E, 0x00005840, 0x03F, 0x000C3186, 0x033, 0x00000009, - 0x03E, 0x000058C2, 0x03F, 0x000C3186, 0x033, 0x00000008, - 0x03E, 0x00005930, 0x03F, 0x000C3186, 0x033, 0x00000017, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0xA0000000, 0x00000000, 0x03E, 0x00004000, 0xB0000000, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C0006, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0xA0000000, 0x00000000, 0x03F, 0x000C3186, 0xB0000000, 0x00000000, - 0x033, 0x00000016, 0x03E, 0x00004080, 0x03F, 0x000C3186, - 0x033, 0x00000015, 0x03E, 0x000040C8, 0x03F, 0x000C3186, - 0x033, 0x00000014, 0x03E, 0x00004190, 0x03F, 0x000C3186, - 0x033, 0x00000013, 0x03E, 0x00004998, 0x03F, 0x000C3186, - 0x033, 0x00000012, 0x03E, 0x00005840, 0x03F, 0x000C3186, - 0x033, 0x00000011, 0x03E, 0x000058C2, 0x03F, 0x000C3186, - 0x033, 0x00000010, 0x03E, 0x00005930, 0x03F, 0x000C3186, - 0x0EF, 0x00000000, 0x0EF, 0x00004000, 0x033, 0x00000000, - 0x03F, 0x0000000A, 0x033, 0x00000001, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000005, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000006, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000005, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000005, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0xA0000000, 0x00000000, - 0x03F, 0x00000005, 0xB0000000, 0x00000000, 0x033, 0x00000002, - 0x03F, 0x00000000, 0x0EF, 0x00000000, 0x018, 0x00000401, - 0x084, 0x00001209, 0x086, 0x000001A0, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0xA0000000, 0x00000000, - 0x087, 0x000E8180, 0xB0000000, 0x00000000, 0x088, 0x00070020, - 0x0DE, 0x00000010, 0x0EF, 0x00008000, 0x033, 0x0000000F, - 0x03F, 0x0000003C, 0x033, 0x0000000E, 0x03F, 0x00000038, - 0x033, 0x0000000D, 0x03F, 0x00000030, 0x033, 0x0000000C, - 0x03F, 0x00000028, 0x033, 0x0000000B, 0x03F, 0x00000020, - 0x033, 0x0000000A, 0x03F, 0x00000018, 0x033, 0x00000009, - 0x03F, 0x00000010, 0x033, 0x00000008, 0x03F, 0x00000008, - 0x033, 0x00000007, 0x03F, 0x0000003C, 0x033, 0x00000006, - 0x03F, 0x00000038, 0x033, 0x00000005, 0x03F, 0x00000030, - 0x033, 0x00000004, 0x03F, 0x00000028, 0x033, 0x00000003, - 0x03F, 0x00000020, 0x033, 0x00000002, 0x03F, 0x00000018, - 0x033, 0x00000001, 0x03F, 0x00000010, 0x033, 0x00000000, - 0x03F, 0x00000008, 0x0EF, 0x00000000, 0x0B8, 0x00080A00, - 0x0B0, 0x000FF0FA, 0x0FE, 0x00000000, 0x0CA, 0x00080000, - 0x0C9, 0x0001C141, 0x0FE, 0x00000000, 0x0B0, 0x000FF0F8, - 0x018, 0x00018D24, 0xFFE, 0x00000000, 0xFFE, 0x00000000, - 0xFFE, 0x00000000, 0xFFE, 0x00000000, 0x018, 0x00010D24, - 0x01B, 0x00075A40, 0x0EE, 0x00000002, 0x033, 0x00000000, - 0x03F, 0x00000004, 0x033, 0x00000001, 0x03F, 0x00000004, - 0x033, 0x00000002, 0x03F, 0x00000004, 0x033, 0x00000003, - 0x03F, 0x00000004, 0x033, 0x00000004, 0x03F, 0x00000004, - 0x033, 0x00000005, 0x03F, 0x00000006, 0x033, 0x00000006, - 0x03F, 0x00000002, 0x033, 0x00000007, 0x03F, 0x00000000, - 0x0EE, 0x00000000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x061, 0x0005D4A0, 0x062, 0x0000D203, 0x063, 0x00000062, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x061, 0x0005D4A0, - 0x062, 0x0000D203, 0x063, 0x00000062, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D4A0, 0x062, 0x0000D203, - 0x063, 0x00000062, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, 0x063, 0x00000062, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x061, 0x0005D4A0, - 0x062, 0x0000D203, 0x063, 0x00000062, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x061, 0x0005D4A0, 0x062, 0x0000D203, - 0x063, 0x00000062, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D4A0, 0x062, 0x0000D203, 0x063, 0x00000062, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D2A1, - 0x062, 0x0000D3A2, 0x063, 0x00000062, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, - 0x063, 0x00000062, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D301, 0x062, 0x0000D303, 0x063, 0x00000002, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D301, - 0x062, 0x0000D303, 0x063, 0x00000002, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D3D1, 0x062, 0x0000D3A2, - 0x063, 0x00000002, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, 0x063, 0x00000062, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D3D1, - 0x062, 0x0000D3A2, 0x063, 0x00000002, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D301, 0x062, 0x0000D303, - 0x063, 0x00000002, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D3D1, 0x062, 0x0000D3A2, 0x063, 0x00000002, - 0x90002100, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D301, - 0x062, 0x0000D303, 0x063, 0x00000002, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D301, 0x062, 0x0000D303, - 0x063, 0x00000002, 0xA0000000, 0x00000000, 0x061, 0x0005D3D0, - 0x062, 0x0000D303, 0x063, 0x00000002, 0xB0000000, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x0EF, 0x00000200, - 0x030, 0x000004A3, 0x030, 0x000014A3, 0x030, 0x000024A3, - 0x030, 0x000034A3, 0x030, 0x000044A3, 0x030, 0x000054A3, - 0x030, 0x000064A3, 0x030, 0x000074A3, 0x030, 0x000084A3, - 0x030, 0x000094A3, 0x030, 0x0000A4A3, 0x030, 0x0000B4A3, - 0x0EF, 0x00000000, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x0EF, 0x00000200, 0x030, 0x000004A3, 0x030, 0x000014A3, - 0x030, 0x000024A3, 0x030, 0x000034A3, 0x030, 0x000044A3, - 0x030, 0x000054A3, 0x030, 0x000064A3, 0x030, 0x000074A3, - 0x030, 0x000084A3, 0x030, 0x000094A3, 0x030, 0x0000A4A3, - 0x030, 0x0000B4A3, 0x0EF, 0x00000000, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x000004A3, - 0x030, 0x000014A3, 0x030, 0x000024A3, 0x030, 0x000034A3, - 0x030, 0x000044A3, 0x030, 0x000054A3, 0x030, 0x000064A3, - 0x030, 0x000074A3, 0x030, 0x000084A3, 0x030, 0x000094A3, - 0x030, 0x0000A4A3, 0x030, 0x0000B4A3, 0x0EF, 0x00000000, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x0EF, 0x00000200, - 0x030, 0x000002A6, 0x030, 0x000012A6, 0x030, 0x000022A6, - 0x030, 0x000032A6, 0x030, 0x000042A6, 0x030, 0x000052A6, - 0x030, 0x000062A6, 0x030, 0x000072A6, 0x030, 0x000082A6, - 0x030, 0x000092A6, 0x030, 0x0000A2A6, 0x030, 0x0000B2A6, - 0x0EF, 0x00000000, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x0EF, 0x00000200, 0x030, 0x000004A0, 0x030, 0x000014A0, - 0x030, 0x000024A0, 0x030, 0x000034A0, 0x030, 0x000044A0, - 0x030, 0x000054A0, 0x030, 0x000064A0, 0x030, 0x000074A0, - 0x030, 0x000084A0, 0x030, 0x000094A0, 0x030, 0x0000A4A0, - 0x030, 0x0000B4A0, 0x0EF, 0x00000000, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x000004A0, - 0x030, 0x000014A0, 0x030, 0x000024A0, 0x030, 0x000034A0, - 0x030, 0x000044A0, 0x030, 0x000054A0, 0x030, 0x000064A0, - 0x030, 0x000074A0, 0x030, 0x000084A0, 0x030, 0x000094A0, - 0x030, 0x0000A4A0, 0x030, 0x0000B4A0, 0x0EF, 0x00000000, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x0EF, 0x00000200, - 0x030, 0x000004A0, 0x030, 0x000014A0, 0x030, 0x000024A0, - 0x030, 0x000034A0, 0x030, 0x000044A0, 0x030, 0x000054A0, - 0x030, 0x000064A0, 0x030, 0x000074A0, 0x030, 0x000084A0, - 0x030, 0x000094A0, 0x030, 0x0000A4A0, 0x030, 0x0000B4A0, - 0x0EF, 0x00000000, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000200, 0x030, 0x000002A1, 0x030, 0x000012A1, - 0x030, 0x000022A1, 0x030, 0x000032A1, 0x030, 0x000042A1, - 0x030, 0x000052A1, 0x030, 0x000062A1, 0x030, 0x000072A1, - 0x030, 0x000082A1, 0x030, 0x000092A1, 0x030, 0x0000A2A1, - 0x030, 0x0000B2A1, 0x0EF, 0x00000000, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x000002A6, - 0x030, 0x000012A6, 0x030, 0x000022A6, 0x030, 0x000032A6, - 0x030, 0x000042A6, 0x030, 0x000052A6, 0x030, 0x000062A6, - 0x030, 0x000072A6, 0x030, 0x000082A6, 0x030, 0x000092A6, - 0x030, 0x0000A2A6, 0x030, 0x0000B2A6, 0x0EF, 0x00000000, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x0EF, 0x00000200, - 0x030, 0x00000384, 0x030, 0x00001384, 0x030, 0x00002384, - 0x030, 0x00003384, 0x030, 0x00004425, 0x030, 0x00005425, - 0x030, 0x00006425, 0x030, 0x00007425, 0x030, 0x000083A4, - 0x030, 0x000093A4, 0x030, 0x0000A3A4, 0x030, 0x0000B3A4, - 0x0EF, 0x00000000, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000200, 0x030, 0x000003A3, 0x030, 0x000013A3, - 0x030, 0x000023A3, 0x030, 0x000033A3, 0x030, 0x00004355, - 0x030, 0x00005355, 0x030, 0x00006355, 0x030, 0x00007355, - 0x030, 0x00008314, 0x030, 0x00009314, 0x030, 0x0000A314, - 0x030, 0x0000B314, 0x0EF, 0x00000000, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x000003A1, - 0x030, 0x000013A1, 0x030, 0x000023A1, 0x030, 0x000033A1, - 0x030, 0x000043A3, 0x030, 0x000053A3, 0x030, 0x000063A3, - 0x030, 0x000073A3, 0x030, 0x000083A5, 0x030, 0x000093A5, - 0x030, 0x0000A3A5, 0x030, 0x0000B3A5, 0x0EF, 0x00000000, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x0EF, 0x00000200, - 0x030, 0x000002A1, 0x030, 0x000012A1, 0x030, 0x000022A1, - 0x030, 0x000032A1, 0x030, 0x000042A1, 0x030, 0x000052A1, - 0x030, 0x000062A1, 0x030, 0x000072A1, 0x030, 0x000082A1, - 0x030, 0x000092A1, 0x030, 0x0000A2A1, 0x030, 0x0000B2A1, - 0x0EF, 0x00000000, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000200, 0x030, 0x00000463, 0x030, 0x00001463, - 0x030, 0x00002463, 0x030, 0x00003463, 0x030, 0x00004545, - 0x030, 0x00005545, 0x030, 0x00006545, 0x030, 0x00007545, - 0x030, 0x00008565, 0x030, 0x00009565, 0x030, 0x0000A565, - 0x030, 0x0000B565, 0x0EF, 0x00000000, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x00000303, - 0x030, 0x00001303, 0x030, 0x00002303, 0x030, 0x00003303, - 0x030, 0x000043A4, 0x030, 0x000053A4, 0x030, 0x000063A4, - 0x030, 0x000073A4, 0x030, 0x00008365, 0x030, 0x00009365, - 0x030, 0x0000A365, 0x030, 0x0000B365, 0x0EF, 0x00000000, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x0EF, 0x00000200, - 0x030, 0x000003A2, 0x030, 0x000013A2, 0x030, 0x000023A2, - 0x030, 0x000033A2, 0x030, 0x00004343, 0x030, 0x00005343, - 0x030, 0x00006343, 0x030, 0x00007343, 0x030, 0x00008364, - 0x030, 0x00009364, 0x030, 0x0000A364, 0x030, 0x0000B364, - 0x0EF, 0x00000000, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000200, 0x030, 0x000003A0, 0x030, 0x000013A0, - 0x030, 0x000023A0, 0x030, 0x000033A0, 0x030, 0x00004430, - 0x030, 0x00005430, 0x030, 0x00006430, 0x030, 0x00007430, - 0x030, 0x00008372, 0x030, 0x00009372, 0x030, 0x0000A372, - 0x030, 0x0000B372, 0x0EF, 0x00000000, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x000003A0, - 0x030, 0x000013A0, 0x030, 0x000023A0, 0x030, 0x000033A0, - 0x030, 0x000043A1, 0x030, 0x000053A1, 0x030, 0x000063A1, - 0x030, 0x000073A1, 0x030, 0x000083A2, 0x030, 0x000093A2, - 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, 0x0EF, 0x00000000, - 0xA0000000, 0x00000000, 0x0EF, 0x00000200, 0x030, 0x000003D0, - 0x030, 0x000013D0, 0x030, 0x000023D0, 0x030, 0x000033D0, - 0x030, 0x000043D0, 0x030, 0x000053D0, 0x030, 0x000063D0, - 0x030, 0x000073D0, 0x030, 0x000083D0, 0x030, 0x000093D0, - 0x030, 0x0000A3D0, 0x030, 0x0000B3D0, 0x0EF, 0x00000000, - 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A3, 0x030, 0x000013A3, - 0x030, 0x000023A3, 0x030, 0x000033A3, 0x030, 0x000043A3, - 0x030, 0x000053A3, 0x030, 0x000063A3, 0x030, 0x000073A3, - 0x030, 0x000083A3, 0x030, 0x000093A3, 0x030, 0x0000A3A3, - 0x030, 0x0000B3A3, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x0EF, 0x00000080, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0xA0000000, 0x00000000, 0x0EF, 0x00000080, - 0x030, 0x000003A2, 0x030, 0x000013A2, 0x030, 0x000023A2, - 0x030, 0x000033A2, 0x030, 0x000043A2, 0x030, 0x000053A2, - 0x030, 0x000063A2, 0x030, 0x000073A2, 0x030, 0x000083A2, - 0x030, 0x000093A2, 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, - 0xB0000000, 0x00000000, 0x0EF, 0x00000000, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000660, - 0x030, 0x00001443, 0x030, 0x00002221, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000776, - 0x030, 0x00001455, 0x030, 0x00002325, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000764, - 0x030, 0x00001632, 0x030, 0x00002421, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000764, - 0x030, 0x00001632, 0x030, 0x00002421, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000777, - 0x030, 0x00001442, 0x030, 0x00002222, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000764, - 0x030, 0x00001632, 0x030, 0x00002421, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000775, - 0x030, 0x00001343, 0x030, 0x00002210, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x0EF, 0x00000040, 0x030, 0x00000775, - 0x030, 0x00001422, 0x030, 0x00002210, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0xA0000000, 0x00000000, - 0x0EF, 0x00000040, 0x030, 0x00000764, 0x030, 0x00001632, - 0x030, 0x00002421, 0x030, 0x00004000, 0x030, 0x00005000, - 0x030, 0x00006000, 0xB0000000, 0x00000000, 0x0EF, 0x00000000, - 0x0EF, 0x00000800, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000007, 0x033, 0x00000021, - 0x03F, 0x0000000A, 0x033, 0x00000022, 0x03F, 0x0000000D, - 0x033, 0x00000023, 0x03F, 0x0000002A, 0x033, 0x00000024, - 0x03F, 0x0000002D, 0x033, 0x00000025, 0x03F, 0x00000030, - 0x033, 0x00000026, 0x03F, 0x0000006D, 0x033, 0x00000027, - 0x03F, 0x00000070, 0x033, 0x00000028, 0x03F, 0x000000ED, - 0x033, 0x00000029, 0x03F, 0x000000F0, 0x033, 0x0000002A, - 0x03F, 0x000000F3, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000007, 0x033, 0x00000021, - 0x03F, 0x0000000A, 0x033, 0x00000022, 0x03F, 0x0000000D, - 0x033, 0x00000023, 0x03F, 0x0000002A, 0x033, 0x00000024, - 0x03F, 0x0000002D, 0x033, 0x00000025, 0x03F, 0x00000030, - 0x033, 0x00000026, 0x03F, 0x0000006D, 0x033, 0x00000027, - 0x03F, 0x00000070, 0x033, 0x00000028, 0x03F, 0x000000ED, - 0x033, 0x00000029, 0x03F, 0x000000F0, 0x033, 0x0000002A, - 0x03F, 0x000000F3, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000007, 0x033, 0x00000021, - 0x03F, 0x0000000A, 0x033, 0x00000022, 0x03F, 0x0000000D, - 0x033, 0x00000023, 0x03F, 0x0000002A, 0x033, 0x00000024, - 0x03F, 0x0000002D, 0x033, 0x00000025, 0x03F, 0x00000030, - 0x033, 0x00000026, 0x03F, 0x0000006D, 0x033, 0x00000027, - 0x03F, 0x00000070, 0x033, 0x00000028, 0x03F, 0x000000ED, - 0x033, 0x00000029, 0x03F, 0x000000F0, 0x033, 0x0000002A, - 0x03F, 0x000000F3, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000005, 0x033, 0x00000021, - 0x03F, 0x00000008, 0x033, 0x00000022, 0x03F, 0x0000000B, - 0x033, 0x00000023, 0x03F, 0x0000000E, 0x033, 0x00000024, - 0x03F, 0x0000002B, 0x033, 0x00000025, 0x03F, 0x00000068, - 0x033, 0x00000026, 0x03F, 0x0000006B, 0x033, 0x00000027, - 0x03F, 0x0000006E, 0x033, 0x00000028, 0x03F, 0x00000071, - 0x033, 0x00000029, 0x03F, 0x00000074, 0x033, 0x0000002A, - 0x03F, 0x00000077, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000007, 0x033, 0x00000021, - 0x03F, 0x0000000A, 0x033, 0x00000022, 0x03F, 0x0000000D, - 0x033, 0x00000023, 0x03F, 0x0000002A, 0x033, 0x00000024, - 0x03F, 0x0000002D, 0x033, 0x00000025, 0x03F, 0x00000030, - 0x033, 0x00000026, 0x03F, 0x0000006D, 0x033, 0x00000027, - 0x03F, 0x00000070, 0x033, 0x00000028, 0x03F, 0x000000ED, - 0x033, 0x00000029, 0x03F, 0x000000F0, 0x033, 0x0000002A, - 0x03F, 0x000000F3, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000007, 0x033, 0x00000021, - 0x03F, 0x0000000A, 0x033, 0x00000022, 0x03F, 0x0000000D, - 0x033, 0x00000023, 0x03F, 0x0000002A, 0x033, 0x00000024, - 0x03F, 0x0000002D, 0x033, 0x00000025, 0x03F, 0x00000030, - 0x033, 0x00000026, 0x03F, 0x0000006D, 0x033, 0x00000027, - 0x03F, 0x00000070, 0x033, 0x00000028, 0x03F, 0x000000ED, - 0x033, 0x00000029, 0x03F, 0x000000F0, 0x033, 0x0000002A, - 0x03F, 0x000000F3, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000007, 0x033, 0x00000021, - 0x03F, 0x0000000A, 0x033, 0x00000022, 0x03F, 0x0000000D, - 0x033, 0x00000023, 0x03F, 0x0000002A, 0x033, 0x00000024, - 0x03F, 0x0000002D, 0x033, 0x00000025, 0x03F, 0x00000030, - 0x033, 0x00000026, 0x03F, 0x0000006D, 0x033, 0x00000027, - 0x03F, 0x00000070, 0x033, 0x00000028, 0x03F, 0x000000ED, - 0x033, 0x00000029, 0x03F, 0x000000F0, 0x033, 0x0000002A, - 0x03F, 0x000000F3, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000005, 0x033, 0x00000021, - 0x03F, 0x00000008, 0x033, 0x00000022, 0x03F, 0x0000000B, - 0x033, 0x00000023, 0x03F, 0x0000000E, 0x033, 0x00000024, - 0x03F, 0x0000002B, 0x033, 0x00000025, 0x03F, 0x00000068, - 0x033, 0x00000026, 0x03F, 0x0000006B, 0x033, 0x00000027, - 0x03F, 0x0000006E, 0x033, 0x00000028, 0x03F, 0x00000071, - 0x033, 0x00000029, 0x03F, 0x00000074, 0x033, 0x0000002A, - 0x03F, 0x00000077, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000005, 0x033, 0x00000021, - 0x03F, 0x00000008, 0x033, 0x00000022, 0x03F, 0x0000000B, - 0x033, 0x00000023, 0x03F, 0x0000000E, 0x033, 0x00000024, - 0x03F, 0x0000002B, 0x033, 0x00000025, 0x03F, 0x00000068, - 0x033, 0x00000026, 0x03F, 0x0000006B, 0x033, 0x00000027, - 0x03F, 0x0000006E, 0x033, 0x00000028, 0x03F, 0x00000071, - 0x033, 0x00000029, 0x03F, 0x00000074, 0x033, 0x0000002A, - 0x03F, 0x00000077, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000C0C, 0x033, 0x00000021, - 0x03F, 0x00000C29, 0x033, 0x00000022, 0x03F, 0x00000C2C, - 0x033, 0x00000023, 0x03F, 0x00000C69, 0x033, 0x00000024, - 0x03F, 0x00000CA8, 0x033, 0x00000025, 0x03F, 0x00000CE8, - 0x033, 0x00000026, 0x03F, 0x00000CEB, 0x033, 0x00000027, - 0x03F, 0x00000CEE, 0x033, 0x00000028, 0x03F, 0x00000CF1, - 0x033, 0x00000029, 0x03F, 0x00000CF4, 0x033, 0x0000002A, - 0x03F, 0x00000CF7, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x0000042B, 0x033, 0x00000021, - 0x03F, 0x0000082A, 0x033, 0x00000022, 0x03F, 0x00000849, - 0x033, 0x00000023, 0x03F, 0x0000084C, 0x033, 0x00000024, - 0x03F, 0x00000C4C, 0x033, 0x00000025, 0x03F, 0x00000CA9, - 0x033, 0x00000026, 0x03F, 0x00000CEA, 0x033, 0x00000027, - 0x03F, 0x00000CED, 0x033, 0x00000028, 0x03F, 0x00000CF0, - 0x033, 0x00000029, 0x03F, 0x00000CF3, 0x033, 0x0000002A, - 0x03F, 0x00000CF6, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000C09, 0x033, 0x00000021, - 0x03F, 0x00000C0C, 0x033, 0x00000022, 0x03F, 0x00000C0F, - 0x033, 0x00000023, 0x03F, 0x00000C2C, 0x033, 0x00000024, - 0x03F, 0x00000C2F, 0x033, 0x00000025, 0x03F, 0x00000C8A, - 0x033, 0x00000026, 0x03F, 0x00000C8D, 0x033, 0x00000027, - 0x03F, 0x00000C90, 0x033, 0x00000028, 0x03F, 0x00000CD0, - 0x033, 0x00000029, 0x03F, 0x00000CF2, 0x033, 0x0000002A, - 0x03F, 0x00000CF5, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000005, 0x033, 0x00000021, - 0x03F, 0x00000008, 0x033, 0x00000022, 0x03F, 0x0000000B, - 0x033, 0x00000023, 0x03F, 0x0000000E, 0x033, 0x00000024, - 0x03F, 0x0000002B, 0x033, 0x00000025, 0x03F, 0x00000068, - 0x033, 0x00000026, 0x03F, 0x0000006B, 0x033, 0x00000027, - 0x03F, 0x0000006E, 0x033, 0x00000028, 0x03F, 0x00000071, - 0x033, 0x00000029, 0x03F, 0x00000074, 0x033, 0x0000002A, - 0x03F, 0x00000077, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000C09, 0x033, 0x00000021, - 0x03F, 0x00000C0C, 0x033, 0x00000022, 0x03F, 0x00000C0F, - 0x033, 0x00000023, 0x03F, 0x00000C2C, 0x033, 0x00000024, - 0x03F, 0x00000C2F, 0x033, 0x00000025, 0x03F, 0x00000C8A, - 0x033, 0x00000026, 0x03F, 0x00000C8D, 0x033, 0x00000027, - 0x03F, 0x00000C90, 0x033, 0x00000028, 0x03F, 0x00000CD0, - 0x033, 0x00000029, 0x03F, 0x00000CF2, 0x033, 0x0000002A, - 0x03F, 0x00000CF5, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000429, 0x033, 0x00000021, - 0x03F, 0x00000828, 0x033, 0x00000022, 0x03F, 0x00000847, - 0x033, 0x00000023, 0x03F, 0x0000084A, 0x033, 0x00000024, - 0x03F, 0x00000C4B, 0x033, 0x00000025, 0x03F, 0x00000C8A, - 0x033, 0x00000026, 0x03F, 0x00000CEA, 0x033, 0x00000027, - 0x03F, 0x00000CED, 0x033, 0x00000028, 0x03F, 0x00000CF0, - 0x033, 0x00000029, 0x03F, 0x00000CF3, 0x033, 0x0000002A, - 0x03F, 0x00000CF6, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x00000C09, 0x033, 0x00000021, - 0x03F, 0x00000C0C, 0x033, 0x00000022, 0x03F, 0x00000C0F, - 0x033, 0x00000023, 0x03F, 0x00000C2C, 0x033, 0x00000024, - 0x03F, 0x00000C2F, 0x033, 0x00000025, 0x03F, 0x00000C8A, - 0x033, 0x00000026, 0x03F, 0x00000C8D, 0x033, 0x00000027, - 0x03F, 0x00000C90, 0x033, 0x00000028, 0x03F, 0x00000CD0, - 0x033, 0x00000029, 0x03F, 0x00000CF2, 0x033, 0x0000002A, - 0x03F, 0x00000CF5, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x0000042B, 0x033, 0x00000021, - 0x03F, 0x0000082A, 0x033, 0x00000022, 0x03F, 0x00000849, - 0x033, 0x00000023, 0x03F, 0x0000084C, 0x033, 0x00000024, - 0x03F, 0x00000C4C, 0x033, 0x00000025, 0x03F, 0x00000C8A, - 0x033, 0x00000026, 0x03F, 0x00000C8D, 0x033, 0x00000027, - 0x03F, 0x00000CEB, 0x033, 0x00000028, 0x03F, 0x00000CEE, - 0x033, 0x00000029, 0x03F, 0x00000CF1, 0x033, 0x0000002A, - 0x03F, 0x00000CF4, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000020, 0x03F, 0x0000042B, 0x033, 0x00000021, - 0x03F, 0x0000082A, 0x033, 0x00000022, 0x03F, 0x00000849, - 0x033, 0x00000023, 0x03F, 0x0000084C, 0x033, 0x00000024, - 0x03F, 0x00000C4C, 0x033, 0x00000025, 0x03F, 0x00000C8A, - 0x033, 0x00000026, 0x03F, 0x00000C8D, 0x033, 0x00000027, - 0x03F, 0x00000CEB, 0x033, 0x00000028, 0x03F, 0x00000CEE, - 0x033, 0x00000029, 0x03F, 0x00000CF1, 0x033, 0x0000002A, - 0x03F, 0x00000CF4, 0xA0000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000C09, 0x033, 0x00000021, 0x03F, 0x00000C0C, - 0x033, 0x00000022, 0x03F, 0x00000C0F, 0x033, 0x00000023, - 0x03F, 0x00000C2C, 0x033, 0x00000024, 0x03F, 0x00000C2F, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000C8D, 0x033, 0x00000027, 0x03F, 0x00000C90, - 0x033, 0x00000028, 0x03F, 0x00000CD0, 0x033, 0x00000029, - 0x03F, 0x00000CF2, 0x033, 0x0000002A, 0x03F, 0x00000CF5, - 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000007, 0x033, 0x00000061, - 0x03F, 0x0000000A, 0x033, 0x00000062, 0x03F, 0x0000000D, - 0x033, 0x00000063, 0x03F, 0x0000002A, 0x033, 0x00000064, - 0x03F, 0x0000002D, 0x033, 0x00000065, 0x03F, 0x00000030, - 0x033, 0x00000066, 0x03F, 0x0000006D, 0x033, 0x00000067, - 0x03F, 0x00000070, 0x033, 0x00000068, 0x03F, 0x000000ED, - 0x033, 0x00000069, 0x03F, 0x000000F0, 0x033, 0x0000006A, - 0x03F, 0x000000F3, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000007, 0x033, 0x00000061, - 0x03F, 0x0000000A, 0x033, 0x00000062, 0x03F, 0x0000000D, - 0x033, 0x00000063, 0x03F, 0x0000002A, 0x033, 0x00000064, - 0x03F, 0x0000002D, 0x033, 0x00000065, 0x03F, 0x00000030, - 0x033, 0x00000066, 0x03F, 0x0000006D, 0x033, 0x00000067, - 0x03F, 0x00000070, 0x033, 0x00000068, 0x03F, 0x000000ED, - 0x033, 0x00000069, 0x03F, 0x000000F0, 0x033, 0x0000006A, - 0x03F, 0x000000F3, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000007, 0x033, 0x00000061, - 0x03F, 0x0000000A, 0x033, 0x00000062, 0x03F, 0x0000000D, - 0x033, 0x00000063, 0x03F, 0x0000002A, 0x033, 0x00000064, - 0x03F, 0x0000002D, 0x033, 0x00000065, 0x03F, 0x00000030, - 0x033, 0x00000066, 0x03F, 0x0000006D, 0x033, 0x00000067, - 0x03F, 0x00000070, 0x033, 0x00000068, 0x03F, 0x000000ED, - 0x033, 0x00000069, 0x03F, 0x000000F0, 0x033, 0x0000006A, - 0x03F, 0x000000F3, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000005, 0x033, 0x00000061, - 0x03F, 0x00000008, 0x033, 0x00000062, 0x03F, 0x0000000B, - 0x033, 0x00000063, 0x03F, 0x0000000E, 0x033, 0x00000064, - 0x03F, 0x0000002B, 0x033, 0x00000065, 0x03F, 0x00000068, - 0x033, 0x00000066, 0x03F, 0x0000006B, 0x033, 0x00000067, - 0x03F, 0x0000006E, 0x033, 0x00000068, 0x03F, 0x00000071, - 0x033, 0x00000069, 0x03F, 0x00000074, 0x033, 0x0000006A, - 0x03F, 0x00000077, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000007, 0x033, 0x00000061, - 0x03F, 0x0000000A, 0x033, 0x00000062, 0x03F, 0x0000000D, - 0x033, 0x00000063, 0x03F, 0x0000002A, 0x033, 0x00000064, - 0x03F, 0x0000002D, 0x033, 0x00000065, 0x03F, 0x00000030, - 0x033, 0x00000066, 0x03F, 0x0000006D, 0x033, 0x00000067, - 0x03F, 0x00000070, 0x033, 0x00000068, 0x03F, 0x000000ED, - 0x033, 0x00000069, 0x03F, 0x000000F0, 0x033, 0x0000006A, - 0x03F, 0x000000F3, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000007, 0x033, 0x00000061, - 0x03F, 0x0000000A, 0x033, 0x00000062, 0x03F, 0x0000000D, - 0x033, 0x00000063, 0x03F, 0x0000002A, 0x033, 0x00000064, - 0x03F, 0x0000002D, 0x033, 0x00000065, 0x03F, 0x00000030, - 0x033, 0x00000066, 0x03F, 0x0000006D, 0x033, 0x00000067, - 0x03F, 0x00000070, 0x033, 0x00000068, 0x03F, 0x000000ED, - 0x033, 0x00000069, 0x03F, 0x000000F0, 0x033, 0x0000006A, - 0x03F, 0x000000F3, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000007, 0x033, 0x00000061, - 0x03F, 0x0000000A, 0x033, 0x00000062, 0x03F, 0x0000000D, - 0x033, 0x00000063, 0x03F, 0x0000002A, 0x033, 0x00000064, - 0x03F, 0x0000002D, 0x033, 0x00000065, 0x03F, 0x00000030, - 0x033, 0x00000066, 0x03F, 0x0000006D, 0x033, 0x00000067, - 0x03F, 0x00000070, 0x033, 0x00000068, 0x03F, 0x000000ED, - 0x033, 0x00000069, 0x03F, 0x000000F0, 0x033, 0x0000006A, - 0x03F, 0x000000F3, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000005, 0x033, 0x00000061, - 0x03F, 0x00000008, 0x033, 0x00000062, 0x03F, 0x0000000B, - 0x033, 0x00000063, 0x03F, 0x0000000E, 0x033, 0x00000064, - 0x03F, 0x0000002B, 0x033, 0x00000065, 0x03F, 0x00000068, - 0x033, 0x00000066, 0x03F, 0x0000006B, 0x033, 0x00000067, - 0x03F, 0x0000006E, 0x033, 0x00000068, 0x03F, 0x00000071, - 0x033, 0x00000069, 0x03F, 0x00000074, 0x033, 0x0000006A, - 0x03F, 0x00000077, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000005, 0x033, 0x00000061, - 0x03F, 0x00000008, 0x033, 0x00000062, 0x03F, 0x0000000B, - 0x033, 0x00000063, 0x03F, 0x0000000E, 0x033, 0x00000064, - 0x03F, 0x0000002B, 0x033, 0x00000065, 0x03F, 0x00000068, - 0x033, 0x00000066, 0x03F, 0x0000006B, 0x033, 0x00000067, - 0x03F, 0x0000006E, 0x033, 0x00000068, 0x03F, 0x00000071, - 0x033, 0x00000069, 0x03F, 0x00000074, 0x033, 0x0000006A, - 0x03F, 0x00000077, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x0000080B, 0x033, 0x00000061, - 0x03F, 0x0000080E, 0x033, 0x00000062, 0x03F, 0x00000848, - 0x033, 0x00000063, 0x03F, 0x00000869, 0x033, 0x00000064, - 0x03F, 0x000008A9, 0x033, 0x00000065, 0x03F, 0x00000CE8, - 0x033, 0x00000066, 0x03F, 0x00000CEB, 0x033, 0x00000067, - 0x03F, 0x00000CEE, 0x033, 0x00000068, 0x03F, 0x00000CF1, - 0x033, 0x00000069, 0x03F, 0x00000CF4, 0x033, 0x0000006A, - 0x03F, 0x00000CF7, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x0000042B, 0x033, 0x00000061, - 0x03F, 0x0000082A, 0x033, 0x00000062, 0x03F, 0x00000849, - 0x033, 0x00000063, 0x03F, 0x0000084C, 0x033, 0x00000064, - 0x03F, 0x00000C4C, 0x033, 0x00000065, 0x03F, 0x00000CA9, - 0x033, 0x00000066, 0x03F, 0x00000CEA, 0x033, 0x00000067, - 0x03F, 0x00000CED, 0x033, 0x00000068, 0x03F, 0x00000CF0, - 0x033, 0x00000069, 0x03F, 0x00000CF3, 0x033, 0x0000006A, - 0x03F, 0x00000CF6, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000C0A, 0x033, 0x00000061, - 0x03F, 0x00000C0D, 0x033, 0x00000062, 0x03F, 0x00000C2A, - 0x033, 0x00000063, 0x03F, 0x00000C2D, 0x033, 0x00000064, - 0x03F, 0x00000C6A, 0x033, 0x00000065, 0x03F, 0x00000CAA, - 0x033, 0x00000066, 0x03F, 0x00000CAD, 0x033, 0x00000067, - 0x03F, 0x00000CB0, 0x033, 0x00000068, 0x03F, 0x00000CF1, - 0x033, 0x00000069, 0x03F, 0x00000CF4, 0x033, 0x0000006A, - 0x03F, 0x00000CF7, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000005, 0x033, 0x00000061, - 0x03F, 0x00000008, 0x033, 0x00000062, 0x03F, 0x0000000B, - 0x033, 0x00000063, 0x03F, 0x0000000E, 0x033, 0x00000064, - 0x03F, 0x0000002B, 0x033, 0x00000065, 0x03F, 0x00000068, - 0x033, 0x00000066, 0x03F, 0x0000006B, 0x033, 0x00000067, - 0x03F, 0x0000006E, 0x033, 0x00000068, 0x03F, 0x00000071, - 0x033, 0x00000069, 0x03F, 0x00000074, 0x033, 0x0000006A, - 0x03F, 0x00000077, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000C0A, 0x033, 0x00000061, - 0x03F, 0x00000C0D, 0x033, 0x00000062, 0x03F, 0x00000C2A, - 0x033, 0x00000063, 0x03F, 0x00000C2D, 0x033, 0x00000064, - 0x03F, 0x00000C6A, 0x033, 0x00000065, 0x03F, 0x00000CAA, - 0x033, 0x00000066, 0x03F, 0x00000CAD, 0x033, 0x00000067, - 0x03F, 0x00000CB0, 0x033, 0x00000068, 0x03F, 0x00000CF1, - 0x033, 0x00000069, 0x03F, 0x00000CF4, 0x033, 0x0000006A, - 0x03F, 0x00000CF7, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000429, 0x033, 0x00000061, - 0x03F, 0x00000828, 0x033, 0x00000062, 0x03F, 0x00000847, - 0x033, 0x00000063, 0x03F, 0x0000084A, 0x033, 0x00000064, - 0x03F, 0x00000C4B, 0x033, 0x00000065, 0x03F, 0x00000C8A, - 0x033, 0x00000066, 0x03F, 0x00000CEA, 0x033, 0x00000067, - 0x03F, 0x00000CED, 0x033, 0x00000068, 0x03F, 0x00000CF0, - 0x033, 0x00000069, 0x03F, 0x00000CF3, 0x033, 0x0000006A, - 0x03F, 0x00000CF6, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x00000C0A, 0x033, 0x00000061, - 0x03F, 0x00000C0D, 0x033, 0x00000062, 0x03F, 0x00000C2A, - 0x033, 0x00000063, 0x03F, 0x00000C2D, 0x033, 0x00000064, - 0x03F, 0x00000C6A, 0x033, 0x00000065, 0x03F, 0x00000CAA, - 0x033, 0x00000066, 0x03F, 0x00000CAD, 0x033, 0x00000067, - 0x03F, 0x00000CB0, 0x033, 0x00000068, 0x03F, 0x00000CF1, - 0x033, 0x00000069, 0x03F, 0x00000CF4, 0x033, 0x0000006A, - 0x03F, 0x00000CF7, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x0000042C, 0x033, 0x00000061, - 0x03F, 0x0000082B, 0x033, 0x00000062, 0x03F, 0x0000084A, - 0x033, 0x00000063, 0x03F, 0x0000084D, 0x033, 0x00000064, - 0x03F, 0x00000C4D, 0x033, 0x00000065, 0x03F, 0x00000C8B, - 0x033, 0x00000066, 0x03F, 0x00000C8E, 0x033, 0x00000067, - 0x03F, 0x00000CEC, 0x033, 0x00000068, 0x03F, 0x00000CEF, - 0x033, 0x00000069, 0x03F, 0x00000CF2, 0x033, 0x0000006A, - 0x03F, 0x00000CF5, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000060, 0x03F, 0x0000042C, 0x033, 0x00000061, - 0x03F, 0x0000082B, 0x033, 0x00000062, 0x03F, 0x0000084A, - 0x033, 0x00000063, 0x03F, 0x0000084D, 0x033, 0x00000064, - 0x03F, 0x00000C4D, 0x033, 0x00000065, 0x03F, 0x00000C8B, - 0x033, 0x00000066, 0x03F, 0x00000C8E, 0x033, 0x00000067, - 0x03F, 0x00000CEC, 0x033, 0x00000068, 0x03F, 0x00000CEF, - 0x033, 0x00000069, 0x03F, 0x00000CF2, 0x033, 0x0000006A, - 0x03F, 0x00000CF5, 0xA0000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000C0A, 0x033, 0x00000061, 0x03F, 0x00000C0D, - 0x033, 0x00000062, 0x03F, 0x00000C2A, 0x033, 0x00000063, - 0x03F, 0x00000C2D, 0x033, 0x00000064, 0x03F, 0x00000C6A, - 0x033, 0x00000065, 0x03F, 0x00000CAA, 0x033, 0x00000066, - 0x03F, 0x00000CAD, 0x033, 0x00000067, 0x03F, 0x00000CB0, - 0x033, 0x00000068, 0x03F, 0x00000CF1, 0x033, 0x00000069, - 0x03F, 0x00000CF4, 0x033, 0x0000006A, 0x03F, 0x00000CF7, - 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000007, 0x033, 0x000000A1, - 0x03F, 0x0000000A, 0x033, 0x000000A2, 0x03F, 0x0000000D, - 0x033, 0x000000A3, 0x03F, 0x0000002A, 0x033, 0x000000A4, - 0x03F, 0x0000002D, 0x033, 0x000000A5, 0x03F, 0x00000030, - 0x033, 0x000000A6, 0x03F, 0x0000006D, 0x033, 0x000000A7, - 0x03F, 0x00000070, 0x033, 0x000000A8, 0x03F, 0x000000ED, - 0x033, 0x000000A9, 0x03F, 0x000000F0, 0x033, 0x000000AA, - 0x03F, 0x000000F3, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000007, 0x033, 0x000000A1, - 0x03F, 0x0000000A, 0x033, 0x000000A2, 0x03F, 0x0000000D, - 0x033, 0x000000A3, 0x03F, 0x0000002A, 0x033, 0x000000A4, - 0x03F, 0x0000002D, 0x033, 0x000000A5, 0x03F, 0x00000030, - 0x033, 0x000000A6, 0x03F, 0x0000006D, 0x033, 0x000000A7, - 0x03F, 0x00000070, 0x033, 0x000000A8, 0x03F, 0x000000ED, - 0x033, 0x000000A9, 0x03F, 0x000000F0, 0x033, 0x000000AA, - 0x03F, 0x000000F3, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000007, 0x033, 0x000000A1, - 0x03F, 0x0000000A, 0x033, 0x000000A2, 0x03F, 0x0000000D, - 0x033, 0x000000A3, 0x03F, 0x0000002A, 0x033, 0x000000A4, - 0x03F, 0x0000002D, 0x033, 0x000000A5, 0x03F, 0x00000030, - 0x033, 0x000000A6, 0x03F, 0x0000006D, 0x033, 0x000000A7, - 0x03F, 0x00000070, 0x033, 0x000000A8, 0x03F, 0x000000ED, - 0x033, 0x000000A9, 0x03F, 0x000000F0, 0x033, 0x000000AA, - 0x03F, 0x000000F3, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000005, 0x033, 0x000000A1, - 0x03F, 0x00000008, 0x033, 0x000000A2, 0x03F, 0x0000000B, - 0x033, 0x000000A3, 0x03F, 0x0000000E, 0x033, 0x000000A4, - 0x03F, 0x00000047, 0x033, 0x000000A5, 0x03F, 0x0000004A, - 0x033, 0x000000A6, 0x03F, 0x0000004D, 0x033, 0x000000A7, - 0x03F, 0x00000050, 0x033, 0x000000A8, 0x03F, 0x00000053, - 0x033, 0x000000A9, 0x03F, 0x00000056, 0x033, 0x000000AA, - 0x03F, 0x00000094, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000007, 0x033, 0x000000A1, - 0x03F, 0x0000000A, 0x033, 0x000000A2, 0x03F, 0x0000000D, - 0x033, 0x000000A3, 0x03F, 0x0000002A, 0x033, 0x000000A4, - 0x03F, 0x0000002D, 0x033, 0x000000A5, 0x03F, 0x00000030, - 0x033, 0x000000A6, 0x03F, 0x0000006D, 0x033, 0x000000A7, - 0x03F, 0x00000070, 0x033, 0x000000A8, 0x03F, 0x000000ED, - 0x033, 0x000000A9, 0x03F, 0x000000F0, 0x033, 0x000000AA, - 0x03F, 0x000000F3, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000007, 0x033, 0x000000A1, - 0x03F, 0x0000000A, 0x033, 0x000000A2, 0x03F, 0x0000000D, - 0x033, 0x000000A3, 0x03F, 0x0000002A, 0x033, 0x000000A4, - 0x03F, 0x0000002D, 0x033, 0x000000A5, 0x03F, 0x00000030, - 0x033, 0x000000A6, 0x03F, 0x0000006D, 0x033, 0x000000A7, - 0x03F, 0x00000070, 0x033, 0x000000A8, 0x03F, 0x000000ED, - 0x033, 0x000000A9, 0x03F, 0x000000F0, 0x033, 0x000000AA, - 0x03F, 0x000000F3, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000007, 0x033, 0x000000A1, - 0x03F, 0x0000000A, 0x033, 0x000000A2, 0x03F, 0x0000000D, - 0x033, 0x000000A3, 0x03F, 0x0000002A, 0x033, 0x000000A4, - 0x03F, 0x0000002D, 0x033, 0x000000A5, 0x03F, 0x00000030, - 0x033, 0x000000A6, 0x03F, 0x0000006D, 0x033, 0x000000A7, - 0x03F, 0x00000070, 0x033, 0x000000A8, 0x03F, 0x000000ED, - 0x033, 0x000000A9, 0x03F, 0x000000F0, 0x033, 0x000000AA, - 0x03F, 0x000000F3, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000005, 0x033, 0x000000A1, - 0x03F, 0x00000008, 0x033, 0x000000A2, 0x03F, 0x0000000B, - 0x033, 0x000000A3, 0x03F, 0x0000000E, 0x033, 0x000000A4, - 0x03F, 0x00000047, 0x033, 0x000000A5, 0x03F, 0x0000004A, - 0x033, 0x000000A6, 0x03F, 0x0000004D, 0x033, 0x000000A7, - 0x03F, 0x00000050, 0x033, 0x000000A8, 0x03F, 0x00000053, - 0x033, 0x000000A9, 0x03F, 0x00000056, 0x033, 0x000000AA, - 0x03F, 0x00000094, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000005, 0x033, 0x000000A1, - 0x03F, 0x00000008, 0x033, 0x000000A2, 0x03F, 0x0000000B, - 0x033, 0x000000A3, 0x03F, 0x0000000E, 0x033, 0x000000A4, - 0x03F, 0x00000047, 0x033, 0x000000A5, 0x03F, 0x0000004A, - 0x033, 0x000000A6, 0x03F, 0x0000004D, 0x033, 0x000000A7, - 0x03F, 0x00000050, 0x033, 0x000000A8, 0x03F, 0x00000053, - 0x033, 0x000000A9, 0x03F, 0x00000056, 0x033, 0x000000AA, - 0x03F, 0x00000094, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000C0A, 0x033, 0x000000A1, - 0x03F, 0x00000C0D, 0x033, 0x000000A2, 0x03F, 0x00000C2A, - 0x033, 0x000000A3, 0x03F, 0x00000C2D, 0x033, 0x000000A4, - 0x03F, 0x00000C6A, 0x033, 0x000000A5, 0x03F, 0x00000CE8, - 0x033, 0x000000A6, 0x03F, 0x00000CEB, 0x033, 0x000000A7, - 0x03F, 0x00000CEE, 0x033, 0x000000A8, 0x03F, 0x00000CF1, - 0x033, 0x000000A9, 0x03F, 0x00000CF4, 0x033, 0x000000AA, - 0x03F, 0x00000CF7, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x0000042A, 0x033, 0x000000A1, - 0x03F, 0x00000829, 0x033, 0x000000A2, 0x03F, 0x00000848, - 0x033, 0x000000A3, 0x03F, 0x0000084B, 0x033, 0x000000A4, - 0x03F, 0x00000C4C, 0x033, 0x000000A5, 0x03F, 0x00000CA9, - 0x033, 0x000000A6, 0x03F, 0x00000CEA, 0x033, 0x000000A7, - 0x03F, 0x00000CED, 0x033, 0x000000A8, 0x03F, 0x00000CF0, - 0x033, 0x000000A9, 0x03F, 0x00000CF3, 0x033, 0x000000AA, - 0x03F, 0x00000CF6, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000C09, 0x033, 0x000000A1, - 0x03F, 0x00000C0C, 0x033, 0x000000A2, 0x03F, 0x00000C0F, - 0x033, 0x000000A3, 0x03F, 0x00000C2C, 0x033, 0x000000A4, - 0x03F, 0x00000C2F, 0x033, 0x000000A5, 0x03F, 0x00000C8A, - 0x033, 0x000000A6, 0x03F, 0x00000C8D, 0x033, 0x000000A7, - 0x03F, 0x00000C90, 0x033, 0x000000A8, 0x03F, 0x00000CEF, - 0x033, 0x000000A9, 0x03F, 0x00000CF2, 0x033, 0x000000AA, - 0x03F, 0x00000CF5, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000005, 0x033, 0x000000A1, - 0x03F, 0x00000008, 0x033, 0x000000A2, 0x03F, 0x0000000B, - 0x033, 0x000000A3, 0x03F, 0x0000000E, 0x033, 0x000000A4, - 0x03F, 0x00000047, 0x033, 0x000000A5, 0x03F, 0x0000004A, - 0x033, 0x000000A6, 0x03F, 0x0000004D, 0x033, 0x000000A7, - 0x03F, 0x00000050, 0x033, 0x000000A8, 0x03F, 0x00000053, - 0x033, 0x000000A9, 0x03F, 0x00000056, 0x033, 0x000000AA, - 0x03F, 0x00000094, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000C09, 0x033, 0x000000A1, - 0x03F, 0x00000C0C, 0x033, 0x000000A2, 0x03F, 0x00000C0F, - 0x033, 0x000000A3, 0x03F, 0x00000C2C, 0x033, 0x000000A4, - 0x03F, 0x00000C2F, 0x033, 0x000000A5, 0x03F, 0x00000C8A, - 0x033, 0x000000A6, 0x03F, 0x00000C8D, 0x033, 0x000000A7, - 0x03F, 0x00000C90, 0x033, 0x000000A8, 0x03F, 0x00000CEF, - 0x033, 0x000000A9, 0x03F, 0x00000CF2, 0x033, 0x000000AA, - 0x03F, 0x00000CF5, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000429, 0x033, 0x000000A1, - 0x03F, 0x00000828, 0x033, 0x000000A2, 0x03F, 0x00000847, - 0x033, 0x000000A3, 0x03F, 0x0000084A, 0x033, 0x000000A4, - 0x03F, 0x00000C4B, 0x033, 0x000000A5, 0x03F, 0x00000C8A, - 0x033, 0x000000A6, 0x03F, 0x00000CEA, 0x033, 0x000000A7, - 0x03F, 0x00000CED, 0x033, 0x000000A8, 0x03F, 0x00000CF0, - 0x033, 0x000000A9, 0x03F, 0x00000CF3, 0x033, 0x000000AA, - 0x03F, 0x00000CF6, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x00000C09, 0x033, 0x000000A1, - 0x03F, 0x00000C0C, 0x033, 0x000000A2, 0x03F, 0x00000C0F, - 0x033, 0x000000A3, 0x03F, 0x00000C2C, 0x033, 0x000000A4, - 0x03F, 0x00000C2F, 0x033, 0x000000A5, 0x03F, 0x00000C8A, - 0x033, 0x000000A6, 0x03F, 0x00000C8D, 0x033, 0x000000A7, - 0x03F, 0x00000C90, 0x033, 0x000000A8, 0x03F, 0x00000CEF, - 0x033, 0x000000A9, 0x03F, 0x00000CF2, 0x033, 0x000000AA, - 0x03F, 0x00000CF5, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x0000042A, 0x033, 0x000000A1, - 0x03F, 0x00000829, 0x033, 0x000000A2, 0x03F, 0x00000848, - 0x033, 0x000000A3, 0x03F, 0x0000084B, 0x033, 0x000000A4, - 0x03F, 0x00000C4C, 0x033, 0x000000A5, 0x03F, 0x00000C8A, - 0x033, 0x000000A6, 0x03F, 0x00000C8D, 0x033, 0x000000A7, - 0x03F, 0x00000CEB, 0x033, 0x000000A8, 0x03F, 0x00000CEE, - 0x033, 0x000000A9, 0x03F, 0x00000CF1, 0x033, 0x000000AA, - 0x03F, 0x00000CF4, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x000000A0, 0x03F, 0x0000042A, 0x033, 0x000000A1, - 0x03F, 0x00000829, 0x033, 0x000000A2, 0x03F, 0x00000848, - 0x033, 0x000000A3, 0x03F, 0x0000084B, 0x033, 0x000000A4, - 0x03F, 0x00000C4C, 0x033, 0x000000A5, 0x03F, 0x00000C8A, - 0x033, 0x000000A6, 0x03F, 0x00000C8D, 0x033, 0x000000A7, - 0x03F, 0x00000CEB, 0x033, 0x000000A8, 0x03F, 0x00000CEE, - 0x033, 0x000000A9, 0x03F, 0x00000CF1, 0x033, 0x000000AA, - 0x03F, 0x00000CF4, 0xA0000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000C09, 0x033, 0x000000A1, 0x03F, 0x00000C0C, - 0x033, 0x000000A2, 0x03F, 0x00000C0F, 0x033, 0x000000A3, - 0x03F, 0x00000C2C, 0x033, 0x000000A4, 0x03F, 0x00000C2F, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000C8D, 0x033, 0x000000A7, 0x03F, 0x00000C90, - 0x033, 0x000000A8, 0x03F, 0x00000CEF, 0x033, 0x000000A9, - 0x03F, 0x00000CF2, 0x033, 0x000000AA, 0x03F, 0x00000CF5, - 0xB0000000, 0x00000000, 0x0EF, 0x00000000, 0x0EF, 0x00000400, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x0000047C, 0x033, 0x00000001, 0x03F, 0x0000047C, - 0x033, 0x00000002, 0x03F, 0x0000047C, 0x033, 0x00000003, - 0x03F, 0x0000047C, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x0000047C, 0x033, 0x00000001, - 0x03F, 0x0000047C, 0x033, 0x00000002, 0x03F, 0x0000047C, - 0x033, 0x00000003, 0x03F, 0x0000047C, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x0000047C, - 0x033, 0x00000001, 0x03F, 0x0000047C, 0x033, 0x00000002, - 0x03F, 0x0000047C, 0x033, 0x00000003, 0x03F, 0x0000047C, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x0000047C, 0x033, 0x00000001, 0x03F, 0x0000047C, - 0x033, 0x00000002, 0x03F, 0x0000047C, 0x033, 0x00000003, - 0x03F, 0x0000047C, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x0000047C, 0x033, 0x00000001, - 0x03F, 0x0000047C, 0x033, 0x00000002, 0x03F, 0x0000047C, - 0x033, 0x00000003, 0x03F, 0x0000047C, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x0000047C, - 0x033, 0x00000001, 0x03F, 0x0000047C, 0x033, 0x00000002, - 0x03F, 0x0000047C, 0x033, 0x00000003, 0x03F, 0x0000047C, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x0000047C, 0x033, 0x00000001, 0x03F, 0x0000047C, - 0x033, 0x00000002, 0x03F, 0x0000047C, 0x033, 0x00000003, - 0x03F, 0x0000047C, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x0000047C, 0x033, 0x00000001, - 0x03F, 0x0000047C, 0x033, 0x00000002, 0x03F, 0x0000047C, - 0x033, 0x00000003, 0x03F, 0x0000047C, 0xA0000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x000004BB, 0x033, 0x00000001, - 0x03F, 0x000004BB, 0x033, 0x00000002, 0x03F, 0x000004BB, - 0x033, 0x00000003, 0x03F, 0x000004BB, 0xB0000000, 0x00000000, - 0x0EF, 0x00000000, 0x0EF, 0x00000100, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00001726, - 0x033, 0x00000001, 0x03F, 0x00001726, 0x033, 0x00000002, - 0x03F, 0x00001726, 0x033, 0x00000003, 0x03F, 0x00001726, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00001726, 0x033, 0x00000001, 0x03F, 0x00001726, - 0x033, 0x00000002, 0x03F, 0x00001726, 0x033, 0x00000003, - 0x03F, 0x00001726, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x00001726, 0x033, 0x00000001, - 0x03F, 0x00001726, 0x033, 0x00000002, 0x03F, 0x00001726, - 0x033, 0x00000003, 0x03F, 0x00001726, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00001726, - 0x033, 0x00000001, 0x03F, 0x00001726, 0x033, 0x00000002, - 0x03F, 0x00001726, 0x033, 0x00000003, 0x03F, 0x00001726, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00001726, 0x033, 0x00000001, 0x03F, 0x00001726, - 0x033, 0x00000002, 0x03F, 0x00001726, 0x033, 0x00000003, - 0x03F, 0x00001726, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x00001726, 0x033, 0x00000001, - 0x03F, 0x00001726, 0x033, 0x00000002, 0x03F, 0x00001726, - 0x033, 0x00000003, 0x03F, 0x00001726, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00001726, - 0x033, 0x00000001, 0x03F, 0x00001726, 0x033, 0x00000002, - 0x03F, 0x00001726, 0x033, 0x00000003, 0x03F, 0x00001726, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00001726, 0x033, 0x00000001, 0x03F, 0x00001726, - 0x033, 0x00000002, 0x03F, 0x00001726, 0x033, 0x00000003, - 0x03F, 0x00001726, 0xA0000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000F34, 0x033, 0x00000001, 0x03F, 0x00000F34, - 0x033, 0x00000002, 0x03F, 0x00000F34, 0x033, 0x00000003, - 0x03F, 0x00000F34, 0xB0000000, 0x00000000, 0x0EF, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x081, 0x0000F400, - 0x087, 0x00016040, 0x051, 0x00000808, 0x052, 0x00098002, - 0x053, 0x0000FA47, 0x054, 0x00058032, 0x056, 0x00051000, - 0x057, 0x0000CE0A, 0x058, 0x00082030, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x081, 0x0000F400, 0x087, 0x00016040, - 0x051, 0x00000808, 0x052, 0x00098002, 0x053, 0x0000FA47, - 0x054, 0x00058032, 0x056, 0x00051000, 0x057, 0x0000CE0A, - 0x058, 0x00082030, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x081, 0x0000F400, 0x087, 0x00016040, 0x051, 0x00000808, - 0x052, 0x00098002, 0x053, 0x0000FA47, 0x054, 0x00058032, - 0x056, 0x00051000, 0x057, 0x0000CE0A, 0x058, 0x00082030, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x081, 0x0000F400, - 0x087, 0x00016040, 0x051, 0x00000808, 0x052, 0x00098002, - 0x053, 0x0000FA47, 0x054, 0x00058032, 0x056, 0x00051000, - 0x057, 0x0000CE0A, 0x058, 0x00082030, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x081, 0x0000F400, 0x087, 0x00016040, - 0x051, 0x00000808, 0x052, 0x00098002, 0x053, 0x0000FA47, - 0x054, 0x00058032, 0x056, 0x00051000, 0x057, 0x0000CE0A, - 0x058, 0x00082030, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x081, 0x0000F400, 0x087, 0x00016040, 0x051, 0x00000808, - 0x052, 0x00098002, 0x053, 0x0000FA47, 0x054, 0x00058032, - 0x056, 0x00051000, 0x057, 0x0000CE0A, 0x058, 0x00082030, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x081, 0x0000F400, - 0x087, 0x00016040, 0x051, 0x00000808, 0x052, 0x00098002, - 0x053, 0x0000FA47, 0x054, 0x00058032, 0x056, 0x00051000, - 0x057, 0x0000CE0A, 0x058, 0x00082030, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x081, 0x0000F400, 0x087, 0x00016040, - 0x051, 0x00000808, 0x052, 0x00098002, 0x053, 0x0000FA47, - 0x054, 0x00058032, 0x056, 0x00051000, 0x057, 0x0000CE0A, - 0x058, 0x00082030, 0xA0000000, 0x00000000, 0x081, 0x0000F000, - 0x087, 0x00016040, 0x051, 0x00000C00, 0x052, 0x0007C241, - 0x053, 0x0001C069, 0x054, 0x00078032, 0x057, 0x0000CE0A, - 0x058, 0x00058750, 0xB0000000, 0x00000000, 0x0EF, 0x00000800, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000003, 0x033, 0x00000001, 0x03F, 0x00000006, - 0x033, 0x00000002, 0x03F, 0x00000009, 0x033, 0x00000003, - 0x03F, 0x00000026, 0x033, 0x00000004, 0x03F, 0x00000029, - 0x033, 0x00000005, 0x03F, 0x0000002C, 0x033, 0x00000006, - 0x03F, 0x0000002F, 0x033, 0x00000007, 0x03F, 0x00000033, - 0x033, 0x00000008, 0x03F, 0x00000036, 0x033, 0x00000009, - 0x03F, 0x00000039, 0x033, 0x0000000A, 0x03F, 0x0000003C, - 0xA0000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x0005142C, - 0x033, 0x00000001, 0x03F, 0x0005144B, 0x033, 0x00000002, - 0x03F, 0x0005144E, 0x033, 0x00000003, 0x03F, 0x00051C69, - 0x033, 0x00000004, 0x03F, 0x00051C6C, 0x033, 0x00000005, - 0x03F, 0x00051C6F, 0x033, 0x00000006, 0x03F, 0x00051CEB, - 0x033, 0x00000007, 0x03F, 0x00051CEE, 0x033, 0x00000008, - 0x03F, 0x00051CF1, 0x033, 0x00000009, 0x03F, 0x00051CF4, - 0x033, 0x0000000A, 0x03F, 0x00051CF7, 0xB0000000, 0x00000000, - 0x0EF, 0x00000000, 0x0EF, 0x00000010, 0x033, 0x00000000, - 0x008, 0x0009C060, 0x033, 0x00000001, 0x008, 0x0009C060, - 0x0EF, 0x00000000, 0x033, 0x000000A2, 0x0EF, 0x00080000, - 0x03E, 0x0000593F, 0x03F, 0x000C0F4F, 0x0EF, 0x00000000, - 0x033, 0x000000A3, 0x0EF, 0x00080000, 0x03E, 0x00005934, - 0x03F, 0x0005AFCF, 0x0EF, 0x00000000, - -}; - -void odm_read_and_config_mp_8822b_radioa(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 c_cond; - bool is_matched = true, is_skipped = false; - u32 *array = array_mp_8822b_radioa; - - u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_radioa); i = i + 2) { - v1 = array[i]; - v2 = array[i + 1]; - - if (v1 & BIT(31)) { /* positive condition*/ - c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28); - if (c_cond == COND_ENDIF) { /*end*/ - is_matched = true; - is_skipped = false; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ENDIF\n"); - } else if (c_cond == COND_ELSE) { /*else*/ - is_matched = is_skipped ? false : true; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ELSE\n"); - } else { /*if , else if*/ - pre_v1 = v1; - pre_v2 = v2; - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "IF or ELSE IF\n"); - } - } else if (v1 & BIT(30)) { /*negative condition*/ - if (is_skipped) { - is_matched = false; - continue; - } - - if (check_positive(dm, pre_v1, pre_v2, v1, v2)) { - is_matched = true; - is_skipped = true; - } else { - is_matched = false; - is_skipped = false; - } - } else if (is_matched) { - odm_config_rf_radio_a_8822b(dm, v1, v2); - } - } -} - -u32 odm_get_version_mp_8822b_radioa(void) { return 67; } - -/****************************************************************************** - * radiob.TXT - ******************************************************************************/ - -static u32 array_mp_8822b_radiob[] = { - 0x000, 0x00030000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x0004002D, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x001, 0x00040029, 0xA0000000, 0x00000000, 0x001, 0x00040029, - 0xB0000000, 0x00000000, 0x018, 0x00010D24, 0x0EF, 0x00080000, - 0x033, 0x00000002, 0x03E, 0x0000003F, 0x03F, 0x000C0F4E, - 0x033, 0x00000001, 0x03E, 0x00000034, 0x03F, 0x0004080E, - 0x0EF, 0x00080000, 0x0DF, 0x00002449, 0x033, 0x00000024, - 0x03E, 0x0000003F, 0x03F, 0x00060FDE, 0x0EF, 0x00000000, - 0x0EF, 0x00080000, 0x033, 0x00000025, 0x03E, 0x00000037, - 0x03F, 0x0007EFCE, 0x0EF, 0x00000000, 0x0EF, 0x00080000, - 0x033, 0x00000026, 0x03E, 0x00000037, 0x03F, 0x000DEFCE, - 0x0EF, 0x00000000, 0x0DF, 0x00000009, 0x018, 0x00010524, - 0x089, 0x00000207, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x08A, 0x000FF186, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x08A, 0x000FE186, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x08A, 0x000FF186, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x08A, 0x000FF186, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x08A, 0x000FF186, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x08A, 0x000FE186, 0xA0000000, 0x00000000, 0x08A, 0x000FF186, - 0xB0000000, 0x00000000, 0x08B, 0x00061E3C, 0x08C, 0x000112C7, - 0x08D, 0x000F4988, 0x08E, 0x00064D40, 0x0EF, 0x00020000, - 0x033, 0x00000007, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x03E, 0x00004080, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x03E, 0x00004080, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004000, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004000, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004000, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004040, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x03E, 0x00004000, 0xA0000000, 0x00000000, 0x03E, 0x00004000, - 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C0006, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C0006, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x03F, 0x000C3186, 0xA0000000, 0x00000000, 0x03F, 0x000C3186, - 0xB0000000, 0x00000000, 0x033, 0x00000006, 0x03E, 0x00004080, - 0x03F, 0x000C3186, 0x033, 0x00000005, 0x03E, 0x000040C8, - 0x03F, 0x000C3186, 0x033, 0x00000004, 0x03E, 0x00004190, - 0x03F, 0x000C3186, 0x033, 0x00000003, 0x03E, 0x00004998, - 0x03F, 0x000C3186, 0x033, 0x00000002, 0x03E, 0x00005840, - 0x03F, 0x000C3186, 0x033, 0x00000001, 0x03E, 0x000058C2, - 0x03F, 0x000C3186, 0x033, 0x00000000, 0x03E, 0x00005930, - 0x03F, 0x000C3186, 0x033, 0x0000000F, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004080, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03E, 0x00004080, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004040, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x03E, 0x00004000, 0xA0000000, 0x00000000, - 0x03E, 0x00004000, 0xB0000000, 0x00000000, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C0006, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x000C3186, 0xA0000000, 0x00000000, - 0x03F, 0x000C3186, 0xB0000000, 0x00000000, 0x033, 0x0000000E, - 0x03E, 0x00004080, 0x03F, 0x000C3186, 0x033, 0x0000000D, - 0x03E, 0x000040C8, 0x03F, 0x000C3186, 0x033, 0x0000000C, - 0x03E, 0x00004190, 0x03F, 0x000C3186, 0x033, 0x0000000B, - 0x03E, 0x00004998, 0x03F, 0x000C3186, 0x033, 0x0000000A, - 0x03E, 0x00005840, 0x03F, 0x000C3186, 0x033, 0x00000009, - 0x03E, 0x000058C2, 0x03F, 0x000C3186, 0x033, 0x00000008, - 0x03E, 0x00005930, 0x03F, 0x000C3186, 0x033, 0x00000017, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03E, 0x00004080, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004040, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x03E, 0x00004000, - 0xA0000000, 0x00000000, 0x03E, 0x00004000, 0xB0000000, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000DFF86, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C0006, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x03F, 0x000C3186, - 0xA0000000, 0x00000000, 0x03F, 0x000C3186, 0xB0000000, 0x00000000, - 0x033, 0x00000016, 0x03E, 0x00004080, 0x03F, 0x000C3186, - 0x033, 0x00000015, 0x03E, 0x000040C8, 0x03F, 0x000C3186, - 0x033, 0x00000014, 0x03E, 0x00004190, 0x03F, 0x000C3186, - 0x033, 0x00000013, 0x03E, 0x00004998, 0x03F, 0x000C3186, - 0x033, 0x00000012, 0x03E, 0x00005840, 0x03F, 0x000C3186, - 0x033, 0x00000011, 0x03E, 0x000058C2, 0x03F, 0x000C3186, - 0x033, 0x00000010, 0x03E, 0x00005930, 0x03F, 0x000C3186, - 0x0EF, 0x00000000, 0x0EF, 0x00004000, 0x033, 0x00000000, - 0x03F, 0x0000000A, 0x033, 0x00000001, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000002, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000005, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000005, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x03F, 0x00000000, 0xA0000000, 0x00000000, - 0x03F, 0x00000005, 0xB0000000, 0x00000000, 0x033, 0x00000002, - 0x03F, 0x00000000, 0x0EF, 0x00000000, 0x018, 0x00000401, - 0x084, 0x00001209, 0x086, 0x000001A0, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x087, 0x00068080, 0xA0000000, 0x00000000, - 0x087, 0x000E8180, 0xB0000000, 0x00000000, 0x088, 0x00070020, - 0x0DE, 0x00000010, 0x0EF, 0x00008000, 0x033, 0x0000000F, - 0x03F, 0x0000003C, 0x033, 0x0000000E, 0x03F, 0x00000038, - 0x033, 0x0000000D, 0x03F, 0x00000030, 0x033, 0x0000000C, - 0x03F, 0x00000028, 0x033, 0x0000000B, 0x03F, 0x00000020, - 0x033, 0x0000000A, 0x03F, 0x00000018, 0x033, 0x00000009, - 0x03F, 0x00000010, 0x033, 0x00000008, 0x03F, 0x00000008, - 0x033, 0x00000007, 0x03F, 0x0000003C, 0x033, 0x00000006, - 0x03F, 0x00000038, 0x033, 0x00000005, 0x03F, 0x00000030, - 0x033, 0x00000004, 0x03F, 0x00000028, 0x033, 0x00000003, - 0x03F, 0x00000020, 0x033, 0x00000002, 0x03F, 0x00000018, - 0x033, 0x00000001, 0x03F, 0x00000010, 0x033, 0x00000000, - 0x03F, 0x00000008, 0x0EF, 0x00000000, 0x018, 0x00018D24, - 0xFFE, 0x00000000, 0xFFE, 0x00000000, 0xFFE, 0x00000000, - 0xFFE, 0x00000000, 0x018, 0x00010D24, 0x01B, 0x00075A40, - 0x0EE, 0x00000002, 0x033, 0x00000000, 0x03F, 0x00000004, - 0x033, 0x00000001, 0x03F, 0x00000004, 0x033, 0x00000002, - 0x03F, 0x00000004, 0x033, 0x00000003, 0x03F, 0x00000004, - 0x033, 0x00000004, 0x03F, 0x00000004, 0x033, 0x00000005, - 0x03F, 0x00000006, 0x033, 0x00000006, 0x03F, 0x00000002, - 0x033, 0x00000007, 0x03F, 0x00000000, 0x0EE, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x061, 0x0005D4A0, - 0x062, 0x0000D203, 0x063, 0x00000062, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x061, 0x0005D4A0, 0x062, 0x0000D203, - 0x063, 0x00000062, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D4A0, 0x062, 0x0000D203, 0x063, 0x00000062, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D2A1, - 0x062, 0x0000D3A2, 0x063, 0x00000062, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x061, 0x0005D4A0, 0x062, 0x0000D203, - 0x063, 0x00000062, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x061, 0x0005D4A0, 0x062, 0x0000D203, 0x063, 0x00000062, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D4A0, - 0x062, 0x0000D203, 0x063, 0x00000062, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, - 0x063, 0x00000062, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, 0x063, 0x00000062, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D2A1, - 0x062, 0x0000D3A2, 0x063, 0x00000002, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, - 0x063, 0x00000002, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D3D1, 0x062, 0x0000D3A2, 0x063, 0x00000002, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D2A1, - 0x062, 0x0000D3A2, 0x063, 0x00000062, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D3D1, 0x062, 0x0000D3A2, - 0x063, 0x00000002, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, 0x063, 0x00000002, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x061, 0x0005D3D1, - 0x062, 0x0000D3A2, 0x063, 0x00000002, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, - 0x063, 0x00000002, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x061, 0x0005D2A1, 0x062, 0x0000D3A2, 0x063, 0x00000002, - 0xA0000000, 0x00000000, 0x061, 0x0005D3D0, 0x062, 0x0000D303, - 0x063, 0x00000002, 0xB0000000, 0x00000000, 0x0EF, 0x00000200, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x030, 0x000004A3, - 0x030, 0x000014A3, 0x030, 0x000024A3, 0x030, 0x000034A3, - 0x030, 0x000044A3, 0x030, 0x000054A3, 0x030, 0x000064A3, - 0x030, 0x000074A3, 0x030, 0x000084A3, 0x030, 0x000094A3, - 0x030, 0x0000A4A3, 0x030, 0x0000B4A3, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x030, 0x000004A3, 0x030, 0x000014A3, - 0x030, 0x000024A3, 0x030, 0x000034A3, 0x030, 0x000044A3, - 0x030, 0x000054A3, 0x030, 0x000064A3, 0x030, 0x000074A3, - 0x030, 0x000084A3, 0x030, 0x000094A3, 0x030, 0x0000A4A3, - 0x030, 0x0000B4A3, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000004A3, 0x030, 0x000014A3, 0x030, 0x000024A3, - 0x030, 0x000034A3, 0x030, 0x000044A3, 0x030, 0x000054A3, - 0x030, 0x000064A3, 0x030, 0x000074A3, 0x030, 0x000084A3, - 0x030, 0x000094A3, 0x030, 0x0000A4A3, 0x030, 0x0000B4A3, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000002A6, - 0x030, 0x000012A6, 0x030, 0x000022A6, 0x030, 0x000032A6, - 0x030, 0x000042A6, 0x030, 0x000052A6, 0x030, 0x000062A6, - 0x030, 0x000072A6, 0x030, 0x000082A6, 0x030, 0x000092A6, - 0x030, 0x0000A2A6, 0x030, 0x0000B2A6, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x030, 0x000004A0, 0x030, 0x000014A0, - 0x030, 0x000024A0, 0x030, 0x000034A0, 0x030, 0x000044A0, - 0x030, 0x000054A0, 0x030, 0x000064A0, 0x030, 0x000074A0, - 0x030, 0x000084A0, 0x030, 0x000094A0, 0x030, 0x0000A4A0, - 0x030, 0x0000B4A0, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x030, 0x000004A0, 0x030, 0x000014A0, 0x030, 0x000024A0, - 0x030, 0x000034A0, 0x030, 0x000044A0, 0x030, 0x000054A0, - 0x030, 0x000064A0, 0x030, 0x000074A0, 0x030, 0x000084A0, - 0x030, 0x000094A0, 0x030, 0x0000A4A0, 0x030, 0x0000B4A0, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000004A0, - 0x030, 0x000014A0, 0x030, 0x000024A0, 0x030, 0x000034A0, - 0x030, 0x000044A0, 0x030, 0x000054A0, 0x030, 0x000064A0, - 0x030, 0x000074A0, 0x030, 0x000084A0, 0x030, 0x000094A0, - 0x030, 0x0000A4A0, 0x030, 0x0000B4A0, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000002A1, 0x030, 0x000012A1, - 0x030, 0x000022A1, 0x030, 0x000032A1, 0x030, 0x000042A1, - 0x030, 0x000052A1, 0x030, 0x000062A1, 0x030, 0x000072A1, - 0x030, 0x000082A1, 0x030, 0x000092A1, 0x030, 0x0000A2A1, - 0x030, 0x0000B2A1, 0x9300200c, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000002A6, 0x030, 0x000012A6, 0x030, 0x000022A6, - 0x030, 0x000032A6, 0x030, 0x000042A6, 0x030, 0x000052A6, - 0x030, 0x000062A6, 0x030, 0x000072A6, 0x030, 0x000082A6, - 0x030, 0x000092A6, 0x030, 0x0000A2A6, 0x030, 0x0000B2A6, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000002F4, - 0x030, 0x000012F4, 0x030, 0x000022F4, 0x030, 0x000032F4, - 0x030, 0x00004365, 0x030, 0x00005365, 0x030, 0x00006365, - 0x030, 0x00007365, 0x030, 0x000082A4, 0x030, 0x000092A4, - 0x030, 0x0000A2A4, 0x030, 0x0000B2A4, 0x93002100, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000004A4, 0x030, 0x000014A4, - 0x030, 0x000024A4, 0x030, 0x000034A4, 0x030, 0x000043A4, - 0x030, 0x000053A4, 0x030, 0x000063A4, 0x030, 0x000073A4, - 0x030, 0x000083A5, 0x030, 0x000093A5, 0x030, 0x0000A3A5, - 0x030, 0x0000B3A5, 0x93011000, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000003A1, 0x030, 0x000013A1, 0x030, 0x000023A1, - 0x030, 0x000033A1, 0x030, 0x000043A4, 0x030, 0x000053A4, - 0x030, 0x000063A4, 0x030, 0x000073A4, 0x030, 0x000083A6, - 0x030, 0x000093A6, 0x030, 0x0000A3A6, 0x030, 0x0000B3A6, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000002A1, - 0x030, 0x000012A1, 0x030, 0x000022A1, 0x030, 0x000032A1, - 0x030, 0x000042A1, 0x030, 0x000052A1, 0x030, 0x000062A1, - 0x030, 0x000072A1, 0x030, 0x000082A1, 0x030, 0x000092A1, - 0x030, 0x0000A2A1, 0x030, 0x0000B2A1, 0x90001004, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000382, 0x030, 0x00001382, - 0x030, 0x00002382, 0x030, 0x00003382, 0x030, 0x00004445, - 0x030, 0x00005445, 0x030, 0x00006445, 0x030, 0x00007445, - 0x030, 0x00008425, 0x030, 0x00009425, 0x030, 0x0000A425, - 0x030, 0x0000B425, 0x93002000, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x00000303, 0x030, 0x00001303, 0x030, 0x00002303, - 0x030, 0x00003303, 0x030, 0x000043A4, 0x030, 0x000053A4, - 0x030, 0x000063A4, 0x030, 0x000073A4, 0x030, 0x00008365, - 0x030, 0x00009365, 0x030, 0x0000A365, 0x030, 0x0000B365, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000003A1, - 0x030, 0x000013A1, 0x030, 0x000023A1, 0x030, 0x000033A1, - 0x030, 0x00004364, 0x030, 0x00005364, 0x030, 0x00006364, - 0x030, 0x00007364, 0x030, 0x00008564, 0x030, 0x00009564, - 0x030, 0x0000A564, 0x030, 0x0000B564, 0x90002100, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000004A1, 0x030, 0x000014A1, - 0x030, 0x000024A1, 0x030, 0x000034A1, 0x030, 0x000043A1, - 0x030, 0x000053A1, 0x030, 0x000063A1, 0x030, 0x000073A1, - 0x030, 0x000083A1, 0x030, 0x000093A1, 0x030, 0x0000A3A1, - 0x030, 0x0000B3A1, 0x90002000, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000004A0, 0x030, 0x000014A0, 0x030, 0x000024A0, - 0x030, 0x000034A0, 0x030, 0x000043A1, 0x030, 0x000053A1, - 0x030, 0x000063A1, 0x030, 0x000073A1, 0x030, 0x000083A2, - 0x030, 0x000093A2, 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, - 0xA0000000, 0x00000000, 0x030, 0x000002D0, 0x030, 0x000012D0, - 0x030, 0x000022D0, 0x030, 0x000032D0, 0x030, 0x000042D0, - 0x030, 0x000052D0, 0x030, 0x000062D0, 0x030, 0x000072D0, - 0x030, 0x000082D0, 0x030, 0x000092D0, 0x030, 0x0000A2D0, - 0x030, 0x0000B2D0, 0xB0000000, 0x00000000, 0x0EF, 0x00000000, - 0x0EF, 0x00000080, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x030, 0x00000203, 0x030, 0x00001203, 0x030, 0x00002203, - 0x030, 0x00003203, 0x030, 0x00004203, 0x030, 0x00005203, - 0x030, 0x00006203, 0x030, 0x00007203, 0x030, 0x00008203, - 0x030, 0x00009203, 0x030, 0x0000A203, 0x030, 0x0000B203, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x030, 0x00000203, - 0x030, 0x00001203, 0x030, 0x00002203, 0x030, 0x00003203, - 0x030, 0x00004203, 0x030, 0x00005203, 0x030, 0x00006203, - 0x030, 0x00007203, 0x030, 0x00008203, 0x030, 0x00009203, - 0x030, 0x0000A203, 0x030, 0x0000B203, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000003A2, 0x030, 0x000013A2, 0x030, 0x000023A2, - 0x030, 0x000033A2, 0x030, 0x000043A2, 0x030, 0x000053A2, - 0x030, 0x000063A2, 0x030, 0x000073A2, 0x030, 0x000083A2, - 0x030, 0x000093A2, 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x030, 0x00000203, - 0x030, 0x00001203, 0x030, 0x00002203, 0x030, 0x00003203, - 0x030, 0x00004203, 0x030, 0x00005203, 0x030, 0x00006203, - 0x030, 0x00007203, 0x030, 0x00008203, 0x030, 0x00009203, - 0x030, 0x0000A203, 0x030, 0x0000B203, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x030, 0x00000203, 0x030, 0x00001203, - 0x030, 0x00002203, 0x030, 0x00003203, 0x030, 0x00004203, - 0x030, 0x00005203, 0x030, 0x00006203, 0x030, 0x00007203, - 0x030, 0x00008203, 0x030, 0x00009203, 0x030, 0x0000A203, - 0x030, 0x0000B203, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x00000203, 0x030, 0x00001203, 0x030, 0x00002203, - 0x030, 0x00003203, 0x030, 0x00004203, 0x030, 0x00005203, - 0x030, 0x00006203, 0x030, 0x00007203, 0x030, 0x00008203, - 0x030, 0x00009203, 0x030, 0x0000A203, 0x030, 0x0000B203, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000003A2, - 0x030, 0x000013A2, 0x030, 0x000023A2, 0x030, 0x000033A2, - 0x030, 0x000043A2, 0x030, 0x000053A2, 0x030, 0x000063A2, - 0x030, 0x000073A2, 0x030, 0x000083A2, 0x030, 0x000093A2, - 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, 0x9300200c, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x93012100, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000003A3, 0x030, 0x000013A3, 0x030, 0x000023A3, - 0x030, 0x000033A3, 0x030, 0x000043A4, 0x030, 0x000053A4, - 0x030, 0x000063A4, 0x030, 0x000073A4, 0x030, 0x000083A3, - 0x030, 0x000093A3, 0x030, 0x0000A3A3, 0x030, 0x0000B3A3, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000003A2, - 0x030, 0x000013A2, 0x030, 0x000023A2, 0x030, 0x000033A2, - 0x030, 0x000043A2, 0x030, 0x000053A2, 0x030, 0x000063A2, - 0x030, 0x000073A2, 0x030, 0x000083A2, 0x030, 0x000093A2, - 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, 0x93011000, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x9000200c, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000003A2, 0x030, 0x000013A2, 0x030, 0x000023A2, - 0x030, 0x000033A2, 0x030, 0x000043A2, 0x030, 0x000053A2, - 0x030, 0x000063A2, 0x030, 0x000073A2, 0x030, 0x000083A2, - 0x030, 0x000093A2, 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000003A2, - 0x030, 0x000013A2, 0x030, 0x000023A2, 0x030, 0x000033A2, - 0x030, 0x000043A2, 0x030, 0x000053A2, 0x030, 0x000063A2, - 0x030, 0x000073A2, 0x030, 0x000083A2, 0x030, 0x000093A2, - 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, 0x93002000, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0x93001000, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x000003A2, 0x030, 0x000013A2, 0x030, 0x000023A2, - 0x030, 0x000033A2, 0x030, 0x000043A2, 0x030, 0x000053A2, - 0x030, 0x000063A2, 0x030, 0x000073A2, 0x030, 0x000083A2, - 0x030, 0x000093A2, 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, - 0x90002100, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x000003A2, - 0x030, 0x000013A2, 0x030, 0x000023A2, 0x030, 0x000033A2, - 0x030, 0x000043A2, 0x030, 0x000053A2, 0x030, 0x000063A2, - 0x030, 0x000073A2, 0x030, 0x000083A2, 0x030, 0x000093A2, - 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, 0x90002000, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x000003A2, 0x030, 0x000013A2, - 0x030, 0x000023A2, 0x030, 0x000033A2, 0x030, 0x000043A2, - 0x030, 0x000053A2, 0x030, 0x000063A2, 0x030, 0x000073A2, - 0x030, 0x000083A2, 0x030, 0x000093A2, 0x030, 0x0000A3A2, - 0x030, 0x0000B3A2, 0xA0000000, 0x00000000, 0x030, 0x000003A2, - 0x030, 0x000013A2, 0x030, 0x000023A2, 0x030, 0x000033A2, - 0x030, 0x000043A2, 0x030, 0x000053A2, 0x030, 0x000063A2, - 0x030, 0x000073A2, 0x030, 0x000083A2, 0x030, 0x000093A2, - 0x030, 0x0000A3A2, 0x030, 0x0000B3A2, 0xB0000000, 0x00000000, - 0x0EF, 0x00000000, 0x0EF, 0x00000040, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x030, 0x00000645, 0x030, 0x00001333, - 0x030, 0x00002011, 0x030, 0x00004000, 0x030, 0x00005000, - 0x030, 0x00006000, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x030, 0x00000645, 0x030, 0x00001333, 0x030, 0x00002011, - 0x030, 0x00004000, 0x030, 0x00005000, 0x030, 0x00006000, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000645, 0x030, 0x00001333, - 0x030, 0x00002011, 0x030, 0x00004777, 0x030, 0x00005777, - 0x030, 0x00006777, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x030, 0x00000645, 0x030, 0x00001333, 0x030, 0x00002011, - 0x030, 0x00004000, 0x030, 0x00005000, 0x030, 0x00006000, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000645, 0x030, 0x00001333, - 0x030, 0x00002011, 0x030, 0x00004000, 0x030, 0x00005000, - 0x030, 0x00006000, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x00000645, 0x030, 0x00001333, 0x030, 0x00002011, - 0x030, 0x00004000, 0x030, 0x00005000, 0x030, 0x00006000, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x00000645, - 0x030, 0x00001333, 0x030, 0x00002011, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x93012100, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000660, 0x030, 0x00001341, - 0x030, 0x00002220, 0x030, 0x00004777, 0x030, 0x00005777, - 0x030, 0x00006777, 0x93002100, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x00000764, 0x030, 0x00001452, 0x030, 0x00002220, - 0x030, 0x00004777, 0x030, 0x00005777, 0x030, 0x00006777, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x00000764, - 0x030, 0x00001632, 0x030, 0x00002421, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0x9000200c, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000645, 0x030, 0x00001333, - 0x030, 0x00002011, 0x030, 0x00004000, 0x030, 0x00005000, - 0x030, 0x00006000, 0x90001004, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x00000764, 0x030, 0x00001632, 0x030, 0x00002421, - 0x030, 0x00004000, 0x030, 0x00005000, 0x030, 0x00006000, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x00000777, - 0x030, 0x00001442, 0x030, 0x00002222, 0x030, 0x00004777, - 0x030, 0x00005777, 0x030, 0x00006777, 0x93001000, 0x00000000, - 0x40000000, 0x00000000, 0x030, 0x00000764, 0x030, 0x00001632, - 0x030, 0x00002421, 0x030, 0x00004000, 0x030, 0x00005000, - 0x030, 0x00006000, 0x90002100, 0x00000000, 0x40000000, 0x00000000, - 0x030, 0x00000775, 0x030, 0x00001222, 0x030, 0x00002210, - 0x030, 0x00004000, 0x030, 0x00005000, 0x030, 0x00006000, - 0x90002000, 0x00000000, 0x40000000, 0x00000000, 0x030, 0x00000775, - 0x030, 0x00001422, 0x030, 0x00002210, 0x030, 0x00004000, - 0x030, 0x00005000, 0x030, 0x00006000, 0xA0000000, 0x00000000, - 0x030, 0x00000764, 0x030, 0x00001632, 0x030, 0x00002421, - 0x030, 0x00004000, 0x030, 0x00005000, 0x030, 0x00006000, - 0xB0000000, 0x00000000, 0x0EF, 0x00000000, 0x0EF, 0x00000800, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000007, 0x033, 0x00000021, 0x03F, 0x0000000A, - 0x033, 0x00000022, 0x03F, 0x0000000D, 0x033, 0x00000023, - 0x03F, 0x0000002A, 0x033, 0x00000024, 0x03F, 0x0000002D, - 0x033, 0x00000025, 0x03F, 0x00000030, 0x033, 0x00000026, - 0x03F, 0x0000006D, 0x033, 0x00000027, 0x03F, 0x00000070, - 0x033, 0x00000028, 0x03F, 0x000000ED, 0x033, 0x00000029, - 0x03F, 0x000000F0, 0x033, 0x0000002A, 0x03F, 0x000000F3, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000007, 0x033, 0x00000021, 0x03F, 0x0000000A, - 0x033, 0x00000022, 0x03F, 0x0000000D, 0x033, 0x00000023, - 0x03F, 0x0000002A, 0x033, 0x00000024, 0x03F, 0x0000002D, - 0x033, 0x00000025, 0x03F, 0x00000030, 0x033, 0x00000026, - 0x03F, 0x0000006D, 0x033, 0x00000027, 0x03F, 0x00000070, - 0x033, 0x00000028, 0x03F, 0x000000ED, 0x033, 0x00000029, - 0x03F, 0x000000F0, 0x033, 0x0000002A, 0x03F, 0x000000F3, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000007, 0x033, 0x00000021, 0x03F, 0x0000000A, - 0x033, 0x00000022, 0x03F, 0x0000000D, 0x033, 0x00000023, - 0x03F, 0x0000002A, 0x033, 0x00000024, 0x03F, 0x0000002D, - 0x033, 0x00000025, 0x03F, 0x00000030, 0x033, 0x00000026, - 0x03F, 0x0000006D, 0x033, 0x00000027, 0x03F, 0x00000070, - 0x033, 0x00000028, 0x03F, 0x000000ED, 0x033, 0x00000029, - 0x03F, 0x000000F0, 0x033, 0x0000002A, 0x03F, 0x000000F3, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000005, 0x033, 0x00000021, 0x03F, 0x00000008, - 0x033, 0x00000022, 0x03F, 0x0000000B, 0x033, 0x00000023, - 0x03F, 0x0000000E, 0x033, 0x00000024, 0x03F, 0x0000002B, - 0x033, 0x00000025, 0x03F, 0x00000068, 0x033, 0x00000026, - 0x03F, 0x0000006B, 0x033, 0x00000027, 0x03F, 0x0000006E, - 0x033, 0x00000028, 0x03F, 0x00000071, 0x033, 0x00000029, - 0x03F, 0x00000074, 0x033, 0x0000002A, 0x03F, 0x00000077, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000007, 0x033, 0x00000021, 0x03F, 0x0000000A, - 0x033, 0x00000022, 0x03F, 0x0000000D, 0x033, 0x00000023, - 0x03F, 0x0000002A, 0x033, 0x00000024, 0x03F, 0x0000002D, - 0x033, 0x00000025, 0x03F, 0x00000030, 0x033, 0x00000026, - 0x03F, 0x0000006D, 0x033, 0x00000027, 0x03F, 0x00000070, - 0x033, 0x00000028, 0x03F, 0x000000ED, 0x033, 0x00000029, - 0x03F, 0x000000F0, 0x033, 0x0000002A, 0x03F, 0x000000F3, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000007, 0x033, 0x00000021, 0x03F, 0x0000000A, - 0x033, 0x00000022, 0x03F, 0x0000000D, 0x033, 0x00000023, - 0x03F, 0x0000002A, 0x033, 0x00000024, 0x03F, 0x0000002D, - 0x033, 0x00000025, 0x03F, 0x00000030, 0x033, 0x00000026, - 0x03F, 0x0000006D, 0x033, 0x00000027, 0x03F, 0x00000070, - 0x033, 0x00000028, 0x03F, 0x000000ED, 0x033, 0x00000029, - 0x03F, 0x000000F0, 0x033, 0x0000002A, 0x03F, 0x000000F3, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000007, 0x033, 0x00000021, 0x03F, 0x0000000A, - 0x033, 0x00000022, 0x03F, 0x0000000D, 0x033, 0x00000023, - 0x03F, 0x0000002A, 0x033, 0x00000024, 0x03F, 0x0000002D, - 0x033, 0x00000025, 0x03F, 0x00000030, 0x033, 0x00000026, - 0x03F, 0x0000006D, 0x033, 0x00000027, 0x03F, 0x00000070, - 0x033, 0x00000028, 0x03F, 0x000000ED, 0x033, 0x00000029, - 0x03F, 0x000000F0, 0x033, 0x0000002A, 0x03F, 0x000000F3, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000005, 0x033, 0x00000021, 0x03F, 0x00000008, - 0x033, 0x00000022, 0x03F, 0x0000000B, 0x033, 0x00000023, - 0x03F, 0x0000000E, 0x033, 0x00000024, 0x03F, 0x0000002B, - 0x033, 0x00000025, 0x03F, 0x00000068, 0x033, 0x00000026, - 0x03F, 0x0000006B, 0x033, 0x00000027, 0x03F, 0x0000006E, - 0x033, 0x00000028, 0x03F, 0x00000071, 0x033, 0x00000029, - 0x03F, 0x00000074, 0x033, 0x0000002A, 0x03F, 0x00000077, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000005, 0x033, 0x00000021, 0x03F, 0x00000008, - 0x033, 0x00000022, 0x03F, 0x0000000B, 0x033, 0x00000023, - 0x03F, 0x0000000E, 0x033, 0x00000024, 0x03F, 0x0000002B, - 0x033, 0x00000025, 0x03F, 0x00000068, 0x033, 0x00000026, - 0x03F, 0x0000006B, 0x033, 0x00000027, 0x03F, 0x0000006E, - 0x033, 0x00000028, 0x03F, 0x00000071, 0x033, 0x00000029, - 0x03F, 0x00000074, 0x033, 0x0000002A, 0x03F, 0x00000077, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000828, 0x033, 0x00000021, 0x03F, 0x0000082B, - 0x033, 0x00000022, 0x03F, 0x00000868, 0x033, 0x00000023, - 0x03F, 0x00000889, 0x033, 0x00000024, 0x03F, 0x000008AA, - 0x033, 0x00000025, 0x03F, 0x00000CE8, 0x033, 0x00000026, - 0x03F, 0x00000CEB, 0x033, 0x00000027, 0x03F, 0x00000CEE, - 0x033, 0x00000028, 0x03F, 0x00000CF1, 0x033, 0x00000029, - 0x03F, 0x00000CF4, 0x033, 0x0000002A, 0x03F, 0x00000CF7, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x0000042A, 0x033, 0x00000021, 0x03F, 0x00000829, - 0x033, 0x00000022, 0x03F, 0x00000848, 0x033, 0x00000023, - 0x03F, 0x0000084B, 0x033, 0x00000024, 0x03F, 0x00000C4C, - 0x033, 0x00000025, 0x03F, 0x00000C8B, 0x033, 0x00000026, - 0x03F, 0x00000CEA, 0x033, 0x00000027, 0x03F, 0x00000CED, - 0x033, 0x00000028, 0x03F, 0x00000CF0, 0x033, 0x00000029, - 0x03F, 0x00000CF3, 0x033, 0x0000002A, 0x03F, 0x00000CF6, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000C09, 0x033, 0x00000021, 0x03F, 0x00000C0C, - 0x033, 0x00000022, 0x03F, 0x00000C0F, 0x033, 0x00000023, - 0x03F, 0x00000C2C, 0x033, 0x00000024, 0x03F, 0x00000C2F, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000C8D, 0x033, 0x00000027, 0x03F, 0x00000C90, - 0x033, 0x00000028, 0x03F, 0x00000CD0, 0x033, 0x00000029, - 0x03F, 0x00000CF2, 0x033, 0x0000002A, 0x03F, 0x00000CF5, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000005, 0x033, 0x00000021, 0x03F, 0x00000008, - 0x033, 0x00000022, 0x03F, 0x0000000B, 0x033, 0x00000023, - 0x03F, 0x0000000E, 0x033, 0x00000024, 0x03F, 0x0000002B, - 0x033, 0x00000025, 0x03F, 0x00000068, 0x033, 0x00000026, - 0x03F, 0x0000006B, 0x033, 0x00000027, 0x03F, 0x0000006E, - 0x033, 0x00000028, 0x03F, 0x00000071, 0x033, 0x00000029, - 0x03F, 0x00000074, 0x033, 0x0000002A, 0x03F, 0x00000077, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000C09, 0x033, 0x00000021, 0x03F, 0x00000C0C, - 0x033, 0x00000022, 0x03F, 0x00000C0F, 0x033, 0x00000023, - 0x03F, 0x00000C2C, 0x033, 0x00000024, 0x03F, 0x00000C2F, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000C8D, 0x033, 0x00000027, 0x03F, 0x00000C90, - 0x033, 0x00000028, 0x03F, 0x00000CD0, 0x033, 0x00000029, - 0x03F, 0x00000CF2, 0x033, 0x0000002A, 0x03F, 0x00000CF5, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000429, 0x033, 0x00000021, 0x03F, 0x00000828, - 0x033, 0x00000022, 0x03F, 0x00000847, 0x033, 0x00000023, - 0x03F, 0x0000084A, 0x033, 0x00000024, 0x03F, 0x00000C4B, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000CEA, 0x033, 0x00000027, 0x03F, 0x00000CED, - 0x033, 0x00000028, 0x03F, 0x00000CF0, 0x033, 0x00000029, - 0x03F, 0x00000CF3, 0x033, 0x0000002A, 0x03F, 0x00000CF6, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x00000C09, 0x033, 0x00000021, 0x03F, 0x00000C0C, - 0x033, 0x00000022, 0x03F, 0x00000C0F, 0x033, 0x00000023, - 0x03F, 0x00000C2C, 0x033, 0x00000024, 0x03F, 0x00000C2F, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000C8D, 0x033, 0x00000027, 0x03F, 0x00000C90, - 0x033, 0x00000028, 0x03F, 0x00000CD0, 0x033, 0x00000029, - 0x03F, 0x00000CF2, 0x033, 0x0000002A, 0x03F, 0x00000CF5, - 0x90002100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x0000042B, 0x033, 0x00000021, 0x03F, 0x0000082A, - 0x033, 0x00000022, 0x03F, 0x00000849, 0x033, 0x00000023, - 0x03F, 0x0000084C, 0x033, 0x00000024, 0x03F, 0x00000C4C, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000C8D, 0x033, 0x00000027, 0x03F, 0x00000CEB, - 0x033, 0x00000028, 0x03F, 0x00000CEE, 0x033, 0x00000029, - 0x03F, 0x00000CF1, 0x033, 0x0000002A, 0x03F, 0x00000CF4, - 0x90002000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000020, - 0x03F, 0x0000042B, 0x033, 0x00000021, 0x03F, 0x0000082A, - 0x033, 0x00000022, 0x03F, 0x00000849, 0x033, 0x00000023, - 0x03F, 0x0000084C, 0x033, 0x00000024, 0x03F, 0x00000C4C, - 0x033, 0x00000025, 0x03F, 0x00000C8A, 0x033, 0x00000026, - 0x03F, 0x00000C8D, 0x033, 0x00000027, 0x03F, 0x00000CEB, - 0x033, 0x00000028, 0x03F, 0x00000CEE, 0x033, 0x00000029, - 0x03F, 0x00000CF1, 0x033, 0x0000002A, 0x03F, 0x00000CF4, - 0xA0000000, 0x00000000, 0x033, 0x00000020, 0x03F, 0x00000C09, - 0x033, 0x00000021, 0x03F, 0x00000C0C, 0x033, 0x00000022, - 0x03F, 0x00000C0F, 0x033, 0x00000023, 0x03F, 0x00000C2C, - 0x033, 0x00000024, 0x03F, 0x00000C2F, 0x033, 0x00000025, - 0x03F, 0x00000C8A, 0x033, 0x00000026, 0x03F, 0x00000C8D, - 0x033, 0x00000027, 0x03F, 0x00000C90, 0x033, 0x00000028, - 0x03F, 0x00000CD0, 0x033, 0x00000029, 0x03F, 0x00000CF2, - 0x033, 0x0000002A, 0x03F, 0x00000CF5, 0xB0000000, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000007, 0x033, 0x00000061, 0x03F, 0x0000000A, - 0x033, 0x00000062, 0x03F, 0x0000000D, 0x033, 0x00000063, - 0x03F, 0x0000002A, 0x033, 0x00000064, 0x03F, 0x0000002D, - 0x033, 0x00000065, 0x03F, 0x00000030, 0x033, 0x00000066, - 0x03F, 0x0000006D, 0x033, 0x00000067, 0x03F, 0x00000070, - 0x033, 0x00000068, 0x03F, 0x000000ED, 0x033, 0x00000069, - 0x03F, 0x000000F0, 0x033, 0x0000006A, 0x03F, 0x000000F3, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000007, 0x033, 0x00000061, 0x03F, 0x0000000A, - 0x033, 0x00000062, 0x03F, 0x0000000D, 0x033, 0x00000063, - 0x03F, 0x0000002A, 0x033, 0x00000064, 0x03F, 0x0000002D, - 0x033, 0x00000065, 0x03F, 0x00000030, 0x033, 0x00000066, - 0x03F, 0x0000006D, 0x033, 0x00000067, 0x03F, 0x00000070, - 0x033, 0x00000068, 0x03F, 0x000000ED, 0x033, 0x00000069, - 0x03F, 0x000000F0, 0x033, 0x0000006A, 0x03F, 0x000000F3, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000007, 0x033, 0x00000061, 0x03F, 0x0000000A, - 0x033, 0x00000062, 0x03F, 0x0000000D, 0x033, 0x00000063, - 0x03F, 0x0000002A, 0x033, 0x00000064, 0x03F, 0x0000002D, - 0x033, 0x00000065, 0x03F, 0x00000030, 0x033, 0x00000066, - 0x03F, 0x0000006D, 0x033, 0x00000067, 0x03F, 0x00000070, - 0x033, 0x00000068, 0x03F, 0x000000ED, 0x033, 0x00000069, - 0x03F, 0x000000F0, 0x033, 0x0000006A, 0x03F, 0x000000F3, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000005, 0x033, 0x00000061, 0x03F, 0x00000008, - 0x033, 0x00000062, 0x03F, 0x0000000B, 0x033, 0x00000063, - 0x03F, 0x0000000E, 0x033, 0x00000064, 0x03F, 0x0000002B, - 0x033, 0x00000065, 0x03F, 0x00000068, 0x033, 0x00000066, - 0x03F, 0x0000006B, 0x033, 0x00000067, 0x03F, 0x0000006E, - 0x033, 0x00000068, 0x03F, 0x00000071, 0x033, 0x00000069, - 0x03F, 0x00000074, 0x033, 0x0000006A, 0x03F, 0x00000077, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000007, 0x033, 0x00000061, 0x03F, 0x0000000A, - 0x033, 0x00000062, 0x03F, 0x0000000D, 0x033, 0x00000063, - 0x03F, 0x0000002A, 0x033, 0x00000064, 0x03F, 0x0000002D, - 0x033, 0x00000065, 0x03F, 0x00000030, 0x033, 0x00000066, - 0x03F, 0x0000006D, 0x033, 0x00000067, 0x03F, 0x00000070, - 0x033, 0x00000068, 0x03F, 0x000000ED, 0x033, 0x00000069, - 0x03F, 0x000000F0, 0x033, 0x0000006A, 0x03F, 0x000000F3, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000007, 0x033, 0x00000061, 0x03F, 0x0000000A, - 0x033, 0x00000062, 0x03F, 0x0000000D, 0x033, 0x00000063, - 0x03F, 0x0000002A, 0x033, 0x00000064, 0x03F, 0x0000002D, - 0x033, 0x00000065, 0x03F, 0x00000030, 0x033, 0x00000066, - 0x03F, 0x0000006D, 0x033, 0x00000067, 0x03F, 0x00000070, - 0x033, 0x00000068, 0x03F, 0x000000ED, 0x033, 0x00000069, - 0x03F, 0x000000F0, 0x033, 0x0000006A, 0x03F, 0x000000F3, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000007, 0x033, 0x00000061, 0x03F, 0x0000000A, - 0x033, 0x00000062, 0x03F, 0x0000000D, 0x033, 0x00000063, - 0x03F, 0x0000002A, 0x033, 0x00000064, 0x03F, 0x0000002D, - 0x033, 0x00000065, 0x03F, 0x00000030, 0x033, 0x00000066, - 0x03F, 0x0000006D, 0x033, 0x00000067, 0x03F, 0x00000070, - 0x033, 0x00000068, 0x03F, 0x000000ED, 0x033, 0x00000069, - 0x03F, 0x000000F0, 0x033, 0x0000006A, 0x03F, 0x000000F3, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000005, 0x033, 0x00000061, 0x03F, 0x00000008, - 0x033, 0x00000062, 0x03F, 0x0000000B, 0x033, 0x00000063, - 0x03F, 0x0000000E, 0x033, 0x00000064, 0x03F, 0x0000002B, - 0x033, 0x00000065, 0x03F, 0x00000068, 0x033, 0x00000066, - 0x03F, 0x0000006B, 0x033, 0x00000067, 0x03F, 0x0000006E, - 0x033, 0x00000068, 0x03F, 0x00000071, 0x033, 0x00000069, - 0x03F, 0x00000074, 0x033, 0x0000006A, 0x03F, 0x00000077, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000005, 0x033, 0x00000061, 0x03F, 0x00000008, - 0x033, 0x00000062, 0x03F, 0x0000000B, 0x033, 0x00000063, - 0x03F, 0x0000000E, 0x033, 0x00000064, 0x03F, 0x0000002B, - 0x033, 0x00000065, 0x03F, 0x00000068, 0x033, 0x00000066, - 0x03F, 0x0000006B, 0x033, 0x00000067, 0x03F, 0x0000006E, - 0x033, 0x00000068, 0x03F, 0x00000071, 0x033, 0x00000069, - 0x03F, 0x00000074, 0x033, 0x0000006A, 0x03F, 0x00000077, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000842, 0x033, 0x00000061, 0x03F, 0x00000845, - 0x033, 0x00000062, 0x03F, 0x00000866, 0x033, 0x00000063, - 0x03F, 0x000008A6, 0x033, 0x00000064, 0x03F, 0x000008C8, - 0x033, 0x00000065, 0x03F, 0x00000CE8, 0x033, 0x00000066, - 0x03F, 0x00000CEB, 0x033, 0x00000067, 0x03F, 0x00000CEE, - 0x033, 0x00000068, 0x03F, 0x00000CF1, 0x033, 0x00000069, - 0x03F, 0x00000CF4, 0x033, 0x0000006A, 0x03F, 0x00000CF7, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x0000042A, 0x033, 0x00000061, 0x03F, 0x00000829, - 0x033, 0x00000062, 0x03F, 0x00000848, 0x033, 0x00000063, - 0x03F, 0x0000084B, 0x033, 0x00000064, 0x03F, 0x00000C69, - 0x033, 0x00000065, 0x03F, 0x00000CA9, 0x033, 0x00000066, - 0x03F, 0x00000CEA, 0x033, 0x00000067, 0x03F, 0x00000CED, - 0x033, 0x00000068, 0x03F, 0x00000CF0, 0x033, 0x00000069, - 0x03F, 0x00000CF3, 0x033, 0x0000006A, 0x03F, 0x00000CF6, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000C0A, 0x033, 0x00000061, 0x03F, 0x00000C0D, - 0x033, 0x00000062, 0x03F, 0x00000C2A, 0x033, 0x00000063, - 0x03F, 0x00000C2D, 0x033, 0x00000064, 0x03F, 0x00000C6A, - 0x033, 0x00000065, 0x03F, 0x00000CAA, 0x033, 0x00000066, - 0x03F, 0x00000CAD, 0x033, 0x00000067, 0x03F, 0x00000CB0, - 0x033, 0x00000068, 0x03F, 0x00000CF1, 0x033, 0x00000069, - 0x03F, 0x00000CF4, 0x033, 0x0000006A, 0x03F, 0x00000CF7, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000005, 0x033, 0x00000061, 0x03F, 0x00000008, - 0x033, 0x00000062, 0x03F, 0x0000000B, 0x033, 0x00000063, - 0x03F, 0x0000000E, 0x033, 0x00000064, 0x03F, 0x0000002B, - 0x033, 0x00000065, 0x03F, 0x00000068, 0x033, 0x00000066, - 0x03F, 0x0000006B, 0x033, 0x00000067, 0x03F, 0x0000006E, - 0x033, 0x00000068, 0x03F, 0x00000071, 0x033, 0x00000069, - 0x03F, 0x00000074, 0x033, 0x0000006A, 0x03F, 0x00000077, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000C0A, 0x033, 0x00000061, 0x03F, 0x00000C0D, - 0x033, 0x00000062, 0x03F, 0x00000C2A, 0x033, 0x00000063, - 0x03F, 0x00000C2D, 0x033, 0x00000064, 0x03F, 0x00000C6A, - 0x033, 0x00000065, 0x03F, 0x00000CAA, 0x033, 0x00000066, - 0x03F, 0x00000CAD, 0x033, 0x00000067, 0x03F, 0x00000CB0, - 0x033, 0x00000068, 0x03F, 0x00000CF1, 0x033, 0x00000069, - 0x03F, 0x00000CF4, 0x033, 0x0000006A, 0x03F, 0x00000CF7, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000429, 0x033, 0x00000061, 0x03F, 0x00000828, - 0x033, 0x00000062, 0x03F, 0x00000847, 0x033, 0x00000063, - 0x03F, 0x0000084A, 0x033, 0x00000064, 0x03F, 0x00000C4B, - 0x033, 0x00000065, 0x03F, 0x00000C8A, 0x033, 0x00000066, - 0x03F, 0x00000CEA, 0x033, 0x00000067, 0x03F, 0x00000CED, - 0x033, 0x00000068, 0x03F, 0x00000CF0, 0x033, 0x00000069, - 0x03F, 0x00000CF3, 0x033, 0x0000006A, 0x03F, 0x00000CF6, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x00000C0A, 0x033, 0x00000061, 0x03F, 0x00000C0D, - 0x033, 0x00000062, 0x03F, 0x00000C2A, 0x033, 0x00000063, - 0x03F, 0x00000C2D, 0x033, 0x00000064, 0x03F, 0x00000C6A, - 0x033, 0x00000065, 0x03F, 0x00000CAA, 0x033, 0x00000066, - 0x03F, 0x00000CAD, 0x033, 0x00000067, 0x03F, 0x00000CB0, - 0x033, 0x00000068, 0x03F, 0x00000CF1, 0x033, 0x00000069, - 0x03F, 0x00000CF4, 0x033, 0x0000006A, 0x03F, 0x00000CF7, - 0x90002100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x0000042C, 0x033, 0x00000061, 0x03F, 0x0000082B, - 0x033, 0x00000062, 0x03F, 0x0000084A, 0x033, 0x00000063, - 0x03F, 0x0000084D, 0x033, 0x00000064, 0x03F, 0x00000C4E, - 0x033, 0x00000065, 0x03F, 0x00000C8C, 0x033, 0x00000066, - 0x03F, 0x00000C8F, 0x033, 0x00000067, 0x03F, 0x00000CEC, - 0x033, 0x00000068, 0x03F, 0x00000CEF, 0x033, 0x00000069, - 0x03F, 0x00000CF2, 0x033, 0x0000006A, 0x03F, 0x00000CF5, - 0x90002000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000060, - 0x03F, 0x0000042C, 0x033, 0x00000061, 0x03F, 0x0000082B, - 0x033, 0x00000062, 0x03F, 0x0000084A, 0x033, 0x00000063, - 0x03F, 0x0000084D, 0x033, 0x00000064, 0x03F, 0x00000C4E, - 0x033, 0x00000065, 0x03F, 0x00000C8C, 0x033, 0x00000066, - 0x03F, 0x00000C8F, 0x033, 0x00000067, 0x03F, 0x00000CEC, - 0x033, 0x00000068, 0x03F, 0x00000CEF, 0x033, 0x00000069, - 0x03F, 0x00000CF2, 0x033, 0x0000006A, 0x03F, 0x00000CF5, - 0xA0000000, 0x00000000, 0x033, 0x00000060, 0x03F, 0x00000C0A, - 0x033, 0x00000061, 0x03F, 0x00000C0D, 0x033, 0x00000062, - 0x03F, 0x00000C2A, 0x033, 0x00000063, 0x03F, 0x00000C2D, - 0x033, 0x00000064, 0x03F, 0x00000C6A, 0x033, 0x00000065, - 0x03F, 0x00000CAA, 0x033, 0x00000066, 0x03F, 0x00000CAD, - 0x033, 0x00000067, 0x03F, 0x00000CB0, 0x033, 0x00000068, - 0x03F, 0x00000CF1, 0x033, 0x00000069, 0x03F, 0x00000CF4, - 0x033, 0x0000006A, 0x03F, 0x00000CF7, 0xB0000000, 0x00000000, - 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000007, 0x033, 0x000000A1, 0x03F, 0x0000000A, - 0x033, 0x000000A2, 0x03F, 0x0000000D, 0x033, 0x000000A3, - 0x03F, 0x0000002A, 0x033, 0x000000A4, 0x03F, 0x0000002D, - 0x033, 0x000000A5, 0x03F, 0x00000030, 0x033, 0x000000A6, - 0x03F, 0x0000006D, 0x033, 0x000000A7, 0x03F, 0x00000070, - 0x033, 0x000000A8, 0x03F, 0x000000ED, 0x033, 0x000000A9, - 0x03F, 0x000000F0, 0x033, 0x000000AA, 0x03F, 0x000000F3, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000007, 0x033, 0x000000A1, 0x03F, 0x0000000A, - 0x033, 0x000000A2, 0x03F, 0x0000000D, 0x033, 0x000000A3, - 0x03F, 0x0000002A, 0x033, 0x000000A4, 0x03F, 0x0000002D, - 0x033, 0x000000A5, 0x03F, 0x00000030, 0x033, 0x000000A6, - 0x03F, 0x0000006D, 0x033, 0x000000A7, 0x03F, 0x00000070, - 0x033, 0x000000A8, 0x03F, 0x000000ED, 0x033, 0x000000A9, - 0x03F, 0x000000F0, 0x033, 0x000000AA, 0x03F, 0x000000F3, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000007, 0x033, 0x000000A1, 0x03F, 0x0000000A, - 0x033, 0x000000A2, 0x03F, 0x0000000D, 0x033, 0x000000A3, - 0x03F, 0x0000002A, 0x033, 0x000000A4, 0x03F, 0x0000002D, - 0x033, 0x000000A5, 0x03F, 0x00000030, 0x033, 0x000000A6, - 0x03F, 0x0000006D, 0x033, 0x000000A7, 0x03F, 0x00000070, - 0x033, 0x000000A8, 0x03F, 0x000000ED, 0x033, 0x000000A9, - 0x03F, 0x000000F0, 0x033, 0x000000AA, 0x03F, 0x000000F3, - 0x9300200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000005, 0x033, 0x000000A1, 0x03F, 0x00000008, - 0x033, 0x000000A2, 0x03F, 0x0000000B, 0x033, 0x000000A3, - 0x03F, 0x0000000E, 0x033, 0x000000A4, 0x03F, 0x00000047, - 0x033, 0x000000A5, 0x03F, 0x0000004A, 0x033, 0x000000A6, - 0x03F, 0x0000004D, 0x033, 0x000000A7, 0x03F, 0x00000050, - 0x033, 0x000000A8, 0x03F, 0x00000053, 0x033, 0x000000A9, - 0x03F, 0x00000056, 0x033, 0x000000AA, 0x03F, 0x00000094, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000007, 0x033, 0x000000A1, 0x03F, 0x0000000A, - 0x033, 0x000000A2, 0x03F, 0x0000000D, 0x033, 0x000000A3, - 0x03F, 0x0000002A, 0x033, 0x000000A4, 0x03F, 0x0000002D, - 0x033, 0x000000A5, 0x03F, 0x00000030, 0x033, 0x000000A6, - 0x03F, 0x0000006D, 0x033, 0x000000A7, 0x03F, 0x00000070, - 0x033, 0x000000A8, 0x03F, 0x000000ED, 0x033, 0x000000A9, - 0x03F, 0x000000F0, 0x033, 0x000000AA, 0x03F, 0x000000F3, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000007, 0x033, 0x000000A1, 0x03F, 0x0000000A, - 0x033, 0x000000A2, 0x03F, 0x0000000D, 0x033, 0x000000A3, - 0x03F, 0x0000002A, 0x033, 0x000000A4, 0x03F, 0x0000002D, - 0x033, 0x000000A5, 0x03F, 0x00000030, 0x033, 0x000000A6, - 0x03F, 0x0000006D, 0x033, 0x000000A7, 0x03F, 0x00000070, - 0x033, 0x000000A8, 0x03F, 0x000000ED, 0x033, 0x000000A9, - 0x03F, 0x000000F0, 0x033, 0x000000AA, 0x03F, 0x000000F3, - 0x9000100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000007, 0x033, 0x000000A1, 0x03F, 0x0000000A, - 0x033, 0x000000A2, 0x03F, 0x0000000D, 0x033, 0x000000A3, - 0x03F, 0x0000002A, 0x033, 0x000000A4, 0x03F, 0x0000002D, - 0x033, 0x000000A5, 0x03F, 0x00000030, 0x033, 0x000000A6, - 0x03F, 0x0000006D, 0x033, 0x000000A7, 0x03F, 0x00000070, - 0x033, 0x000000A8, 0x03F, 0x000000ED, 0x033, 0x000000A9, - 0x03F, 0x000000F0, 0x033, 0x000000AA, 0x03F, 0x000000F3, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000005, 0x033, 0x000000A1, 0x03F, 0x00000008, - 0x033, 0x000000A2, 0x03F, 0x0000000B, 0x033, 0x000000A3, - 0x03F, 0x0000000E, 0x033, 0x000000A4, 0x03F, 0x00000047, - 0x033, 0x000000A5, 0x03F, 0x0000004A, 0x033, 0x000000A6, - 0x03F, 0x0000004D, 0x033, 0x000000A7, 0x03F, 0x00000050, - 0x033, 0x000000A8, 0x03F, 0x00000053, 0x033, 0x000000A9, - 0x03F, 0x00000056, 0x033, 0x000000AA, 0x03F, 0x00000094, - 0x9300200c, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000005, 0x033, 0x000000A1, 0x03F, 0x00000008, - 0x033, 0x000000A2, 0x03F, 0x0000000B, 0x033, 0x000000A3, - 0x03F, 0x0000000E, 0x033, 0x000000A4, 0x03F, 0x00000047, - 0x033, 0x000000A5, 0x03F, 0x0000004A, 0x033, 0x000000A6, - 0x03F, 0x0000004D, 0x033, 0x000000A7, 0x03F, 0x00000050, - 0x033, 0x000000A8, 0x03F, 0x00000053, 0x033, 0x000000A9, - 0x03F, 0x00000056, 0x033, 0x000000AA, 0x03F, 0x00000094, - 0x93012100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000826, 0x033, 0x000000A1, 0x03F, 0x00000829, - 0x033, 0x000000A2, 0x03F, 0x0000082C, 0x033, 0x000000A3, - 0x03F, 0x0000082F, 0x033, 0x000000A4, 0x03F, 0x0000086C, - 0x033, 0x000000A5, 0x03F, 0x00000CE8, 0x033, 0x000000A6, - 0x03F, 0x00000CEB, 0x033, 0x000000A7, 0x03F, 0x00000CEE, - 0x033, 0x000000A8, 0x03F, 0x00000CF1, 0x033, 0x000000A9, - 0x03F, 0x00000CF4, 0x033, 0x000000AA, 0x03F, 0x00000CF7, - 0x93002100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x0000042A, 0x033, 0x000000A1, 0x03F, 0x00000829, - 0x033, 0x000000A2, 0x03F, 0x00000848, 0x033, 0x000000A3, - 0x03F, 0x0000084B, 0x033, 0x000000A4, 0x03F, 0x00000C4C, - 0x033, 0x000000A5, 0x03F, 0x00000CA9, 0x033, 0x000000A6, - 0x03F, 0x00000CEA, 0x033, 0x000000A7, 0x03F, 0x00000CED, - 0x033, 0x000000A8, 0x03F, 0x00000CF0, 0x033, 0x000000A9, - 0x03F, 0x00000CF3, 0x033, 0x000000AA, 0x03F, 0x00000CF6, - 0x93011000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000C09, 0x033, 0x000000A1, 0x03F, 0x00000C0C, - 0x033, 0x000000A2, 0x03F, 0x00000C0F, 0x033, 0x000000A3, - 0x03F, 0x00000C2C, 0x033, 0x000000A4, 0x03F, 0x00000C2F, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000C8D, 0x033, 0x000000A7, 0x03F, 0x00000C90, - 0x033, 0x000000A8, 0x03F, 0x00000CEF, 0x033, 0x000000A9, - 0x03F, 0x00000CF2, 0x033, 0x000000AA, 0x03F, 0x00000CF5, - 0x9000200c, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000005, 0x033, 0x000000A1, 0x03F, 0x00000008, - 0x033, 0x000000A2, 0x03F, 0x0000000B, 0x033, 0x000000A3, - 0x03F, 0x0000000E, 0x033, 0x000000A4, 0x03F, 0x00000047, - 0x033, 0x000000A5, 0x03F, 0x0000004A, 0x033, 0x000000A6, - 0x03F, 0x0000004D, 0x033, 0x000000A7, 0x03F, 0x00000050, - 0x033, 0x000000A8, 0x03F, 0x00000053, 0x033, 0x000000A9, - 0x03F, 0x00000056, 0x033, 0x000000AA, 0x03F, 0x00000094, - 0x90001004, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000C09, 0x033, 0x000000A1, 0x03F, 0x00000C0C, - 0x033, 0x000000A2, 0x03F, 0x00000C0F, 0x033, 0x000000A3, - 0x03F, 0x00000C2C, 0x033, 0x000000A4, 0x03F, 0x00000C2F, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000C8D, 0x033, 0x000000A7, 0x03F, 0x00000C90, - 0x033, 0x000000A8, 0x03F, 0x00000CEF, 0x033, 0x000000A9, - 0x03F, 0x00000CF2, 0x033, 0x000000AA, 0x03F, 0x00000CF5, - 0x93002000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000429, 0x033, 0x000000A1, 0x03F, 0x00000828, - 0x033, 0x000000A2, 0x03F, 0x00000847, 0x033, 0x000000A3, - 0x03F, 0x0000084A, 0x033, 0x000000A4, 0x03F, 0x00000C4B, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000CEA, 0x033, 0x000000A7, 0x03F, 0x00000CED, - 0x033, 0x000000A8, 0x03F, 0x00000CF0, 0x033, 0x000000A9, - 0x03F, 0x00000CF3, 0x033, 0x000000AA, 0x03F, 0x00000CF6, - 0x93001000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x00000C09, 0x033, 0x000000A1, 0x03F, 0x00000C0C, - 0x033, 0x000000A2, 0x03F, 0x00000C0F, 0x033, 0x000000A3, - 0x03F, 0x00000C2C, 0x033, 0x000000A4, 0x03F, 0x00000C2F, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000C8D, 0x033, 0x000000A7, 0x03F, 0x00000C90, - 0x033, 0x000000A8, 0x03F, 0x00000CEF, 0x033, 0x000000A9, - 0x03F, 0x00000CF2, 0x033, 0x000000AA, 0x03F, 0x00000CF5, - 0x90002100, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x0000042A, 0x033, 0x000000A1, 0x03F, 0x00000829, - 0x033, 0x000000A2, 0x03F, 0x00000848, 0x033, 0x000000A3, - 0x03F, 0x0000084B, 0x033, 0x000000A4, 0x03F, 0x00000C4C, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000C8D, 0x033, 0x000000A7, 0x03F, 0x00000CEC, - 0x033, 0x000000A8, 0x03F, 0x00000CEF, 0x033, 0x000000A9, - 0x03F, 0x00000CF2, 0x033, 0x000000AA, 0x03F, 0x00000CF5, - 0x90002000, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x000000A0, - 0x03F, 0x0000042A, 0x033, 0x000000A1, 0x03F, 0x00000829, - 0x033, 0x000000A2, 0x03F, 0x00000848, 0x033, 0x000000A3, - 0x03F, 0x0000084B, 0x033, 0x000000A4, 0x03F, 0x00000C4C, - 0x033, 0x000000A5, 0x03F, 0x00000C8A, 0x033, 0x000000A6, - 0x03F, 0x00000C8D, 0x033, 0x000000A7, 0x03F, 0x00000CEC, - 0x033, 0x000000A8, 0x03F, 0x00000CEF, 0x033, 0x000000A9, - 0x03F, 0x00000CF2, 0x033, 0x000000AA, 0x03F, 0x00000CF5, - 0xA0000000, 0x00000000, 0x033, 0x000000A0, 0x03F, 0x00000C09, - 0x033, 0x000000A1, 0x03F, 0x00000C0C, 0x033, 0x000000A2, - 0x03F, 0x00000C0F, 0x033, 0x000000A3, 0x03F, 0x00000C2C, - 0x033, 0x000000A4, 0x03F, 0x00000C2F, 0x033, 0x000000A5, - 0x03F, 0x00000C8A, 0x033, 0x000000A6, 0x03F, 0x00000C8D, - 0x033, 0x000000A7, 0x03F, 0x00000C90, 0x033, 0x000000A8, - 0x03F, 0x00000CEF, 0x033, 0x000000A9, 0x03F, 0x00000CF2, - 0x033, 0x000000AA, 0x03F, 0x00000CF5, 0xB0000000, 0x00000000, - 0x0EF, 0x00000000, 0x0EF, 0x00000400, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x0000265A, - 0x033, 0x00000001, 0x03F, 0x0000265A, 0x033, 0x00000002, - 0x03F, 0x0000265A, 0x033, 0x00000003, 0x03F, 0x0000265A, - 0x9300100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x0000265A, 0x033, 0x00000001, 0x03F, 0x0000265A, - 0x033, 0x00000002, 0x03F, 0x0000265A, 0x033, 0x00000003, - 0x03F, 0x0000265A, 0x9300100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x0000265A, 0x033, 0x00000001, - 0x03F, 0x0000265A, 0x033, 0x00000002, 0x03F, 0x0000265A, - 0x033, 0x00000003, 0x03F, 0x0000265A, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x0000265A, - 0x033, 0x00000001, 0x03F, 0x0000265A, 0x033, 0x00000002, - 0x03F, 0x0000265A, 0x033, 0x00000003, 0x03F, 0x0000265A, - 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x0000265A, 0x033, 0x00000001, 0x03F, 0x0000265A, - 0x033, 0x00000002, 0x03F, 0x0000265A, 0x033, 0x00000003, - 0x03F, 0x0000265A, 0x9000100f, 0x05050505, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x0000265A, 0x033, 0x00000001, - 0x03F, 0x0000265A, 0x033, 0x00000002, 0x03F, 0x0000265A, - 0x033, 0x00000003, 0x03F, 0x0000265A, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x0000265A, - 0x033, 0x00000001, 0x03F, 0x0000265A, 0x033, 0x00000002, - 0x03F, 0x0000265A, 0x033, 0x00000003, 0x03F, 0x0000265A, - 0x9000200f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x0000265A, 0x033, 0x00000001, 0x03F, 0x0000265A, - 0x033, 0x00000002, 0x03F, 0x0000265A, 0x033, 0x00000003, - 0x03F, 0x0000265A, 0xA0000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x000004BB, 0x033, 0x00000001, 0x03F, 0x000004BB, - 0x033, 0x00000002, 0x03F, 0x000004BB, 0x033, 0x00000003, - 0x03F, 0x000004BB, 0xB0000000, 0x00000000, 0x0EF, 0x00000000, - 0x0EF, 0x00000100, 0x8300100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x00000745, 0x033, 0x00000001, - 0x03F, 0x00000745, 0x033, 0x00000002, 0x03F, 0x00000745, - 0x033, 0x00000003, 0x03F, 0x00000745, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000745, - 0x033, 0x00000001, 0x03F, 0x00000745, 0x033, 0x00000002, - 0x03F, 0x00000745, 0x033, 0x00000003, 0x03F, 0x00000745, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000745, 0x033, 0x00000001, 0x03F, 0x00000745, - 0x033, 0x00000002, 0x03F, 0x00000745, 0x033, 0x00000003, - 0x03F, 0x00000745, 0x9300200f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x00000745, 0x033, 0x00000001, - 0x03F, 0x00000745, 0x033, 0x00000002, 0x03F, 0x00000745, - 0x033, 0x00000003, 0x03F, 0x00000745, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000745, - 0x033, 0x00000001, 0x03F, 0x00000745, 0x033, 0x00000002, - 0x03F, 0x00000745, 0x033, 0x00000003, 0x03F, 0x00000745, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x033, 0x00000000, - 0x03F, 0x00000745, 0x033, 0x00000001, 0x03F, 0x00000745, - 0x033, 0x00000002, 0x03F, 0x00000745, 0x033, 0x00000003, - 0x03F, 0x00000745, 0x9000100f, 0x00000000, 0x40000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x00000745, 0x033, 0x00000001, - 0x03F, 0x00000745, 0x033, 0x00000002, 0x03F, 0x00000745, - 0x033, 0x00000003, 0x03F, 0x00000745, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000745, - 0x033, 0x00000001, 0x03F, 0x00000745, 0x033, 0x00000002, - 0x03F, 0x00000745, 0x033, 0x00000003, 0x03F, 0x00000745, - 0xA0000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000F34, - 0x033, 0x00000001, 0x03F, 0x00000F34, 0x033, 0x00000002, - 0x03F, 0x00000F34, 0x033, 0x00000003, 0x03F, 0x00000F34, - 0xB0000000, 0x00000000, 0x0EF, 0x00000000, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x081, 0x0000F400, 0x087, 0x00016040, - 0x051, 0x00000808, 0x052, 0x00098002, 0x053, 0x0000FA47, - 0x054, 0x00058032, 0x056, 0x00051000, 0x057, 0x0000CE0A, - 0x058, 0x00082030, 0x9300100f, 0x05050505, 0x40000000, 0x00000000, - 0x081, 0x0000F400, 0x087, 0x00016040, 0x051, 0x00000808, - 0x052, 0x00098002, 0x053, 0x0000FA47, 0x054, 0x00058032, - 0x056, 0x00051000, 0x057, 0x0000CE0A, 0x058, 0x00082030, - 0x9300100f, 0x00000000, 0x40000000, 0x00000000, 0x081, 0x0000F400, - 0x087, 0x00016040, 0x051, 0x00000808, 0x052, 0x00098002, - 0x053, 0x0000FA47, 0x054, 0x00058032, 0x056, 0x00051000, - 0x057, 0x0000CE0A, 0x058, 0x00082030, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x081, 0x0000F400, 0x087, 0x00016040, - 0x051, 0x00000808, 0x052, 0x00098002, 0x053, 0x0000FA47, - 0x054, 0x00058032, 0x056, 0x00051000, 0x057, 0x0000CE0A, - 0x058, 0x00082030, 0x9000100f, 0x0a0a0a0a, 0x40000000, 0x00000000, - 0x081, 0x0000F400, 0x087, 0x00016040, 0x051, 0x00000808, - 0x052, 0x00098002, 0x053, 0x0000FA47, 0x054, 0x00058032, - 0x056, 0x00051000, 0x057, 0x0000CE0A, 0x058, 0x00082030, - 0x9000100f, 0x05050505, 0x40000000, 0x00000000, 0x081, 0x0000F400, - 0x087, 0x00016040, 0x051, 0x00000808, 0x052, 0x00098002, - 0x053, 0x0000FA47, 0x054, 0x00058032, 0x056, 0x00051000, - 0x057, 0x0000CE0A, 0x058, 0x00082030, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x081, 0x0000F400, 0x087, 0x00016040, - 0x051, 0x00000808, 0x052, 0x00098002, 0x053, 0x0000FA47, - 0x054, 0x00058032, 0x056, 0x00051000, 0x057, 0x0000CE0A, - 0x058, 0x00082030, 0x9000200f, 0x00000000, 0x40000000, 0x00000000, - 0x081, 0x0000F400, 0x087, 0x00016040, 0x051, 0x00000808, - 0x052, 0x00098002, 0x053, 0x0000FA47, 0x054, 0x00058032, - 0x056, 0x00051000, 0x057, 0x0000CE0A, 0x058, 0x00082030, - 0xA0000000, 0x00000000, 0x081, 0x0000F000, 0x087, 0x00016040, - 0x051, 0x00000C00, 0x052, 0x0007C241, 0x053, 0x0001C069, - 0x054, 0x00078032, 0x057, 0x0000CE0A, 0x058, 0x00058750, - 0xB0000000, 0x00000000, 0x0EF, 0x00000800, 0x8300100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9300100f, 0x05050505, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9300100f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9300200f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9000100f, 0x0a0a0a0a, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9000100f, 0x05050505, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9000100f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0x9000200f, 0x00000000, - 0x40000000, 0x00000000, 0x033, 0x00000000, 0x03F, 0x00000003, - 0x033, 0x00000001, 0x03F, 0x00000006, 0x033, 0x00000002, - 0x03F, 0x00000009, 0x033, 0x00000003, 0x03F, 0x00000026, - 0x033, 0x00000004, 0x03F, 0x00000029, 0x033, 0x00000005, - 0x03F, 0x0000002C, 0x033, 0x00000006, 0x03F, 0x0000002F, - 0x033, 0x00000007, 0x03F, 0x00000033, 0x033, 0x00000008, - 0x03F, 0x00000036, 0x033, 0x00000009, 0x03F, 0x00000039, - 0x033, 0x0000000A, 0x03F, 0x0000003C, 0xA0000000, 0x00000000, - 0x033, 0x00000000, 0x03F, 0x0005142C, 0x033, 0x00000001, - 0x03F, 0x0005142F, 0x033, 0x00000002, 0x03F, 0x00051432, - 0x033, 0x00000003, 0x03F, 0x00051C87, 0x033, 0x00000004, - 0x03F, 0x00051C8A, 0x033, 0x00000005, 0x03F, 0x00051C8D, - 0x033, 0x00000006, 0x03F, 0x00051CEB, 0x033, 0x00000007, - 0x03F, 0x00051CEE, 0x033, 0x00000008, 0x03F, 0x00051CF1, - 0x033, 0x00000009, 0x03F, 0x00051CF4, 0x033, 0x0000000A, - 0x03F, 0x00051CF7, 0xB0000000, 0x00000000, 0x0EF, 0x00000000, - 0x0EF, 0x00000010, 0x033, 0x00000000, 0x008, 0x0009C060, - 0x033, 0x00000001, 0x008, 0x0009C060, 0x0EF, 0x00000000, - 0x033, 0x000000A2, 0x0EF, 0x00080000, 0x03E, 0x0000593F, - 0x03F, 0x000C0F4F, 0x0EF, 0x00000000, 0x033, 0x000000A3, - 0x0EF, 0x00080000, 0x03E, 0x00005934, 0x03F, 0x0005AFCF, - 0x0EF, 0x00000000, - -}; - -void odm_read_and_config_mp_8822b_radiob(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 c_cond; - bool is_matched = true, is_skipped = false; - u32 *array = array_mp_8822b_radiob; - - u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - for (; (i + 1) < ARRAY_SIZE(array_mp_8822b_radiob); i = i + 2) { - v1 = array[i]; - v2 = array[i + 1]; - - if (v1 & BIT(31)) { /* positive condition*/ - c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28); - if (c_cond == COND_ENDIF) { /*end*/ - is_matched = true; - is_skipped = false; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ENDIF\n"); - } else if (c_cond == COND_ELSE) { /*else*/ - is_matched = is_skipped ? false : true; - ODM_RT_TRACE(dm, ODM_COMP_INIT, "ELSE\n"); - } else { /*if , else if*/ - pre_v1 = v1; - pre_v2 = v2; - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "IF or ELSE IF\n"); - } - } else if (v1 & BIT(30)) { /*negative condition*/ - if (is_skipped) { - is_matched = false; - continue; - } - - if (check_positive(dm, pre_v1, pre_v2, v1, v2)) { - is_matched = true; - is_skipped = true; - } else { - is_matched = false; - is_skipped = false; - } - } else if (is_matched) { - odm_config_rf_radio_b_8822b(dm, v1, v2); - } - } -} - -u32 odm_get_version_mp_8822b_radiob(void) { return 67; } - -/****************************************************************************** - * txpowertrack.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_8822b[][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, - 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 15, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, - 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, - {0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, - 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_8822b[][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, - 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 19, 19, 19, 19}, - {0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, - 11, 12, 12, 13, 14, 15, 16, 17, 17, 18, 18, 18, 18, 18, 18}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, - 10, 11, 12, 13, 14, 15, 15, 16, 16, 17, 17, 17, 17, 17, 17}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_8822b[][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, - 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 15, 15, 15}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, - 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, - {0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, - 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_8822b[][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20}, - {0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, - 10, 11, 11, 12, 13, 14, 15, 16, 16, 17, 17, 18, 18, 18, 18}, - {0, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, - 11, 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 18, 18, 18, 18}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -void odm_read_and_config_mp_8822b_txpowertrack(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type0.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type0_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, - 9, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type0_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 10, 10, 11, 12, 13, 14, 14, 15, 15, 15, 16, 16}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type0_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type0_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 12, 13, 13, 14, 14, 15, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 15}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type0_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type0_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type0_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type0_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type0_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type0_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type0_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type0_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -void odm_read_and_config_mp_8822b_txpowertrack_type0(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type0_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type1.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type1_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, - 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 15, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, - 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, - {0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, - 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type1_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, - 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 19, 19, 19, 19}, - {0, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, - 11, 12, 12, 13, 14, 15, 16, 17, 17, 18, 18, 18, 18, 18, 18}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, - 10, 11, 12, 13, 14, 15, 15, 16, 16, 17, 17, 17, 17, 17, 17}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type1_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, - 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 15, 15, 15}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, - 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, - {0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, - 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type1_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20}, - {0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, - 10, 11, 11, 12, 13, 14, 15, 16, 16, 17, 17, 18, 18, 18, 18}, - {0, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, - 11, 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 18, 18, 18, 18}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type1_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type1_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type1_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type1_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type1_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type1_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type1_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type1_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -void odm_read_and_config_mp_8822b_txpowertrack_type1(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type1_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type2.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type2_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type2_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type2_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type2_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type2_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -void odm_read_and_config_mp_8822b_txpowertrack_type2(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type2_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type3_type5.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type3_type5_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type3_type5_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type3_type5_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type3_type5_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type3_type5_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -void odm_read_and_config_mp_8822b_txpowertrack_type3_type5( - struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory( - dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory( - dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory( - dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory( - dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type3_type5_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type4.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type4_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type4_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type4_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, - 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type4_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type4_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -void odm_read_and_config_mp_8822b_txpowertrack_type4(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type4_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type6.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type6_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, - 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 15, 15, 15}, - {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 10, - 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16}, - {0, 1, 2, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, - 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type6_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, - 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 19, 19, 19, 19}, - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 9, 11, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 20, 21, 21, 21, 21, 21, 21}, - {0, 1, 2, 3, 4, 5, 6, 6, 7, 7, 8, 9, 10, 11, 12, - 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 20, 20, 21, 21, 21}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type6_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, - 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 17}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, - 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15}, - {0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9, 10, - 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type6_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, - 13, 14, 15, 15, 16, 17, 18, 19, 20, 20, 21, 21, 21, 21, 21}, - {0, 1, 2, 2, 3, 4, 4, 5, 7, 7, 8, 9, 10, 11, 11, - 12, 13, 13, 14, 15, 16, 17, 18, 18, 19, 19, 20, 20, 21, 21}, - {0, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 14, 15, 16, 17, 17, 18, 19, 19, 20, 20, 20, 20, 20}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type6_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type6_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type6_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type6_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type6_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type6_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type6_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type6_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -void odm_read_and_config_mp_8822b_txpowertrack_type6(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type6_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type7.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type7_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, - 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 15, 15, 15}, - {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 10, - 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16}, - {0, 1, 2, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, - 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type7_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, - 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 19, 19, 19, 19}, - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 9, 11, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 20, 21, 21, 21, 21, 21, 21}, - {0, 1, 2, 3, 4, 5, 6, 6, 7, 7, 8, 9, 10, 11, 12, - 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 20, 20, 21, 21, 21}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type7_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, - 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 17}, - {0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, - 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15}, - {0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9, 10, - 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type7_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, - 13, 14, 15, 15, 16, 17, 18, 19, 20, 20, 21, 21, 21, 21, 21}, - {0, 1, 2, 2, 3, 4, 4, 5, 7, 7, 8, 9, 10, 11, 11, - 12, 13, 13, 14, 15, 16, 17, 18, 18, 19, 19, 20, 20, 21, 21}, - {0, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 14, 15, 16, 17, 17, 18, 19, 19, 20, 20, 20, 20, 20}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type7_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type7_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type7_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type7_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type7_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type7_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type7_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type7_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -void odm_read_and_config_mp_8822b_txpowertrack_type7(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type7_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type8.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type8_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type8_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type8_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type8_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, - 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, - 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type8_8822b[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}; - -void odm_read_and_config_mp_8822b_txpowertrack_type8(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type8_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpowertrack_type9.TXT - ******************************************************************************/ - -static u8 delta_swing_index_mp_5gb_n_txpwrtrack_type9_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, - 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14}, - {0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, - 9, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15}, -}; - -static u8 delta_swing_index_mp_5gb_p_txpwrtrack_type9_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 10, 10, 11, 12, 13, 14, 14, 15, 15, 15, 16, 16}, -}; - -static u8 delta_swing_index_mp_5ga_n_txpwrtrack_type9_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14}, -}; - -static u8 delta_swing_index_mp_5ga_p_txpwrtrack_type9_8822b - [][DELTA_SWINGIDX_SIZE] = { - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 12, 13, 13, 14, 14, 15, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 15, 15}, - {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 9, 9, 10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 15}, -}; - -static u8 delta_swing_index_mp_2gb_n_txpwrtrack_type9_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2gb_p_txpwrtrack_type9_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2ga_n_txpwrtrack_type9_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2ga_p_txpwrtrack_type9_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type9_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17}; - -static u8 delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type9_8822b[] = { - 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -static u8 delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type9_8822b[] = { - 0, 1, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18}; - -static u8 delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type9_8822b[] = { - 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, - 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 22}; - -void odm_read_and_config_mp_8822b_txpowertrack_type9(struct phy_dm_struct *dm) -{ - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8822b\n"); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, - delta_swing_index_mp_2ga_p_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, - delta_swing_index_mp_2ga_n_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, - delta_swing_index_mp_2gb_p_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, - delta_swing_index_mp_2gb_n_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, - delta_swing_index_mp_2g_cck_a_p_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, - delta_swing_index_mp_2g_cck_a_n_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, - delta_swing_index_mp_2g_cck_b_p_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, - delta_swing_index_mp_2g_cck_b_n_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE); - - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, - delta_swing_index_mp_5ga_p_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, - delta_swing_index_mp_5ga_n_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, - delta_swing_index_mp_5gb_p_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE * 3); - odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, - delta_swing_index_mp_5gb_n_txpwrtrack_type9_8822b, - DELTA_SWINGIDX_SIZE * 3); -} - -/****************************************************************************** - * txpwr_lmt.TXT - ******************************************************************************/ - -static const char *const array_mp_8822b_txpwr_lmt[] = { - "FCC", "2.4G", "20M", "CCK", "1T", "01", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "01", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "01", "30", "FCC", "2.4G", "20M", "CCK", "1T", "02", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "02", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "02", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "03", "32", "ETSI", "2.4G", "20M", "CCK", "1T", - "03", "28", "MKK", "2.4G", "20M", "CCK", "1T", "03", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "04", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "04", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "04", "30", "FCC", "2.4G", "20M", "CCK", "1T", "05", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "05", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "05", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "06", "32", "ETSI", "2.4G", "20M", "CCK", "1T", - "06", "28", "MKK", "2.4G", "20M", "CCK", "1T", "06", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "07", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "07", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "07", "30", "FCC", "2.4G", "20M", "CCK", "1T", "08", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "08", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "08", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "09", "32", "ETSI", "2.4G", "20M", "CCK", "1T", - "09", "28", "MKK", "2.4G", "20M", "CCK", "1T", "09", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "10", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "10", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "10", "30", "FCC", "2.4G", "20M", "CCK", "1T", "11", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "11", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "11", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "12", "26", "ETSI", "2.4G", "20M", "CCK", "1T", - "12", "28", "MKK", "2.4G", "20M", "CCK", "1T", "12", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "13", "20", "ETSI", "2.4G", - "20M", "CCK", "1T", "13", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "13", "28", "FCC", "2.4G", "20M", "CCK", "1T", "14", - "63", "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", "MKK", - "2.4G", "20M", "CCK", "1T", "14", "32", "FCC", "2.4G", "20M", - "OFDM", "1T", "01", "26", "ETSI", "2.4G", "20M", "OFDM", "1T", - "01", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "01", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "02", "30", "ETSI", "2.4G", - "20M", "OFDM", "1T", "02", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "02", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "03", - "32", "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "03", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "04", "34", "ETSI", "2.4G", "20M", "OFDM", "1T", - "04", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "04", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "05", "34", "ETSI", "2.4G", - "20M", "OFDM", "1T", "05", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "05", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "06", - "34", "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "06", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "07", "34", "ETSI", "2.4G", "20M", "OFDM", "1T", - "07", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "07", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "08", "34", "ETSI", "2.4G", - "20M", "OFDM", "1T", "08", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "08", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "09", - "32", "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "09", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "10", "30", "ETSI", "2.4G", "20M", "OFDM", "1T", - "10", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "10", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28", "ETSI", "2.4G", - "20M", "OFDM", "1T", "11", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "11", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "12", - "22", "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "12", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "13", "14", "ETSI", "2.4G", "20M", "OFDM", "1T", - "13", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "13", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", "ETSI", "2.4G", - "20M", "OFDM", "1T", "14", "63", "MKK", "2.4G", "20M", "OFDM", - "1T", "14", "63", "FCC", "2.4G", "20M", "HT", "1T", "01", - "26", "ETSI", "2.4G", "20M", "HT", "1T", "01", "30", "MKK", - "2.4G", "20M", "HT", "1T", "01", "34", "FCC", "2.4G", "20M", - "HT", "1T", "02", "30", "ETSI", "2.4G", "20M", "HT", "1T", - "02", "30", "MKK", "2.4G", "20M", "HT", "1T", "02", "34", - "FCC", "2.4G", "20M", "HT", "1T", "03", "32", "ETSI", "2.4G", - "20M", "HT", "1T", "03", "30", "MKK", "2.4G", "20M", "HT", - "1T", "03", "34", "FCC", "2.4G", "20M", "HT", "1T", "04", - "34", "ETSI", "2.4G", "20M", "HT", "1T", "04", "30", "MKK", - "2.4G", "20M", "HT", "1T", "04", "34", "FCC", "2.4G", "20M", - "HT", "1T", "05", "34", "ETSI", "2.4G", "20M", "HT", "1T", - "05", "30", "MKK", "2.4G", "20M", "HT", "1T", "05", "34", - "FCC", "2.4G", "20M", "HT", "1T", "06", "34", "ETSI", "2.4G", - "20M", "HT", "1T", "06", "30", "MKK", "2.4G", "20M", "HT", - "1T", "06", "34", "FCC", "2.4G", "20M", "HT", "1T", "07", - "34", "ETSI", "2.4G", "20M", "HT", "1T", "07", "30", "MKK", - "2.4G", "20M", "HT", "1T", "07", "34", "FCC", "2.4G", "20M", - "HT", "1T", "08", "34", "ETSI", "2.4G", "20M", "HT", "1T", - "08", "30", "MKK", "2.4G", "20M", "HT", "1T", "08", "34", - "FCC", "2.4G", "20M", "HT", "1T", "09", "32", "ETSI", "2.4G", - "20M", "HT", "1T", "09", "30", "MKK", "2.4G", "20M", "HT", - "1T", "09", "34", "FCC", "2.4G", "20M", "HT", "1T", "10", - "30", "ETSI", "2.4G", "20M", "HT", "1T", "10", "30", "MKK", - "2.4G", "20M", "HT", "1T", "10", "34", "FCC", "2.4G", "20M", - "HT", "1T", "11", "26", "ETSI", "2.4G", "20M", "HT", "1T", - "11", "30", "MKK", "2.4G", "20M", "HT", "1T", "11", "34", - "FCC", "2.4G", "20M", "HT", "1T", "12", "20", "ETSI", "2.4G", - "20M", "HT", "1T", "12", "30", "MKK", "2.4G", "20M", "HT", - "1T", "12", "34", "FCC", "2.4G", "20M", "HT", "1T", "13", - "14", "ETSI", "2.4G", "20M", "HT", "1T", "13", "30", "MKK", - "2.4G", "20M", "HT", "1T", "13", "34", "FCC", "2.4G", "20M", - "HT", "1T", "14", "63", "ETSI", "2.4G", "20M", "HT", "1T", - "14", "63", "MKK", "2.4G", "20M", "HT", "1T", "14", "63", - "FCC", "2.4G", "20M", "HT", "2T", "01", "26", "ETSI", "2.4G", - "20M", "HT", "2T", "01", "18", "MKK", "2.4G", "20M", "HT", - "2T", "01", "30", "FCC", "2.4G", "20M", "HT", "2T", "02", - "28", "ETSI", "2.4G", "20M", "HT", "2T", "02", "18", "MKK", - "2.4G", "20M", "HT", "2T", "02", "30", "FCC", "2.4G", "20M", - "HT", "2T", "03", "30", "ETSI", "2.4G", "20M", "HT", "2T", - "03", "18", "MKK", "2.4G", "20M", "HT", "2T", "03", "30", - "FCC", "2.4G", "20M", "HT", "2T", "04", "30", "ETSI", "2.4G", - "20M", "HT", "2T", "04", "18", "MKK", "2.4G", "20M", "HT", - "2T", "04", "30", "FCC", "2.4G", "20M", "HT", "2T", "05", - "32", "ETSI", "2.4G", "20M", "HT", "2T", "05", "18", "MKK", - "2.4G", "20M", "HT", "2T", "05", "30", "FCC", "2.4G", "20M", - "HT", "2T", "06", "32", "ETSI", "2.4G", "20M", "HT", "2T", - "06", "18", "MKK", "2.4G", "20M", "HT", "2T", "06", "30", - "FCC", "2.4G", "20M", "HT", "2T", "07", "32", "ETSI", "2.4G", - "20M", "HT", "2T", "07", "18", "MKK", "2.4G", "20M", "HT", - "2T", "07", "30", "FCC", "2.4G", "20M", "HT", "2T", "08", - "30", "ETSI", "2.4G", "20M", "HT", "2T", "08", "18", "MKK", - "2.4G", "20M", "HT", "2T", "08", "30", "FCC", "2.4G", "20M", - "HT", "2T", "09", "30", "ETSI", "2.4G", "20M", "HT", "2T", - "09", "18", "MKK", "2.4G", "20M", "HT", "2T", "09", "30", - "FCC", "2.4G", "20M", "HT", "2T", "10", "28", "ETSI", "2.4G", - "20M", "HT", "2T", "10", "18", "MKK", "2.4G", "20M", "HT", - "2T", "10", "30", "FCC", "2.4G", "20M", "HT", "2T", "11", - "26", "ETSI", "2.4G", "20M", "HT", "2T", "11", "18", "MKK", - "2.4G", "20M", "HT", "2T", "11", "30", "FCC", "2.4G", "20M", - "HT", "2T", "12", "20", "ETSI", "2.4G", "20M", "HT", "2T", - "12", "18", "MKK", "2.4G", "20M", "HT", "2T", "12", "30", - "FCC", "2.4G", "20M", "HT", "2T", "13", "14", "ETSI", "2.4G", - "20M", "HT", "2T", "13", "18", "MKK", "2.4G", "20M", "HT", - "2T", "13", "30", "FCC", "2.4G", "20M", "HT", "2T", "14", - "63", "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", "MKK", - "2.4G", "20M", "HT", "2T", "14", "63", "FCC", "2.4G", "40M", - "HT", "1T", "01", "63", "ETSI", "2.4G", "40M", "HT", "1T", - "01", "63", "MKK", "2.4G", "40M", "HT", "1T", "01", "63", - "FCC", "2.4G", "40M", "HT", "1T", "02", "63", "ETSI", "2.4G", - "40M", "HT", "1T", "02", "63", "MKK", "2.4G", "40M", "HT", - "1T", "02", "63", "FCC", "2.4G", "40M", "HT", "1T", "03", - "26", "ETSI", "2.4G", "40M", "HT", "1T", "03", "30", "MKK", - "2.4G", "40M", "HT", "1T", "03", "34", "FCC", "2.4G", "40M", - "HT", "1T", "04", "26", "ETSI", "2.4G", "40M", "HT", "1T", - "04", "30", "MKK", "2.4G", "40M", "HT", "1T", "04", "34", - "FCC", "2.4G", "40M", "HT", "1T", "05", "30", "ETSI", "2.4G", - "40M", "HT", "1T", "05", "30", "MKK", "2.4G", "40M", "HT", - "1T", "05", "34", "FCC", "2.4G", "40M", "HT", "1T", "06", - "32", "ETSI", "2.4G", "40M", "HT", "1T", "06", "30", "MKK", - "2.4G", "40M", "HT", "1T", "06", "34", "FCC", "2.4G", "40M", - "HT", "1T", "07", "30", "ETSI", "2.4G", "40M", "HT", "1T", - "07", "30", "MKK", "2.4G", "40M", "HT", "1T", "07", "34", - "FCC", "2.4G", "40M", "HT", "1T", "08", "26", "ETSI", "2.4G", - "40M", "HT", "1T", "08", "30", "MKK", "2.4G", "40M", "HT", - "1T", "08", "34", "FCC", "2.4G", "40M", "HT", "1T", "09", - "26", "ETSI", "2.4G", "40M", "HT", "1T", "09", "30", "MKK", - "2.4G", "40M", "HT", "1T", "09", "34", "FCC", "2.4G", "40M", - "HT", "1T", "10", "20", "ETSI", "2.4G", "40M", "HT", "1T", - "10", "30", "MKK", "2.4G", "40M", "HT", "1T", "10", "34", - "FCC", "2.4G", "40M", "HT", "1T", "11", "14", "ETSI", "2.4G", - "40M", "HT", "1T", "11", "30", "MKK", "2.4G", "40M", "HT", - "1T", "11", "34", "FCC", "2.4G", "40M", "HT", "1T", "12", - "63", "ETSI", "2.4G", "40M", "HT", "1T", "12", "63", "MKK", - "2.4G", "40M", "HT", "1T", "12", "63", "FCC", "2.4G", "40M", - "HT", "1T", "13", "63", "ETSI", "2.4G", "40M", "HT", "1T", - "13", "63", "MKK", "2.4G", "40M", "HT", "1T", "13", "63", - "FCC", "2.4G", "40M", "HT", "1T", "14", "63", "ETSI", "2.4G", - "40M", "HT", "1T", "14", "63", "MKK", "2.4G", "40M", "HT", - "1T", "14", "63", "FCC", "2.4G", "40M", "HT", "2T", "01", - "63", "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", "MKK", - "2.4G", "40M", "HT", "2T", "01", "63", "FCC", "2.4G", "40M", - "HT", "2T", "02", "63", "ETSI", "2.4G", "40M", "HT", "2T", - "02", "63", "MKK", "2.4G", "40M", "HT", "2T", "02", "63", - "FCC", "2.4G", "40M", "HT", "2T", "03", "24", "ETSI", "2.4G", - "40M", "HT", "2T", "03", "18", "MKK", "2.4G", "40M", "HT", - "2T", "03", "30", "FCC", "2.4G", "40M", "HT", "2T", "04", - "24", "ETSI", "2.4G", "40M", "HT", "2T", "04", "18", "MKK", - "2.4G", "40M", "HT", "2T", "04", "30", "FCC", "2.4G", "40M", - "HT", "2T", "05", "26", "ETSI", "2.4G", "40M", "HT", "2T", - "05", "18", "MKK", "2.4G", "40M", "HT", "2T", "05", "30", - "FCC", "2.4G", "40M", "HT", "2T", "06", "28", "ETSI", "2.4G", - "40M", "HT", "2T", "06", "18", "MKK", "2.4G", "40M", "HT", - "2T", "06", "30", "FCC", "2.4G", "40M", "HT", "2T", "07", - "26", "ETSI", "2.4G", "40M", "HT", "2T", "07", "18", "MKK", - "2.4G", "40M", "HT", "2T", "07", "30", "FCC", "2.4G", "40M", - "HT", "2T", "08", "26", "ETSI", "2.4G", "40M", "HT", "2T", - "08", "18", "MKK", "2.4G", "40M", "HT", "2T", "08", "30", - "FCC", "2.4G", "40M", "HT", "2T", "09", "26", "ETSI", "2.4G", - "40M", "HT", "2T", "09", "18", "MKK", "2.4G", "40M", "HT", - "2T", "09", "30", "FCC", "2.4G", "40M", "HT", "2T", "10", - "20", "ETSI", "2.4G", "40M", "HT", "2T", "10", "18", "MKK", - "2.4G", "40M", "HT", "2T", "10", "30", "FCC", "2.4G", "40M", - "HT", "2T", "11", "14", "ETSI", "2.4G", "40M", "HT", "2T", - "11", "18", "MKK", "2.4G", "40M", "HT", "2T", "11", "30", - "FCC", "2.4G", "40M", "HT", "2T", "12", "63", "ETSI", "2.4G", - "40M", "HT", "2T", "12", "63", "MKK", "2.4G", "40M", "HT", - "2T", "12", "63", "FCC", "2.4G", "40M", "HT", "2T", "13", - "63", "ETSI", "2.4G", "40M", "HT", "2T", "13", "63", "MKK", - "2.4G", "40M", "HT", "2T", "13", "63", "FCC", "2.4G", "40M", - "HT", "2T", "14", "63", "ETSI", "2.4G", "40M", "HT", "2T", - "14", "63", "MKK", "2.4G", "40M", "HT", "2T", "14", "63", - "FCC", "5G", "20M", "OFDM", "1T", "36", "30", "ETSI", "5G", - "20M", "OFDM", "1T", "36", "32", "MKK", "5G", "20M", "OFDM", - "1T", "36", "30", "FCC", "5G", "20M", "OFDM", "1T", "40", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", "MKK", - "5G", "20M", "OFDM", "1T", "40", "30", "FCC", "5G", "20M", - "OFDM", "1T", "44", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "44", "32", "MKK", "5G", "20M", "OFDM", "1T", "44", "30", - "FCC", "5G", "20M", "OFDM", "1T", "48", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "48", "32", "MKK", "5G", "20M", "OFDM", - "1T", "48", "30", "FCC", "5G", "20M", "OFDM", "1T", "52", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", "MKK", - "5G", "20M", "OFDM", "1T", "52", "28", "FCC", "5G", "20M", - "OFDM", "1T", "56", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "56", "32", "MKK", "5G", "20M", "OFDM", "1T", "56", "28", - "FCC", "5G", "20M", "OFDM", "1T", "60", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "60", "32", "MKK", "5G", "20M", "OFDM", - "1T", "60", "28", "FCC", "5G", "20M", "OFDM", "1T", "64", - "28", "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", "MKK", - "5G", "20M", "OFDM", "1T", "64", "28", "FCC", "5G", "20M", - "OFDM", "1T", "100", "26", "ETSI", "5G", "20M", "OFDM", "1T", - "100", "32", "MKK", "5G", "20M", "OFDM", "1T", "100", "32", - "FCC", "5G", "20M", "OFDM", "1T", "104", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "104", "32", "MKK", "5G", "20M", "OFDM", - "1T", "104", "32", "FCC", "5G", "20M", "OFDM", "1T", "108", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", "MKK", - "5G", "20M", "OFDM", "1T", "108", "32", "FCC", "5G", "20M", - "OFDM", "1T", "112", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "112", "32", "MKK", "5G", "20M", "OFDM", "1T", "112", "32", - "FCC", "5G", "20M", "OFDM", "1T", "116", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "116", "32", "MKK", "5G", "20M", "OFDM", - "1T", "116", "32", "FCC", "5G", "20M", "OFDM", "1T", "120", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", "MKK", - "5G", "20M", "OFDM", "1T", "120", "32", "FCC", "5G", "20M", - "OFDM", "1T", "124", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "124", "32", "MKK", "5G", "20M", "OFDM", "1T", "124", "32", - "FCC", "5G", "20M", "OFDM", "1T", "128", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "128", "32", "MKK", "5G", "20M", "OFDM", - "1T", "128", "32", "FCC", "5G", "20M", "OFDM", "1T", "132", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", "MKK", - "5G", "20M", "OFDM", "1T", "132", "32", "FCC", "5G", "20M", - "OFDM", "1T", "136", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "136", "32", "MKK", "5G", "20M", "OFDM", "1T", "136", "32", - "FCC", "5G", "20M", "OFDM", "1T", "140", "28", "ETSI", "5G", - "20M", "OFDM", "1T", "140", "32", "MKK", "5G", "20M", "OFDM", - "1T", "140", "32", "FCC", "5G", "20M", "OFDM", "1T", "144", - "28", "ETSI", "5G", "20M", "OFDM", "1T", "144", "32", "MKK", - "5G", "20M", "OFDM", "1T", "144", "63", "FCC", "5G", "20M", - "OFDM", "1T", "149", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "149", "63", "MKK", "5G", "20M", "OFDM", "1T", "149", "63", - "FCC", "5G", "20M", "OFDM", "1T", "153", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "153", "63", "MKK", "5G", "20M", "OFDM", - "1T", "153", "63", "FCC", "5G", "20M", "OFDM", "1T", "157", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "157", "63", "MKK", - "5G", "20M", "OFDM", "1T", "157", "63", "FCC", "5G", "20M", - "OFDM", "1T", "161", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "161", "63", "MKK", "5G", "20M", "OFDM", "1T", "161", "63", - "FCC", "5G", "20M", "OFDM", "1T", "165", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "165", "63", "MKK", "5G", "20M", "OFDM", - "1T", "165", "63", "FCC", "5G", "20M", "HT", "1T", "36", - "30", "ETSI", "5G", "20M", "HT", "1T", "36", "32", "MKK", - "5G", "20M", "HT", "1T", "36", "28", "FCC", "5G", "20M", - "HT", "1T", "40", "32", "ETSI", "5G", "20M", "HT", "1T", - "40", "32", "MKK", "5G", "20M", "HT", "1T", "40", "28", - "FCC", "5G", "20M", "HT", "1T", "44", "32", "ETSI", "5G", - "20M", "HT", "1T", "44", "32", "MKK", "5G", "20M", "HT", - "1T", "44", "28", "FCC", "5G", "20M", "HT", "1T", "48", - "32", "ETSI", "5G", "20M", "HT", "1T", "48", "32", "MKK", - "5G", "20M", "HT", "1T", "48", "28", "FCC", "5G", "20M", - "HT", "1T", "52", "32", "ETSI", "5G", "20M", "HT", "1T", - "52", "32", "MKK", "5G", "20M", "HT", "1T", "52", "28", - "FCC", "5G", "20M", "HT", "1T", "56", "32", "ETSI", "5G", - "20M", "HT", "1T", "56", "32", "MKK", "5G", "20M", "HT", - "1T", "56", "28", "FCC", "5G", "20M", "HT", "1T", "60", - "32", "ETSI", "5G", "20M", "HT", "1T", "60", "32", "MKK", - "5G", "20M", "HT", "1T", "60", "28", "FCC", "5G", "20M", - "HT", "1T", "64", "28", "ETSI", "5G", "20M", "HT", "1T", - "64", "32", "MKK", "5G", "20M", "HT", "1T", "64", "28", - "FCC", "5G", "20M", "HT", "1T", "100", "26", "ETSI", "5G", - "20M", "HT", "1T", "100", "32", "MKK", "5G", "20M", "HT", - "1T", "100", "32", "FCC", "5G", "20M", "HT", "1T", "104", - "32", "ETSI", "5G", "20M", "HT", "1T", "104", "32", "MKK", - "5G", "20M", "HT", "1T", "104", "32", "FCC", "5G", "20M", - "HT", "1T", "108", "32", "ETSI", "5G", "20M", "HT", "1T", - "108", "32", "MKK", "5G", "20M", "HT", "1T", "108", "32", - "FCC", "5G", "20M", "HT", "1T", "112", "32", "ETSI", "5G", - "20M", "HT", "1T", "112", "32", "MKK", "5G", "20M", "HT", - "1T", "112", "32", "FCC", "5G", "20M", "HT", "1T", "116", - "32", "ETSI", "5G", "20M", "HT", "1T", "116", "32", "MKK", - "5G", "20M", "HT", "1T", "116", "32", "FCC", "5G", "20M", - "HT", "1T", "120", "32", "ETSI", "5G", "20M", "HT", "1T", - "120", "32", "MKK", "5G", "20M", "HT", "1T", "120", "32", - "FCC", "5G", "20M", "HT", "1T", "124", "32", "ETSI", "5G", - "20M", "HT", "1T", "124", "32", "MKK", "5G", "20M", "HT", - "1T", "124", "32", "FCC", "5G", "20M", "HT", "1T", "128", - "32", "ETSI", "5G", "20M", "HT", "1T", "128", "32", "MKK", - "5G", "20M", "HT", "1T", "128", "32", "FCC", "5G", "20M", - "HT", "1T", "132", "32", "ETSI", "5G", "20M", "HT", "1T", - "132", "32", "MKK", "5G", "20M", "HT", "1T", "132", "32", - "FCC", "5G", "20M", "HT", "1T", "136", "32", "ETSI", "5G", - "20M", "HT", "1T", "136", "32", "MKK", "5G", "20M", "HT", - "1T", "136", "32", "FCC", "5G", "20M", "HT", "1T", "140", - "26", "ETSI", "5G", "20M", "HT", "1T", "140", "32", "MKK", - "5G", "20M", "HT", "1T", "140", "32", "FCC", "5G", "20M", - "HT", "1T", "144", "26", "ETSI", "5G", "20M", "HT", "1T", - "144", "63", "MKK", "5G", "20M", "HT", "1T", "144", "63", - "FCC", "5G", "20M", "HT", "1T", "149", "32", "ETSI", "5G", - "20M", "HT", "1T", "149", "63", "MKK", "5G", "20M", "HT", - "1T", "149", "63", "FCC", "5G", "20M", "HT", "1T", "153", - "32", "ETSI", "5G", "20M", "HT", "1T", "153", "63", "MKK", - "5G", "20M", "HT", "1T", "153", "63", "FCC", "5G", "20M", - "HT", "1T", "157", "32", "ETSI", "5G", "20M", "HT", "1T", - "157", "63", "MKK", "5G", "20M", "HT", "1T", "157", "63", - "FCC", "5G", "20M", "HT", "1T", "161", "32", "ETSI", "5G", - "20M", "HT", "1T", "161", "63", "MKK", "5G", "20M", "HT", - "1T", "161", "63", "FCC", "5G", "20M", "HT", "1T", "165", - "32", "ETSI", "5G", "20M", "HT", "1T", "165", "63", "MKK", - "5G", "20M", "HT", "1T", "165", "63", "FCC", "5G", "20M", - "HT", "2T", "36", "28", "ETSI", "5G", "20M", "HT", "2T", - "36", "20", "MKK", "5G", "20M", "HT", "2T", "36", "22", - "FCC", "5G", "20M", "HT", "2T", "40", "30", "ETSI", "5G", - "20M", "HT", "2T", "40", "20", "MKK", "5G", "20M", "HT", - "2T", "40", "22", "FCC", "5G", "20M", "HT", "2T", "44", - "30", "ETSI", "5G", "20M", "HT", "2T", "44", "20", "MKK", - "5G", "20M", "HT", "2T", "44", "22", "FCC", "5G", "20M", - "HT", "2T", "48", "30", "ETSI", "5G", "20M", "HT", "2T", - "48", "20", "MKK", "5G", "20M", "HT", "2T", "48", "22", - "FCC", "5G", "20M", "HT", "2T", "52", "30", "ETSI", "5G", - "20M", "HT", "2T", "52", "20", "MKK", "5G", "20M", "HT", - "2T", "52", "22", "FCC", "5G", "20M", "HT", "2T", "56", - "30", "ETSI", "5G", "20M", "HT", "2T", "56", "20", "MKK", - "5G", "20M", "HT", "2T", "56", "22", "FCC", "5G", "20M", - "HT", "2T", "60", "30", "ETSI", "5G", "20M", "HT", "2T", - "60", "20", "MKK", "5G", "20M", "HT", "2T", "60", "22", - "FCC", "5G", "20M", "HT", "2T", "64", "28", "ETSI", "5G", - "20M", "HT", "2T", "64", "20", "MKK", "5G", "20M", "HT", - "2T", "64", "22", "FCC", "5G", "20M", "HT", "2T", "100", - "26", "ETSI", "5G", "20M", "HT", "2T", "100", "20", "MKK", - "5G", "20M", "HT", "2T", "100", "30", "FCC", "5G", "20M", - "HT", "2T", "104", "30", "ETSI", "5G", "20M", "HT", "2T", - "104", "20", "MKK", "5G", "20M", "HT", "2T", "104", "30", - "FCC", "5G", "20M", "HT", "2T", "108", "32", "ETSI", "5G", - "20M", "HT", "2T", "108", "20", "MKK", "5G", "20M", "HT", - "2T", "108", "30", "FCC", "5G", "20M", "HT", "2T", "112", - "32", "ETSI", "5G", "20M", "HT", "2T", "112", "20", "MKK", - "5G", "20M", "HT", "2T", "112", "30", "FCC", "5G", "20M", - "HT", "2T", "116", "32", "ETSI", "5G", "20M", "HT", "2T", - "116", "20", "MKK", "5G", "20M", "HT", "2T", "116", "30", - "FCC", "5G", "20M", "HT", "2T", "120", "32", "ETSI", "5G", - "20M", "HT", "2T", "120", "20", "MKK", "5G", "20M", "HT", - "2T", "120", "30", "FCC", "5G", "20M", "HT", "2T", "124", - "32", "ETSI", "5G", "20M", "HT", "2T", "124", "20", "MKK", - "5G", "20M", "HT", "2T", "124", "30", "FCC", "5G", "20M", - "HT", "2T", "128", "32", "ETSI", "5G", "20M", "HT", "2T", - "128", "20", "MKK", "5G", "20M", "HT", "2T", "128", "30", - "FCC", "5G", "20M", "HT", "2T", "132", "32", "ETSI", "5G", - "20M", "HT", "2T", "132", "20", "MKK", "5G", "20M", "HT", - "2T", "132", "30", "FCC", "5G", "20M", "HT", "2T", "136", - "30", "ETSI", "5G", "20M", "HT", "2T", "136", "20", "MKK", - "5G", "20M", "HT", "2T", "136", "30", "FCC", "5G", "20M", - "HT", "2T", "140", "26", "ETSI", "5G", "20M", "HT", "2T", - "140", "20", "MKK", "5G", "20M", "HT", "2T", "140", "30", - "FCC", "5G", "20M", "HT", "2T", "144", "26", "ETSI", "5G", - "20M", "HT", "2T", "144", "63", "MKK", "5G", "20M", "HT", - "2T", "144", "63", "FCC", "5G", "20M", "HT", "2T", "149", - "32", "ETSI", "5G", "20M", "HT", "2T", "149", "63", "MKK", - "5G", "20M", "HT", "2T", "149", "63", "FCC", "5G", "20M", - "HT", "2T", "153", "32", "ETSI", "5G", "20M", "HT", "2T", - "153", "63", "MKK", "5G", "20M", "HT", "2T", "153", "63", - "FCC", "5G", "20M", "HT", "2T", "157", "32", "ETSI", "5G", - "20M", "HT", "2T", "157", "63", "MKK", "5G", "20M", "HT", - "2T", "157", "63", "FCC", "5G", "20M", "HT", "2T", "161", - "32", "ETSI", "5G", "20M", "HT", "2T", "161", "63", "MKK", - "5G", "20M", "HT", "2T", "161", "63", "FCC", "5G", "20M", - "HT", "2T", "165", "32", "ETSI", "5G", "20M", "HT", "2T", - "165", "63", "MKK", "5G", "20M", "HT", "2T", "165", "63", - "FCC", "5G", "40M", "HT", "1T", "38", "22", "ETSI", "5G", - "40M", "HT", "1T", "38", "30", "MKK", "5G", "40M", "HT", - "1T", "38", "30", "FCC", "5G", "40M", "HT", "1T", "46", - "30", "ETSI", "5G", "40M", "HT", "1T", "46", "30", "MKK", - "5G", "40M", "HT", "1T", "46", "30", "FCC", "5G", "40M", - "HT", "1T", "54", "30", "ETSI", "5G", "40M", "HT", "1T", - "54", "30", "MKK", "5G", "40M", "HT", "1T", "54", "30", - "FCC", "5G", "40M", "HT", "1T", "62", "24", "ETSI", "5G", - "40M", "HT", "1T", "62", "30", "MKK", "5G", "40M", "HT", - "1T", "62", "30", "FCC", "5G", "40M", "HT", "1T", "102", - "24", "ETSI", "5G", "40M", "HT", "1T", "102", "30", "MKK", - "5G", "40M", "HT", "1T", "102", "30", "FCC", "5G", "40M", - "HT", "1T", "110", "30", "ETSI", "5G", "40M", "HT", "1T", - "110", "30", "MKK", "5G", "40M", "HT", "1T", "110", "30", - "FCC", "5G", "40M", "HT", "1T", "118", "30", "ETSI", "5G", - "40M", "HT", "1T", "118", "30", "MKK", "5G", "40M", "HT", - "1T", "118", "30", "FCC", "5G", "40M", "HT", "1T", "126", - "30", "ETSI", "5G", "40M", "HT", "1T", "126", "30", "MKK", - "5G", "40M", "HT", "1T", "126", "30", "FCC", "5G", "40M", - "HT", "1T", "134", "30", "ETSI", "5G", "40M", "HT", "1T", - "134", "30", "MKK", "5G", "40M", "HT", "1T", "134", "30", - "FCC", "5G", "40M", "HT", "1T", "142", "30", "ETSI", "5G", - "40M", "HT", "1T", "142", "63", "MKK", "5G", "40M", "HT", - "1T", "142", "63", "FCC", "5G", "40M", "HT", "1T", "151", - "30", "ETSI", "5G", "40M", "HT", "1T", "151", "63", "MKK", - "5G", "40M", "HT", "1T", "151", "63", "FCC", "5G", "40M", - "HT", "1T", "159", "30", "ETSI", "5G", "40M", "HT", "1T", - "159", "63", "MKK", "5G", "40M", "HT", "1T", "159", "63", - "FCC", "5G", "40M", "HT", "2T", "38", "20", "ETSI", "5G", - "40M", "HT", "2T", "38", "20", "MKK", "5G", "40M", "HT", - "2T", "38", "22", "FCC", "5G", "40M", "HT", "2T", "46", - "30", "ETSI", "5G", "40M", "HT", "2T", "46", "20", "MKK", - "5G", "40M", "HT", "2T", "46", "22", "FCC", "5G", "40M", - "HT", "2T", "54", "30", "ETSI", "5G", "40M", "HT", "2T", - "54", "20", "MKK", "5G", "40M", "HT", "2T", "54", "22", - "FCC", "5G", "40M", "HT", "2T", "62", "22", "ETSI", "5G", - "40M", "HT", "2T", "62", "20", "MKK", "5G", "40M", "HT", - "2T", "62", "22", "FCC", "5G", "40M", "HT", "2T", "102", - "22", "ETSI", "5G", "40M", "HT", "2T", "102", "20", "MKK", - "5G", "40M", "HT", "2T", "102", "30", "FCC", "5G", "40M", - "HT", "2T", "110", "30", "ETSI", "5G", "40M", "HT", "2T", - "110", "20", "MKK", "5G", "40M", "HT", "2T", "110", "30", - "FCC", "5G", "40M", "HT", "2T", "118", "30", "ETSI", "5G", - "40M", "HT", "2T", "118", "20", "MKK", "5G", "40M", "HT", - "2T", "118", "30", "FCC", "5G", "40M", "HT", "2T", "126", - "30", "ETSI", "5G", "40M", "HT", "2T", "126", "20", "MKK", - "5G", "40M", "HT", "2T", "126", "30", "FCC", "5G", "40M", - "HT", "2T", "134", "30", "ETSI", "5G", "40M", "HT", "2T", - "134", "20", "MKK", "5G", "40M", "HT", "2T", "134", "30", - "FCC", "5G", "40M", "HT", "2T", "142", "30", "ETSI", "5G", - "40M", "HT", "2T", "142", "63", "MKK", "5G", "40M", "HT", - "2T", "142", "63", "FCC", "5G", "40M", "HT", "2T", "151", - "30", "ETSI", "5G", "40M", "HT", "2T", "151", "63", "MKK", - "5G", "40M", "HT", "2T", "151", "63", "FCC", "5G", "40M", - "HT", "2T", "159", "30", "ETSI", "5G", "40M", "HT", "2T", - "159", "63", "MKK", "5G", "40M", "HT", "2T", "159", "63", - "FCC", "5G", "80M", "VHT", "1T", "42", "20", "ETSI", "5G", - "80M", "VHT", "1T", "42", "30", "MKK", "5G", "80M", "VHT", - "1T", "42", "28", "FCC", "5G", "80M", "VHT", "1T", "58", - "20", "ETSI", "5G", "80M", "VHT", "1T", "58", "30", "MKK", - "5G", "80M", "VHT", "1T", "58", "28", "FCC", "5G", "80M", - "VHT", "1T", "106", "20", "ETSI", "5G", "80M", "VHT", "1T", - "106", "30", "MKK", "5G", "80M", "VHT", "1T", "106", "30", - "FCC", "5G", "80M", "VHT", "1T", "122", "30", "ETSI", "5G", - "80M", "VHT", "1T", "122", "30", "MKK", "5G", "80M", "VHT", - "1T", "122", "30", "FCC", "5G", "80M", "VHT", "1T", "138", - "30", "ETSI", "5G", "80M", "VHT", "1T", "138", "63", "MKK", - "5G", "80M", "VHT", "1T", "138", "63", "FCC", "5G", "80M", - "VHT", "1T", "155", "30", "ETSI", "5G", "80M", "VHT", "1T", - "155", "63", "MKK", "5G", "80M", "VHT", "1T", "155", "63", - "FCC", "5G", "80M", "VHT", "2T", "42", "18", "ETSI", "5G", - "80M", "VHT", "2T", "42", "20", "MKK", "5G", "80M", "VHT", - "2T", "42", "22", "FCC", "5G", "80M", "VHT", "2T", "58", - "18", "ETSI", "5G", "80M", "VHT", "2T", "58", "20", "MKK", - "5G", "80M", "VHT", "2T", "58", "22", "FCC", "5G", "80M", - "VHT", "2T", "106", "20", "ETSI", "5G", "80M", "VHT", "2T", - "106", "20", "MKK", "5G", "80M", "VHT", "2T", "106", "30", - "FCC", "5G", "80M", "VHT", "2T", "122", "30", "ETSI", "5G", - "80M", "VHT", "2T", "122", "20", "MKK", "5G", "80M", "VHT", - "2T", "122", "30", "FCC", "5G", "80M", "VHT", "2T", "138", - "30", "ETSI", "5G", "80M", "VHT", "2T", "138", "63", "MKK", - "5G", "80M", "VHT", "2T", "138", "63", "FCC", "5G", "80M", - "VHT", "2T", "155", "30", "ETSI", "5G", "80M", "VHT", "2T", - "155", "63", "MKK", "5G", "80M", "VHT", "2T", "155", "63"}; - -void odm_read_and_config_mp_8822b_txpwr_lmt(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 **array = (u8 **)array_mp_8822b_txpwr_lmt; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> %s\n", __func__); - - for (i = 0; i < ARRAY_SIZE(array_mp_8822b_txpwr_lmt); i += 7) { - u8 *regulation = array[i]; - u8 *band = array[i + 1]; - u8 *bandwidth = array[i + 2]; - u8 *rate = array[i + 3]; - u8 *rf_path = array[i + 4]; - u8 *chnl = array[i + 5]; - u8 *val = array[i + 6]; - - odm_config_bb_txpwr_lmt_8822b(dm, regulation, band, bandwidth, - rate, rf_path, chnl, val); - } -} - -/****************************************************************************** -* txpwr_lmt_type5.TXT -******************************************************************************/ - -static const char *const array_mp_8822b_txpwr_lmt_type5[] = { - "FCC", "2.4G", "20M", "CCK", "1T", "01", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "01", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "01", "30", "FCC", "2.4G", "20M", "CCK", "1T", "02", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "02", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "02", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "03", "32", "ETSI", "2.4G", "20M", "CCK", "1T", - "03", "28", "MKK", "2.4G", "20M", "CCK", "1T", "03", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "04", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "04", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "04", "30", "FCC", "2.4G", "20M", "CCK", "1T", "05", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "05", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "05", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "06", "32", "ETSI", "2.4G", "20M", "CCK", "1T", - "06", "28", "MKK", "2.4G", "20M", "CCK", "1T", "06", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "07", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "07", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "07", "30", "FCC", "2.4G", "20M", "CCK", "1T", "08", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "08", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "08", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "09", "32", "ETSI", "2.4G", "20M", "CCK", "1T", - "09", "28", "MKK", "2.4G", "20M", "CCK", "1T", "09", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "10", "32", "ETSI", "2.4G", - "20M", "CCK", "1T", "10", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "10", "30", "FCC", "2.4G", "20M", "CCK", "1T", "11", - "32", "ETSI", "2.4G", "20M", "CCK", "1T", "11", "28", "MKK", - "2.4G", "20M", "CCK", "1T", "11", "30", "FCC", "2.4G", "20M", - "CCK", "1T", "12", "26", "ETSI", "2.4G", "20M", "CCK", "1T", - "12", "28", "MKK", "2.4G", "20M", "CCK", "1T", "12", "30", - "FCC", "2.4G", "20M", "CCK", "1T", "13", "20", "ETSI", "2.4G", - "20M", "CCK", "1T", "13", "28", "MKK", "2.4G", "20M", "CCK", - "1T", "13", "28", "FCC", "2.4G", "20M", "CCK", "1T", "14", - "63", "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63", "MKK", - "2.4G", "20M", "CCK", "1T", "14", "32", "FCC", "2.4G", "20M", - "OFDM", "1T", "01", "26", "ETSI", "2.4G", "20M", "OFDM", "1T", - "01", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "01", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "02", "30", "ETSI", "2.4G", - "20M", "OFDM", "1T", "02", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "02", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "03", - "32", "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "03", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "04", "34", "ETSI", "2.4G", "20M", "OFDM", "1T", - "04", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "04", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "05", "34", "ETSI", "2.4G", - "20M", "OFDM", "1T", "05", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "05", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "06", - "34", "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "06", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "07", "34", "ETSI", "2.4G", "20M", "OFDM", "1T", - "07", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "07", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "08", "34", "ETSI", "2.4G", - "20M", "OFDM", "1T", "08", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "08", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "09", - "32", "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "09", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "10", "30", "ETSI", "2.4G", "20M", "OFDM", "1T", - "10", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "10", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28", "ETSI", "2.4G", - "20M", "OFDM", "1T", "11", "30", "MKK", "2.4G", "20M", "OFDM", - "1T", "11", "34", "FCC", "2.4G", "20M", "OFDM", "1T", "12", - "22", "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "30", "MKK", - "2.4G", "20M", "OFDM", "1T", "12", "34", "FCC", "2.4G", "20M", - "OFDM", "1T", "13", "14", "ETSI", "2.4G", "20M", "OFDM", "1T", - "13", "30", "MKK", "2.4G", "20M", "OFDM", "1T", "13", "34", - "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63", "ETSI", "2.4G", - "20M", "OFDM", "1T", "14", "63", "MKK", "2.4G", "20M", "OFDM", - "1T", "14", "63", "FCC", "2.4G", "20M", "HT", "1T", "01", - "26", "ETSI", "2.4G", "20M", "HT", "1T", "01", "30", "MKK", - "2.4G", "20M", "HT", "1T", "01", "34", "FCC", "2.4G", "20M", - "HT", "1T", "02", "30", "ETSI", "2.4G", "20M", "HT", "1T", - "02", "30", "MKK", "2.4G", "20M", "HT", "1T", "02", "34", - "FCC", "2.4G", "20M", "HT", "1T", "03", "32", "ETSI", "2.4G", - "20M", "HT", "1T", "03", "30", "MKK", "2.4G", "20M", "HT", - "1T", "03", "34", "FCC", "2.4G", "20M", "HT", "1T", "04", - "34", "ETSI", "2.4G", "20M", "HT", "1T", "04", "30", "MKK", - "2.4G", "20M", "HT", "1T", "04", "34", "FCC", "2.4G", "20M", - "HT", "1T", "05", "34", "ETSI", "2.4G", "20M", "HT", "1T", - "05", "30", "MKK", "2.4G", "20M", "HT", "1T", "05", "34", - "FCC", "2.4G", "20M", "HT", "1T", "06", "34", "ETSI", "2.4G", - "20M", "HT", "1T", "06", "30", "MKK", "2.4G", "20M", "HT", - "1T", "06", "34", "FCC", "2.4G", "20M", "HT", "1T", "07", - "34", "ETSI", "2.4G", "20M", "HT", "1T", "07", "30", "MKK", - "2.4G", "20M", "HT", "1T", "07", "34", "FCC", "2.4G", "20M", - "HT", "1T", "08", "34", "ETSI", "2.4G", "20M", "HT", "1T", - "08", "30", "MKK", "2.4G", "20M", "HT", "1T", "08", "34", - "FCC", "2.4G", "20M", "HT", "1T", "09", "32", "ETSI", "2.4G", - "20M", "HT", "1T", "09", "30", "MKK", "2.4G", "20M", "HT", - "1T", "09", "34", "FCC", "2.4G", "20M", "HT", "1T", "10", - "30", "ETSI", "2.4G", "20M", "HT", "1T", "10", "30", "MKK", - "2.4G", "20M", "HT", "1T", "10", "34", "FCC", "2.4G", "20M", - "HT", "1T", "11", "26", "ETSI", "2.4G", "20M", "HT", "1T", - "11", "30", "MKK", "2.4G", "20M", "HT", "1T", "11", "34", - "FCC", "2.4G", "20M", "HT", "1T", "12", "20", "ETSI", "2.4G", - "20M", "HT", "1T", "12", "30", "MKK", "2.4G", "20M", "HT", - "1T", "12", "34", "FCC", "2.4G", "20M", "HT", "1T", "13", - "14", "ETSI", "2.4G", "20M", "HT", "1T", "13", "30", "MKK", - "2.4G", "20M", "HT", "1T", "13", "34", "FCC", "2.4G", "20M", - "HT", "1T", "14", "63", "ETSI", "2.4G", "20M", "HT", "1T", - "14", "63", "MKK", "2.4G", "20M", "HT", "1T", "14", "63", - "FCC", "2.4G", "20M", "HT", "2T", "01", "26", "ETSI", "2.4G", - "20M", "HT", "2T", "01", "18", "MKK", "2.4G", "20M", "HT", - "2T", "01", "30", "FCC", "2.4G", "20M", "HT", "2T", "02", - "28", "ETSI", "2.4G", "20M", "HT", "2T", "02", "18", "MKK", - "2.4G", "20M", "HT", "2T", "02", "30", "FCC", "2.4G", "20M", - "HT", "2T", "03", "30", "ETSI", "2.4G", "20M", "HT", "2T", - "03", "18", "MKK", "2.4G", "20M", "HT", "2T", "03", "30", - "FCC", "2.4G", "20M", "HT", "2T", "04", "30", "ETSI", "2.4G", - "20M", "HT", "2T", "04", "18", "MKK", "2.4G", "20M", "HT", - "2T", "04", "30", "FCC", "2.4G", "20M", "HT", "2T", "05", - "32", "ETSI", "2.4G", "20M", "HT", "2T", "05", "18", "MKK", - "2.4G", "20M", "HT", "2T", "05", "30", "FCC", "2.4G", "20M", - "HT", "2T", "06", "32", "ETSI", "2.4G", "20M", "HT", "2T", - "06", "18", "MKK", "2.4G", "20M", "HT", "2T", "06", "30", - "FCC", "2.4G", "20M", "HT", "2T", "07", "32", "ETSI", "2.4G", - "20M", "HT", "2T", "07", "18", "MKK", "2.4G", "20M", "HT", - "2T", "07", "30", "FCC", "2.4G", "20M", "HT", "2T", "08", - "30", "ETSI", "2.4G", "20M", "HT", "2T", "08", "18", "MKK", - "2.4G", "20M", "HT", "2T", "08", "30", "FCC", "2.4G", "20M", - "HT", "2T", "09", "30", "ETSI", "2.4G", "20M", "HT", "2T", - "09", "18", "MKK", "2.4G", "20M", "HT", "2T", "09", "30", - "FCC", "2.4G", "20M", "HT", "2T", "10", "28", "ETSI", "2.4G", - "20M", "HT", "2T", "10", "18", "MKK", "2.4G", "20M", "HT", - "2T", "10", "30", "FCC", "2.4G", "20M", "HT", "2T", "11", - "26", "ETSI", "2.4G", "20M", "HT", "2T", "11", "18", "MKK", - "2.4G", "20M", "HT", "2T", "11", "30", "FCC", "2.4G", "20M", - "HT", "2T", "12", "20", "ETSI", "2.4G", "20M", "HT", "2T", - "12", "18", "MKK", "2.4G", "20M", "HT", "2T", "12", "30", - "FCC", "2.4G", "20M", "HT", "2T", "13", "14", "ETSI", "2.4G", - "20M", "HT", "2T", "13", "18", "MKK", "2.4G", "20M", "HT", - "2T", "13", "30", "FCC", "2.4G", "20M", "HT", "2T", "14", - "63", "ETSI", "2.4G", "20M", "HT", "2T", "14", "63", "MKK", - "2.4G", "20M", "HT", "2T", "14", "63", "FCC", "2.4G", "40M", - "HT", "1T", "01", "63", "ETSI", "2.4G", "40M", "HT", "1T", - "01", "63", "MKK", "2.4G", "40M", "HT", "1T", "01", "63", - "FCC", "2.4G", "40M", "HT", "1T", "02", "63", "ETSI", "2.4G", - "40M", "HT", "1T", "02", "63", "MKK", "2.4G", "40M", "HT", - "1T", "02", "63", "FCC", "2.4G", "40M", "HT", "1T", "03", - "26", "ETSI", "2.4G", "40M", "HT", "1T", "03", "30", "MKK", - "2.4G", "40M", "HT", "1T", "03", "34", "FCC", "2.4G", "40M", - "HT", "1T", "04", "26", "ETSI", "2.4G", "40M", "HT", "1T", - "04", "30", "MKK", "2.4G", "40M", "HT", "1T", "04", "34", - "FCC", "2.4G", "40M", "HT", "1T", "05", "30", "ETSI", "2.4G", - "40M", "HT", "1T", "05", "30", "MKK", "2.4G", "40M", "HT", - "1T", "05", "34", "FCC", "2.4G", "40M", "HT", "1T", "06", - "32", "ETSI", "2.4G", "40M", "HT", "1T", "06", "30", "MKK", - "2.4G", "40M", "HT", "1T", "06", "34", "FCC", "2.4G", "40M", - "HT", "1T", "07", "30", "ETSI", "2.4G", "40M", "HT", "1T", - "07", "30", "MKK", "2.4G", "40M", "HT", "1T", "07", "34", - "FCC", "2.4G", "40M", "HT", "1T", "08", "26", "ETSI", "2.4G", - "40M", "HT", "1T", "08", "30", "MKK", "2.4G", "40M", "HT", - "1T", "08", "34", "FCC", "2.4G", "40M", "HT", "1T", "09", - "26", "ETSI", "2.4G", "40M", "HT", "1T", "09", "30", "MKK", - "2.4G", "40M", "HT", "1T", "09", "34", "FCC", "2.4G", "40M", - "HT", "1T", "10", "20", "ETSI", "2.4G", "40M", "HT", "1T", - "10", "30", "MKK", "2.4G", "40M", "HT", "1T", "10", "34", - "FCC", "2.4G", "40M", "HT", "1T", "11", "14", "ETSI", "2.4G", - "40M", "HT", "1T", "11", "30", "MKK", "2.4G", "40M", "HT", - "1T", "11", "34", "FCC", "2.4G", "40M", "HT", "1T", "12", - "63", "ETSI", "2.4G", "40M", "HT", "1T", "12", "63", "MKK", - "2.4G", "40M", "HT", "1T", "12", "63", "FCC", "2.4G", "40M", - "HT", "1T", "13", "63", "ETSI", "2.4G", "40M", "HT", "1T", - "13", "63", "MKK", "2.4G", "40M", "HT", "1T", "13", "63", - "FCC", "2.4G", "40M", "HT", "1T", "14", "63", "ETSI", "2.4G", - "40M", "HT", "1T", "14", "63", "MKK", "2.4G", "40M", "HT", - "1T", "14", "63", "FCC", "2.4G", "40M", "HT", "2T", "01", - "63", "ETSI", "2.4G", "40M", "HT", "2T", "01", "63", "MKK", - "2.4G", "40M", "HT", "2T", "01", "63", "FCC", "2.4G", "40M", - "HT", "2T", "02", "63", "ETSI", "2.4G", "40M", "HT", "2T", - "02", "63", "MKK", "2.4G", "40M", "HT", "2T", "02", "63", - "FCC", "2.4G", "40M", "HT", "2T", "03", "24", "ETSI", "2.4G", - "40M", "HT", "2T", "03", "18", "MKK", "2.4G", "40M", "HT", - "2T", "03", "30", "FCC", "2.4G", "40M", "HT", "2T", "04", - "24", "ETSI", "2.4G", "40M", "HT", "2T", "04", "18", "MKK", - "2.4G", "40M", "HT", "2T", "04", "30", "FCC", "2.4G", "40M", - "HT", "2T", "05", "26", "ETSI", "2.4G", "40M", "HT", "2T", - "05", "18", "MKK", "2.4G", "40M", "HT", "2T", "05", "30", - "FCC", "2.4G", "40M", "HT", "2T", "06", "28", "ETSI", "2.4G", - "40M", "HT", "2T", "06", "18", "MKK", "2.4G", "40M", "HT", - "2T", "06", "30", "FCC", "2.4G", "40M", "HT", "2T", "07", - "26", "ETSI", "2.4G", "40M", "HT", "2T", "07", "18", "MKK", - "2.4G", "40M", "HT", "2T", "07", "30", "FCC", "2.4G", "40M", - "HT", "2T", "08", "26", "ETSI", "2.4G", "40M", "HT", "2T", - "08", "18", "MKK", "2.4G", "40M", "HT", "2T", "08", "30", - "FCC", "2.4G", "40M", "HT", "2T", "09", "26", "ETSI", "2.4G", - "40M", "HT", "2T", "09", "18", "MKK", "2.4G", "40M", "HT", - "2T", "09", "30", "FCC", "2.4G", "40M", "HT", "2T", "10", - "20", "ETSI", "2.4G", "40M", "HT", "2T", "10", "18", "MKK", - "2.4G", "40M", "HT", "2T", "10", "30", "FCC", "2.4G", "40M", - "HT", "2T", "11", "14", "ETSI", "2.4G", "40M", "HT", "2T", - "11", "18", "MKK", "2.4G", "40M", "HT", "2T", "11", "30", - "FCC", "2.4G", "40M", "HT", "2T", "12", "63", "ETSI", "2.4G", - "40M", "HT", "2T", "12", "63", "MKK", "2.4G", "40M", "HT", - "2T", "12", "63", "FCC", "2.4G", "40M", "HT", "2T", "13", - "63", "ETSI", "2.4G", "40M", "HT", "2T", "13", "63", "MKK", - "2.4G", "40M", "HT", "2T", "13", "63", "FCC", "2.4G", "40M", - "HT", "2T", "14", "63", "ETSI", "2.4G", "40M", "HT", "2T", - "14", "63", "MKK", "2.4G", "40M", "HT", "2T", "14", "63", - "FCC", "5G", "20M", "OFDM", "1T", "36", "30", "ETSI", "5G", - "20M", "OFDM", "1T", "36", "32", "MKK", "5G", "20M", "OFDM", - "1T", "36", "30", "FCC", "5G", "20M", "OFDM", "1T", "40", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "40", "32", "MKK", - "5G", "20M", "OFDM", "1T", "40", "30", "FCC", "5G", "20M", - "OFDM", "1T", "44", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "44", "32", "MKK", "5G", "20M", "OFDM", "1T", "44", "30", - "FCC", "5G", "20M", "OFDM", "1T", "48", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "48", "32", "MKK", "5G", "20M", "OFDM", - "1T", "48", "30", "FCC", "5G", "20M", "OFDM", "1T", "52", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "52", "32", "MKK", - "5G", "20M", "OFDM", "1T", "52", "28", "FCC", "5G", "20M", - "OFDM", "1T", "56", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "56", "32", "MKK", "5G", "20M", "OFDM", "1T", "56", "28", - "FCC", "5G", "20M", "OFDM", "1T", "60", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "60", "32", "MKK", "5G", "20M", "OFDM", - "1T", "60", "28", "FCC", "5G", "20M", "OFDM", "1T", "64", - "28", "ETSI", "5G", "20M", "OFDM", "1T", "64", "32", "MKK", - "5G", "20M", "OFDM", "1T", "64", "28", "FCC", "5G", "20M", - "OFDM", "1T", "100", "26", "ETSI", "5G", "20M", "OFDM", "1T", - "100", "32", "MKK", "5G", "20M", "OFDM", "1T", "100", "32", - "FCC", "5G", "20M", "OFDM", "1T", "104", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "104", "32", "MKK", "5G", "20M", "OFDM", - "1T", "104", "32", "FCC", "5G", "20M", "OFDM", "1T", "108", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "108", "32", "MKK", - "5G", "20M", "OFDM", "1T", "108", "32", "FCC", "5G", "20M", - "OFDM", "1T", "112", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "112", "32", "MKK", "5G", "20M", "OFDM", "1T", "112", "32", - "FCC", "5G", "20M", "OFDM", "1T", "116", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "116", "32", "MKK", "5G", "20M", "OFDM", - "1T", "116", "32", "FCC", "5G", "20M", "OFDM", "1T", "120", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "120", "32", "MKK", - "5G", "20M", "OFDM", "1T", "120", "32", "FCC", "5G", "20M", - "OFDM", "1T", "124", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "124", "32", "MKK", "5G", "20M", "OFDM", "1T", "124", "32", - "FCC", "5G", "20M", "OFDM", "1T", "128", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "128", "32", "MKK", "5G", "20M", "OFDM", - "1T", "128", "32", "FCC", "5G", "20M", "OFDM", "1T", "132", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "132", "32", "MKK", - "5G", "20M", "OFDM", "1T", "132", "32", "FCC", "5G", "20M", - "OFDM", "1T", "136", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "136", "32", "MKK", "5G", "20M", "OFDM", "1T", "136", "32", - "FCC", "5G", "20M", "OFDM", "1T", "140", "28", "ETSI", "5G", - "20M", "OFDM", "1T", "140", "32", "MKK", "5G", "20M", "OFDM", - "1T", "140", "32", "FCC", "5G", "20M", "OFDM", "1T", "144", - "28", "ETSI", "5G", "20M", "OFDM", "1T", "144", "32", "MKK", - "5G", "20M", "OFDM", "1T", "144", "63", "FCC", "5G", "20M", - "OFDM", "1T", "149", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "149", "63", "MKK", "5G", "20M", "OFDM", "1T", "149", "63", - "FCC", "5G", "20M", "OFDM", "1T", "153", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "153", "63", "MKK", "5G", "20M", "OFDM", - "1T", "153", "63", "FCC", "5G", "20M", "OFDM", "1T", "157", - "32", "ETSI", "5G", "20M", "OFDM", "1T", "157", "63", "MKK", - "5G", "20M", "OFDM", "1T", "157", "63", "FCC", "5G", "20M", - "OFDM", "1T", "161", "32", "ETSI", "5G", "20M", "OFDM", "1T", - "161", "63", "MKK", "5G", "20M", "OFDM", "1T", "161", "63", - "FCC", "5G", "20M", "OFDM", "1T", "165", "32", "ETSI", "5G", - "20M", "OFDM", "1T", "165", "63", "MKK", "5G", "20M", "OFDM", - "1T", "165", "63", "FCC", "5G", "20M", "HT", "1T", "36", - "30", "ETSI", "5G", "20M", "HT", "1T", "36", "32", "MKK", - "5G", "20M", "HT", "1T", "36", "28", "FCC", "5G", "20M", - "HT", "1T", "40", "32", "ETSI", "5G", "20M", "HT", "1T", - "40", "32", "MKK", "5G", "20M", "HT", "1T", "40", "28", - "FCC", "5G", "20M", "HT", "1T", "44", "32", "ETSI", "5G", - "20M", "HT", "1T", "44", "32", "MKK", "5G", "20M", "HT", - "1T", "44", "28", "FCC", "5G", "20M", "HT", "1T", "48", - "32", "ETSI", "5G", "20M", "HT", "1T", "48", "32", "MKK", - "5G", "20M", "HT", "1T", "48", "28", "FCC", "5G", "20M", - "HT", "1T", "52", "32", "ETSI", "5G", "20M", "HT", "1T", - "52", "32", "MKK", "5G", "20M", "HT", "1T", "52", "28", - "FCC", "5G", "20M", "HT", "1T", "56", "32", "ETSI", "5G", - "20M", "HT", "1T", "56", "32", "MKK", "5G", "20M", "HT", - "1T", "56", "28", "FCC", "5G", "20M", "HT", "1T", "60", - "32", "ETSI", "5G", "20M", "HT", "1T", "60", "32", "MKK", - "5G", "20M", "HT", "1T", "60", "28", "FCC", "5G", "20M", - "HT", "1T", "64", "28", "ETSI", "5G", "20M", "HT", "1T", - "64", "32", "MKK", "5G", "20M", "HT", "1T", "64", "28", - "FCC", "5G", "20M", "HT", "1T", "100", "26", "ETSI", "5G", - "20M", "HT", "1T", "100", "32", "MKK", "5G", "20M", "HT", - "1T", "100", "32", "FCC", "5G", "20M", "HT", "1T", "104", - "32", "ETSI", "5G", "20M", "HT", "1T", "104", "32", "MKK", - "5G", "20M", "HT", "1T", "104", "32", "FCC", "5G", "20M", - "HT", "1T", "108", "32", "ETSI", "5G", "20M", "HT", "1T", - "108", "32", "MKK", "5G", "20M", "HT", "1T", "108", "32", - "FCC", "5G", "20M", "HT", "1T", "112", "32", "ETSI", "5G", - "20M", "HT", "1T", "112", "32", "MKK", "5G", "20M", "HT", - "1T", "112", "32", "FCC", "5G", "20M", "HT", "1T", "116", - "32", "ETSI", "5G", "20M", "HT", "1T", "116", "32", "MKK", - "5G", "20M", "HT", "1T", "116", "32", "FCC", "5G", "20M", - "HT", "1T", "120", "32", "ETSI", "5G", "20M", "HT", "1T", - "120", "32", "MKK", "5G", "20M", "HT", "1T", "120", "32", - "FCC", "5G", "20M", "HT", "1T", "124", "32", "ETSI", "5G", - "20M", "HT", "1T", "124", "32", "MKK", "5G", "20M", "HT", - "1T", "124", "32", "FCC", "5G", "20M", "HT", "1T", "128", - "32", "ETSI", "5G", "20M", "HT", "1T", "128", "32", "MKK", - "5G", "20M", "HT", "1T", "128", "32", "FCC", "5G", "20M", - "HT", "1T", "132", "32", "ETSI", "5G", "20M", "HT", "1T", - "132", "32", "MKK", "5G", "20M", "HT", "1T", "132", "32", - "FCC", "5G", "20M", "HT", "1T", "136", "32", "ETSI", "5G", - "20M", "HT", "1T", "136", "32", "MKK", "5G", "20M", "HT", - "1T", "136", "32", "FCC", "5G", "20M", "HT", "1T", "140", - "26", "ETSI", "5G", "20M", "HT", "1T", "140", "32", "MKK", - "5G", "20M", "HT", "1T", "140", "32", "FCC", "5G", "20M", - "HT", "1T", "144", "26", "ETSI", "5G", "20M", "HT", "1T", - "144", "63", "MKK", "5G", "20M", "HT", "1T", "144", "63", - "FCC", "5G", "20M", "HT", "1T", "149", "32", "ETSI", "5G", - "20M", "HT", "1T", "149", "63", "MKK", "5G", "20M", "HT", - "1T", "149", "63", "FCC", "5G", "20M", "HT", "1T", "153", - "32", "ETSI", "5G", "20M", "HT", "1T", "153", "63", "MKK", - "5G", "20M", "HT", "1T", "153", "63", "FCC", "5G", "20M", - "HT", "1T", "157", "32", "ETSI", "5G", "20M", "HT", "1T", - "157", "63", "MKK", "5G", "20M", "HT", "1T", "157", "63", - "FCC", "5G", "20M", "HT", "1T", "161", "32", "ETSI", "5G", - "20M", "HT", "1T", "161", "63", "MKK", "5G", "20M", "HT", - "1T", "161", "63", "FCC", "5G", "20M", "HT", "1T", "165", - "32", "ETSI", "5G", "20M", "HT", "1T", "165", "63", "MKK", - "5G", "20M", "HT", "1T", "165", "63", "FCC", "5G", "20M", - "HT", "2T", "36", "28", "ETSI", "5G", "20M", "HT", "2T", - "36", "20", "MKK", "5G", "20M", "HT", "2T", "36", "22", - "FCC", "5G", "20M", "HT", "2T", "40", "30", "ETSI", "5G", - "20M", "HT", "2T", "40", "20", "MKK", "5G", "20M", "HT", - "2T", "40", "22", "FCC", "5G", "20M", "HT", "2T", "44", - "30", "ETSI", "5G", "20M", "HT", "2T", "44", "20", "MKK", - "5G", "20M", "HT", "2T", "44", "22", "FCC", "5G", "20M", - "HT", "2T", "48", "30", "ETSI", "5G", "20M", "HT", "2T", - "48", "20", "MKK", "5G", "20M", "HT", "2T", "48", "22", - "FCC", "5G", "20M", "HT", "2T", "52", "30", "ETSI", "5G", - "20M", "HT", "2T", "52", "20", "MKK", "5G", "20M", "HT", - "2T", "52", "22", "FCC", "5G", "20M", "HT", "2T", "56", - "30", "ETSI", "5G", "20M", "HT", "2T", "56", "20", "MKK", - "5G", "20M", "HT", "2T", "56", "22", "FCC", "5G", "20M", - "HT", "2T", "60", "30", "ETSI", "5G", "20M", "HT", "2T", - "60", "20", "MKK", "5G", "20M", "HT", "2T", "60", "22", - "FCC", "5G", "20M", "HT", "2T", "64", "28", "ETSI", "5G", - "20M", "HT", "2T", "64", "20", "MKK", "5G", "20M", "HT", - "2T", "64", "22", "FCC", "5G", "20M", "HT", "2T", "100", - "26", "ETSI", "5G", "20M", "HT", "2T", "100", "20", "MKK", - "5G", "20M", "HT", "2T", "100", "30", "FCC", "5G", "20M", - "HT", "2T", "104", "30", "ETSI", "5G", "20M", "HT", "2T", - "104", "20", "MKK", "5G", "20M", "HT", "2T", "104", "30", - "FCC", "5G", "20M", "HT", "2T", "108", "32", "ETSI", "5G", - "20M", "HT", "2T", "108", "20", "MKK", "5G", "20M", "HT", - "2T", "108", "30", "FCC", "5G", "20M", "HT", "2T", "112", - "32", "ETSI", "5G", "20M", "HT", "2T", "112", "20", "MKK", - "5G", "20M", "HT", "2T", "112", "30", "FCC", "5G", "20M", - "HT", "2T", "116", "32", "ETSI", "5G", "20M", "HT", "2T", - "116", "20", "MKK", "5G", "20M", "HT", "2T", "116", "30", - "FCC", "5G", "20M", "HT", "2T", "120", "32", "ETSI", "5G", - "20M", "HT", "2T", "120", "20", "MKK", "5G", "20M", "HT", - "2T", "120", "30", "FCC", "5G", "20M", "HT", "2T", "124", - "32", "ETSI", "5G", "20M", "HT", "2T", "124", "20", "MKK", - "5G", "20M", "HT", "2T", "124", "30", "FCC", "5G", "20M", - "HT", "2T", "128", "32", "ETSI", "5G", "20M", "HT", "2T", - "128", "20", "MKK", "5G", "20M", "HT", "2T", "128", "30", - "FCC", "5G", "20M", "HT", "2T", "132", "32", "ETSI", "5G", - "20M", "HT", "2T", "132", "20", "MKK", "5G", "20M", "HT", - "2T", "132", "30", "FCC", "5G", "20M", "HT", "2T", "136", - "30", "ETSI", "5G", "20M", "HT", "2T", "136", "20", "MKK", - "5G", "20M", "HT", "2T", "136", "30", "FCC", "5G", "20M", - "HT", "2T", "140", "26", "ETSI", "5G", "20M", "HT", "2T", - "140", "20", "MKK", "5G", "20M", "HT", "2T", "140", "30", - "FCC", "5G", "20M", "HT", "2T", "144", "26", "ETSI", "5G", - "20M", "HT", "2T", "144", "63", "MKK", "5G", "20M", "HT", - "2T", "144", "63", "FCC", "5G", "20M", "HT", "2T", "149", - "32", "ETSI", "5G", "20M", "HT", "2T", "149", "63", "MKK", - "5G", "20M", "HT", "2T", "149", "63", "FCC", "5G", "20M", - "HT", "2T", "153", "32", "ETSI", "5G", "20M", "HT", "2T", - "153", "63", "MKK", "5G", "20M", "HT", "2T", "153", "63", - "FCC", "5G", "20M", "HT", "2T", "157", "32", "ETSI", "5G", - "20M", "HT", "2T", "157", "63", "MKK", "5G", "20M", "HT", - "2T", "157", "63", "FCC", "5G", "20M", "HT", "2T", "161", - "32", "ETSI", "5G", "20M", "HT", "2T", "161", "63", "MKK", - "5G", "20M", "HT", "2T", "161", "63", "FCC", "5G", "20M", - "HT", "2T", "165", "32", "ETSI", "5G", "20M", "HT", "2T", - "165", "63", "MKK", "5G", "20M", "HT", "2T", "165", "63", - "FCC", "5G", "40M", "HT", "1T", "38", "22", "ETSI", "5G", - "40M", "HT", "1T", "38", "30", "MKK", "5G", "40M", "HT", - "1T", "38", "30", "FCC", "5G", "40M", "HT", "1T", "46", - "30", "ETSI", "5G", "40M", "HT", "1T", "46", "30", "MKK", - "5G", "40M", "HT", "1T", "46", "30", "FCC", "5G", "40M", - "HT", "1T", "54", "30", "ETSI", "5G", "40M", "HT", "1T", - "54", "30", "MKK", "5G", "40M", "HT", "1T", "54", "30", - "FCC", "5G", "40M", "HT", "1T", "62", "24", "ETSI", "5G", - "40M", "HT", "1T", "62", "30", "MKK", "5G", "40M", "HT", - "1T", "62", "30", "FCC", "5G", "40M", "HT", "1T", "102", - "24", "ETSI", "5G", "40M", "HT", "1T", "102", "30", "MKK", - "5G", "40M", "HT", "1T", "102", "30", "FCC", "5G", "40M", - "HT", "1T", "110", "30", "ETSI", "5G", "40M", "HT", "1T", - "110", "30", "MKK", "5G", "40M", "HT", "1T", "110", "30", - "FCC", "5G", "40M", "HT", "1T", "118", "30", "ETSI", "5G", - "40M", "HT", "1T", "118", "30", "MKK", "5G", "40M", "HT", - "1T", "118", "30", "FCC", "5G", "40M", "HT", "1T", "126", - "30", "ETSI", "5G", "40M", "HT", "1T", "126", "30", "MKK", - "5G", "40M", "HT", "1T", "126", "30", "FCC", "5G", "40M", - "HT", "1T", "134", "30", "ETSI", "5G", "40M", "HT", "1T", - "134", "30", "MKK", "5G", "40M", "HT", "1T", "134", "30", - "FCC", "5G", "40M", "HT", "1T", "142", "30", "ETSI", "5G", - "40M", "HT", "1T", "142", "63", "MKK", "5G", "40M", "HT", - "1T", "142", "63", "FCC", "5G", "40M", "HT", "1T", "151", - "30", "ETSI", "5G", "40M", "HT", "1T", "151", "63", "MKK", - "5G", "40M", "HT", "1T", "151", "63", "FCC", "5G", "40M", - "HT", "1T", "159", "30", "ETSI", "5G", "40M", "HT", "1T", - "159", "63", "MKK", "5G", "40M", "HT", "1T", "159", "63", - "FCC", "5G", "40M", "HT", "2T", "38", "20", "ETSI", "5G", - "40M", "HT", "2T", "38", "20", "MKK", "5G", "40M", "HT", - "2T", "38", "22", "FCC", "5G", "40M", "HT", "2T", "46", - "30", "ETSI", "5G", "40M", "HT", "2T", "46", "20", "MKK", - "5G", "40M", "HT", "2T", "46", "22", "FCC", "5G", "40M", - "HT", "2T", "54", "30", "ETSI", "5G", "40M", "HT", "2T", - "54", "20", "MKK", "5G", "40M", "HT", "2T", "54", "22", - "FCC", "5G", "40M", "HT", "2T", "62", "22", "ETSI", "5G", - "40M", "HT", "2T", "62", "20", "MKK", "5G", "40M", "HT", - "2T", "62", "22", "FCC", "5G", "40M", "HT", "2T", "102", - "22", "ETSI", "5G", "40M", "HT", "2T", "102", "20", "MKK", - "5G", "40M", "HT", "2T", "102", "30", "FCC", "5G", "40M", - "HT", "2T", "110", "30", "ETSI", "5G", "40M", "HT", "2T", - "110", "20", "MKK", "5G", "40M", "HT", "2T", "110", "30", - "FCC", "5G", "40M", "HT", "2T", "118", "30", "ETSI", "5G", - "40M", "HT", "2T", "118", "20", "MKK", "5G", "40M", "HT", - "2T", "118", "30", "FCC", "5G", "40M", "HT", "2T", "126", - "30", "ETSI", "5G", "40M", "HT", "2T", "126", "20", "MKK", - "5G", "40M", "HT", "2T", "126", "30", "FCC", "5G", "40M", - "HT", "2T", "134", "30", "ETSI", "5G", "40M", "HT", "2T", - "134", "20", "MKK", "5G", "40M", "HT", "2T", "134", "30", - "FCC", "5G", "40M", "HT", "2T", "142", "30", "ETSI", "5G", - "40M", "HT", "2T", "142", "63", "MKK", "5G", "40M", "HT", - "2T", "142", "63", "FCC", "5G", "40M", "HT", "2T", "151", - "30", "ETSI", "5G", "40M", "HT", "2T", "151", "63", "MKK", - "5G", "40M", "HT", "2T", "151", "63", "FCC", "5G", "40M", - "HT", "2T", "159", "30", "ETSI", "5G", "40M", "HT", "2T", - "159", "63", "MKK", "5G", "40M", "HT", "2T", "159", "63", - "FCC", "5G", "80M", "VHT", "1T", "42", "20", "ETSI", "5G", - "80M", "VHT", "1T", "42", "30", "MKK", "5G", "80M", "VHT", - "1T", "42", "28", "FCC", "5G", "80M", "VHT", "1T", "58", - "20", "ETSI", "5G", "80M", "VHT", "1T", "58", "30", "MKK", - "5G", "80M", "VHT", "1T", "58", "28", "FCC", "5G", "80M", - "VHT", "1T", "106", "20", "ETSI", "5G", "80M", "VHT", "1T", - "106", "30", "MKK", "5G", "80M", "VHT", "1T", "106", "30", - "FCC", "5G", "80M", "VHT", "1T", "122", "30", "ETSI", "5G", - "80M", "VHT", "1T", "122", "30", "MKK", "5G", "80M", "VHT", - "1T", "122", "30", "FCC", "5G", "80M", "VHT", "1T", "138", - "30", "ETSI", "5G", "80M", "VHT", "1T", "138", "63", "MKK", - "5G", "80M", "VHT", "1T", "138", "63", "FCC", "5G", "80M", - "VHT", "1T", "155", "30", "ETSI", "5G", "80M", "VHT", "1T", - "155", "63", "MKK", "5G", "80M", "VHT", "1T", "155", "63", - "FCC", "5G", "80M", "VHT", "2T", "42", "18", "ETSI", "5G", - "80M", "VHT", "2T", "42", "20", "MKK", "5G", "80M", "VHT", - "2T", "42", "22", "FCC", "5G", "80M", "VHT", "2T", "58", - "18", "ETSI", "5G", "80M", "VHT", "2T", "58", "20", "MKK", - "5G", "80M", "VHT", "2T", "58", "22", "FCC", "5G", "80M", - "VHT", "2T", "106", "20", "ETSI", "5G", "80M", "VHT", "2T", - "106", "20", "MKK", "5G", "80M", "VHT", "2T", "106", "30", - "FCC", "5G", "80M", "VHT", "2T", "122", "30", "ETSI", "5G", - "80M", "VHT", "2T", "122", "20", "MKK", "5G", "80M", "VHT", - "2T", "122", "30", "FCC", "5G", "80M", "VHT", "2T", "138", - "30", "ETSI", "5G", "80M", "VHT", "2T", "138", "63", "MKK", - "5G", "80M", "VHT", "2T", "138", "63", "FCC", "5G", "80M", - "VHT", "2T", "155", "30", "ETSI", "5G", "80M", "VHT", "2T", - "155", "63", "MKK", "5G", "80M", "VHT", "2T", "155", "63"}; - -void odm_read_and_config_mp_8822b_txpwr_lmt_type5(struct phy_dm_struct *dm) -{ - u32 i = 0; - u8 **array = (u8 **)array_mp_8822b_txpwr_lmt_type5; - - ODM_RT_TRACE(dm, ODM_COMP_INIT, - "===> odm_read_and_config_mp_8822b_txpwr_lmt_type5\n"); - - for (i = 0; i < ARRAY_SIZE(array_mp_8822b_txpwr_lmt_type5); i += 7) { - u8 *regulation = array[i]; - u8 *band = array[i + 1]; - u8 *bandwidth = array[i + 2]; - u8 *rate = array[i + 3]; - u8 *rf_path = array[i + 4]; - u8 *chnl = array[i + 5]; - u8 *val = array[i + 6]; - - odm_config_bb_txpwr_lmt_8822b(dm, regulation, band, bandwidth, - rate, rf_path, chnl, val); - } -} diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_rf.h b/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_rf.h deleted file mode 100644 index 5e259846c67f..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halhwimg8822b_rf.h +++ /dev/null @@ -1,118 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -/*Image2HeaderVersion: 3.2*/ -#ifndef __INC_MP_RF_HW_IMG_8822B_H -#define __INC_MP_RF_HW_IMG_8822B_H - -/****************************************************************************** - * radioa.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_radioa(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_radioa(void); - -/****************************************************************************** - * radiob.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_radiob(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_radiob(void); - -/****************************************************************************** - * txpowertrack.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack(void); - -/****************************************************************************** - * txpowertrack_type0.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type0(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type0(void); - -/****************************************************************************** - * txpowertrack_type1.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type1(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type1(void); - -/****************************************************************************** - * txpowertrack_type2.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type2(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type2(void); - -/****************************************************************************** - * txpowertrack_type3_type5.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type3_type5( - struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type3_type5(void); - -/****************************************************************************** - * txpowertrack_type4.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type4(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type4(void); - -/****************************************************************************** - * txpowertrack_type6.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type6(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type6(void); - -/****************************************************************************** - * txpowertrack_type7.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type7(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type7(void); - -/****************************************************************************** - * txpowertrack_type8.TXT - *****************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type8(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type8(void); - -/****************************************************************************** - * txpowertrack_type9.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpowertrack_type9(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpowertrack_type9(void); - -/****************************************************************************** - * txpwr_lmt.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpwr_lmt(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpwr_lmt(void); - -/****************************************************************************** - * txpwr_lmt_type5.TXT - ******************************************************************************/ - -void odm_read_and_config_mp_8822b_txpwr_lmt_type5(struct phy_dm_struct *dm); -u32 odm_get_version_mp_8822b_txpwr_lmt_type5(void); - -#endif diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halphyrf_8822b.c b/drivers/staging/rtlwifi/phydm/rtl8822b/halphyrf_8822b.c deleted file mode 100644 index 9e92a81dc6d1..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halphyrf_8822b.c +++ /dev/null @@ -1,340 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -#include "../mp_precomp.h" -#include "../phydm_precomp.h" - -static bool -get_mix_mode_tx_agc_bb_swing_offset_8822b(void *dm_void, - enum pwrtrack_method method, - u8 rf_path, u8 tx_power_index_offset) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - u8 bb_swing_upper_bound = cali_info->default_ofdm_index + 10; - u8 bb_swing_lower_bound = 0; - - s8 tx_agc_index = 0; - u8 tx_bb_swing_index = cali_info->default_ofdm_index; - - ODM_RT_TRACE( - dm, ODM_COMP_TX_PWR_TRACK, - "Path_%d cali_info->absolute_ofdm_swing_idx[rf_path]=%d, tx_power_index_offset=%d\n", - rf_path, cali_info->absolute_ofdm_swing_idx[rf_path], - tx_power_index_offset); - - if (tx_power_index_offset > 0XF) - tx_power_index_offset = 0XF; - - if (cali_info->absolute_ofdm_swing_idx[rf_path] >= 0 && - cali_info->absolute_ofdm_swing_idx[rf_path] <= - tx_power_index_offset) { - tx_agc_index = cali_info->absolute_ofdm_swing_idx[rf_path]; - tx_bb_swing_index = cali_info->default_ofdm_index; - } else if (cali_info->absolute_ofdm_swing_idx[rf_path] > - tx_power_index_offset) { - tx_agc_index = tx_power_index_offset; - cali_info->remnant_ofdm_swing_idx[rf_path] = - cali_info->absolute_ofdm_swing_idx[rf_path] - - tx_power_index_offset; - tx_bb_swing_index = cali_info->default_ofdm_index + - cali_info->remnant_ofdm_swing_idx[rf_path]; - - if (tx_bb_swing_index > bb_swing_upper_bound) - tx_bb_swing_index = bb_swing_upper_bound; - } else { - tx_agc_index = 0; - - if (cali_info->default_ofdm_index > - (cali_info->absolute_ofdm_swing_idx[rf_path] * (-1))) - tx_bb_swing_index = - cali_info->default_ofdm_index + - cali_info->absolute_ofdm_swing_idx[rf_path]; - else - tx_bb_swing_index = bb_swing_lower_bound; - - if (tx_bb_swing_index < bb_swing_lower_bound) - tx_bb_swing_index = bb_swing_lower_bound; - } - - cali_info->absolute_ofdm_swing_idx[rf_path] = tx_agc_index; - cali_info->bb_swing_idx_ofdm[rf_path] = tx_bb_swing_index; - - ODM_RT_TRACE( - dm, ODM_COMP_TX_PWR_TRACK, - "MixMode Offset Path_%d cali_info->absolute_ofdm_swing_idx[rf_path]=%d cali_info->bb_swing_idx_ofdm[rf_path]=%d tx_power_index_offset=%d\n", - rf_path, cali_info->absolute_ofdm_swing_idx[rf_path], - cali_info->bb_swing_idx_ofdm[rf_path], tx_power_index_offset); - - return true; -} - -void odm_tx_pwr_track_set_pwr8822b(void *dm_void, enum pwrtrack_method method, - u8 rf_path, u8 channel_mapped_index) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - u8 tx_power_index_offset = 0; - u8 tx_power_index = 0; - - struct rtl_priv *rtlpriv = (struct rtl_priv *)dm->adapter; - struct rtl_phy *rtlphy = &rtlpriv->phy; - u8 channel = rtlphy->current_channel; - u8 band_width = rtlphy->current_chan_bw; - u8 tx_rate = 0xFF; - - if (!dm->mp_mode) { - u16 rate = *dm->forced_data_rate; - - if (!rate) /*auto rate*/ - tx_rate = dm->tx_rate; - else /*force rate*/ - tx_rate = (u8)rate; - } - - ODM_RT_TRACE(dm, ODM_COMP_TX_PWR_TRACK, "Call:%s tx_rate=0x%X\n", - __func__, tx_rate); - - ODM_RT_TRACE(dm, ODM_COMP_TX_PWR_TRACK, - "pRF->default_ofdm_index=%d pRF->default_cck_index=%d\n", - cali_info->default_ofdm_index, - cali_info->default_cck_index); - - ODM_RT_TRACE( - dm, ODM_COMP_TX_PWR_TRACK, - "pRF->absolute_ofdm_swing_idx=%d pRF->remnant_ofdm_swing_idx=%d pRF->absolute_cck_swing_idx=%d pRF->remnant_cck_swing_idx=%d rf_path=%d\n", - cali_info->absolute_ofdm_swing_idx[rf_path], - cali_info->remnant_ofdm_swing_idx[rf_path], - cali_info->absolute_cck_swing_idx[rf_path], - cali_info->remnant_cck_swing_idx, rf_path); - - if (dm->number_linked_client != 0) - tx_power_index = odm_get_tx_power_index( - dm, (enum odm_rf_radio_path)rf_path, tx_rate, - band_width, channel); - - if (tx_power_index >= 63) - tx_power_index = 63; - - tx_power_index_offset = 63 - tx_power_index; - - ODM_RT_TRACE(dm, ODM_COMP_TX_PWR_TRACK, - "tx_power_index=%d tx_power_index_offset=%d rf_path=%d\n", - tx_power_index, tx_power_index_offset, rf_path); - - if (method == - BBSWING) { /*use for mp driver clean power tracking status*/ - switch (rf_path) { - case ODM_RF_PATH_A: - odm_set_bb_reg( - dm, 0xC94, (BIT(29) | BIT(28) | BIT(27) | - BIT(26) | BIT(25)), - cali_info->absolute_ofdm_swing_idx[rf_path]); - odm_set_bb_reg( - dm, REG_A_TX_SCALE_JAGUAR, 0xFFE00000, - tx_scaling_table_jaguar - [cali_info - ->bb_swing_idx_ofdm[rf_path]]); - break; - case ODM_RF_PATH_B: - odm_set_bb_reg( - dm, 0xE94, (BIT(29) | BIT(28) | BIT(27) | - BIT(26) | BIT(25)), - cali_info->absolute_ofdm_swing_idx[rf_path]); - odm_set_bb_reg( - dm, REG_B_TX_SCALE_JAGUAR, 0xFFE00000, - tx_scaling_table_jaguar - [cali_info - ->bb_swing_idx_ofdm[rf_path]]); - break; - - default: - break; - } - } else if (method == MIX_MODE) { - switch (rf_path) { - case ODM_RF_PATH_A: - get_mix_mode_tx_agc_bb_swing_offset_8822b( - dm, method, rf_path, tx_power_index_offset); - odm_set_bb_reg( - dm, 0xC94, (BIT(29) | BIT(28) | BIT(27) | - BIT(26) | BIT(25)), - cali_info->absolute_ofdm_swing_idx[rf_path]); - odm_set_bb_reg( - dm, REG_A_TX_SCALE_JAGUAR, 0xFFE00000, - tx_scaling_table_jaguar - [cali_info - ->bb_swing_idx_ofdm[rf_path]]); - - ODM_RT_TRACE( - dm, ODM_COMP_TX_PWR_TRACK, - "TXAGC(0xC94)=0x%x BBSwing(0xc1c)=0x%x BBSwingIndex=%d rf_path=%d\n", - odm_get_bb_reg(dm, 0xC94, - (BIT(29) | BIT(28) | BIT(27) | - BIT(26) | BIT(25))), - odm_get_bb_reg(dm, 0xc1c, 0xFFE00000), - cali_info->bb_swing_idx_ofdm[rf_path], rf_path); - break; - - case ODM_RF_PATH_B: - get_mix_mode_tx_agc_bb_swing_offset_8822b( - dm, method, rf_path, tx_power_index_offset); - odm_set_bb_reg( - dm, 0xE94, (BIT(29) | BIT(28) | BIT(27) | - BIT(26) | BIT(25)), - cali_info->absolute_ofdm_swing_idx[rf_path]); - odm_set_bb_reg( - dm, REG_B_TX_SCALE_JAGUAR, 0xFFE00000, - tx_scaling_table_jaguar - [cali_info - ->bb_swing_idx_ofdm[rf_path]]); - - ODM_RT_TRACE( - dm, ODM_COMP_TX_PWR_TRACK, - "TXAGC(0xE94)=0x%x BBSwing(0xe1c)=0x%x BBSwingIndex=%d rf_path=%d\n", - odm_get_bb_reg(dm, 0xE94, - (BIT(29) | BIT(28) | BIT(27) | - BIT(26) | BIT(25))), - odm_get_bb_reg(dm, 0xe1c, 0xFFE00000), - cali_info->bb_swing_idx_ofdm[rf_path], rf_path); - break; - - default: - break; - } - } -} - -void get_delta_swing_table_8822b(void *dm_void, u8 **temperature_up_a, - u8 **temperature_down_a, u8 **temperature_up_b, - u8 **temperature_down_b) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info; - - struct rtl_priv *rtlpriv = (struct rtl_priv *)dm->adapter; - struct rtl_phy *rtlphy = &rtlpriv->phy; - u8 channel = rtlphy->current_channel; - - *temperature_up_a = cali_info->delta_swing_table_idx_2ga_p; - *temperature_down_a = cali_info->delta_swing_table_idx_2ga_n; - *temperature_up_b = cali_info->delta_swing_table_idx_2gb_p; - *temperature_down_b = cali_info->delta_swing_table_idx_2gb_n; - - if (channel >= 36 && channel <= 64) { - *temperature_up_a = cali_info->delta_swing_table_idx_5ga_p[0]; - *temperature_down_a = cali_info->delta_swing_table_idx_5ga_n[0]; - *temperature_up_b = cali_info->delta_swing_table_idx_5gb_p[0]; - *temperature_down_b = cali_info->delta_swing_table_idx_5gb_n[0]; - } else if (channel >= 100 && channel <= 144) { - *temperature_up_a = cali_info->delta_swing_table_idx_5ga_p[1]; - *temperature_down_a = cali_info->delta_swing_table_idx_5ga_n[1]; - *temperature_up_b = cali_info->delta_swing_table_idx_5gb_p[1]; - *temperature_down_b = cali_info->delta_swing_table_idx_5gb_n[1]; - } else if (channel >= 149 && channel <= 177) { - *temperature_up_a = cali_info->delta_swing_table_idx_5ga_p[2]; - *temperature_down_a = cali_info->delta_swing_table_idx_5ga_n[2]; - *temperature_up_b = cali_info->delta_swing_table_idx_5gb_p[2]; - *temperature_down_b = cali_info->delta_swing_table_idx_5gb_n[2]; - } -} - -static void _phy_lc_calibrate_8822b(struct phy_dm_struct *dm) -{ - u32 lc_cal = 0, cnt = 0; - - /*backup RF0x18*/ - lc_cal = odm_get_rf_reg(dm, ODM_RF_PATH_A, RF_CHNLBW, RFREGOFFSETMASK); - - /*Start LCK*/ - odm_set_rf_reg(dm, ODM_RF_PATH_A, RF_CHNLBW, RFREGOFFSETMASK, - lc_cal | 0x08000); - - ODM_delay_ms(100); - - for (cnt = 0; cnt < 100; cnt++) { - if (odm_get_rf_reg(dm, ODM_RF_PATH_A, RF_CHNLBW, 0x8000) != 0x1) - break; - ODM_delay_ms(10); - } - - /*Recover channel number*/ - odm_set_rf_reg(dm, ODM_RF_PATH_A, RF_CHNLBW, RFREGOFFSETMASK, lc_cal); -} - -void phy_lc_calibrate_8822b(void *dm_void) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - bool is_start_cont_tx = false, is_single_tone = false, - is_carrier_suppression = false; - u64 start_time; - u64 progressing_time; - - if (is_start_cont_tx || is_single_tone || is_carrier_suppression) { - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[LCK]continues TX ing !!! LCK return\n"); - return; - } - - start_time = odm_get_current_time(dm); - _phy_lc_calibrate_8822b(dm); - progressing_time = odm_get_progressing_time(dm, start_time); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[LCK]LCK progressing_time = %lld\n", progressing_time); -} - -void configure_txpower_track_8822b(struct txpwrtrack_cfg *config) -{ - config->swing_table_size_cck = TXSCALE_TABLE_SIZE; - config->swing_table_size_ofdm = TXSCALE_TABLE_SIZE; - config->threshold_iqk = IQK_THRESHOLD; - config->threshold_dpk = DPK_THRESHOLD; - config->average_thermal_num = AVG_THERMAL_NUM_8822B; - config->rf_path_count = MAX_PATH_NUM_8822B; - config->thermal_reg_addr = RF_T_METER_8822B; - - config->odm_tx_pwr_track_set_pwr = odm_tx_pwr_track_set_pwr8822b; - config->do_iqk = do_iqk_8822b; - config->phy_lc_calibrate = phy_lc_calibrate_8822b; - - config->get_delta_swing_table = get_delta_swing_table_8822b; -} - -void phy_set_rf_path_switch_8822b(struct phy_dm_struct *dm, bool is_main) -{ - /*BY SY Request */ - odm_set_bb_reg(dm, 0x4C, (BIT(24) | BIT(23)), 0x2); - odm_set_bb_reg(dm, 0x974, 0xff, 0xff); - - /*odm_set_bb_reg(dm, 0x1991, 0x3, 0x0);*/ - odm_set_bb_reg(dm, 0x1990, (BIT(9) | BIT(8)), 0x0); - - /*odm_set_bb_reg(dm, 0xCBE, 0x8, 0x0);*/ - odm_set_bb_reg(dm, 0xCBC, BIT(19), 0x0); - - odm_set_bb_reg(dm, 0xCB4, 0xff, 0x77); - - odm_set_bb_reg(dm, 0x70, MASKBYTE3, 0x0e); - odm_set_bb_reg(dm, 0x1704, MASKDWORD, 0x0000ff00); - odm_set_bb_reg(dm, 0x1700, MASKDWORD, 0xc00f0038); - - if (is_main) { - /*odm_set_bb_reg(dm, 0xCBD, 0x3, 0x2); WiFi */ - odm_set_bb_reg(dm, 0xCBC, (BIT(9) | BIT(8)), 0x2); /*WiFi */ - } else { - /*odm_set_bb_reg(dm, 0xCBD, 0x3, 0x1); BT*/ - odm_set_bb_reg(dm, 0xCBC, (BIT(9) | BIT(8)), 0x1); /*BT*/ - } -} diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/halphyrf_8822b.h b/drivers/staging/rtlwifi/phydm/rtl8822b/halphyrf_8822b.h deleted file mode 100644 index 794ee33ea7df..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/halphyrf_8822b.h +++ /dev/null @@ -1,34 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -#ifndef __HAL_PHY_RF_8822B_H__ -#define __HAL_PHY_RF_8822B_H__ - -#define AVG_THERMAL_NUM_8822B 4 -#define RF_T_METER_8822B 0x42 - -void configure_txpower_track_8822b(struct txpwrtrack_cfg *config); - -void odm_tx_pwr_track_set_pwr8822b(void *dm_void, enum pwrtrack_method method, - u8 rf_path, u8 channel_mapped_index); - -void get_delta_swing_table_8822b(void *dm_void, u8 **temperature_up_a, - u8 **temperature_down_a, u8 **temperature_up_b, - u8 **temperature_down_b); - -void phy_lc_calibrate_8822b(void *dm_void); - -void phy_set_rf_path_switch_8822b(struct phy_dm_struct *dm, bool is_main); - -#endif /* #ifndef __HAL_PHY_RF_8822B_H__ */ diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_hal_api8822b.c b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_hal_api8822b.c deleted file mode 100644 index 776096164b80..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_hal_api8822b.c +++ /dev/null @@ -1,1804 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -#include "../mp_precomp.h" -#include "../phydm_precomp.h" - -/* ======================================================================== */ -/* These following functions can be used for PHY DM only*/ - -static u32 reg82c_8822b; -static u32 reg838_8822b; -static u32 reg830_8822b; -static u32 reg83c_8822b; -static u32 rega20_8822b; -static u32 rega24_8822b; -static u32 rega28_8822b; -static enum odm_bw bw_8822b; -static u8 central_ch_8822b; - -static u32 cca_ifem_ccut[12][4] = { - /*20M*/ - {0x75D97010, 0x75D97010, 0x75D97010, 0x75D97010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x00000000}, /*Reg830*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*40M*/ - {0x75D97010, 0x75D97010, 0x75D97010, 0x75D97010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x79a0ea28}, /*Reg830*/ - {0x87765541, 0x87766341, 0x87765541, 0x87766341}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*80M*/ - {0x75C97010, 0x75C97010, 0x75C97010, 0x75C97010}, /*Reg82C*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg830*/ - {0x00000000, 0x87746641, 0x00000000, 0x87746641}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, -}; /*Reg83C*/ -static u32 cca_efem_ccut[12][4] = { - /*20M*/ - {0x75A76010, 0x75A76010, 0x75A76010, 0x75A75010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x00000000}, /*Reg830*/ - {0x87766651, 0x87766431, 0x87766451, 0x87766431}, /*Reg838*/ - {0x9194b2b9, 0x9194b2b9, 0x9194b2b9, 0x9194b2b9}, /*Reg83C*/ - /*40M*/ - {0x75A85010, 0x75A75010, 0x75A85010, 0x75A75010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x00000000}, /*Reg830*/ - {0x87766431, 0x87766431, 0x87766431, 0x87766431}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*80M*/ - {0x76BA7010, 0x75BA7010, 0x76BA7010, 0x75BA7010}, /*Reg82C*/ - {0x79a0ea28, 0x00000000, 0x79a0ea28, 0x00000000}, /*Reg830*/ - {0x87766431, 0x87766431, 0x87766431, 0x87766431}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, -}; /*Reg83C*/ -static u32 cca_ifem_ccut_rfetype5[12][4] = { - /*20M*/ - {0x75D97010, 0x75D97010, 0x75D97010, 0x75D97010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x00000000}, /*Reg830*/ - {0x00000000, 0x00000000, 0x87766461, 0x87766461}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*40M*/ - {0x75D97010, 0x75D97010, 0x75D97010, 0x75D97010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x79a0ea28}, /*Reg830*/ - {0x87765541, 0x87766341, 0x87765541, 0x87766341}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*80M*/ - {0x75C97010, 0x75C97010, 0x75C97010, 0x75C97010}, /*Reg82C*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg830*/ - {0x00000000, 0x76666641, 0x00000000, 0x76666641}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, -}; /*Reg83C*/ -static u32 cca_ifem_ccut_rfetype3[12][4] = { - /*20M*/ - {0x75D97010, 0x75D97010, 0x75D97010, 0x75D97010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x00000000}, /*Reg830*/ - {0x00000000, 0x00000000, 0x87766461, 0x87766461}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*40M*/ - {0x75D97010, 0x75D97010, 0x75D97010, 0x75D97010}, /*Reg82C*/ - {0x00000000, 0x79a0ea2c, 0x00000000, 0x79a0ea28}, /*Reg830*/ - {0x87765541, 0x87766341, 0x87765541, 0x87766341}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg83C*/ - /*80M*/ - {0x75C97010, 0x75C97010, 0x75C97010, 0x75C97010}, /*Reg82C*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, /*Reg830*/ - {0x00000000, 0x76666641, 0x00000000, 0x76666641}, /*Reg838*/ - {0x00000000, 0x00000000, 0x00000000, 0x00000000}, -}; /*Reg83C*/ - -static inline u32 phydm_check_bit_mask(u32 bit_mask, u32 data_original, - u32 data) -{ - u8 bit_shift; - - if (bit_mask != 0xfffff) { - for (bit_shift = 0; bit_shift <= 19; bit_shift++) { - if (((bit_mask >> bit_shift) & 0x1) == 1) - break; - } - return ((data_original) & (~bit_mask)) | (data << bit_shift); - } - return data; -} - -static bool phydm_rfe_8822b(struct phy_dm_struct *dm, u8 channel) -{ - if (dm->rfe_type == 4) { - /* Default setting is in PHY parameters */ - - if (channel <= 14) { - /* signal source */ - odm_set_bb_reg(dm, 0xcb0, (MASKBYTE2 | MASKLWORD), - 0x745774); - odm_set_bb_reg(dm, 0xeb0, (MASKBYTE2 | MASKLWORD), - 0x745774); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x57); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x57); - - /* inverse or not */ - odm_set_bb_reg(dm, 0xcbc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x8); - odm_set_bb_reg(dm, 0xcbc, (BIT(11) | BIT(10)), 0x2); - odm_set_bb_reg(dm, 0xebc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x8); - odm_set_bb_reg(dm, 0xebc, (BIT(11) | BIT(10)), 0x2); - - /* antenna switch table */ - if ((dm->rx_ant_status == (ODM_RF_A | ODM_RF_B)) || - (dm->tx_ant_status == (ODM_RF_A | ODM_RF_B))) { - /* 2TX or 2RX */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xf050); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xf050); - } else if (dm->rx_ant_status == dm->tx_ant_status) { - /* TXA+RXA or TXB+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xf055); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xf055); - } else { - /* TXB+RXA or TXA+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xf550); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xf550); - } - - } else if (channel > 35) { - /* signal source */ - odm_set_bb_reg(dm, 0xcb0, (MASKBYTE2 | MASKLWORD), - 0x477547); - odm_set_bb_reg(dm, 0xeb0, (MASKBYTE2 | MASKLWORD), - 0x477547); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x75); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x75); - - /* inverse or not */ - odm_set_bb_reg(dm, 0xcbc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xcbc, (BIT(11) | BIT(10)), 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(11) | BIT(10)), 0x0); - - /* antenna switch table */ - if ((dm->rx_ant_status == (ODM_RF_A | ODM_RF_B)) || - (dm->tx_ant_status == (ODM_RF_A | ODM_RF_B))) { - /* 2TX or 2RX */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa501); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa501); - } else if (dm->rx_ant_status == dm->tx_ant_status) { - /* TXA+RXA or TXB+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa500); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa500); - } else { - /* TXB+RXA or TXA+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa005); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa005); - } - } else { - return false; - } - - } else if ((dm->rfe_type == 1) || (dm->rfe_type == 2) || - (dm->rfe_type == 7) || (dm->rfe_type == 9)) { - /* eFem */ - if (((dm->cut_version == ODM_CUT_A) || - (dm->cut_version == ODM_CUT_B)) && - (dm->rfe_type < 2)) { - if (channel <= 14) { - /* signal source */ - odm_set_bb_reg(dm, 0xcb0, - (MASKBYTE2 | MASKLWORD), - 0x704570); - odm_set_bb_reg(dm, 0xeb0, - (MASKBYTE2 | MASKLWORD), - 0x704570); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x45); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x45); - } else if (channel > 35) { - odm_set_bb_reg(dm, 0xcb0, - (MASKBYTE2 | MASKLWORD), - 0x174517); - odm_set_bb_reg(dm, 0xeb0, - (MASKBYTE2 | MASKLWORD), - 0x174517); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x45); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x45); - } else { - return false; - } - - /* delay 400ns for PAPE */ - odm_set_bb_reg(dm, 0x810, - MASKBYTE3 | BIT(20) | BIT(21) | BIT(22) | - BIT(23), - 0x211); - - /* antenna switch table */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa555); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa555); - - /* inverse or not */ - odm_set_bb_reg(dm, 0xcbc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xcbc, (BIT(11) | BIT(10)), 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(11) | BIT(10)), 0x0); - - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s: Using old RFE control pin setting for A-cut and B-cut\n", - __func__); - } else { - if (channel <= 14) { - /* signal source */ - odm_set_bb_reg(dm, 0xcb0, - (MASKBYTE2 | MASKLWORD), - 0x705770); - odm_set_bb_reg(dm, 0xeb0, - (MASKBYTE2 | MASKLWORD), - 0x705770); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x57); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x57); - odm_set_bb_reg(dm, 0xcb8, BIT(4), 0); - odm_set_bb_reg(dm, 0xeb8, BIT(4), 0); - } else if (channel > 35) { - /* signal source */ - odm_set_bb_reg(dm, 0xcb0, - (MASKBYTE2 | MASKLWORD), - 0x177517); - odm_set_bb_reg(dm, 0xeb0, - (MASKBYTE2 | MASKLWORD), - 0x177517); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x75); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x75); - odm_set_bb_reg(dm, 0xcb8, BIT(5), 0); - odm_set_bb_reg(dm, 0xeb8, BIT(5), 0); - } else { - return false; - } - - /* inverse or not */ - odm_set_bb_reg(dm, 0xcbc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xcbc, (BIT(11) | BIT(10)), 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(5) | BIT(4) | BIT(3) | - BIT(2) | BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(11) | BIT(10)), 0x0); - - /* antenna switch table */ - if ((dm->rx_ant_status == (ODM_RF_A | ODM_RF_B)) || - (dm->tx_ant_status == (ODM_RF_A | ODM_RF_B))) { - /* 2TX or 2RX */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa501); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa501); - } else if (dm->rx_ant_status == dm->tx_ant_status) { - /* TXA+RXA or TXB+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa500); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa500); - } else { - /* TXB+RXA or TXA+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa005); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa005); - } - } - } else if ((dm->rfe_type == 0) || (dm->rfe_type == 3) || - (dm->rfe_type == 5) || (dm->rfe_type == 6) || - (dm->rfe_type == 8) || (dm->rfe_type == 10)) { - /* iFEM */ - if (channel <= 14) { - /* signal source */ - - odm_set_bb_reg(dm, 0xcb0, (MASKBYTE2 | MASKLWORD), - 0x745774); - odm_set_bb_reg(dm, 0xeb0, (MASKBYTE2 | MASKLWORD), - 0x745774); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x57); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x57); - - } else if (channel > 35) { - /* signal source */ - - odm_set_bb_reg(dm, 0xcb0, (MASKBYTE2 | MASKLWORD), - 0x477547); - odm_set_bb_reg(dm, 0xeb0, (MASKBYTE2 | MASKLWORD), - 0x477547); - odm_set_bb_reg(dm, 0xcb4, MASKBYTE1, 0x75); - odm_set_bb_reg(dm, 0xeb4, MASKBYTE1, 0x75); - - } else { - return false; - } - - /* inverse or not */ - odm_set_bb_reg(dm, 0xcbc, (BIT(5) | BIT(4) | BIT(3) | BIT(2) | - BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xcbc, (BIT(11) | BIT(10)), 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(5) | BIT(4) | BIT(3) | BIT(2) | - BIT(1) | BIT(0)), - 0x0); - odm_set_bb_reg(dm, 0xebc, (BIT(11) | BIT(10)), 0x0); - - /* antenna switch table */ - if (channel <= 14) { - if ((dm->rx_ant_status == (ODM_RF_A | ODM_RF_B)) || - (dm->tx_ant_status == (ODM_RF_A | ODM_RF_B))) { - /* 2TX or 2RX */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa501); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa501); - } else if (dm->rx_ant_status == dm->tx_ant_status) { - /* TXA+RXA or TXB+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa500); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa500); - } else { - /* TXB+RXA or TXA+RXB */ - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa005); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa005); - } - } else if (channel > 35) { - odm_set_bb_reg(dm, 0xca0, MASKLWORD, 0xa5a5); - odm_set_bb_reg(dm, 0xea0, MASKLWORD, 0xa5a5); - } - } - - /* chip top mux */ - odm_set_bb_reg(dm, 0x64, BIT(29) | BIT(28), 0x3); - odm_set_bb_reg(dm, 0x4c, BIT(26) | BIT(25), 0x0); - odm_set_bb_reg(dm, 0x40, BIT(2), 0x1); - - /* from s0 or s1 */ - odm_set_bb_reg(dm, 0x1990, - (BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0)), - 0x30); - odm_set_bb_reg(dm, 0x1990, (BIT(11) | BIT(10)), 0x3); - - /* input or output */ - odm_set_bb_reg(dm, 0x974, - (BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0)), - 0x3f); - odm_set_bb_reg(dm, 0x974, (BIT(11) | BIT(10)), 0x3); - - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s: Update RFE control pin setting (ch%d, tx_path 0x%x, rx_path 0x%x)\n", - __func__, channel, dm->tx_ant_status, dm->rx_ant_status); - - return true; -} - -static void phydm_ccapar_by_rfe_8822b(struct phy_dm_struct *dm) -{ - u32 cca_ifem[12][4], cca_efem[12][4]; - u8 row, col; - u32 reg82c, reg830, reg838, reg83c; - - if (dm->cut_version == ODM_CUT_A) - return; - { - odm_move_memory(dm, cca_efem, cca_efem_ccut, 48 * 4); - if (dm->rfe_type == 5) - odm_move_memory(dm, cca_ifem, cca_ifem_ccut_rfetype5, - 48 * 4); - else if (dm->rfe_type == 3) - odm_move_memory(dm, cca_ifem, cca_ifem_ccut_rfetype3, - 48 * 4); - else - odm_move_memory(dm, cca_ifem, cca_ifem_ccut, 48 * 4); - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s: Update CCA parameters for Ccut\n", __func__); - } - - if (bw_8822b == ODM_BW20M) - row = 0; - else if (bw_8822b == ODM_BW40M) - row = 4; - else - row = 8; - - if (central_ch_8822b <= 14) { - if ((dm->rx_ant_status == ODM_RF_A) || - (dm->rx_ant_status == ODM_RF_B)) - col = 0; - else - col = 1; - } else { - if ((dm->rx_ant_status == ODM_RF_A) || - (dm->rx_ant_status == ODM_RF_B)) - col = 2; - else - col = 3; - } - - if ((dm->rfe_type == 1) || (dm->rfe_type == 4) || (dm->rfe_type == 6) || - (dm->rfe_type == 7)) { - /*eFEM => RFE type 1 & RFE type 4 & RFE type 6 & RFE type 7*/ - reg82c = (cca_efem[row][col] != 0) ? cca_efem[row][col] : - reg82c_8822b; - reg830 = (cca_efem[row + 1][col] != 0) ? - cca_efem[row + 1][col] : - reg830_8822b; - reg838 = (cca_efem[row + 2][col] != 0) ? - cca_efem[row + 2][col] : - reg838_8822b; - reg83c = (cca_efem[row + 3][col] != 0) ? - cca_efem[row + 3][col] : - reg83c_8822b; - } else if ((dm->rfe_type == 2) || (dm->rfe_type == 9)) { - /*5G eFEM, 2G iFEM => RFE type 2, 5G eFEM => RFE type 9 */ - if (central_ch_8822b <= 14) { - reg82c = (cca_ifem[row][col] != 0) ? - cca_ifem[row][col] : - reg82c_8822b; - reg830 = (cca_ifem[row + 1][col] != 0) ? - cca_ifem[row + 1][col] : - reg830_8822b; - reg838 = (cca_ifem[row + 2][col] != 0) ? - cca_ifem[row + 2][col] : - reg838_8822b; - reg83c = (cca_ifem[row + 3][col] != 0) ? - cca_ifem[row + 3][col] : - reg83c_8822b; - } else { - reg82c = (cca_efem[row][col] != 0) ? - cca_efem[row][col] : - reg82c_8822b; - reg830 = (cca_efem[row + 1][col] != 0) ? - cca_efem[row + 1][col] : - reg830_8822b; - reg838 = (cca_efem[row + 2][col] != 0) ? - cca_efem[row + 2][col] : - reg838_8822b; - reg83c = (cca_efem[row + 3][col] != 0) ? - cca_efem[row + 3][col] : - reg83c_8822b; - } - } else { - /* iFEM =>RFE type 3 & RFE type 5 & RFE type 0 & RFE type 8 & - * RFE type 10 - */ - reg82c = (cca_ifem[row][col] != 0) ? cca_ifem[row][col] : - reg82c_8822b; - reg830 = (cca_ifem[row + 1][col] != 0) ? - cca_ifem[row + 1][col] : - reg830_8822b; - reg838 = (cca_ifem[row + 2][col] != 0) ? - cca_ifem[row + 2][col] : - reg838_8822b; - reg83c = (cca_ifem[row + 3][col] != 0) ? - cca_ifem[row + 3][col] : - reg83c_8822b; - } - - odm_set_bb_reg(dm, 0x82c, MASKDWORD, reg82c); - odm_set_bb_reg(dm, 0x830, MASKDWORD, reg830); - odm_set_bb_reg(dm, 0x838, MASKDWORD, reg838); - odm_set_bb_reg(dm, 0x83c, MASKDWORD, reg83c); - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s: (Pkt%d, Intf%d, RFE%d), row = %d, col = %d\n", - __func__, dm->package_type, dm->support_interface, - dm->rfe_type, row, col); -} - -static void phydm_ccapar_by_bw_8822b(struct phy_dm_struct *dm, - enum odm_bw bandwidth) -{ - u32 reg82c; - - if (dm->cut_version != ODM_CUT_A) - return; - - /* A-cut */ - reg82c = odm_get_bb_reg(dm, 0x82c, MASKDWORD); - - if (bandwidth == ODM_BW20M) { - /* 82c[15:12] = 4 */ - /* 82c[27:24] = 6 */ - - reg82c &= (~(0x0f00f000)); - reg82c |= ((0x4) << 12); - reg82c |= ((0x6) << 24); - } else if (bandwidth == ODM_BW40M) { - /* 82c[19:16] = 9 */ - /* 82c[27:24] = 6 */ - - reg82c &= (~(0x0f0f0000)); - reg82c |= ((0x9) << 16); - reg82c |= ((0x6) << 24); - } else if (bandwidth == ODM_BW80M) { - /* 82c[15:12] 7 */ - /* 82c[19:16] b */ - /* 82c[23:20] d */ - /* 82c[27:24] 3 */ - - reg82c &= (~(0x0ffff000)); - reg82c |= ((0xdb7) << 12); - reg82c |= ((0x3) << 24); - } - - odm_set_bb_reg(dm, 0x82c, MASKDWORD, reg82c); - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Update CCA parameters for Acut\n", __func__); -} - -static void phydm_ccapar_by_rxpath_8822b(struct phy_dm_struct *dm) -{ - if (dm->cut_version != ODM_CUT_A) - return; - - if ((dm->rx_ant_status == ODM_RF_A) || - (dm->rx_ant_status == ODM_RF_B)) { - /* 838[7:4] = 8 */ - /* 838[11:8] = 7 */ - /* 838[15:12] = 6 */ - /* 838[19:16] = 7 */ - /* 838[23:20] = 7 */ - /* 838[27:24] = 7 */ - odm_set_bb_reg(dm, 0x838, 0x0ffffff0, 0x777678); - } else { - /* 838[7:4] = 3 */ - /* 838[11:8] = 3 */ - /* 838[15:12] = 6 */ - /* 838[19:16] = 6 */ - /* 838[23:20] = 7 */ - /* 838[27:24] = 7 */ - odm_set_bb_reg(dm, 0x838, 0x0ffffff0, 0x776633); - } - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Update CCA parameters for Acut\n", __func__); -} - -static void phydm_rxdfirpar_by_bw_8822b(struct phy_dm_struct *dm, - enum odm_bw bandwidth) -{ - if (bandwidth == ODM_BW40M) { - /* RX DFIR for BW40 */ - odm_set_bb_reg(dm, 0x948, BIT(29) | BIT(28), 0x1); - odm_set_bb_reg(dm, 0x94c, BIT(29) | BIT(28), 0x0); - odm_set_bb_reg(dm, 0xc20, BIT(31), 0x0); - odm_set_bb_reg(dm, 0xe20, BIT(31), 0x0); - } else if (bandwidth == ODM_BW80M) { - /* RX DFIR for BW80 */ - odm_set_bb_reg(dm, 0x948, BIT(29) | BIT(28), 0x2); - odm_set_bb_reg(dm, 0x94c, BIT(29) | BIT(28), 0x1); - odm_set_bb_reg(dm, 0xc20, BIT(31), 0x0); - odm_set_bb_reg(dm, 0xe20, BIT(31), 0x0); - } else { - /* RX DFIR for BW20, BW10 and BW5*/ - odm_set_bb_reg(dm, 0x948, BIT(29) | BIT(28), 0x2); - odm_set_bb_reg(dm, 0x94c, BIT(29) | BIT(28), 0x2); - odm_set_bb_reg(dm, 0xc20, BIT(31), 0x1); - odm_set_bb_reg(dm, 0xe20, BIT(31), 0x1); - } -} - -bool phydm_write_txagc_1byte_8822b(struct phy_dm_struct *dm, u32 power_index, - enum odm_rf_radio_path path, u8 hw_rate) -{ - u32 offset_txagc[2] = {0x1d00, 0x1d80}; - u8 rate_idx = (hw_rate & 0xfc), i; - u8 rate_offset = (hw_rate & 0x3); - u32 txagc_content = 0x0; - - /* For debug command only!!!! */ - - /* Error handling */ - if ((path > ODM_RF_PATH_B) || (hw_rate > 0x53)) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): unsupported path (%d)\n", __func__, path); - return false; - } - - /* For HW limitation, We can't write TXAGC once a byte. */ - for (i = 0; i < 4; i++) { - if (i != rate_offset) - txagc_content = - txagc_content | (config_phydm_read_txagc_8822b( - dm, path, rate_idx + i) - << (i << 3)); - else - txagc_content = txagc_content | - ((power_index & 0x3f) << (i << 3)); - } - odm_set_bb_reg(dm, (offset_txagc[path] + rate_idx), MASKDWORD, - txagc_content); - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): path-%d rate index 0x%x (0x%x) = 0x%x\n", __func__, - path, hw_rate, (offset_txagc[path] + hw_rate), - power_index); - return true; -} - -void phydm_init_hw_info_by_rfe_type_8822b(struct phy_dm_struct *dm) -{ - u16 mask_path_a = 0x0303; - u16 mask_path_b = 0x0c0c; - /*u16 mask_path_c = 0x3030;*/ - /*u16 mask_path_d = 0xc0c0;*/ - - dm->is_init_hw_info_by_rfe = false; - - if ((dm->rfe_type == 1) || (dm->rfe_type == 6) || (dm->rfe_type == 7)) { - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, - (ODM_BOARD_EXT_LNA | ODM_BOARD_EXT_LNA_5G | - ODM_BOARD_EXT_PA | ODM_BOARD_EXT_PA_5G)); - - if (dm->rfe_type == 6) { - odm_cmn_info_init( - dm, ODM_CMNINFO_GPA, - (TYPE_GPA1 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_APA, - (TYPE_APA1 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_GLNA, - (TYPE_GLNA1 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_ALNA, - (TYPE_ALNA1 & (mask_path_a | mask_path_b))); - } else if (dm->rfe_type == 7) { - odm_cmn_info_init( - dm, ODM_CMNINFO_GPA, - (TYPE_GPA2 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_APA, - (TYPE_APA2 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_GLNA, - (TYPE_GLNA2 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_ALNA, - (TYPE_ALNA2 & (mask_path_a | mask_path_b))); - } else { - odm_cmn_info_init( - dm, ODM_CMNINFO_GPA, - (TYPE_GPA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_APA, - (TYPE_APA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_GLNA, - (TYPE_GLNA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init( - dm, ODM_CMNINFO_ALNA, - (TYPE_ALNA0 & (mask_path_a | mask_path_b))); - } - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 1); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, true); - } else if (dm->rfe_type == 2) { - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, - (ODM_BOARD_EXT_LNA_5G | ODM_BOARD_EXT_PA_5G)); - odm_cmn_info_init(dm, ODM_CMNINFO_APA, - (TYPE_APA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init(dm, ODM_CMNINFO_ALNA, - (TYPE_ALNA0 & (mask_path_a | mask_path_b))); - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 2); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, true); - } else if (dm->rfe_type == 9) { - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, - (ODM_BOARD_EXT_LNA_5G)); - odm_cmn_info_init(dm, ODM_CMNINFO_ALNA, - (TYPE_ALNA0 & (mask_path_a | mask_path_b))); - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 1); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, false); - } else if ((dm->rfe_type == 3) || (dm->rfe_type == 5)) { - /* RFE type 3: 8822BS\8822BU TFBGA iFEM */ - /* RFE type 5: 8822BE TFBGA iFEM */ - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, 0); - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 2); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, false); - } else if (dm->rfe_type == 4) { - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, - (ODM_BOARD_EXT_LNA | ODM_BOARD_EXT_LNA_5G | - ODM_BOARD_EXT_PA | ODM_BOARD_EXT_PA_5G)); - odm_cmn_info_init(dm, ODM_CMNINFO_GPA, - (TYPE_GPA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init(dm, ODM_CMNINFO_APA, - (TYPE_APA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init(dm, ODM_CMNINFO_GLNA, - (TYPE_GLNA0 & (mask_path_a | mask_path_b))); - odm_cmn_info_init(dm, ODM_CMNINFO_ALNA, - (TYPE_ALNA0 & (mask_path_a | mask_path_b))); - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 2); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, true); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, true); - } else if (dm->rfe_type == 8) { - /* RFE type 8: TFBGA iFEM AP */ - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, 0); - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 2); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, false); - } else { - /* RFE Type 0 & 9 & 10: QFN iFEM */ - odm_cmn_info_init(dm, ODM_CMNINFO_BOARD_TYPE, 0); - - odm_cmn_info_init(dm, ODM_CMNINFO_PACKAGE_TYPE, 1); - - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_LNA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_EXT_PA, false); - odm_cmn_info_init(dm, ODM_CMNINFO_5G_EXT_PA, false); - } - - dm->is_init_hw_info_by_rfe = true; - - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): RFE type (%d), Board type (0x%x), Package type (%d)\n", - __func__, dm->rfe_type, dm->board_type, dm->package_type); - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): 5G ePA (%d), 5G eLNA (%d), 2G ePA (%d), 2G eLNA (%d)\n", - __func__, dm->ext_pa_5g, dm->ext_lna_5g, dm->ext_pa, - dm->ext_lna); - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): 5G PA type (%d), 5G LNA type (%d), 2G PA type (%d), 2G LNA type (%d)\n", - __func__, dm->type_apa, dm->type_alna, dm->type_gpa, - dm->type_glna); -} - -s32 phydm_get_condition_number_8822B(struct phy_dm_struct *dm) -{ - s32 ret_val; - - odm_set_bb_reg(dm, 0x1988, BIT(22), 0x1); - ret_val = - (s32)odm_get_bb_reg(dm, 0xf84, (BIT(17) | BIT(16) | MASKLWORD)); - - if (bw_8822b == 0) { - ret_val = ret_val << (8 - 4); - ret_val = ret_val / 234; - } else if (bw_8822b == 1) { - ret_val = ret_val << (7 - 4); - ret_val = ret_val / 108; - } else if (bw_8822b == 2) { - ret_val = ret_val << (6 - 4); - ret_val = ret_val / 52; - } - - return ret_val; -} - -/* ======================================================================== */ - -/* ======================================================================== */ -/* These following functions can be used by driver*/ - -u32 config_phydm_read_rf_reg_8822b(struct phy_dm_struct *dm, - enum odm_rf_radio_path rf_path, u32 reg_addr, - u32 bit_mask) -{ - u32 readback_value, direct_addr; - u32 offset_read_rf[2] = {0x2800, 0x2c00}; - u32 power_RF[2] = {0x1c, 0xec}; - - /* Error handling.*/ - if (rf_path > ODM_RF_PATH_B) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): unsupported path (%d)\n", __func__, - rf_path); - return INVALID_RF_DATA; - } - - /* Error handling. Check if RF power is enable or not */ - /* 0xffffffff means RF power is disable */ - if (odm_get_mac_reg(dm, power_RF[rf_path], MASKBYTE3) != 0x7) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Read fail, RF is disabled\n", __func__); - return INVALID_RF_DATA; - } - - /* Calculate offset */ - reg_addr &= 0xff; - direct_addr = offset_read_rf[rf_path] + (reg_addr << 2); - - /* RF register only has 20bits */ - bit_mask &= RFREGOFFSETMASK; - - /* Read RF register directly */ - readback_value = odm_get_bb_reg(dm, direct_addr, bit_mask); - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): RF-%d 0x%x = 0x%x, bit mask = 0x%x\n", __func__, - rf_path, reg_addr, readback_value, bit_mask); - return readback_value; -} - -bool config_phydm_write_rf_reg_8822b(struct phy_dm_struct *dm, - enum odm_rf_radio_path rf_path, - u32 reg_addr, u32 bit_mask, u32 data) -{ - u32 data_and_addr = 0, data_original = 0; - u32 offset_write_rf[2] = {0xc90, 0xe90}; - u32 power_RF[2] = {0x1c, 0xec}; - - /* Error handling.*/ - if (rf_path > ODM_RF_PATH_B) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): unsupported path (%d)\n", __func__, - rf_path); - return false; - } - - /* Read RF register content first */ - reg_addr &= 0xff; - bit_mask = bit_mask & RFREGOFFSETMASK; - - if (bit_mask != RFREGOFFSETMASK) { - data_original = config_phydm_read_rf_reg_8822b( - dm, rf_path, reg_addr, RFREGOFFSETMASK); - - /* Error handling. RF is disabled */ - if (!config_phydm_read_rf_check_8822b(data_original)) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Write fail, RF is disable\n", - __func__); - return false; - } - - /* check bit mask */ - data = phydm_check_bit_mask(bit_mask, data_original, data); - } else if (odm_get_mac_reg(dm, power_RF[rf_path], MASKBYTE3) != 0x7) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Write fail, RF is disabled\n", __func__); - return false; - } - - /* Put write addr in [27:20] and write data in [19:00] */ - data_and_addr = ((reg_addr << 20) | (data & 0x000fffff)) & 0x0fffffff; - - /* Write operation */ - odm_set_bb_reg(dm, offset_write_rf[rf_path], MASKDWORD, data_and_addr); - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): RF-%d 0x%x = 0x%x (original: 0x%x), bit mask = 0x%x\n", - __func__, rf_path, reg_addr, data, data_original, bit_mask); - return true; -} - -bool config_phydm_write_txagc_8822b(struct phy_dm_struct *dm, u32 power_index, - enum odm_rf_radio_path path, u8 hw_rate) -{ - u32 offset_txagc[2] = {0x1d00, 0x1d80}; - u8 rate_idx = (hw_rate & 0xfc); - - /* Input need to be HW rate index, not driver rate index!!!! */ - - if (dm->is_disable_phy_api) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): disable PHY API for debug!!\n", __func__); - return true; - } - - /* Error handling */ - if ((path > ODM_RF_PATH_B) || (hw_rate > 0x53)) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): unsupported path (%d)\n", __func__, path); - return false; - } - - /* driver need to construct a 4-byte power index */ - odm_set_bb_reg(dm, (offset_txagc[path] + rate_idx), MASKDWORD, - power_index); - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): path-%d rate index 0x%x (0x%x) = 0x%x\n", __func__, - path, hw_rate, (offset_txagc[path] + hw_rate), - power_index); - return true; -} - -u8 config_phydm_read_txagc_8822b(struct phy_dm_struct *dm, - enum odm_rf_radio_path path, u8 hw_rate) -{ - u8 read_back_data; - - /* Input need to be HW rate index, not driver rate index!!!! */ - - /* Error handling */ - if ((path > ODM_RF_PATH_B) || (hw_rate > 0x53)) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): unsupported path (%d)\n", __func__, path); - return INVALID_TXAGC_DATA; - } - - /* Disable TX AGC report */ - odm_set_bb_reg(dm, 0x1998, BIT(16), 0x0); /* need to check */ - - /* Set data rate index (bit0~6) and path index (bit7) */ - odm_set_bb_reg(dm, 0x1998, MASKBYTE0, (hw_rate | (path << 7))); - - /* Enable TXAGC report */ - odm_set_bb_reg(dm, 0x1998, BIT(16), 0x1); - - /* Read TX AGC report */ - read_back_data = (u8)odm_get_bb_reg(dm, 0xd30, 0x7f0000); - - /* Driver have to disable TXAGC report after reading TXAGC - * (ref. user guide v11) - */ - odm_set_bb_reg(dm, 0x1998, BIT(16), 0x0); - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): path-%d rate index 0x%x = 0x%x\n", __func__, path, - hw_rate, read_back_data); - return read_back_data; -} - -bool config_phydm_switch_band_8822b(struct phy_dm_struct *dm, u8 central_ch) -{ - u32 rf_reg18; - bool rf_reg_status = true; - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, "%s()======================>\n", - __func__); - - if (dm->is_disable_phy_api) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): disable PHY API for debug!!\n", __func__); - return true; - } - - rf_reg18 = config_phydm_read_rf_reg_8822b(dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK); - rf_reg_status = - rf_reg_status & config_phydm_read_rf_check_8822b(rf_reg18); - - if (central_ch <= 14) { - /* 2.4G */ - - /* Enable CCK block */ - odm_set_bb_reg(dm, 0x808, BIT(28), 0x1); - - /* Disable MAC CCK check */ - odm_set_bb_reg(dm, 0x454, BIT(7), 0x0); - - /* Disable BB CCK check */ - odm_set_bb_reg(dm, 0xa80, BIT(18), 0x0); - - /*CCA Mask*/ - odm_set_bb_reg(dm, 0x814, 0x0000FC00, 15); /*default value*/ - - /* RF band */ - rf_reg18 = (rf_reg18 & (~(BIT(16) | BIT(9) | BIT(8)))); - - /* RxHP dynamic control */ - if ((dm->rfe_type == 2) || (dm->rfe_type == 3) || - (dm->rfe_type == 5)) { - odm_set_bb_reg(dm, 0x8cc, MASKDWORD, 0x08108492); - odm_set_bb_reg(dm, 0x8d8, MASKDWORD, 0x29095612); - } - - } else if (central_ch > 35) { - /* 5G */ - - /* Enable BB CCK check */ - odm_set_bb_reg(dm, 0xa80, BIT(18), 0x1); - - /* Enable CCK check */ - odm_set_bb_reg(dm, 0x454, BIT(7), 0x1); - - /* Disable CCK block */ - odm_set_bb_reg(dm, 0x808, BIT(28), 0x0); - - /*CCA Mask*/ - odm_set_bb_reg(dm, 0x814, 0x0000FC00, 15); /*default value*/ - - /* RF band */ - rf_reg18 = (rf_reg18 & (~(BIT(16) | BIT(9) | BIT(8)))); - rf_reg18 = (rf_reg18 | BIT(8) | BIT(16)); - - /* RxHP dynamic control */ - if ((dm->rfe_type == 2) || (dm->rfe_type == 3) || - (dm->rfe_type == 5)) { - odm_set_bb_reg(dm, 0x8cc, MASKDWORD, 0x08100000); - odm_set_bb_reg(dm, 0x8d8, MASKDWORD, 0x21095612); - } - - } else { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Fail to switch band (ch: %d)\n", __func__, - central_ch); - return false; - } - - rf_reg_status = rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK, rf_reg18); - - if (dm->rf_type > ODM_1T1R) - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_B, 0x18, - RFREGOFFSETMASK, rf_reg18); - - if (!phydm_rfe_8822b(dm, central_ch)) - return false; - - if (!rf_reg_status) { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch band (ch: %d), because writing RF register is fail\n", - __func__, central_ch); - return false; - } - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Success to switch band (ch: %d)\n", __func__, - central_ch); - return true; -} - -bool config_phydm_switch_channel_8822b(struct phy_dm_struct *dm, u8 central_ch) -{ - struct dig_thres *dig_tab = &dm->dm_dig_table; - u32 rf_reg18 = 0, rf_reg_b8 = 0, rf_reg_be = 0xff; - bool rf_reg_status = true; - u8 low_band[15] = {0x7, 0x6, 0x6, 0x5, 0x0, 0x0, 0x7, 0xff, - 0x6, 0x5, 0x0, 0x0, 0x7, 0x6, 0x6}; - u8 middle_band[23] = {0x6, 0x5, 0x0, 0x0, 0x7, 0x6, 0x6, 0xff, - 0x0, 0x0, 0x7, 0x6, 0x6, 0x5, 0x0, 0xff, - 0x7, 0x6, 0x6, 0x5, 0x0, 0x0, 0x7}; - u8 high_band[15] = {0x5, 0x5, 0x0, 0x7, 0x7, 0x6, 0x5, 0xff, - 0x0, 0x7, 0x7, 0x6, 0x5, 0x5, 0x0}; - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, "%s()====================>\n", - __func__); - - if (dm->is_disable_phy_api) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): disable PHY API for debug!!\n", __func__); - return true; - } - - central_ch_8822b = central_ch; - rf_reg18 = config_phydm_read_rf_reg_8822b(dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK); - rf_reg_status = - rf_reg_status & config_phydm_read_rf_check_8822b(rf_reg18); - rf_reg18 = (rf_reg18 & (~(BIT(18) | BIT(17) | MASKBYTE0))); - - if (dm->cut_version == ODM_CUT_A) { - rf_reg_b8 = config_phydm_read_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xb8, RFREGOFFSETMASK); - rf_reg_status = rf_reg_status & - config_phydm_read_rf_check_8822b(rf_reg_b8); - } - - /* Switch band and channel */ - if (central_ch <= 14) { - /* 2.4G */ - - /* 1. RF band and channel*/ - rf_reg18 = (rf_reg18 | central_ch); - - /* 2. AGC table selection */ - odm_set_bb_reg(dm, 0x958, 0x1f, 0x0); - dig_tab->agc_table_idx = 0x0; - - /* 3. Set central frequency for clock offset tracking */ - odm_set_bb_reg(dm, 0x860, 0x1ffe0000, 0x96a); - - /* Fix A-cut LCK fail issue @ 5285MHz~5375MHz, 0xb8[19]=0x0 */ - if (dm->cut_version == ODM_CUT_A) - rf_reg_b8 = rf_reg_b8 | BIT(19); - - /* CCK TX filter parameters */ - if (central_ch == 14) { - odm_set_bb_reg(dm, 0xa20, MASKHWORD, 0x8488); - odm_set_bb_reg(dm, 0xa24, MASKDWORD, 0x00006577); - odm_set_bb_reg(dm, 0xa28, MASKLWORD, 0x0000); - } else { - odm_set_bb_reg(dm, 0xa20, MASKHWORD, - (rega20_8822b >> 16)); - odm_set_bb_reg(dm, 0xa24, MASKDWORD, rega24_8822b); - odm_set_bb_reg(dm, 0xa28, MASKLWORD, - (rega28_8822b & MASKLWORD)); - } - - } else if (central_ch > 35) { - /* 5G */ - - /* 1. RF band and channel*/ - rf_reg18 = (rf_reg18 | central_ch); - - /* 2. AGC table selection */ - if ((central_ch >= 36) && (central_ch <= 64)) { - odm_set_bb_reg(dm, 0x958, 0x1f, 0x1); - dig_tab->agc_table_idx = 0x1; - } else if ((central_ch >= 100) && (central_ch <= 144)) { - odm_set_bb_reg(dm, 0x958, 0x1f, 0x2); - dig_tab->agc_table_idx = 0x2; - } else if (central_ch >= 149) { - odm_set_bb_reg(dm, 0x958, 0x1f, 0x3); - dig_tab->agc_table_idx = 0x3; - } else { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch channel (AGC) (ch: %d)\n", - __func__, central_ch); - return false; - } - - /* 3. Set central frequency for clock offset tracking */ - if ((central_ch >= 36) && (central_ch <= 48)) { - odm_set_bb_reg(dm, 0x860, 0x1ffe0000, 0x494); - } else if ((central_ch >= 52) && (central_ch <= 64)) { - odm_set_bb_reg(dm, 0x860, 0x1ffe0000, 0x453); - } else if ((central_ch >= 100) && (central_ch <= 116)) { - odm_set_bb_reg(dm, 0x860, 0x1ffe0000, 0x452); - } else if ((central_ch >= 118) && (central_ch <= 177)) { - odm_set_bb_reg(dm, 0x860, 0x1ffe0000, 0x412); - } else { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch channel (fc_area) (ch: %d)\n", - __func__, central_ch); - return false; - } - - /* Fix A-cut LCK fail issue @ 5285MHz~5375MHz, 0xb8[19]=0x0 */ - if (dm->cut_version == ODM_CUT_A) { - if ((central_ch >= 57) && (central_ch <= 75)) - rf_reg_b8 = rf_reg_b8 & (~BIT(19)); - else - rf_reg_b8 = rf_reg_b8 | BIT(19); - } - } else { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Fail to switch channel (ch: %d)\n", - __func__, central_ch); - return false; - } - - /* Modify IGI for MP driver to aviod PCIE interference */ - if (dm->mp_mode && ((dm->rfe_type == 3) || (dm->rfe_type == 5))) { - if (central_ch == 14) - odm_write_dig(dm, 0x26); - else - odm_write_dig(dm, 0x20); - } - - /* Modify the setting of register 0xBE to reduce phase noise */ - if (central_ch <= 14) - rf_reg_be = 0x0; - else if ((central_ch >= 36) && (central_ch <= 64)) - rf_reg_be = low_band[(central_ch - 36) >> 1]; - else if ((central_ch >= 100) && (central_ch <= 144)) - rf_reg_be = middle_band[(central_ch - 100) >> 1]; - else if ((central_ch >= 149) && (central_ch <= 177)) - rf_reg_be = high_band[(central_ch - 149) >> 1]; - else - rf_reg_be = 0xff; - - if (rf_reg_be != 0xff) { - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xbe, - (BIT(17) | BIT(16) | BIT(15)), - rf_reg_be); - } else { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch channel (ch: %d, Phase noise)\n", - __func__, central_ch); - return false; - } - - /* Fix channel 144 issue, ask by RFSI Alvin*/ - /* 00 when freq < 5400; 01 when 5400<=freq<=5720; 10 when freq > 5720; - * 2G don't care - */ - /* need to set 0xdf[18]=1 before writing RF18 when channel 144 */ - if (central_ch == 144) { - rf_reg_status = rf_reg_status & - config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xdf, BIT(18), 0x1); - rf_reg18 = (rf_reg18 | BIT(17)); - } else { - rf_reg_status = rf_reg_status & - config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xdf, BIT(18), 0x0); - - if (central_ch > 144) - rf_reg18 = (rf_reg18 | BIT(18)); - else if (central_ch >= 80) - rf_reg18 = (rf_reg18 | BIT(17)); - } - - rf_reg_status = rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK, rf_reg18); - - if (dm->cut_version == ODM_CUT_A) - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xb8, - RFREGOFFSETMASK, rf_reg_b8); - - if (dm->rf_type > ODM_1T1R) { - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_B, 0x18, - RFREGOFFSETMASK, rf_reg18); - - if (dm->cut_version == ODM_CUT_A) - rf_reg_status = rf_reg_status & - config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_B, 0xb8, - RFREGOFFSETMASK, rf_reg_b8); - } - - if (!rf_reg_status) { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch channel (ch: %d), because writing RF register is fail\n", - __func__, central_ch); - return false; - } - - phydm_ccapar_by_rfe_8822b(dm); - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Success to switch channel (ch: %d)\n", __func__, - central_ch); - return true; -} - -bool config_phydm_switch_bandwidth_8822b(struct phy_dm_struct *dm, - u8 primary_ch_idx, - enum odm_bw bandwidth) -{ - u32 rf_reg18; - bool rf_reg_status = true; - u8 IGI = 0; - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, "%s()===================>\n", - __func__); - - if (dm->is_disable_phy_api) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): disable PHY API for debug!!\n", __func__); - return true; - } - - /* Error handling */ - if ((bandwidth >= ODM_BW_MAX) || - ((bandwidth == ODM_BW40M) && (primary_ch_idx > 2)) || - ((bandwidth == ODM_BW80M) && (primary_ch_idx > 4))) { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch bandwidth (bw: %d, primary ch: %d)\n", - __func__, bandwidth, primary_ch_idx); - return false; - } - - bw_8822b = bandwidth; - rf_reg18 = config_phydm_read_rf_reg_8822b(dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK); - rf_reg_status = - rf_reg_status & config_phydm_read_rf_check_8822b(rf_reg18); - - /* Switch bandwidth */ - switch (bandwidth) { - case ODM_BW20M: { - /* Small BW([7:6]) = 0, primary channel ([5:2]) = 0, - * rf mode([1:0]) = 20M - */ - odm_set_bb_reg(dm, 0x8ac, MASKBYTE0, ODM_BW20M); - - /* ADC clock = 160M clock for BW20 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(9) | BIT(8)), 0x0); - odm_set_bb_reg(dm, 0x8ac, BIT(16), 0x1); - - /* DAC clock = 160M clock for BW20 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(21) | BIT(20)), 0x0); - odm_set_bb_reg(dm, 0x8ac, BIT(28), 0x1); - - /* ADC buffer clock */ - odm_set_bb_reg(dm, 0x8c4, BIT(30), 0x1); - - /* RF bandwidth */ - rf_reg18 = (rf_reg18 | BIT(11) | BIT(10)); - - break; - } - case ODM_BW40M: { - /* Small BW([7:6]) = 0, primary channel ([5:2]) = sub-channel, - * rf mode([1:0]) = 40M - */ - odm_set_bb_reg(dm, 0x8ac, MASKBYTE0, - (((primary_ch_idx & 0xf) << 2) | ODM_BW40M)); - - /* CCK primary channel */ - if (primary_ch_idx == 1) - odm_set_bb_reg(dm, 0xa00, BIT(4), primary_ch_idx); - else - odm_set_bb_reg(dm, 0xa00, BIT(4), 0); - - /* ADC clock = 160M clock for BW40 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(11) | BIT(10)), 0x0); - odm_set_bb_reg(dm, 0x8ac, BIT(17), 0x1); - - /* DAC clock = 160M clock for BW20 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(23) | BIT(22)), 0x0); - odm_set_bb_reg(dm, 0x8ac, BIT(29), 0x1); - - /* ADC buffer clock */ - odm_set_bb_reg(dm, 0x8c4, BIT(30), 0x1); - - /* RF bandwidth */ - rf_reg18 = (rf_reg18 & (~(BIT(11) | BIT(10)))); - rf_reg18 = (rf_reg18 | BIT(11)); - - break; - } - case ODM_BW80M: { - /* Small BW([7:6]) = 0, primary channel ([5:2]) = sub-channel, - * rf mode([1:0]) = 80M - */ - odm_set_bb_reg(dm, 0x8ac, MASKBYTE0, - (((primary_ch_idx & 0xf) << 2) | ODM_BW80M)); - - /* ADC clock = 160M clock for BW80 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(13) | BIT(12)), 0x0); - odm_set_bb_reg(dm, 0x8ac, BIT(18), 0x1); - - /* DAC clock = 160M clock for BW20 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(25) | BIT(24)), 0x0); - odm_set_bb_reg(dm, 0x8ac, BIT(30), 0x1); - - /* ADC buffer clock */ - odm_set_bb_reg(dm, 0x8c4, BIT(30), 0x1); - - /* RF bandwidth */ - rf_reg18 = (rf_reg18 & (~(BIT(11) | BIT(10)))); - rf_reg18 = (rf_reg18 | BIT(10)); - - break; - } - case ODM_BW5M: { - /* Small BW([7:6]) = 1, primary channel ([5:2]) = 0, - * rf mode([1:0]) = 20M - */ - odm_set_bb_reg(dm, 0x8ac, MASKBYTE0, (BIT(6) | ODM_BW20M)); - - /* ADC clock = 40M clock */ - odm_set_bb_reg(dm, 0x8ac, (BIT(9) | BIT(8)), 0x2); - odm_set_bb_reg(dm, 0x8ac, BIT(16), 0x0); - - /* DAC clock = 160M clock for BW20 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(21) | BIT(20)), 0x2); - odm_set_bb_reg(dm, 0x8ac, BIT(28), 0x0); - - /* ADC buffer clock */ - odm_set_bb_reg(dm, 0x8c4, BIT(30), 0x0); - odm_set_bb_reg(dm, 0x8c8, BIT(31), 0x1); - - /* RF bandwidth */ - rf_reg18 = (rf_reg18 | BIT(11) | BIT(10)); - - break; - } - case ODM_BW10M: { - /* Small BW([7:6]) = 1, primary channel ([5:2]) = 0, - * rf mode([1:0]) = 20M - */ - odm_set_bb_reg(dm, 0x8ac, MASKBYTE0, (BIT(7) | ODM_BW20M)); - - /* ADC clock = 80M clock */ - odm_set_bb_reg(dm, 0x8ac, (BIT(9) | BIT(8)), 0x3); - odm_set_bb_reg(dm, 0x8ac, BIT(16), 0x0); - - /* DAC clock = 160M clock for BW20 */ - odm_set_bb_reg(dm, 0x8ac, (BIT(21) | BIT(20)), 0x3); - odm_set_bb_reg(dm, 0x8ac, BIT(28), 0x0); - - /* ADC buffer clock */ - odm_set_bb_reg(dm, 0x8c4, BIT(30), 0x0); - odm_set_bb_reg(dm, 0x8c8, BIT(31), 0x1); - - /* RF bandwidth */ - rf_reg18 = (rf_reg18 | BIT(11) | BIT(10)); - - break; - } - default: - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch bandwidth (bw: %d, primary ch: %d)\n", - __func__, bandwidth, primary_ch_idx); - } - - /* Write RF register */ - rf_reg_status = rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK, rf_reg18); - - if (dm->rf_type > ODM_1T1R) - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_B, 0x18, - RFREGOFFSETMASK, rf_reg18); - - if (!rf_reg_status) { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to switch bandwidth (bw: %d, primary ch: %d), because writing RF register is fail\n", - __func__, bandwidth, primary_ch_idx); - return false; - } - - /* Modify RX DFIR parameters */ - phydm_rxdfirpar_by_bw_8822b(dm, bandwidth); - - /* Modify CCA parameters */ - phydm_ccapar_by_bw_8822b(dm, bandwidth); - phydm_ccapar_by_rfe_8822b(dm); - - /* Toggle RX path to avoid RX dead zone issue */ - odm_set_bb_reg(dm, 0x808, MASKBYTE0, 0x0); - odm_set_bb_reg(dm, 0x808, MASKBYTE0, - (dm->rx_ant_status | (dm->rx_ant_status << 4))); - - /* Toggle IGI to let RF enter RX mode */ - IGI = (u8)odm_get_bb_reg(dm, ODM_REG(IGI_A, dm), ODM_BIT(IGI, dm)); - odm_set_bb_reg(dm, ODM_REG(IGI_A, dm), ODM_BIT(IGI, dm), IGI - 2); - odm_set_bb_reg(dm, ODM_REG(IGI_B, dm), ODM_BIT(IGI, dm), IGI - 2); - odm_set_bb_reg(dm, ODM_REG(IGI_A, dm), ODM_BIT(IGI, dm), IGI); - odm_set_bb_reg(dm, ODM_REG(IGI_B, dm), ODM_BIT(IGI, dm), IGI); - - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Success to switch bandwidth (bw: %d, primary ch: %d)\n", - __func__, bandwidth, primary_ch_idx); - return true; -} - -bool config_phydm_switch_channel_bw_8822b(struct phy_dm_struct *dm, - u8 central_ch, u8 primary_ch_idx, - enum odm_bw bandwidth) -{ - /* Switch band */ - if (!config_phydm_switch_band_8822b(dm, central_ch)) - return false; - - /* Switch channel */ - if (!config_phydm_switch_channel_8822b(dm, central_ch)) - return false; - - /* Switch bandwidth */ - if (!config_phydm_switch_bandwidth_8822b(dm, primary_ch_idx, bandwidth)) - return false; - - return true; -} - -bool config_phydm_trx_mode_8822b(struct phy_dm_struct *dm, - enum odm_rf_path tx_path, - enum odm_rf_path rx_path, bool is_tx2_path) -{ - bool rf_reg_status = true; - u8 IGI; - u32 rf_reg33 = 0; - u16 counter = 0; - - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, "%s()=====================>\n", - __func__); - - if (dm->is_disable_phy_api) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): disable PHY API for debug!!\n", __func__); - return true; - } - - if ((tx_path & (~(ODM_RF_A | ODM_RF_B))) != 0) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Wrong TX setting (TX: 0x%x)\n", __func__, - tx_path); - return false; - } - - if ((rx_path & (~(ODM_RF_A | ODM_RF_B))) != 0) { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Wrong RX setting (RX: 0x%x)\n", __func__, - rx_path); - return false; - } - - /* RF mode of path-A and path-B */ - /* Cannot shut down path-A, beacause synthesizer will be shut down when - * path-A is in shut down mode - */ - if ((tx_path | rx_path) & ODM_RF_A) - odm_set_bb_reg(dm, 0xc08, MASKLWORD, 0x3231); - else - odm_set_bb_reg(dm, 0xc08, MASKLWORD, 0x1111); - - if ((tx_path | rx_path) & ODM_RF_B) - odm_set_bb_reg(dm, 0xe08, MASKLWORD, 0x3231); - else - odm_set_bb_reg(dm, 0xe08, MASKLWORD, 0x1111); - - /* Set TX antenna by Nsts */ - odm_set_bb_reg(dm, 0x93c, (BIT(19) | BIT(18)), 0x3); - odm_set_bb_reg(dm, 0x80c, (BIT(29) | BIT(28)), 0x1); - - /* Control CCK TX path by 0xa07[7] */ - odm_set_bb_reg(dm, 0x80c, BIT(30), 0x1); - - /* TX logic map and TX path en for Nsts = 1, and CCK TX path*/ - if (tx_path & ODM_RF_A) { - odm_set_bb_reg(dm, 0x93c, 0xfff00000, 0x001); - odm_set_bb_reg(dm, 0xa04, 0xf0000000, 0x8); - } else if (tx_path & ODM_RF_B) { - odm_set_bb_reg(dm, 0x93c, 0xfff00000, 0x002); - odm_set_bb_reg(dm, 0xa04, 0xf0000000, 0x4); - } - - /* TX logic map and TX path en for Nsts = 2*/ - if ((tx_path == ODM_RF_A) || (tx_path == ODM_RF_B)) - odm_set_bb_reg(dm, 0x940, 0xfff0, 0x01); - else - odm_set_bb_reg(dm, 0x940, 0xfff0, 0x43); - - /* TX path enable */ - odm_set_bb_reg(dm, 0x80c, MASKBYTE0, ((tx_path << 4) | tx_path)); - - /* Tx2path for 1ss */ - if (!((tx_path == ODM_RF_A) || (tx_path == ODM_RF_B))) { - if (is_tx2_path || dm->mp_mode) { - /* 2Tx for OFDM */ - odm_set_bb_reg(dm, 0x93c, 0xfff00000, 0x043); - - /* 2Tx for CCK */ - odm_set_bb_reg(dm, 0xa04, 0xf0000000, 0xc); - } - } - - /* Always disable MRC for CCK CCA */ - odm_set_bb_reg(dm, 0xa2c, BIT(22), 0x0); - - /* Always disable MRC for CCK barker */ - odm_set_bb_reg(dm, 0xa2c, BIT(18), 0x0); - - /* CCK RX 1st and 2nd path setting*/ - if (rx_path & ODM_RF_A) - odm_set_bb_reg(dm, 0xa04, 0x0f000000, 0x0); - else if (rx_path & ODM_RF_B) - odm_set_bb_reg(dm, 0xa04, 0x0f000000, 0x5); - - /* RX path enable */ - odm_set_bb_reg(dm, 0x808, MASKBYTE0, ((rx_path << 4) | rx_path)); - - if ((rx_path == ODM_RF_A) || (rx_path == ODM_RF_B)) { - /* 1R */ - - /* Disable MRC for CCA */ - /* odm_set_bb_reg(dm, 0xa2c, BIT22, 0x0); */ - - /* Disable MRC for barker */ - /* odm_set_bb_reg(dm, 0xa2c, BIT18, 0x0); */ - - /* Disable CCK antenna diversity */ - /* odm_set_bb_reg(dm, 0xa00, BIT15, 0x0); */ - - /* Disable Antenna weighting */ - odm_set_bb_reg(dm, 0x1904, BIT(16), 0x0); - odm_set_bb_reg(dm, 0x800, BIT(28), 0x0); - odm_set_bb_reg(dm, 0x850, BIT(23), 0x0); - } else { - /* 2R */ - - /* Enable MRC for CCA */ - /* odm_set_bb_reg(dm, 0xa2c, BIT22, 0x1); */ - - /* Enable MRC for barker */ - /* odm_set_bb_reg(dm, 0xa2c, BIT18, 0x1); */ - - /* Disable CCK antenna diversity */ - /* odm_set_bb_reg(dm, 0xa00, BIT15, 0x0); */ - - /* Enable Antenna weighting */ - odm_set_bb_reg(dm, 0x1904, BIT(16), 0x1); - odm_set_bb_reg(dm, 0x800, BIT(28), 0x1); - odm_set_bb_reg(dm, 0x850, BIT(23), 0x1); - } - - /* Update TXRX antenna status for PHYDM */ - dm->tx_ant_status = (tx_path & 0x3); - dm->rx_ant_status = (rx_path & 0x3); - - /* MP driver need to support path-B TX\RX */ - - while (1) { - counter++; - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xef, - RFREGOFFSETMASK, 0x80000); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x33, - RFREGOFFSETMASK, 0x00001); - - ODM_delay_us(2); - rf_reg33 = config_phydm_read_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x33, RFREGOFFSETMASK); - - if ((rf_reg33 == 0x00001) && - (config_phydm_read_rf_check_8822b(rf_reg33))) - break; - else if (counter == 100) { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to set TRx mode setting, because writing RF mode table is fail\n", - __func__); - return false; - } - } - - if ((dm->mp_mode) || *dm->antenna_test || (dm->normal_rx_path)) { - /* 0xef 0x80000 0x33 0x00001 0x3e 0x00034 0x3f 0x4080e - * 0xef 0x00000 suggested by Lucas - */ - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xef, - RFREGOFFSETMASK, 0x80000); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x33, - RFREGOFFSETMASK, 0x00001); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x3e, - RFREGOFFSETMASK, 0x00034); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x3f, - RFREGOFFSETMASK, 0x4080e); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xef, - RFREGOFFSETMASK, 0x00000); - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): MP mode or Antenna test mode!! support path-B TX and RX\n", - __func__); - } else { - /* 0xef 0x80000 0x33 0x00001 0x3e 0x00034 0x3f 0x4080c - * 0xef 0x00000 - */ - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xef, - RFREGOFFSETMASK, 0x80000); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x33, - RFREGOFFSETMASK, 0x00001); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x3e, - RFREGOFFSETMASK, 0x00034); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0x3f, - RFREGOFFSETMASK, 0x4080c); - rf_reg_status = - rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xef, - RFREGOFFSETMASK, 0x00000); - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Normal mode!! Do not support path-B TX and RX\n", - __func__); - } - - rf_reg_status = rf_reg_status & config_phydm_write_rf_reg_8822b( - dm, ODM_RF_PATH_A, 0xef, - RFREGOFFSETMASK, 0x00000); - - if (!rf_reg_status) { - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Fail to set TRx mode setting (TX: 0x%x, RX: 0x%x), because writing RF register is fail\n", - __func__, tx_path, rx_path); - return false; - } - - /* Toggle IGI to let RF enter RX mode, - * because BB doesn't send 3-wire command when RX path is enable - */ - IGI = (u8)odm_get_bb_reg(dm, ODM_REG(IGI_A, dm), ODM_BIT(IGI, dm)); - odm_write_dig(dm, IGI - 2); - odm_write_dig(dm, IGI); - - /* Modify CCA parameters */ - phydm_ccapar_by_rxpath_8822b(dm); - phydm_ccapar_by_rfe_8822b(dm); - phydm_rfe_8822b(dm, central_ch_8822b); - - ODM_RT_TRACE( - dm, ODM_PHY_CONFIG, - "%s(): Success to set TRx mode setting (TX: 0x%x, RX: 0x%x)\n", - __func__, tx_path, rx_path); - return true; -} - -bool config_phydm_parameter_init(struct phy_dm_struct *dm, - enum odm_parameter_init type) -{ - if (type == ODM_PRE_SETTING) { - odm_set_bb_reg(dm, 0x808, (BIT(28) | BIT(29)), 0x0); - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Pre setting: disable OFDM and CCK block\n", - __func__); - } else if (type == ODM_POST_SETTING) { - odm_set_bb_reg(dm, 0x808, (BIT(28) | BIT(29)), 0x3); - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, - "%s(): Post setting: enable OFDM and CCK block\n", - __func__); - reg82c_8822b = odm_get_bb_reg(dm, 0x82c, MASKDWORD); - reg838_8822b = odm_get_bb_reg(dm, 0x838, MASKDWORD); - reg830_8822b = odm_get_bb_reg(dm, 0x830, MASKDWORD); - reg83c_8822b = odm_get_bb_reg(dm, 0x83c, MASKDWORD); - rega20_8822b = odm_get_bb_reg(dm, 0xa20, MASKDWORD); - rega24_8822b = odm_get_bb_reg(dm, 0xa24, MASKDWORD); - rega28_8822b = odm_get_bb_reg(dm, 0xa28, MASKDWORD); - } else { - ODM_RT_TRACE(dm, ODM_PHY_CONFIG, "%s(): Wrong type!!\n", - __func__); - return false; - } - - return true; -} - -/* ======================================================================== */ diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_hal_api8822b.h b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_hal_api8822b.h deleted file mode 100644 index 5c5370af6ece..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_hal_api8822b.h +++ /dev/null @@ -1,73 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ -#ifndef __INC_PHYDM_API_H_8822B__ -#define __INC_PHYDM_API_H_8822B__ - -/*2016.08.01 (HW user guide version: R27, SW user guide version: R05, - * Modification: R31) - */ -#define PHY_CONFIG_VERSION_8822B "27.5.31" - -#define INVALID_RF_DATA 0xffffffff -#define INVALID_TXAGC_DATA 0xff - -#define config_phydm_read_rf_check_8822b(data) (data != INVALID_RF_DATA) -#define config_phydm_read_txagc_check_8822b(data) (data != INVALID_TXAGC_DATA) - -u32 config_phydm_read_rf_reg_8822b(struct phy_dm_struct *dm, - enum odm_rf_radio_path rf_path, u32 reg_addr, - u32 bit_mask); - -bool config_phydm_write_rf_reg_8822b(struct phy_dm_struct *dm, - enum odm_rf_radio_path rf_path, - u32 reg_addr, u32 bit_mask, u32 data); - -bool config_phydm_write_txagc_8822b(struct phy_dm_struct *dm, u32 power_index, - enum odm_rf_radio_path path, u8 hw_rate); - -u8 config_phydm_read_txagc_8822b(struct phy_dm_struct *dm, - enum odm_rf_radio_path path, u8 hw_rate); - -bool config_phydm_switch_band_8822b(struct phy_dm_struct *dm, u8 central_ch); - -bool config_phydm_switch_channel_8822b(struct phy_dm_struct *dm, u8 central_ch); - -bool config_phydm_switch_bandwidth_8822b(struct phy_dm_struct *dm, - u8 primary_ch_idx, - enum odm_bw bandwidth); - -bool config_phydm_switch_channel_bw_8822b(struct phy_dm_struct *dm, - u8 central_ch, u8 primary_ch_idx, - enum odm_bw bandwidth); - -bool config_phydm_trx_mode_8822b(struct phy_dm_struct *dm, - enum odm_rf_path tx_path, - enum odm_rf_path rx_path, bool is_tx2_path); - -bool config_phydm_parameter_init(struct phy_dm_struct *dm, - enum odm_parameter_init type); - -/* ======================================================================== */ -/* These following functions can be used for PHY DM only*/ - -bool phydm_write_txagc_1byte_8822b(struct phy_dm_struct *dm, u32 power_index, - enum odm_rf_radio_path path, u8 hw_rate); - -void phydm_init_hw_info_by_rfe_type_8822b(struct phy_dm_struct *dm); - -s32 phydm_get_condition_number_8822B(struct phy_dm_struct *dm); - -/* ======================================================================== */ - -#endif /* __INC_PHYDM_API_H_8822B__ */ diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_iqk_8822b.c b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_iqk_8822b.c deleted file mode 100644 index 3ce49322b686..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_iqk_8822b.c +++ /dev/null @@ -1,1399 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -#include "../mp_precomp.h" -#include "../phydm_precomp.h" - -/*---------------------------Define Local Constant---------------------------*/ - -static bool _iqk_rx_iqk_by_path_8822b(void *, u8); - -static inline void phydm_set_iqk_info(struct phy_dm_struct *dm, - struct dm_iqk_info *iqk_info, u8 status) -{ - bool KFAIL = true; - - while (1) { - KFAIL = _iqk_rx_iqk_by_path_8822b(dm, ODM_RF_PATH_A); - if (status == 0) - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S0RXK KFail = 0x%x\n", KFAIL); - else if (status == 1) - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S1RXK KFail = 0x%x\n", KFAIL); - if (iqk_info->rxiqk_step == 5) { - dm->rf_calibrate_info.iqk_step++; - iqk_info->rxiqk_step = 1; - if (KFAIL && status == 0) - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S0RXK fail code: %d!!!\n", - iqk_info->rxiqk_fail_code - [0][ODM_RF_PATH_A]); - else if (KFAIL && status == 1) - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S1RXK fail code: %d!!!\n", - iqk_info->rxiqk_fail_code - [0][ODM_RF_PATH_A]); - break; - } - } - - iqk_info->kcount++; -} - -static inline void phydm_init_iqk_information(struct dm_iqk_info *iqk_info) -{ - u8 i, j, k, m; - - for (i = 0; i < 2; i++) { - iqk_info->iqk_channel[i] = 0x0; - - for (j = 0; j < SS_8822B; j++) { - iqk_info->lok_idac[i][j] = 0x0; - iqk_info->rxiqk_agc[i][j] = 0x0; - iqk_info->bypass_iqk[i][j] = 0x0; - - for (k = 0; k < 2; k++) { - iqk_info->iqk_fail_report[i][j][k] = true; - for (m = 0; m < 8; m++) { - iqk_info->iqk_cfir_real[i][j][k][m] = - 0x0; - iqk_info->iqk_cfir_imag[i][j][k][m] = - 0x0; - } - } - - for (k = 0; k < 3; k++) - iqk_info->retry_count[i][j][k] = 0x0; - } - } -} - -static inline void phydm_backup_iqk_information(struct dm_iqk_info *iqk_info) -{ - u8 i, j, k; - - iqk_info->iqk_channel[1] = iqk_info->iqk_channel[0]; - for (i = 0; i < 2; i++) { - iqk_info->lok_idac[1][i] = iqk_info->lok_idac[0][i]; - iqk_info->rxiqk_agc[1][i] = iqk_info->rxiqk_agc[0][i]; - iqk_info->bypass_iqk[1][i] = iqk_info->bypass_iqk[0][i]; - iqk_info->rxiqk_fail_code[1][i] = - iqk_info->rxiqk_fail_code[0][i]; - for (j = 0; j < 2; j++) { - iqk_info->iqk_fail_report[1][i][j] = - iqk_info->iqk_fail_report[0][i][j]; - for (k = 0; k < 8; k++) { - iqk_info->iqk_cfir_real[1][i][j][k] = - iqk_info->iqk_cfir_real[0][i][j][k]; - iqk_info->iqk_cfir_imag[1][i][j][k] = - iqk_info->iqk_cfir_imag[0][i][j][k]; - } - } - } - - for (i = 0; i < 4; i++) { - iqk_info->rxiqk_fail_code[0][i] = 0x0; - iqk_info->rxiqk_agc[0][i] = 0x0; - for (j = 0; j < 2; j++) { - iqk_info->iqk_fail_report[0][i][j] = true; - iqk_info->gs_retry_count[0][i][j] = 0x0; - } - for (j = 0; j < 3; j++) - iqk_info->retry_count[0][i][j] = 0x0; - } -} - -static inline void phydm_set_iqk_cfir(struct phy_dm_struct *dm, - struct dm_iqk_info *iqk_info, u8 path) -{ - u8 idx, i; - u32 tmp; - - for (idx = 0; idx < 2; idx++) { - odm_set_bb_reg(dm, 0x1b00, MASKDWORD, 0xf8000008 | path << 1); - - if (idx == 0) - odm_set_bb_reg(dm, 0x1b0c, BIT(13) | BIT(12), 0x3); - else - odm_set_bb_reg(dm, 0x1b0c, BIT(13) | BIT(12), 0x1); - - odm_set_bb_reg(dm, 0x1bd4, - BIT(20) | BIT(19) | BIT(18) | BIT(17) | BIT(16), - 0x10); - - for (i = 0; i < 8; i++) { - odm_set_bb_reg(dm, 0x1bd8, MASKDWORD, - 0xe0000001 + (i * 4)); - tmp = odm_get_bb_reg(dm, 0x1bfc, MASKDWORD); - iqk_info->iqk_cfir_real[0][path][idx][i] = - (tmp & 0x0fff0000) >> 16; - iqk_info->iqk_cfir_imag[0][path][idx][i] = tmp & 0xfff; - } - } -} - -static inline void phydm_get_read_counter(struct phy_dm_struct *dm) -{ - u32 counter = 0x0; - - while (1) { - if (((odm_read_4byte(dm, 0x1bf0) >> 24) == 0x7f) || - (counter > 300)) - break; - - counter++; - ODM_delay_ms(1); - } - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, "[IQK]counter = %d\n", counter); -} - -/*---------------------------Define Local Constant---------------------------*/ - -void do_iqk_8822b(void *dm_void, u8 delta_thermal_index, u8 thermal_value, - u8 threshold) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - - odm_reset_iqk_result(dm); - - dm->rf_calibrate_info.thermal_value_iqk = thermal_value; - - phy_iq_calibrate_8822b(dm, true); -} - -static void _iqk_fill_iqk_report_8822b(void *dm_void, u8 channel) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u32 tmp1 = 0x0, tmp2 = 0x0, tmp3 = 0x0; - u8 i; - - for (i = 0; i < SS_8822B; i++) { - tmp1 = tmp1 + - ((iqk_info->iqk_fail_report[channel][i][TX_IQK] & 0x1) - << i); - tmp2 = tmp2 + - ((iqk_info->iqk_fail_report[channel][i][RX_IQK] & 0x1) - << (i + 4)); - tmp3 = tmp3 + ((iqk_info->rxiqk_fail_code[channel][i] & 0x3) - << (i * 2 + 8)); - } - odm_write_4byte(dm, 0x1b00, 0xf8000008); - odm_set_bb_reg(dm, 0x1bf0, 0x0000ffff, tmp1 | tmp2 | tmp3); - - for (i = 0; i < 2; i++) - odm_write_4byte( - dm, 0x1be8 + (i * 4), - (iqk_info->rxiqk_agc[channel][(i * 2) + 1] << 16) | - iqk_info->rxiqk_agc[channel][i * 2]); -} - -static void _iqk_backup_mac_bb_8822b(struct phy_dm_struct *dm, u32 *MAC_backup, - u32 *BB_backup, u32 *backup_mac_reg, - u32 *backup_bb_reg) -{ - u32 i; - - for (i = 0; i < MAC_REG_NUM_8822B; i++) - MAC_backup[i] = odm_read_4byte(dm, backup_mac_reg[i]); - - for (i = 0; i < BB_REG_NUM_8822B; i++) - BB_backup[i] = odm_read_4byte(dm, backup_bb_reg[i]); -} - -static void _iqk_backup_rf_8822b(struct phy_dm_struct *dm, u32 RF_backup[][2], - u32 *backup_rf_reg) -{ - u32 i; - - for (i = 0; i < RF_REG_NUM_8822B; i++) { - RF_backup[i][ODM_RF_PATH_A] = odm_get_rf_reg( - dm, ODM_RF_PATH_A, backup_rf_reg[i], RFREGOFFSETMASK); - RF_backup[i][ODM_RF_PATH_B] = odm_get_rf_reg( - dm, ODM_RF_PATH_B, backup_rf_reg[i], RFREGOFFSETMASK); - } -} - -static void _iqk_agc_bnd_int_8822b(struct phy_dm_struct *dm) -{ - /*initialize RX AGC bnd, it must do after bbreset*/ - odm_write_4byte(dm, 0x1b00, 0xf8000008); - odm_write_4byte(dm, 0x1b00, 0xf80a7008); - odm_write_4byte(dm, 0x1b00, 0xf8015008); - odm_write_4byte(dm, 0x1b00, 0xf8000008); -} - -static void _iqk_bb_reset_8822b(struct phy_dm_struct *dm) -{ - bool cca_ing = false; - u32 count = 0; - - odm_set_rf_reg(dm, ODM_RF_PATH_A, 0x0, RFREGOFFSETMASK, 0x10000); - odm_set_rf_reg(dm, ODM_RF_PATH_B, 0x0, RFREGOFFSETMASK, 0x10000); - - while (1) { - odm_write_4byte(dm, 0x8fc, 0x0); - odm_set_bb_reg(dm, 0x198c, 0x7, 0x7); - cca_ing = (bool)odm_get_bb_reg(dm, 0xfa0, BIT(3)); - - if (count > 30) - cca_ing = false; - - if (cca_ing) { - ODM_delay_ms(1); - count++; - } else { - odm_write_1byte(dm, 0x808, 0x0); /*RX ant off*/ - odm_set_bb_reg(dm, 0xa04, - BIT(27) | BIT(26) | BIT(25) | BIT(24), - 0x0); /*CCK RX path off*/ - - /*BBreset*/ - odm_set_bb_reg(dm, 0x0, BIT(16), 0x0); - odm_set_bb_reg(dm, 0x0, BIT(16), 0x1); - - if (odm_get_bb_reg(dm, 0x660, BIT(16))) - odm_write_4byte(dm, 0x6b4, 0x89000006); - break; - } - } -} - -static void _iqk_afe_setting_8822b(struct phy_dm_struct *dm, bool do_iqk) -{ - if (do_iqk) { - odm_write_4byte(dm, 0xc60, 0x50000000); - odm_write_4byte(dm, 0xc60, 0x70070040); - odm_write_4byte(dm, 0xe60, 0x50000000); - odm_write_4byte(dm, 0xe60, 0x70070040); - - odm_write_4byte(dm, 0xc58, 0xd8000402); - odm_write_4byte(dm, 0xc5c, 0xd1000120); - odm_write_4byte(dm, 0xc6c, 0x00000a15); - odm_write_4byte(dm, 0xe58, 0xd8000402); - odm_write_4byte(dm, 0xe5c, 0xd1000120); - odm_write_4byte(dm, 0xe6c, 0x00000a15); - _iqk_bb_reset_8822b(dm); - } else { - odm_write_4byte(dm, 0xc60, 0x50000000); - odm_write_4byte(dm, 0xc60, 0x70038040); - odm_write_4byte(dm, 0xe60, 0x50000000); - odm_write_4byte(dm, 0xe60, 0x70038040); - - odm_write_4byte(dm, 0xc58, 0xd8020402); - odm_write_4byte(dm, 0xc5c, 0xde000120); - odm_write_4byte(dm, 0xc6c, 0x0000122a); - odm_write_4byte(dm, 0xe58, 0xd8020402); - odm_write_4byte(dm, 0xe5c, 0xde000120); - odm_write_4byte(dm, 0xe6c, 0x0000122a); - } -} - -static void _iqk_restore_mac_bb_8822b(struct phy_dm_struct *dm, u32 *MAC_backup, - u32 *BB_backup, u32 *backup_mac_reg, - u32 *backup_bb_reg) -{ - u32 i; - - for (i = 0; i < MAC_REG_NUM_8822B; i++) - odm_write_4byte(dm, backup_mac_reg[i], MAC_backup[i]); - for (i = 0; i < BB_REG_NUM_8822B; i++) - odm_write_4byte(dm, backup_bb_reg[i], BB_backup[i]); -} - -static void _iqk_restore_rf_8822b(struct phy_dm_struct *dm, u32 *backup_rf_reg, - u32 RF_backup[][2]) -{ - u32 i; - - odm_set_rf_reg(dm, ODM_RF_PATH_A, 0xef, RFREGOFFSETMASK, 0x0); - odm_set_rf_reg(dm, ODM_RF_PATH_B, 0xef, RFREGOFFSETMASK, 0x0); - /*0xdf[4]=0*/ - odm_set_rf_reg(dm, ODM_RF_PATH_A, 0xdf, RFREGOFFSETMASK, - RF_backup[0][ODM_RF_PATH_A] & (~BIT(4))); - odm_set_rf_reg(dm, ODM_RF_PATH_B, 0xdf, RFREGOFFSETMASK, - RF_backup[0][ODM_RF_PATH_B] & (~BIT(4))); - - for (i = 1; i < RF_REG_NUM_8822B; i++) { - odm_set_rf_reg(dm, ODM_RF_PATH_A, backup_rf_reg[i], - RFREGOFFSETMASK, RF_backup[i][ODM_RF_PATH_A]); - odm_set_rf_reg(dm, ODM_RF_PATH_B, backup_rf_reg[i], - RFREGOFFSETMASK, RF_backup[i][ODM_RF_PATH_B]); - } -} - -static void _iqk_backup_iqk_8822b(struct phy_dm_struct *dm, u8 step) -{ - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u8 path; - u16 iqk_apply[2] = {0xc94, 0xe94}; - - if (step == 0x0) { - phydm_backup_iqk_information(iqk_info); - } else { - iqk_info->iqk_channel[0] = iqk_info->rf_reg18; - for (path = 0; path < 2; path++) { - iqk_info->lok_idac[0][path] = - odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, - 0x58, RFREGOFFSETMASK); - iqk_info->bypass_iqk[0][path] = - odm_get_bb_reg(dm, iqk_apply[path], MASKDWORD); - - phydm_set_iqk_cfir(dm, iqk_info, path); - odm_set_bb_reg(dm, 0x1bd8, MASKDWORD, 0x0); - odm_set_bb_reg(dm, 0x1b0c, BIT(13) | BIT(12), 0x0); - } - } -} - -static void _iqk_reload_iqk_setting_8822b( - struct phy_dm_struct *dm, u8 channel, - u8 reload_idx /*1: reload TX, 2: reload LO, TX, RX*/ - ) -{ - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u8 i, path, idx; - u16 iqk_apply[2] = {0xc94, 0xe94}; - - for (path = 0; path < 2; path++) { - if (reload_idx == 2) { - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xdf, - BIT(4), 0x1); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x58, - RFREGOFFSETMASK, - iqk_info->lok_idac[channel][path]); - } - - for (idx = 0; idx < reload_idx; idx++) { - odm_set_bb_reg(dm, 0x1b00, MASKDWORD, - 0xf8000008 | path << 1); - odm_set_bb_reg(dm, 0x1b2c, MASKDWORD, 0x7); - odm_set_bb_reg(dm, 0x1b38, MASKDWORD, 0x20000000); - odm_set_bb_reg(dm, 0x1b3c, MASKDWORD, 0x20000000); - odm_set_bb_reg(dm, 0x1bcc, MASKDWORD, 0x00000000); - - if (idx == 0) - odm_set_bb_reg(dm, 0x1b0c, BIT(13) | BIT(12), - 0x3); - else - odm_set_bb_reg(dm, 0x1b0c, BIT(13) | BIT(12), - 0x1); - - odm_set_bb_reg(dm, 0x1bd4, BIT(20) | BIT(19) | BIT(18) | - BIT(17) | BIT(16), - 0x10); - - for (i = 0; i < 8; i++) { - odm_write_4byte( - dm, 0x1bd8, - ((0xc0000000 >> idx) + 0x3) + (i * 4) + - (iqk_info->iqk_cfir_real - [channel][path][idx][i] - << 9)); - odm_write_4byte( - dm, 0x1bd8, - ((0xc0000000 >> idx) + 0x1) + (i * 4) + - (iqk_info->iqk_cfir_imag - [channel][path][idx][i] - << 9)); - } - } - odm_set_bb_reg(dm, iqk_apply[path], MASKDWORD, - iqk_info->bypass_iqk[channel][path]); - - odm_set_bb_reg(dm, 0x1bd8, MASKDWORD, 0x0); - odm_set_bb_reg(dm, 0x1b0c, BIT(13) | BIT(12), 0x0); - } -} - -static bool _iqk_reload_iqk_8822b(struct phy_dm_struct *dm, bool reset) -{ - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u8 i; - bool reload = false; - - if (reset) { - for (i = 0; i < 2; i++) - iqk_info->iqk_channel[i] = 0x0; - } else { - iqk_info->rf_reg18 = odm_get_rf_reg(dm, ODM_RF_PATH_A, 0x18, - RFREGOFFSETMASK); - - for (i = 0; i < 2; i++) { - if (iqk_info->rf_reg18 == iqk_info->iqk_channel[i]) { - _iqk_reload_iqk_setting_8822b(dm, i, 2); - _iqk_fill_iqk_report_8822b(dm, i); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]reload IQK result before!!!!\n"); - reload = true; - } - } - } - return reload; -} - -static void _iqk_rfe_setting_8822b(struct phy_dm_struct *dm, bool ext_pa_on) -{ - if (ext_pa_on) { - /*RFE setting*/ - odm_write_4byte(dm, 0xcb0, 0x77777777); - odm_write_4byte(dm, 0xcb4, 0x00007777); - odm_write_4byte(dm, 0xcbc, 0x0000083B); - odm_write_4byte(dm, 0xeb0, 0x77777777); - odm_write_4byte(dm, 0xeb4, 0x00007777); - odm_write_4byte(dm, 0xebc, 0x0000083B); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]external PA on!!!!\n"); - } else { - /*RFE setting*/ - odm_write_4byte(dm, 0xcb0, 0x77777777); - odm_write_4byte(dm, 0xcb4, 0x00007777); - odm_write_4byte(dm, 0xcbc, 0x00000100); - odm_write_4byte(dm, 0xeb0, 0x77777777); - odm_write_4byte(dm, 0xeb4, 0x00007777); - odm_write_4byte(dm, 0xebc, 0x00000100); - } -} - -static void _iqk_rf_setting_8822b(struct phy_dm_struct *dm) -{ - u8 path; - u32 tmp; - - odm_write_4byte(dm, 0x1b00, 0xf8000008); - odm_write_4byte(dm, 0x1bb8, 0x00000000); - - for (path = 0; path < 2; path++) { - /*0xdf:B11 = 1,B4 = 0, B1 = 1*/ - tmp = odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, 0xdf, - RFREGOFFSETMASK); - tmp = (tmp & (~BIT(4))) | BIT(1) | BIT(11); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xdf, - RFREGOFFSETMASK, tmp); - - /*release 0x56 TXBB*/ - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x65, - RFREGOFFSETMASK, 0x09000); - - if (*dm->band_type == ODM_BAND_5G) { - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xef, - BIT(19), 0x1); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x33, - RFREGOFFSETMASK, 0x00026); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x3e, - RFREGOFFSETMASK, 0x00037); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x3f, - RFREGOFFSETMASK, 0xdefce); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xef, - BIT(19), 0x0); - } else { - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xef, - BIT(19), 0x1); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x33, - RFREGOFFSETMASK, 0x00026); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x3e, - RFREGOFFSETMASK, 0x00037); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x3f, - RFREGOFFSETMASK, 0x5efce); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xef, - BIT(19), 0x0); - } - } -} - -static void _iqk_configure_macbb_8822b(struct phy_dm_struct *dm) -{ - /*MACBB register setting*/ - odm_write_1byte(dm, 0x522, 0x7f); - odm_set_bb_reg(dm, 0x550, BIT(11) | BIT(3), 0x0); - odm_set_bb_reg(dm, 0x90c, BIT(15), - 0x1); /*0x90c[15]=1: dac_buf reset selection*/ - odm_set_bb_reg(dm, 0x9a4, BIT(31), - 0x0); /*0x9a4[31]=0: Select da clock*/ - /*0xc94[0]=1, 0xe94[0]=1: let tx through iqk*/ - odm_set_bb_reg(dm, 0xc94, BIT(0), 0x1); - odm_set_bb_reg(dm, 0xe94, BIT(0), 0x1); - /* 3-wire off*/ - odm_write_4byte(dm, 0xc00, 0x00000004); - odm_write_4byte(dm, 0xe00, 0x00000004); -} - -static void _iqk_lok_setting_8822b(struct phy_dm_struct *dm, u8 path) -{ - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - odm_write_4byte(dm, 0x1bcc, 0x9); - odm_write_1byte(dm, 0x1b23, 0x00); - - switch (*dm->band_type) { - case ODM_BAND_2_4G: - odm_write_1byte(dm, 0x1b2b, 0x00); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x50df2); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xadc00); - /* WE_LUT_TX_LOK*/ - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xef, BIT(4), - 0x1); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x33, - BIT(1) | BIT(0), 0x0); - break; - case ODM_BAND_5G: - odm_write_1byte(dm, 0x1b2b, 0x80); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x5086c); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xa9c00); - /* WE_LUT_TX_LOK*/ - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0xef, BIT(4), - 0x1); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x33, - BIT(1) | BIT(0), 0x1); - break; - } -} - -static void _iqk_txk_setting_8822b(struct phy_dm_struct *dm, u8 path) -{ - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - odm_write_4byte(dm, 0x1bcc, 0x9); - odm_write_4byte(dm, 0x1b20, 0x01440008); - - if (path == 0x0) - odm_write_4byte(dm, 0x1b00, 0xf800000a); - else - odm_write_4byte(dm, 0x1b00, 0xf8000008); - odm_write_4byte(dm, 0x1bcc, 0x3f); - - switch (*dm->band_type) { - case ODM_BAND_2_4G: - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x50df2); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xadc00); - odm_write_1byte(dm, 0x1b2b, 0x00); - break; - case ODM_BAND_5G: - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x500ef); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xa9c00); - odm_write_1byte(dm, 0x1b2b, 0x80); - break; - } -} - -static void _iqk_rxk1_setting_8822b(struct phy_dm_struct *dm, u8 path) -{ - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - - switch (*dm->band_type) { - case ODM_BAND_2_4G: - odm_write_1byte(dm, 0x1bcc, 0x9); - odm_write_1byte(dm, 0x1b2b, 0x00); - odm_write_4byte(dm, 0x1b20, 0x01450008); - odm_write_4byte(dm, 0x1b24, 0x01460c88); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x510e0); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xacc00); - break; - case ODM_BAND_5G: - odm_write_1byte(dm, 0x1bcc, 0x09); - odm_write_1byte(dm, 0x1b2b, 0x80); - odm_write_4byte(dm, 0x1b20, 0x00850008); - odm_write_4byte(dm, 0x1b24, 0x00460048); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x510e0); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xadc00); - break; - } -} - -static void _iqk_rxk2_setting_8822b(struct phy_dm_struct *dm, u8 path, - bool is_gs) -{ - struct dm_iqk_info *iqk_info = &dm->IQK_info; - - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - - switch (*dm->band_type) { - case ODM_BAND_2_4G: - if (is_gs) - iqk_info->tmp1bcc = 0x12; - odm_write_1byte(dm, 0x1bcc, iqk_info->tmp1bcc); - odm_write_1byte(dm, 0x1b2b, 0x00); - odm_write_4byte(dm, 0x1b20, 0x01450008); - odm_write_4byte(dm, 0x1b24, 0x01460848); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x510e0); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xa9c00); - break; - case ODM_BAND_5G: - if (is_gs) { - if (path == ODM_RF_PATH_A) - iqk_info->tmp1bcc = 0x12; - else - iqk_info->tmp1bcc = 0x09; - } - odm_write_1byte(dm, 0x1bcc, iqk_info->tmp1bcc); - odm_write_1byte(dm, 0x1b2b, 0x80); - odm_write_4byte(dm, 0x1b20, 0x00850008); - odm_write_4byte(dm, 0x1b24, 0x00460848); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x56, - RFREGOFFSETMASK, 0x51060); - odm_set_rf_reg(dm, (enum odm_rf_radio_path)path, 0x8f, - RFREGOFFSETMASK, 0xa9c00); - break; - } -} - -static bool _iqk_check_cal_8822b(struct phy_dm_struct *dm, u32 IQK_CMD) -{ - bool notready = true, fail = true; - u32 delay_count = 0x0; - - while (notready) { - if (odm_read_4byte(dm, 0x1b00) == (IQK_CMD & 0xffffff0f)) { - fail = (bool)odm_get_bb_reg(dm, 0x1b08, BIT(26)); - notready = false; - } else { - ODM_delay_ms(1); - delay_count++; - } - - if (delay_count >= 50) { - fail = true; - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]IQK timeout!!!\n"); - break; - } - } - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, "[IQK]delay count = 0x%x!!!\n", - delay_count); - return fail; -} - -static bool _iqk_rx_iqk_gain_search_fail_8822b(struct phy_dm_struct *dm, - u8 path, u8 step) -{ - struct dm_iqk_info *iqk_info = &dm->IQK_info; - bool fail = true; - u32 IQK_CMD = 0x0, rf_reg0, tmp, bb_idx; - u8 IQMUX[4] = {0x9, 0x12, 0x1b, 0x24}; - u8 idx; - - for (idx = 0; idx < 4; idx++) - if (iqk_info->tmp1bcc == IQMUX[idx]) - break; - - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - odm_write_4byte(dm, 0x1bcc, iqk_info->tmp1bcc); - - if (step == RXIQK1) - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]============ S%d RXIQK GainSearch ============\n", - path); - - if (step == RXIQK1) - IQK_CMD = 0xf8000208 | (1 << (path + 4)); - else - IQK_CMD = 0xf8000308 | (1 << (path + 4)); - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, "[IQK]S%d GS%d_Trigger = 0x%x\n", - path, step, IQK_CMD); - - odm_write_4byte(dm, 0x1b00, IQK_CMD); - odm_write_4byte(dm, 0x1b00, IQK_CMD + 0x1); - ODM_delay_ms(GS_delay_8822B); - fail = _iqk_check_cal_8822b(dm, IQK_CMD); - - if (step == RXIQK2) { - rf_reg0 = odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, 0x0, - RFREGOFFSETMASK); - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]S%d ==> RF0x0 = 0x%x, tmp1bcc = 0x%x, idx = %d, 0x1b3c = 0x%x\n", - path, rf_reg0, iqk_info->tmp1bcc, idx, - odm_read_4byte(dm, 0x1b3c)); - tmp = (rf_reg0 & 0x1fe0) >> 5; - iqk_info->lna_idx = tmp >> 5; - bb_idx = tmp & 0x1f; - if (bb_idx == 0x1) { - if (iqk_info->lna_idx != 0x0) - iqk_info->lna_idx--; - else if (idx != 3) - idx++; - else - iqk_info->isbnd = true; - fail = true; - } else if (bb_idx == 0xa) { - if (idx != 0) - idx--; - else if (iqk_info->lna_idx != 0x7) - iqk_info->lna_idx++; - else - iqk_info->isbnd = true; - fail = true; - } else { - fail = false; - } - - if (iqk_info->isbnd) - fail = false; - - iqk_info->tmp1bcc = IQMUX[idx]; - - if (fail) { - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - odm_write_4byte( - dm, 0x1b24, - (odm_read_4byte(dm, 0x1b24) & 0xffffe3ff) | - (iqk_info->lna_idx << 10)); - } - } - - return fail; -} - -static bool _lok_one_shot_8822b(void *dm_void, u8 path) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u8 delay_count = 0; - bool LOK_notready = false; - u32 LOK_temp = 0; - u32 IQK_CMD = 0x0; - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]==========S%d LOK ==========\n", path); - - IQK_CMD = 0xf8000008 | (1 << (4 + path)); - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, "[IQK]LOK_Trigger = 0x%x\n", - IQK_CMD); - - odm_write_4byte(dm, 0x1b00, IQK_CMD); - odm_write_4byte(dm, 0x1b00, IQK_CMD + 1); - /*LOK: CMD ID = 0 {0xf8000018, 0xf8000028}*/ - /*LOK: CMD ID = 0 {0xf8000019, 0xf8000029}*/ - ODM_delay_ms(LOK_delay_8822B); - - delay_count = 0; - LOK_notready = true; - - while (LOK_notready) { - if (odm_read_4byte(dm, 0x1b00) == (IQK_CMD & 0xffffff0f)) - LOK_notready = false; - else - LOK_notready = true; - - if (LOK_notready) { - ODM_delay_ms(1); - delay_count++; - } - - if (delay_count >= 50) { - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S%d LOK timeout!!!\n", path); - break; - } - } - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S%d ==> delay_count = 0x%x\n", path, delay_count); - if (ODM_COMP_CALIBRATION) { - if (!LOK_notready) { - LOK_temp = - odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, - 0x58, RFREGOFFSETMASK); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]0x58 = 0x%x\n", LOK_temp); - } else { - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]==>S%d LOK Fail!!!\n", path); - } - } - iqk_info->lok_fail[path] = LOK_notready; - return LOK_notready; -} - -static bool _iqk_one_shot_8822b(void *dm_void, u8 path, u8 idx) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u8 delay_count = 0; - bool notready = true, fail = true; - u32 IQK_CMD = 0x0; - u16 iqk_apply[2] = {0xc94, 0xe94}; - - if (idx == TXIQK) - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]============ S%d WBTXIQK ============\n", - path); - else if (idx == RXIQK1) - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]============ S%d WBRXIQK STEP1============\n", - path); - else - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]============ S%d WBRXIQK STEP2============\n", - path); - - if (idx == TXIQK) { - IQK_CMD = 0xf8000008 | ((*dm->band_width + 4) << 8) | - (1 << (path + 4)); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]TXK_Trigger = 0x%x\n", IQK_CMD); - /*{0xf8000418, 0xf800042a} ==> 20 WBTXK (CMD = 4)*/ - /*{0xf8000518, 0xf800052a} ==> 40 WBTXK (CMD = 5)*/ - /*{0xf8000618, 0xf800062a} ==> 80 WBTXK (CMD = 6)*/ - } else if (idx == RXIQK1) { - if (*dm->band_width == 2) - IQK_CMD = 0xf8000808 | (1 << (path + 4)); - else - IQK_CMD = 0xf8000708 | (1 << (path + 4)); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]RXK1_Trigger = 0x%x\n", IQK_CMD); - /*{0xf8000718, 0xf800072a} ==> 20 WBTXK (CMD = 7)*/ - /*{0xf8000718, 0xf800072a} ==> 40 WBTXK (CMD = 7)*/ - /*{0xf8000818, 0xf800082a} ==> 80 WBTXK (CMD = 8)*/ - } else if (idx == RXIQK2) { - IQK_CMD = 0xf8000008 | ((*dm->band_width + 9) << 8) | - (1 << (path + 4)); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]RXK2_Trigger = 0x%x\n", IQK_CMD); - /*{0xf8000918, 0xf800092a} ==> 20 WBRXK (CMD = 9)*/ - /*{0xf8000a18, 0xf8000a2a} ==> 40 WBRXK (CMD = 10)*/ - /*{0xf8000b18, 0xf8000b2a} ==> 80 WBRXK (CMD = 11)*/ - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - odm_write_4byte(dm, 0x1b24, - (odm_read_4byte(dm, 0x1b24) & 0xffffe3ff) | - ((iqk_info->lna_idx & 0x7) << 10)); - } - odm_write_4byte(dm, 0x1b00, IQK_CMD); - odm_write_4byte(dm, 0x1b00, IQK_CMD + 0x1); - ODM_delay_ms(WBIQK_delay_8822B); - - while (notready) { - if (odm_read_4byte(dm, 0x1b00) == (IQK_CMD & 0xffffff0f)) - notready = false; - else - notready = true; - - if (notready) { - ODM_delay_ms(1); - delay_count++; - } else { - fail = (bool)odm_get_bb_reg(dm, 0x1b08, BIT(26)); - break; - } - - if (delay_count >= 50) { - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S%d IQK timeout!!!\n", path); - break; - } - } - - if (dm->debug_components & ODM_COMP_CALIBRATION) { - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S%d ==> 0x1b00 = 0x%x, 0x1b08 = 0x%x\n", - path, odm_read_4byte(dm, 0x1b00), - odm_read_4byte(dm, 0x1b08)); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S%d ==> delay_count = 0x%x\n", path, - delay_count); - if (idx != TXIQK) - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]S%d ==> RF0x0 = 0x%x, RF0x56 = 0x%x\n", - path, - odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, - 0x0, RFREGOFFSETMASK), - odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, - 0x56, RFREGOFFSETMASK)); - } - - odm_write_4byte(dm, 0x1b00, 0xf8000008 | path << 1); - - if (idx == TXIQK) - if (fail) - odm_set_bb_reg(dm, iqk_apply[path], BIT(0), 0x0); - - if (idx == RXIQK2) { - iqk_info->rxiqk_agc[0][path] = - (u16)(((odm_get_rf_reg(dm, (enum odm_rf_radio_path)path, - 0x0, RFREGOFFSETMASK) >> - 5) & - 0xff) | - (iqk_info->tmp1bcc << 8)); - - odm_write_4byte(dm, 0x1b38, 0x20000000); - - if (!fail) - odm_set_bb_reg(dm, iqk_apply[path], (BIT(11) | BIT(10)), - 0x1); - else - odm_set_bb_reg(dm, iqk_apply[path], (BIT(11) | BIT(10)), - 0x0); - } - - if (idx == TXIQK) - iqk_info->iqk_fail_report[0][path][TXIQK] = fail; - else - iqk_info->iqk_fail_report[0][path][RXIQK] = fail; - - return fail; -} - -static bool _iqk_rx_iqk_by_path_8822b(void *dm_void, u8 path) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_iqk_info *iqk_info = &dm->IQK_info; - bool KFAIL = true, gonext; - - switch (iqk_info->rxiqk_step) { - case 1: /*gain search_RXK1*/ - _iqk_rxk1_setting_8822b(dm, path); - gonext = false; - while (1) { - KFAIL = _iqk_rx_iqk_gain_search_fail_8822b(dm, path, - RXIQK1); - if (KFAIL && - (iqk_info->gs_retry_count[0][path][GSRXK1] < 2)) - iqk_info->gs_retry_count[0][path][GSRXK1]++; - else if (KFAIL) { - iqk_info->rxiqk_fail_code[0][path] = 0; - iqk_info->rxiqk_step = 5; - gonext = true; - } else { - iqk_info->rxiqk_step++; - gonext = true; - } - if (gonext) - break; - } - break; - case 2: /*gain search_RXK2*/ - _iqk_rxk2_setting_8822b(dm, path, true); - iqk_info->isbnd = false; - while (1) { - KFAIL = _iqk_rx_iqk_gain_search_fail_8822b(dm, path, - RXIQK2); - if (KFAIL && - (iqk_info->gs_retry_count[0][path][GSRXK2] < - rxiqk_gs_limit)) { - iqk_info->gs_retry_count[0][path][GSRXK2]++; - } else { - iqk_info->rxiqk_step++; - break; - } - } - break; - case 3: /*RXK1*/ - _iqk_rxk1_setting_8822b(dm, path); - gonext = false; - while (1) { - KFAIL = _iqk_one_shot_8822b(dm, path, RXIQK1); - if (KFAIL && - (iqk_info->retry_count[0][path][RXIQK1] < 2)) - iqk_info->retry_count[0][path][RXIQK1]++; - else if (KFAIL) { - iqk_info->rxiqk_fail_code[0][path] = 1; - iqk_info->rxiqk_step = 5; - gonext = true; - } else { - iqk_info->rxiqk_step++; - gonext = true; - } - if (gonext) - break; - } - break; - case 4: /*RXK2*/ - _iqk_rxk2_setting_8822b(dm, path, false); - gonext = false; - while (1) { - KFAIL = _iqk_one_shot_8822b(dm, path, RXIQK2); - if (KFAIL && - (iqk_info->retry_count[0][path][RXIQK2] < 2)) - iqk_info->retry_count[0][path][RXIQK2]++; - else if (KFAIL) { - iqk_info->rxiqk_fail_code[0][path] = 2; - iqk_info->rxiqk_step = 5; - gonext = true; - } else { - iqk_info->rxiqk_step++; - gonext = true; - } - if (gonext) - break; - } - break; - } - return KFAIL; -} - -static void _iqk_iqk_by_path_8822b(void *dm_void, bool segment_iqk) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_iqk_info *iqk_info = &dm->IQK_info; - bool KFAIL = true; - u8 i, kcount_limit; - - if (*dm->band_width == 2) - kcount_limit = kcount_limit_80m; - else - kcount_limit = kcount_limit_others; - - while (1) { - switch (dm->rf_calibrate_info.iqk_step) { - case 1: /*S0 LOK*/ - _iqk_lok_setting_8822b(dm, ODM_RF_PATH_A); - _lok_one_shot_8822b(dm, ODM_RF_PATH_A); - dm->rf_calibrate_info.iqk_step++; - break; - case 2: /*S1 LOK*/ - _iqk_lok_setting_8822b(dm, ODM_RF_PATH_B); - _lok_one_shot_8822b(dm, ODM_RF_PATH_B); - dm->rf_calibrate_info.iqk_step++; - break; - case 3: /*S0 TXIQK*/ - _iqk_txk_setting_8822b(dm, ODM_RF_PATH_A); - KFAIL = _iqk_one_shot_8822b(dm, ODM_RF_PATH_A, TXIQK); - iqk_info->kcount++; - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S0TXK KFail = 0x%x\n", KFAIL); - - if (KFAIL && - (iqk_info->retry_count[0][ODM_RF_PATH_A][TXIQK] < - 3)) - iqk_info->retry_count[0][ODM_RF_PATH_A] - [TXIQK]++; - else - dm->rf_calibrate_info.iqk_step++; - break; - case 4: /*S1 TXIQK*/ - _iqk_txk_setting_8822b(dm, ODM_RF_PATH_B); - KFAIL = _iqk_one_shot_8822b(dm, ODM_RF_PATH_B, TXIQK); - iqk_info->kcount++; - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]S1TXK KFail = 0x%x\n", KFAIL); - if (KFAIL && - iqk_info->retry_count[0][ODM_RF_PATH_B][TXIQK] < 3) - iqk_info->retry_count[0][ODM_RF_PATH_B] - [TXIQK]++; - else - dm->rf_calibrate_info.iqk_step++; - break; - case 5: /*S0 RXIQK*/ - phydm_set_iqk_info(dm, iqk_info, 0); - break; - case 6: /*S1 RXIQK*/ - phydm_set_iqk_info(dm, iqk_info, 1); - break; - } - - if (dm->rf_calibrate_info.iqk_step == 7) { - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]==========LOK summary ==========\n"); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]PathA_LOK_notready = %d, PathB_LOK1_notready = %d\n", - iqk_info->lok_fail[ODM_RF_PATH_A], - iqk_info->lok_fail[ODM_RF_PATH_B]); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]==========IQK summary ==========\n"); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]PathA_TXIQK_fail = %d, PathB_TXIQK_fail = %d\n", - iqk_info->iqk_fail_report[0][ODM_RF_PATH_A] - [TXIQK], - iqk_info->iqk_fail_report[0][ODM_RF_PATH_B] - [TXIQK]); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]PathA_RXIQK_fail = %d, PathB_RXIQK_fail = %d\n", - iqk_info->iqk_fail_report[0][ODM_RF_PATH_A] - [RXIQK], - iqk_info->iqk_fail_report[0][ODM_RF_PATH_B] - [RXIQK]); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]PathA_TXIQK_retry = %d, PathB_TXIQK_retry = %d\n", - iqk_info->retry_count[0][ODM_RF_PATH_A][TXIQK], - iqk_info->retry_count[0][ODM_RF_PATH_B][TXIQK]); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]PathA_RXK1_retry = %d, PathA_RXK2_retry = %d, PathB_RXK1_retry = %d, PathB_RXK2_retry = %d\n", - iqk_info->retry_count[0][ODM_RF_PATH_A][RXIQK1], - iqk_info->retry_count[0][ODM_RF_PATH_A][RXIQK2], - iqk_info->retry_count[0][ODM_RF_PATH_B][RXIQK1], - iqk_info->retry_count[0][ODM_RF_PATH_B] - [RXIQK2]); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]PathA_GS1_retry = %d, PathA_GS2_retry = %d, PathB_GS1_retry = %d, PathB_GS2_retry = %d\n", - iqk_info->gs_retry_count[0][ODM_RF_PATH_A] - [GSRXK1], - iqk_info->gs_retry_count[0][ODM_RF_PATH_A] - [GSRXK2], - iqk_info->gs_retry_count[0][ODM_RF_PATH_B] - [GSRXK1], - iqk_info->gs_retry_count[0][ODM_RF_PATH_B] - [GSRXK2]); - for (i = 0; i < 2; i++) { - odm_write_4byte(dm, 0x1b00, - 0xf8000008 | i << 1); - odm_write_4byte(dm, 0x1b2c, 0x7); - odm_write_4byte(dm, 0x1bcc, 0x0); - } - break; - } - - if (segment_iqk && (iqk_info->kcount == kcount_limit)) - break; - } -} - -static void _iqk_start_iqk_8822b(struct phy_dm_struct *dm, bool segment_iqk) -{ - u32 tmp; - - /*GNT_WL = 1*/ - tmp = odm_get_rf_reg(dm, ODM_RF_PATH_A, 0x1, RFREGOFFSETMASK); - tmp = tmp | BIT(5) | BIT(0); - odm_set_rf_reg(dm, ODM_RF_PATH_A, 0x1, RFREGOFFSETMASK, tmp); - - tmp = odm_get_rf_reg(dm, ODM_RF_PATH_B, 0x1, RFREGOFFSETMASK); - tmp = tmp | BIT(5) | BIT(0); - odm_set_rf_reg(dm, ODM_RF_PATH_B, 0x1, RFREGOFFSETMASK, tmp); - - _iqk_iqk_by_path_8822b(dm, segment_iqk); -} - -static void _iq_calibrate_8822b_init(void *dm_void) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - struct dm_iqk_info *iqk_info = &dm->IQK_info; - u8 i, j; - - if (iqk_info->iqk_times == 0) { - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]=====>PHY_IQCalibrate_8822B_Init\n"); - - for (i = 0; i < SS_8822B; i++) { - for (j = 0; j < 2; j++) { - iqk_info->lok_fail[i] = true; - iqk_info->iqk_fail[j][i] = true; - iqk_info->iqc_matrix[j][i] = 0x20000000; - } - } - - phydm_init_iqk_information(iqk_info); - } -} - -static void _phy_iq_calibrate_8822b(struct phy_dm_struct *dm, bool reset) -{ - u32 MAC_backup[MAC_REG_NUM_8822B], BB_backup[BB_REG_NUM_8822B], - RF_backup[RF_REG_NUM_8822B][SS_8822B]; - u32 backup_mac_reg[MAC_REG_NUM_8822B] = {0x520, 0x550}; - u32 backup_bb_reg[BB_REG_NUM_8822B] = { - 0x808, 0x90c, 0xc00, 0xcb0, 0xcb4, 0xcbc, 0xe00, - 0xeb0, 0xeb4, 0xebc, 0x1990, 0x9a4, 0xa04}; - u32 backup_rf_reg[RF_REG_NUM_8822B] = {0xdf, 0x8f, 0x65, 0x0, 0x1}; - bool segment_iqk = false, is_mp = false; - - struct dm_iqk_info *iqk_info = &dm->IQK_info; - - if (dm->mp_mode) - is_mp = true; - else if (dm->is_linked) - segment_iqk = true; - - if (!is_mp) - if (_iqk_reload_iqk_8822b(dm, reset)) - return; - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]==========IQK strat!!!!!==========\n"); - - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]band_type = %s, band_width = %d, ExtPA2G = %d, ext_pa_5g = %d\n", - (*dm->band_type == ODM_BAND_5G) ? "5G" : "2G", *dm->band_width, - dm->ext_pa, dm->ext_pa_5g); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]Interface = %d, cut_version = %x\n", - dm->support_interface, dm->cut_version); - - iqk_info->iqk_times++; - - iqk_info->kcount = 0; - dm->rf_calibrate_info.iqk_total_progressing_time = 0; - dm->rf_calibrate_info.iqk_step = 1; - iqk_info->rxiqk_step = 1; - - _iqk_backup_iqk_8822b(dm, 0); - _iqk_backup_mac_bb_8822b(dm, MAC_backup, BB_backup, backup_mac_reg, - backup_bb_reg); - _iqk_backup_rf_8822b(dm, RF_backup, backup_rf_reg); - - while (1) { - if (!is_mp) - dm->rf_calibrate_info.iqk_start_time = - odm_get_current_time(dm); - - _iqk_configure_macbb_8822b(dm); - _iqk_afe_setting_8822b(dm, true); - _iqk_rfe_setting_8822b(dm, false); - _iqk_agc_bnd_int_8822b(dm); - _iqk_rf_setting_8822b(dm); - - _iqk_start_iqk_8822b(dm, segment_iqk); - - _iqk_afe_setting_8822b(dm, false); - _iqk_restore_mac_bb_8822b(dm, MAC_backup, BB_backup, - backup_mac_reg, backup_bb_reg); - _iqk_restore_rf_8822b(dm, backup_rf_reg, RF_backup); - - if (!is_mp) { - dm->rf_calibrate_info.iqk_progressing_time = - odm_get_progressing_time( - dm, - dm->rf_calibrate_info.iqk_start_time); - dm->rf_calibrate_info.iqk_total_progressing_time += - odm_get_progressing_time( - dm, - dm->rf_calibrate_info.iqk_start_time); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]IQK progressing_time = %lld ms\n", - dm->rf_calibrate_info.iqk_progressing_time); - } - - if (dm->rf_calibrate_info.iqk_step == 7) - break; - - iqk_info->kcount = 0; - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, "[IQK]delay 50ms!!!\n"); - ODM_delay_ms(50); - } - - _iqk_backup_iqk_8822b(dm, 1); - _iqk_fill_iqk_report_8822b(dm, 0); - - if (!is_mp) - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]Total IQK progressing_time = %lld ms\n", - dm->rf_calibrate_info.iqk_total_progressing_time); - - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]==========IQK end!!!!!==========\n"); -} - -static void _phy_iq_calibrate_by_fw_8822b(void *dm_void, u8 clear) {} - -/*IQK version:v3.3, NCTL v0.6*/ -/*1.The new gainsearch method for RXIQK*/ -/*2.The new format of IQK report register: 0x1be8/0x1bec*/ -/*3. add the option of segment IQK*/ -void phy_iq_calibrate_8822b(void *dm_void, bool clear) -{ - struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; - - dm->iqk_fw_offload = 0; - - /*FW IQK*/ - if (dm->iqk_fw_offload) { - if (!dm->rf_calibrate_info.is_iqk_in_progress) { - odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK); - dm->rf_calibrate_info.is_iqk_in_progress = true; - odm_release_spin_lock(dm, RT_IQK_SPINLOCK); - - dm->rf_calibrate_info.iqk_start_time = - odm_get_current_time(dm); - - odm_write_4byte(dm, 0x1b00, 0xf8000008); - odm_set_bb_reg(dm, 0x1bf0, 0xff000000, 0xff); - ODM_RT_TRACE(dm, ODM_COMP_CALIBRATION, - "[IQK]0x1bf0 = 0x%x\n", - odm_read_4byte(dm, 0x1bf0)); - - _phy_iq_calibrate_by_fw_8822b(dm, clear); - phydm_get_read_counter(dm); - - dm->rf_calibrate_info.iqk_progressing_time = - odm_get_progressing_time( - dm, - dm->rf_calibrate_info.iqk_start_time); - - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]IQK progressing_time = %lld ms\n", - dm->rf_calibrate_info.iqk_progressing_time); - - odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK); - dm->rf_calibrate_info.is_iqk_in_progress = false; - odm_release_spin_lock(dm, RT_IQK_SPINLOCK); - } else { - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "== Return the IQK CMD, because the IQK in Progress ==\n"); - } - - } else { - _iq_calibrate_8822b_init(dm_void); - - if (!dm->rf_calibrate_info.is_iqk_in_progress) { - odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK); - dm->rf_calibrate_info.is_iqk_in_progress = true; - odm_release_spin_lock(dm, RT_IQK_SPINLOCK); - if (dm->mp_mode) - dm->rf_calibrate_info.iqk_start_time = - odm_get_current_time(dm); - - _phy_iq_calibrate_8822b(dm, clear); - if (dm->mp_mode) { - dm->rf_calibrate_info.iqk_progressing_time = - odm_get_progressing_time( - dm, dm->rf_calibrate_info - .iqk_start_time); - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]IQK progressing_time = %lld ms\n", - dm->rf_calibrate_info - .iqk_progressing_time); - } - odm_acquire_spin_lock(dm, RT_IQK_SPINLOCK); - dm->rf_calibrate_info.is_iqk_in_progress = false; - odm_release_spin_lock(dm, RT_IQK_SPINLOCK); - } else { - ODM_RT_TRACE( - dm, ODM_COMP_CALIBRATION, - "[IQK]== Return the IQK CMD, because the IQK in Progress ==\n"); - } - } -} diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_iqk_8822b.h b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_iqk_8822b.h deleted file mode 100644 index 246518e8bf8f..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_iqk_8822b.h +++ /dev/null @@ -1,37 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ -#ifndef __PHYDM_IQK_8822B_H__ -#define __PHYDM_IQK_8822B_H__ - -/*--------------------------Define Parameters-------------------------------*/ -#define MAC_REG_NUM_8822B 2 -#define BB_REG_NUM_8822B 13 -#define RF_REG_NUM_8822B 5 - -#define LOK_delay_8822B 2 -#define GS_delay_8822B 2 -#define WBIQK_delay_8822B 2 - -#define TXIQK 0 -#define RXIQK 1 -#define SS_8822B 2 - -/*------------------------End Define Parameters-------------------------------*/ - -void do_iqk_8822b(void *dm_void, u8 delta_thermal_index, u8 thermal_value, - u8 threshold); - -void phy_iq_calibrate_8822b(void *dm_void, bool clear); - -#endif /* #ifndef __PHYDM_IQK_8822B_H__*/ diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_regconfig8822b.c b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_regconfig8822b.c deleted file mode 100644 index 8f96c77974cc..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_regconfig8822b.c +++ /dev/null @@ -1,157 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -#include "../mp_precomp.h" -#include "../phydm_precomp.h" - -void odm_config_rf_reg_8822b(struct phy_dm_struct *dm, u32 addr, u32 data, - enum odm_rf_radio_path RF_PATH, u32 reg_addr) -{ - if (addr == 0xffe) { - ODM_sleep_ms(50); - } else if (addr == 0xfe) { - ODM_delay_us(100); - } else { - odm_set_rf_reg(dm, RF_PATH, reg_addr, RFREGOFFSETMASK, data); - - /* Add 1us delay between BB/RF register setting. */ - ODM_delay_us(1); - } -} - -void odm_config_rf_radio_a_8822b(struct phy_dm_struct *dm, u32 addr, u32 data) -{ - u32 content = 0x1000; /* RF_Content: radioa_txt */ - u32 maskfor_phy_set = (u32)(content & 0xE000); - - odm_config_rf_reg_8822b(dm, addr, data, ODM_RF_PATH_A, - addr | maskfor_phy_set); - - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> odm_config_rf_with_header_file: [RadioA] %08X %08X\n", - addr, data); -} - -void odm_config_rf_radio_b_8822b(struct phy_dm_struct *dm, u32 addr, u32 data) -{ - u32 content = 0x1001; /* RF_Content: radiob_txt */ - u32 maskfor_phy_set = (u32)(content & 0xE000); - - odm_config_rf_reg_8822b(dm, addr, data, ODM_RF_PATH_B, - addr | maskfor_phy_set); - - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> odm_config_rf_with_header_file: [RadioB] %08X %08X\n", - addr, data); -} - -void odm_config_mac_8822b(struct phy_dm_struct *dm, u32 addr, u8 data) -{ - odm_write_1byte(dm, addr, data); - ODM_RT_TRACE( - dm, ODM_COMP_INIT, - "===> odm_config_mac_with_header_file: [MAC_REG] %08X %08X\n", - addr, data); -} - -void odm_update_agc_big_jump_lmt_8822b(struct phy_dm_struct *dm, u32 addr, - u32 data) -{ - struct dig_thres *dig_tab = &dm->dm_dig_table; - u8 rf_gain_idx = (u8)((data & 0xFF000000) >> 24); - u8 bb_gain_idx = (u8)((data & 0x00ff0000) >> 16); - u8 agc_table_idx = (u8)((data & 0x00000f00) >> 8); - static bool is_limit; - - if (addr != 0x81c) - return; - - if (bb_gain_idx > 0x3c) { - if ((rf_gain_idx == dig_tab->rf_gain_idx) && !is_limit) { - is_limit = true; - dig_tab->big_jump_lmt[agc_table_idx] = bb_gain_idx - 2; - ODM_RT_TRACE( - dm, ODM_COMP_DIG, - "===> [AGC_TAB] big_jump_lmt [%d] = 0x%x\n", - agc_table_idx, - dig_tab->big_jump_lmt[agc_table_idx]); - } - } else { - is_limit = false; - } - - dig_tab->rf_gain_idx = rf_gain_idx; -} - -void odm_config_bb_agc_8822b(struct phy_dm_struct *dm, u32 addr, u32 bitmask, - u32 data) -{ - odm_update_agc_big_jump_lmt_8822b(dm, addr, data); - - odm_set_bb_reg(dm, addr, bitmask, data); - - /* Add 1us delay between BB/RF register setting. */ - ODM_delay_us(1); - - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> %s: [AGC_TAB] %08X %08X\n", - __func__, addr, data); -} - -void odm_config_bb_phy_reg_pg_8822b(struct phy_dm_struct *dm, u32 band, - u32 rf_path, u32 tx_num, u32 addr, - u32 bitmask, u32 data) -{ - if (addr == 0xfe || addr == 0xffe) { - ODM_sleep_ms(50); - } else { - phy_store_tx_power_by_rate(dm->adapter, band, rf_path, tx_num, - addr, bitmask, data); - } - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> %s: [PHY_REG] %08X %08X %08X\n", - __func__, addr, bitmask, data); -} - -void odm_config_bb_phy_8822b(struct phy_dm_struct *dm, u32 addr, u32 bitmask, - u32 data) -{ - if (addr == 0xfe) - ODM_sleep_ms(50); - else if (addr == 0xfd) - ODM_delay_ms(5); - else if (addr == 0xfc) - ODM_delay_ms(1); - else if (addr == 0xfb) - ODM_delay_us(50); - else if (addr == 0xfa) - ODM_delay_us(5); - else if (addr == 0xf9) - ODM_delay_us(1); - else - odm_set_bb_reg(dm, addr, bitmask, data); - - /* Add 1us delay between BB/RF register setting. */ - ODM_delay_us(1); - ODM_RT_TRACE(dm, ODM_COMP_INIT, "===> %s: [PHY_REG] %08X %08X\n", - __func__, addr, data); -} - -void odm_config_bb_txpwr_lmt_8822b(struct phy_dm_struct *dm, u8 *regulation, - u8 *band, u8 *bandwidth, u8 *rate_section, - u8 *rf_path, u8 *channel, u8 *power_limit) -{ - phy_set_tx_power_limit(dm, regulation, band, bandwidth, rate_section, - rf_path, channel, power_limit); -} diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_regconfig8822b.h b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_regconfig8822b.h deleted file mode 100644 index 4606427bd273..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_regconfig8822b.h +++ /dev/null @@ -1,43 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ -#ifndef __INC_ODM_REGCONFIG_H_8822B -#define __INC_ODM_REGCONFIG_H_8822B - -void odm_config_rf_reg_8822b(struct phy_dm_struct *dm, u32 addr, u32 data, - enum odm_rf_radio_path RF_PATH, u32 reg_addr); - -void odm_config_rf_radio_a_8822b(struct phy_dm_struct *dm, u32 addr, u32 data); - -void odm_config_rf_radio_b_8822b(struct phy_dm_struct *dm, u32 addr, u32 data); - -void odm_config_mac_8822b(struct phy_dm_struct *dm, u32 addr, u8 data); - -void odm_update_agc_big_jump_lmt_8822b(struct phy_dm_struct *dm, u32 addr, - u32 data); - -void odm_config_bb_agc_8822b(struct phy_dm_struct *dm, u32 addr, u32 bitmask, - u32 data); - -void odm_config_bb_phy_reg_pg_8822b(struct phy_dm_struct *dm, u32 band, - u32 rf_path, u32 tx_num, u32 addr, - u32 bitmask, u32 data); - -void odm_config_bb_phy_8822b(struct phy_dm_struct *dm, u32 addr, u32 bitmask, - u32 data); - -void odm_config_bb_txpwr_lmt_8822b(struct phy_dm_struct *dm, u8 *regulation, - u8 *band, u8 *bandwidth, u8 *rate_section, - u8 *rf_path, u8 *channel, u8 *power_limit); - -#endif /* RTL8822B_SUPPORT == 1*/ diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_rtl8822b.c b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_rtl8822b.c deleted file mode 100644 index a05c8aa53b0e..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_rtl8822b.c +++ /dev/null @@ -1,214 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ - -#include "../mp_precomp.h" -#include "../phydm_precomp.h" - -static void phydm_dynamic_switch_htstf_mumimo_8822b(struct phy_dm_struct *dm) -{ - /*if rssi > 40dBm, enable HT-STF gain controller, - *otherwise, if rssi < 40dBm, disable the controller - */ - /*add by Chun-Hung Ho 20160711 */ - if (dm->rssi_min >= 40) - odm_set_bb_reg(dm, 0x8d8, BIT(17), 0x1); - else if (dm->rssi_min < 35) - odm_set_bb_reg(dm, 0x8d8, BIT(17), 0x0); - - ODM_RT_TRACE(dm, ODM_COMP_COMMON, "%s, rssi_min = %d\n", __func__, - dm->rssi_min); -} - -static void _set_tx_a_cali_value(struct phy_dm_struct *dm, u8 rf_path, - u8 offset, u8 tx_a_bias_offset) -{ - u32 modi_tx_a_value = 0; - u8 tmp1_byte = 0; - bool is_minus = false; - u8 comp_value = 0; - - switch (offset) { - case 0x0: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X10124); - break; - case 0x1: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X10524); - break; - case 0x2: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X10924); - break; - case 0x3: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X10D24); - break; - case 0x4: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X30164); - break; - case 0x5: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X30564); - break; - case 0x6: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X30964); - break; - case 0x7: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X30D64); - break; - case 0x8: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X50195); - break; - case 0x9: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X50595); - break; - case 0xa: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X50995); - break; - case 0xb: - odm_set_rf_reg(dm, rf_path, 0x18, 0xFFFFF, 0X50D95); - break; - default: - ODM_RT_TRACE(dm, ODM_COMP_COMMON, - "Invalid TxA band offset...\n"); - return; - } - - /* Get TxA value */ - modi_tx_a_value = odm_get_rf_reg(dm, rf_path, 0x61, 0xFFFFF); - tmp1_byte = (u8)modi_tx_a_value & (BIT(3) | BIT(2) | BIT(1) | BIT(0)); - - /* check how much need to calibration */ - switch (tx_a_bias_offset) { - case 0xF6: - is_minus = true; - comp_value = 3; - break; - - case 0xF4: - is_minus = true; - comp_value = 2; - break; - - case 0xF2: - is_minus = true; - comp_value = 1; - break; - - case 0xF3: - is_minus = false; - comp_value = 1; - break; - - case 0xF5: - is_minus = false; - comp_value = 2; - break; - - case 0xF7: - is_minus = false; - comp_value = 3; - break; - - case 0xF9: - is_minus = false; - comp_value = 4; - break; - - /* do nothing case */ - case 0xF0: - default: - ODM_RT_TRACE(dm, ODM_COMP_COMMON, - "No need to do TxA bias current calibration\n"); - return; - } - - /* calc correct value to calibrate */ - if (is_minus) { - if (tmp1_byte >= comp_value) { - tmp1_byte -= comp_value; - /*modi_tx_a_value += tmp1_byte;*/ - } else { - tmp1_byte = 0; - } - } else { - tmp1_byte += comp_value; - if (tmp1_byte >= 7) - tmp1_byte = 7; - } - - /* Write back to RF reg */ - odm_set_rf_reg(dm, rf_path, 0x30, 0xFFFF, - (offset << 12 | (modi_tx_a_value & 0xFF0) | tmp1_byte)); -} - -static void _txa_bias_cali_4_each_path(struct phy_dm_struct *dm, u8 rf_path, - u8 efuse_value) -{ - /* switch on set TxA bias */ - odm_set_rf_reg(dm, rf_path, 0xEF, 0xFFFFF, 0x200); - - /* Set 12 sets of TxA value */ - _set_tx_a_cali_value(dm, rf_path, 0x0, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x1, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x2, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x3, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x4, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x5, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x6, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x7, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x8, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0x9, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0xa, efuse_value); - _set_tx_a_cali_value(dm, rf_path, 0xb, efuse_value); - - /* switch off set TxA bias */ - odm_set_rf_reg(dm, rf_path, 0xEF, 0xFFFFF, 0x0); -} - -/* - * for 8822B PCIE D-cut patch only - * Normal driver and MP driver need this patch - */ - -void phydm_txcurrentcalibration(struct phy_dm_struct *dm) -{ - u8 efuse0x3D8, efuse0x3D7; - u32 orig_rf0x18_path_a = 0, orig_rf0x18_path_b = 0; - - /* save original 0x18 value */ - orig_rf0x18_path_a = odm_get_rf_reg(dm, ODM_RF_PATH_A, 0x18, 0xFFFFF); - orig_rf0x18_path_b = odm_get_rf_reg(dm, ODM_RF_PATH_B, 0x18, 0xFFFFF); - - /* define efuse content */ - efuse0x3D8 = dm->efuse0x3d8; - efuse0x3D7 = dm->efuse0x3d7; - - /* check efuse content to judge whether need to calibration or not */ - if (efuse0x3D7 == 0xFF) { - ODM_RT_TRACE( - dm, ODM_COMP_COMMON, - "efuse content 0x3D7 == 0xFF, No need to do TxA cali\n"); - return; - } - - /* write RF register for calibration */ - _txa_bias_cali_4_each_path(dm, ODM_RF_PATH_A, efuse0x3D7); - _txa_bias_cali_4_each_path(dm, ODM_RF_PATH_B, efuse0x3D8); - - /* restore original 0x18 value */ - odm_set_rf_reg(dm, ODM_RF_PATH_A, 0x18, 0xFFFFF, orig_rf0x18_path_a); - odm_set_rf_reg(dm, ODM_RF_PATH_B, 0x18, 0xFFFFF, orig_rf0x18_path_b); -} - -void phydm_hwsetting_8822b(struct phy_dm_struct *dm) -{ - phydm_dynamic_switch_htstf_mumimo_8822b(dm); -} diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_rtl8822b.h b/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_rtl8822b.h deleted file mode 100644 index 788258e8c3d1..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/phydm_rtl8822b.h +++ /dev/null @@ -1,19 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ -#ifndef __ODM_RTL8822B_H__ -#define __ODM_RTL8822B_H__ - -void phydm_hwsetting_8822b(struct phy_dm_struct *dm); - -#endif /* #define __ODM_RTL8822B_H__ */ diff --git a/drivers/staging/rtlwifi/phydm/rtl8822b/version_rtl8822b.h b/drivers/staging/rtlwifi/phydm/rtl8822b/version_rtl8822b.h deleted file mode 100644 index 53fd51aacdf2..000000000000 --- a/drivers/staging/rtlwifi/phydm/rtl8822b/version_rtl8822b.h +++ /dev/null @@ -1,23 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/****************************************************************************** - * - * Copyright(c) 2007 - 2016 Realtek Corporation. - * - * Contact Information: - * wlanfae <wlanfae@realtek.com> - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, - * Hsinchu 300, Taiwan. - * - * Larry Finger <Larry.Finger@lwfinger.net> - * - *****************************************************************************/ -/*RTL8822B PHY Parameters*/ -/* - * [Caution] - * Since 01/Aug/2015, the commit rules will be simplified. - * You do not need to fill up the version.h anymore, - * only the maintenance supervisor fills it before formal release. - */ -#define RELEASE_DATE_8822B 20161103 -#define COMMIT_BY_8822B "BB_JOE" -#define RELEASE_VERSION_8822B 67 |