]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
mac80211: realtek: rtw88: sync with v6.16
authorMarty Jones <mj8263788@gmail.com>
Sat, 7 Jun 2025 23:02:25 +0000 (19:02 -0400)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 8 Jun 2025 14:10:40 +0000 (16:10 +0200)
Renamed 046..051 pending patches with the merged tag/hash.
Two patches were skipped, they make use of WQ_BH present since v6.14:
  https://github.com/torvalds/linux/commit/13221be72034d1c34630ab124c43438aefe7e656
  https://github.com/torvalds/linux/commit/3e3aa566dd1803f1697530de6c8489a8350765b3
Manually refreshed 062-v6.14-wifi-rtw88-Add-support-for-LED-blinking.patch
Manually refreshed  063-v6.14-wifi-rtw88-add-RTW88_LEDS-depends-on-LEDS_CLASS-to-K.patch
Manually backported 090-v6.15-wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch

git log --no-merges --pretty=oneline --abbrev-commit 4c2c372de...0daa521a drivers/net/wireless/realtek/rtw88:
4c2c372de2e1 wifi: rtw88: fix the 'para' buffer size to avoid reading out of bounds
f24d0d8c3cd7 wifi: rtw88: Fix the random "error beacon valid" messages for USB
80fe0bc1659c wifi: rtw88: usb: Upload the firmware in bigger chunks
490340faddea wifi: rtw88: usb: Reduce control message timeout to 500 ms
b7f0cc647e52 wifi: rtw88: rtw8822bu VID/PID for BUFFALO WI-U2-866DM
2c17afde9ff6 wifi: rtw88: Handle RTL8723D(S) with blank efuse
0ffa1ba81b35 wifi: rtw88: Fix RX aggregation settings for RTL8723DS
20d3c19bd8f9 wifi: rtw88: do not ignore hardware read error during DPK
fc5f5a0ec463 wifi: rtw88: sdio: call rtw_sdio_indicate_tx_status unconditionally
b2effcdc2379 wifi: rtw88: sdio: map mgmt frames to queue TX_DESC_QSEL_MGMT
581cf3a9cb61 wifi: rtw88: Fix the module names printed in dmesg
b8d49bb8d16a wifi: rtw88: Don't set SUPPORTS_AMSDU_IN_AMPDU for RTL8814AU
0d2a88690e58 wifi: rtw88: Set AMPDU factor to hardware for RTL8814A
dcbb7bb3a364 wifi: rtw88: usb: Enable RX aggregation for RTL8814AU
bf1103654df9 wifi: rtw88: usb: Enable switching the RTL8814AU to USB 3
625fbc16524a wifi: rtw88: usb: Remove redundant 'flush_workqueue()' calls
5c4cf36c538b wifi: rtw88: sdio: Remove redundant 'flush_workqueue()' calls
d58ad77d5cc2 wifi: rtw88: Add __nonstring annotations for unterminated strings
deb3ddeb1865 wifi: rtw88: Enable the new RTL8814AE/RTL8814AU drivers
bad060e8a425 wifi: rtw88: Add rtw8814au.c
dad8e8793102 wifi: rtw88: Add rtw8814ae.c
1a7545784642 wifi: rtw88: Add rtw8814a.{c,h}
e38246889cc9 wifi: rtw88: Add rtw8814a_table.c (part 2/2)
f4debfcb1b3c wifi: rtw88: Add rtw8814a_table.c (part 1/2)
679ec431477c wifi: rtw88: Add some definitions for RTL8814AU
c374281f8285 wifi: rtw88: Extend rtw_debugfs_get_tx_pwr_tbl() for RTL8814AU
cfebabdd351e wifi: rtw88: Extend rtw_debugfs_get_phy_info() for RTL8814AU
8b42c46cf665 wifi: rtw88: Extend rtw_phy_config_swing_table() for RTL8814AU
053a7aace020 wifi: rtw88: Fix rtw_rx_phy_stat() for RTL8814AU
6be7544d19fc wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU
c7eea1ba05ca wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU
86d04f8f991a wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31
e66bca16638e wifi: rtw88: Fix rtw_mac_power_switch() for RTL8814AU
80c4668d024f wifi: rtw88: Add support for Mercusys MA30N and D-Link DWA-T185 rev. A1
9f00e2218e15 wifi: rtw88: Fix rtw_update_sta_info() for RTL8814AU
0f98a5959657 wifi: rtw88: Extend TX power stuff for 3-4 spatial streams
ad815f392003 wifi: rtw88: Rename RTW_RATE_SECTION_MAX to RTW_RATE_SECTION_NUM
e66f3b5c7535 wifi: rtw88: Constify some more structs and arrays
8f0076726b66 wifi: rtw88: Extend rtw_fw_send_ra_info() for RTL8814AU
d80e7d9b6ba3 wifi: rtw88: Extend rf_base_addr and rf_sipi_addr for RTL8814AU
62f726848da4 wifi: rtw88: Extend struct rtw_pwr_track_tbl for RTL8814AU
9e8243025cc0 wifi: rtw88: Fix download_firmware_validate() for RTL8814AU
8425f5c8f04d wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU
105dc94233e4 wifi: rtw88: Fix a typo of debug message in rtw8723d_iqk_check_tx_failed()
0d1d165eff9d wifi: rtw88: Don't use static local variable in rtw8821c_set_tx_power_index_by_rate
00451eb3bec7 wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate
b4bfbc50b1b9 wifi: rtw88: add RTW88_LEDS depends on LEDS_CLASS to Kconfig
4b6652bc6d8d wifi: rtw88: Add support for LED blinking
fb2fcfbe5eef wifi: rtw88: sdio: Fix disconnection after beacon loss
a806a8160a0f wifi: rtw88: 8703b: Fix RX/TX issues
5ad483955acc wifi: rtw88: Delete rf_type member of struct rtw_sta_info
5b1b9545262b wifi: rtw88: Add USB PHY configuration
not backported (3e3aa566dd18 wifi: rtw88: usb: Preallocate and reuse the RX skbs)
not backported (13221be72034 wifi: rtw88: Handle C2H_ADAPTIVITY in rtw_fw_c2h_cmd_handle() )
e9048e2935f7 wifi: rtw88: usb: Copy instead of cloning the RX skb
74a72c367573 wifi: rtw88: 8821a/8812a: Set ptct_efuse_size to 0
59ab27a9f20f wifi: rtw88: 8812a: Support RFE type 2

Signed-off-by: Marty Jones <mj8263788@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19052
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
62 files changed:
package/kernel/mac80211/patches/rtl/046-v6.14-wifi-rtw88-8821au-Add-additional-devices-to-the-USB_.patch [moved from package/kernel/mac80211/patches/rtl/046-wifi-rtw88-8821au-Add-additional-devices-to-the-USB_.patch with 93% similarity]
package/kernel/mac80211/patches/rtl/047-v6.14-wifi-rtw88-8812au-Add-more-device-IDs.patch [moved from package/kernel/mac80211/patches/rtl/047-wifi-rtw88-8812au-Add-more-device-IDs.patch with 95% similarity]
package/kernel/mac80211/patches/rtl/048-v6.14-wifi-rtw88-Add-additional-USB-IDs-for-RTL8812BU.patch [moved from package/kernel/mac80211/patches/rtl/051-wifi-rtw88-Add-additional-USB-IDs-for-RTL8812BU.patch with 80% similarity]
package/kernel/mac80211/patches/rtl/049-v6.14-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch [moved from package/kernel/mac80211/patches/rtl/048-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch with 63% similarity]
package/kernel/mac80211/patches/rtl/050-v6.14-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch [moved from package/kernel/mac80211/patches/rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch with 78% similarity]
package/kernel/mac80211/patches/rtl/051-v6.14-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch [moved from package/kernel/mac80211/patches/rtl/049-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch with 73% similarity]
package/kernel/mac80211/patches/rtl/052-v6.14-wifi-rtw88-add-__packed-attribute-to-efuse-layout-st.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/053-v6.14-wifi-rtw88-8812a-Support-RFE-type-2.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/054-v6.14-wifi-rtw88-8821a-8812a-Set-ptct_efuse_size-to-0.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/055-v6.14-wifi-rtw88-usb-Copy-instead-of-cloning-the-RX-skb.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/058-v6.14-wifi-rtw88-Add-USB-PHY-configuration.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/059-v6.14-wifi-rtw88-Delete-rf_type-member-of-struct-rtw_sta_i.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/060-v6.14-wifi-rtw88-8703b-Fix-RX-TX-issues.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/061-v6.14-wifi-rtw88-sdio-Fix-disconnection-after-beacon-loss.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/062-v6.14-wifi-rtw88-Add-support-for-LED-blinking.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/063-v6.14-wifi-rtw88-add-RTW88_LEDS-depends-on-LEDS_CLASS-to-K.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/064-v6.14.9-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/065-v6.15-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/066-v6.15-wifi-rtw88-Fix-a-typo-of-debug-message-in-rtw8723d_i.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/067-v6.14.9-wifi-rtw88-Fix-__rtw_download_firmware-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/068-v6.14.9-wifi-rtw88-Fix-download_firmware_validate-for-RTL881.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/069-v6.15-wifi-rtw88-Extend-struct-rtw_pwr_track_tbl-for-RTL88.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/070-v6.15-wifi-rtw88-Extend-rf_base_addr-and-rf_sipi_addr-for-.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/071-v6.14.9-wifi-rtw88-Extend-rtw_fw_send_ra_info-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/072-v6.15-wifi-rtw88-Constify-some-more-structs-and-arrays.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/073-v6.15-wifi-rtw88-Rename-RTW_RATE_SECTION_MAX-to-RTW_RATE_S.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/074-v6.15-wifi-rtw88-Extend-TX-power-stuff-for-3-4-spatial-str.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/075-v6.14.9-wifi-rtw88-Fix-rtw_update_sta_info-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/076-v6.14-wifi-rtw88-Add-support-for-Mercusys-MA30N-and-D-Link.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/077-v6.14.9-wifi-rtw88-Fix-rtw_mac_power_switch-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/078-v6.14.9-wifi-rtw88-Fix-rtw_desc_to_mcsrate-to-handle-MCS16-3.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/079-v6.14.9-wifi-rtw88-Fix-rtw_init_ht_cap-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/080-v6.14.9-wifi-rtw88-Fix-rtw_init_vht_cap-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/081-v6.15-wifi-rtw88-Fix-rtw_rx_phy_stat-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/082-v6.15-wifi-rtw88-Extend-rtw_phy_config_swing_table-for-RTL.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/083-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_phy_info-for-RTL88.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/084-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_tx_pwr_tbl-for-RTL.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/085-v6.15-wifi-rtw88-Add-some-definitions-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/086-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-1-2.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/087-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-2-2.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/088-v6.15-wifi-rtw88-Add-rtw8814a.-c-h.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/089-v6.15-wifi-rtw88-Add-rtw8814ae.c.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/090-v6.15-wifi-rtw88-Add-rtw8814au.c.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/091-v6.15-wifi-rtw88-Add-__nonstring-annotations-for-untermina.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/091-v6.15wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/093-v6.16-wifi-rtw88-sdio-Remove-redundant-flush_workqueue-cal.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/094-v6.16-wifi-rtw88-usb-Remove-redundant-flush_workqueue-call.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/095-v6.16-wifi-rtw88-usb-Enable-switching-the-RTL8814AU-to-USB.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/096-v6.16-wifi-rtw88-usb-Enable-RX-aggregation-for-RTL8814AU.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/097-v6.16-wifi-rtw88-Set-AMPDU-factor-to-hardware-for-RTL8814A.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/098-v6.16-wifi-rtw88-Don-t-set-SUPPORTS_AMSDU_IN_AMPDU-for-RTL.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/099-v6.16-wifi-rtw88-Fix-the-module-names-printed-in-dmesg.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/100-v6.16-wifi-rtw88-sdio-map-mgmt-frames-to-queue-TX_DESC_QSE.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/101-v6.16-wifi-rtw88-sdio-call-rtw_sdio_indicate_tx_status-unc.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/102-v6.16-wifi-rtw88-do-not-ignore-hardware-read-error-during-.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/103-v6.16-wifi-rtw88-Fix-RX-aggregation-settings-for-RTL8723DS.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/104-v6.16-wifi-rtw88-Handle-RTL8723D-S-with-blank-efuse.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/105-v6.16-wifi-rtw88-rtw8822bu-VID-PID-for-BUFFALO-WI-U2-866DM.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/106-v6.16-wifi-rtw88-usb-Reduce-control-message-timeout-to-500.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/107-v6.16-wifi-rtw88-usb-Upload-the-firmware-in-bigger-chunks.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/108-v6.16-wifi-rtw88-Fix-the-random-error-beacon-valid-message.patch [new file with mode: 0644]
package/kernel/mac80211/patches/rtl/109-v6.16-wifi-rtw88-fix-the-para-buffer-size-to-avoid-reading.patch [new file with mode: 0644]

similarity index 93%
rename from package/kernel/mac80211/patches/rtl/046-wifi-rtw88-8821au-Add-additional-devices-to-the-USB_.patch
rename to package/kernel/mac80211/patches/rtl/046-v6.14-wifi-rtw88-8821au-Add-additional-devices-to-the-USB_.patch
index a83094b3c3ee2bd196f1aac0a8d35c10b0c9db27..d1e268c79b92c3ea4ac38d014f3cae12db15c2ea 100644 (file)
@@ -1,14 +1,16 @@
-From ff5a1c94e53c0d24f610c2c30add82f75b728737 Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger@gmail.com>
+From 7b5ce65d90187f0944e70dc5741aa0edfac926f4 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
 Date: Wed, 6 Nov 2024 15:55:31 +0200
-Subject: [PATCH 1/6] wifi: rtw88: 8821au: Add additional devices to the
USB_DEVICE list
+Subject: [PATCH] wifi: rtw88: 8821au: Add additional devices to the USB_DEVICE
+ list
 
 These are the entries that Nick Morrow provided. From
 https://github.com/morrownr/8821au-20210708
 
 Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
 Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/da05b866-a9ff-428c-a008-35e8cf200a98@gmail.com
 ---
  .../net/wireless/realtek/rtw88/rtw8821au.c    | 52 ++++++++++++++++++-
  1 file changed, 51 insertions(+), 1 deletion(-)
similarity index 95%
rename from package/kernel/mac80211/patches/rtl/047-wifi-rtw88-8812au-Add-more-device-IDs.patch
rename to package/kernel/mac80211/patches/rtl/047-v6.14-wifi-rtw88-8812au-Add-more-device-IDs.patch
index a93f9219d9fcc204e14e33dce3a7665c6fdc2ab7..e03f246164605bb9bfa798d4f840f1b7b892c653 100644 (file)
@@ -1,12 +1,14 @@
-From d21ad2e4edfb64d3f32685607a457576eea3c5cd Mon Sep 17 00:00:00 2001
+From 1ee6ff9ae3c1a9eda9081f9db04f85d3a7352d38 Mon Sep 17 00:00:00 2001
 From: Nick Morrow <usbwifi2024@gmail.com>
 Date: Wed, 6 Nov 2024 15:57:10 +0200
-Subject: [PATCH 2/6] wifi: rtw88: 8812au: Add more device IDs
+Subject: [PATCH] wifi: rtw88: 8812au: Add more device IDs
 
 From https://github.com/morrownr/8812au-20210820.
 
 Signed-off-by: Nick Morrow <usbwifi2024@gmail.com>
 Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/31b7ee6b-f96d-43e0-a32f-a9eb1174a0c1@gmail.com
 ---
  .../net/wireless/realtek/rtw88/rtw8812au.c    | 68 ++++++++++++++++++-
  1 file changed, 67 insertions(+), 1 deletion(-)
similarity index 80%
rename from package/kernel/mac80211/patches/rtl/051-wifi-rtw88-Add-additional-USB-IDs-for-RTL8812BU.patch
rename to package/kernel/mac80211/patches/rtl/048-v6.14-wifi-rtw88-Add-additional-USB-IDs-for-RTL8812BU.patch
index e4e26c797511164a180d130b12db20b11fc03d9e..bf0bcbf1890032ee4a337f74d51df5cea9be9ed9 100644 (file)
@@ -1,7 +1,7 @@
-From acadf3a63b39ad03167a633fa3cea8c0fc2ab87f Mon Sep 17 00:00:00 2001
+From d4c4903508f9e1b2bfec88f777718484e27343fb Mon Sep 17 00:00:00 2001
 From: Nick Morrow <usbwifi2024@gmail.com>
 Date: Thu, 7 Nov 2024 08:28:46 +0800
-Subject: [PATCH 6/6] wifi: rtw88: Add additional USB IDs for RTL8812BU
+Subject: [PATCH] wifi: rtw88: Add additional USB IDs for RTL8812BU
 
 Add three additional USB IDs found in
 https://github.com/morrownr/88x2bu-20210702
@@ -9,7 +9,9 @@ to support more RTL8812BU devices.
 
 Signed-off-by: Nick Morrow <usbwifi2024@gmail.com>
 Signed-off-by: Zenm Chen <zenmchen@gmail.com>
-Signed-off-by: Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
+Reviewed-by: Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20241107002846.13748-1-zenmchen@gmail.com
 ---
  drivers/net/wireless/realtek/rtw88/rtw8822bu.c | 6 ++++++
  1 file changed, 6 insertions(+)
similarity index 63%
rename from package/kernel/mac80211/patches/rtl/048-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch
rename to package/kernel/mac80211/patches/rtl/049-v6.14-wifi-rtw88-usb-Support-USB-3-with-RTL8812AU.patch
index 33ca91d77d8c2fc892e9744af0d167db2762cf5f..694c32f79dc4d10f02b28423ba9a096e3e376cee 100644 (file)
@@ -1,14 +1,16 @@
-From 213dfa630285bb0241f3eaeb778db8ff128f10ba Mon Sep 17 00:00:00 2001
+From 82a35723a67c29f685d7b518962154a73b7163a2 Mon Sep 17 00:00:00 2001
 From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
-Date: Fri, 8 Nov 2024 01:41:08 +0200
-Subject: [PATCH 3/6] wifi: rtw88: usb: Support USB 3 with RTL8812AU
+Date: Thu, 14 Nov 2024 17:46:08 +0200
+Subject: [PATCH] wifi: rtw88: usb: Support USB 3 with RTL8812AU
 
 Add the function to automatically switch the RTL8812AU into USB 3 mode.
 
 Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/19cda72b-f1f1-4b69-8369-0e4376b646bf@gmail.com
 ---
- drivers/net/wireless/realtek/rtw88/usb.c | 34 ++++++++++++++++++++++--
- 1 file changed, 32 insertions(+), 2 deletions(-)
+ drivers/net/wireless/realtek/rtw88/usb.c | 44 ++++++++++++++++++++++--
+ 1 file changed, 42 insertions(+), 2 deletions(-)
 
 --- a/drivers/net/wireless/realtek/rtw88/usb.c
 +++ b/drivers/net/wireless/realtek/rtw88/usb.c
@@ -45,24 +47,38 @@ Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
  static int rtw_usb_switch_mode_new(struct rtw_dev *rtwdev)
  {
        enum usb_device_speed cur_speed;
-@@ -983,7 +1009,8 @@ static int rtw_usb_switch_mode(struct rt
+@@ -979,11 +1005,22 @@ static int rtw_usb_switch_mode_new(struc
+       return 1;
+ }
++static bool rtw_usb3_chip_old(u8 chip_id)
++{
++      return chip_id == RTW_CHIP_TYPE_8812A;
++}
++
++static bool rtw_usb3_chip_new(u8 chip_id)
++{
++      return chip_id == RTW_CHIP_TYPE_8822C ||
++             chip_id == RTW_CHIP_TYPE_8822B;
++}
++
+ static int rtw_usb_switch_mode(struct rtw_dev *rtwdev)
  {
        u8 id = rtwdev->chip->id;
  
 -      if (id != RTW_CHIP_TYPE_8822C && id != RTW_CHIP_TYPE_8822B)
-+      if (id != RTW_CHIP_TYPE_8822C && id != RTW_CHIP_TYPE_8822B &&
-+          id != RTW_CHIP_TYPE_8812A)
++      if (!rtw_usb3_chip_new(id) && !rtw_usb3_chip_old(id))
                return 0;
  
        if (!rtwdev->efuse.usb_mode_switch) {
-@@ -998,7 +1025,10 @@ static int rtw_usb_switch_mode(struct rt
+@@ -998,7 +1035,10 @@ static int rtw_usb_switch_mode(struct rt
                return 0;
        }
  
 -      return rtw_usb_switch_mode_new(rtwdev);
-+      if (id == RTW_CHIP_TYPE_8812A)
++      if (rtw_usb3_chip_old(id))
 +              return rtw_usb_switch_mode_old(rtwdev);
-+      else /* RTL8822CU, RTL8822BU */
++      else
 +              return rtw_usb_switch_mode_new(rtwdev);
  }
  
similarity index 78%
rename from package/kernel/mac80211/patches/rtl/050-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch
rename to package/kernel/mac80211/patches/rtl/050-v6.14-wifi-rtlwifi-rtl8821ae-phy-restore-removed-code-to-f.patch
index 798a59351f7a0df9c1e1d0f0a6962d42011649e0..3e66f5b2493e6a7a3afdccfce2ed672631cd25a3 100644 (file)
@@ -1,8 +1,8 @@
-From 927dcd0ab53f39ee00a2d1f204b5aac77e28fcf9 Mon Sep 17 00:00:00 2001
+From 5e5903a442bb889a62a0f5d89ac33e53ab08592c Mon Sep 17 00:00:00 2001
 From: Colin Ian King <colin.i.king@gmail.com>
 Date: Wed, 6 Nov 2024 15:46:42 +0000
-Subject: [PATCH 5/6] wifi: rtlwifi: rtl8821ae: phy: restore removed code to
fix infinite loop
+Subject: [PATCH] wifi: rtlwifi: rtl8821ae: phy: restore removed code to fix
+ infinite loop
 
 A previous clean-up fix removed the assignment of v2 inside a while loop
 that turned it into an infinite loop. Fix this by restoring the assignment
@@ -12,6 +12,8 @@ Fixes: cda37445718d ("wifi: rtlwifi: rtl8821ae: phy: remove some useless code")
 Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
 Tested-by: Ping-Ke Shih <pkshih@realtek.com>
 Reviewed-by: Su Hui <suhui@nfschina.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20241106154642.1627886-1-colin.i.king@gmail.com
 ---
  drivers/net/wireless/realtek/rtlwifi/rtl8821ae/phy.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
similarity index 73%
rename from package/kernel/mac80211/patches/rtl/049-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch
rename to package/kernel/mac80211/patches/rtl/051-v6.14-wifi-rtw88-usb-Enable-RX-aggregation-for-8821au-8812.patch
index d4c3ef3495702addb9deed30e197336bb1c71424..1debe2dc73d070953850567958236c1c4d166b27 100644 (file)
@@ -1,7 +1,7 @@
-From 2b38362bd3b8e0a3691f0a8e82444a54f702e384 Mon Sep 17 00:00:00 2001
+From ce5dea83ee8f945203144fb891fdcb978216e45a Mon Sep 17 00:00:00 2001
 From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
-Date: Fri, 8 Nov 2024 01:43:50 +0200
-Subject: [PATCH 4/6] wifi: rtw88: usb: Enable RX aggregation for 8821au/8812au
+Date: Thu, 14 Nov 2024 17:48:09 +0200
+Subject: [PATCH] wifi: rtw88: usb: Enable RX aggregation for 8821au/8812au
 
 USB RX aggregation improves the RX speed on certain ARM systems, like
 the NanoPi NEO Core2. With RTL8811AU, before: 30 Mbps, after: 224 Mbps.
@@ -13,13 +13,15 @@ of 7 RTL8812AU frequently tries to aggregate more frames than will fit
 in 32768 bytes. Use a size of 6 instead.
 
 Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/63012163-a425-4b15-b830-43f279c06b73@gmail.com
 ---
- drivers/net/wireless/realtek/rtw88/usb.c | 30 ++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
+ drivers/net/wireless/realtek/rtw88/usb.c | 28 ++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
 
 --- a/drivers/net/wireless/realtek/rtw88/usb.c
 +++ b/drivers/net/wireless/realtek/rtw88/usb.c
-@@ -789,6 +789,32 @@ static void rtw_usb_dynamic_rx_agg_v1(st
+@@ -789,6 +789,30 @@ static void rtw_usb_dynamic_rx_agg_v1(st
        rtw_write16(rtwdev, REG_RXDMA_AGG_PG_TH, val16);
  }
  
@@ -29,7 +31,10 @@ Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
 +      u8 size, timeout;
 +      u16 val16;
 +
-+      if (rtwusb->udev->speed == USB_SPEED_SUPER) {
++      if (!enable) {
++              size = 0x0;
++              timeout = 0x1;
++      } else if (rtwusb->udev->speed == USB_SPEED_SUPER) {
 +              size = 0x6;
 +              timeout = 0x1a;
 +      } else {
@@ -37,11 +42,6 @@ Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
 +              timeout = 0x20;
 +      }
 +
-+      if (!enable) {
-+              size = 0x0;
-+              timeout = 0x1;
-+      }
-+
 +      val16 = u16_encode_bits(size, BIT_RXDMA_AGG_PG_TH) |
 +              u16_encode_bits(timeout, BIT_DMA_AGG_TO_V1);
 +
@@ -52,7 +52,7 @@ Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
  static void rtw_usb_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable)
  {
        switch (rtwdev->chip->id) {
-@@ -797,6 +823,10 @@ static void rtw_usb_dynamic_rx_agg(struc
+@@ -797,6 +821,10 @@ static void rtw_usb_dynamic_rx_agg(struc
        case RTW_CHIP_TYPE_8821C:
                rtw_usb_dynamic_rx_agg_v1(rtwdev, enable);
                break;
diff --git a/package/kernel/mac80211/patches/rtl/052-v6.14-wifi-rtw88-add-__packed-attribute-to-efuse-layout-st.patch b/package/kernel/mac80211/patches/rtl/052-v6.14-wifi-rtw88-add-__packed-attribute-to-efuse-layout-st.patch
new file mode 100644 (file)
index 0000000..6132bb7
--- /dev/null
@@ -0,0 +1,195 @@
+From 0daa521a1c8c29ffbefe6530f0d276e74e2749d0 Mon Sep 17 00:00:00 2001
+From: Ping-Ke Shih <pkshih@realtek.com>
+Date: Thu, 12 Dec 2024 13:42:03 +0800
+Subject: [PATCH] wifi: rtw88: add __packed attribute to efuse layout struct
+
+The layout struct of efuse should not do address alignment by compiler.
+Otherwise it leads unexpected layout and size for certain arch suc as arm.
+In x86-64, the results are identical before and after this patch.
+
+Also adjust bit-field to prevent over adjacent byte to avoid warning:
+  rtw88/rtw8822b.h:66:1: note: offset of packed bit-field `res2` has changed in GCC 4.4
+   66 | } __packed;
+      | ^
+
+Reported-by: kernel test robot <lkp@intel.com>
+Closes: https://lore.kernel.org/oe-kbuild-all/202412120131.qk0x6OhE-lkp@intel.com/
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20241212054203.135046-1-pkshih@realtek.com
+---
+ drivers/net/wireless/realtek/rtw88/main.h     | 4 ++--
+ drivers/net/wireless/realtek/rtw88/rtw8723x.h | 8 ++++----
+ drivers/net/wireless/realtek/rtw88/rtw8821c.h | 9 +++++----
+ drivers/net/wireless/realtek/rtw88/rtw8822b.h | 9 +++++----
+ drivers/net/wireless/realtek/rtw88/rtw8822c.h | 9 +++++----
+ 5 files changed, 21 insertions(+), 18 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -510,12 +510,12 @@ struct rtw_5g_txpwr_idx {
+       struct rtw_5g_vht_ns_pwr_idx_diff vht_2s_diff;
+       struct rtw_5g_vht_ns_pwr_idx_diff vht_3s_diff;
+       struct rtw_5g_vht_ns_pwr_idx_diff vht_4s_diff;
+-};
++} __packed;
+ struct rtw_txpwr_idx {
+       struct rtw_2g_txpwr_idx pwr_idx_2g;
+       struct rtw_5g_txpwr_idx pwr_idx_5g;
+-};
++} __packed;
+ struct rtw_channel_params {
+       u8 center_chan;
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723x.h
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723x.h
+@@ -47,7 +47,7 @@ struct rtw8723xe_efuse {
+       u8 device_id[2];
+       u8 sub_vendor_id[2];
+       u8 sub_device_id[2];
+-};
++} __packed;
+ struct rtw8723xu_efuse {
+       u8 res4[48];                    /* 0xd0 */
+@@ -56,12 +56,12 @@ struct rtw8723xu_efuse {
+       u8 usb_option;                  /* 0x104 */
+       u8 res5[2];                     /* 0x105 */
+       u8 mac_addr[ETH_ALEN];          /* 0x107 */
+-};
++} __packed;
+ struct rtw8723xs_efuse {
+       u8 res4[0x4a];                  /* 0xd0 */
+       u8 mac_addr[ETH_ALEN];          /* 0x11a */
+-};
++} __packed;
+ struct rtw8723x_efuse {
+       __le16 rtl_id;
+@@ -96,7 +96,7 @@ struct rtw8723x_efuse {
+               struct rtw8723xu_efuse u;
+               struct rtw8723xs_efuse s;
+       };
+-};
++} __packed;
+ #define RTW8723X_IQK_ADDA_REG_NUM     16
+ #define RTW8723X_IQK_MAC8_REG_NUM     3
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.h
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.h
+@@ -27,7 +27,7 @@ struct rtw8821cu_efuse {
+       u8 res11[0xcf];
+       u8 package_type;                /* 0x1fb */
+       u8 res12[0x4];
+-};
++} __packed;
+ struct rtw8821ce_efuse {
+       u8 mac_addr[ETH_ALEN];          /* 0xd0 */
+@@ -47,7 +47,8 @@ struct rtw8821ce_efuse {
+       u8 ltr_en:1;
+       u8 res1:2;
+       u8 obff:2;
+-      u8 res2:3;
++      u8 res2_1:1;
++      u8 res2_2:2;
+       u8 obff_cap:2;
+       u8 res3:4;
+       u8 res4[3];
+@@ -63,7 +64,7 @@ struct rtw8821ce_efuse {
+       u8 res6:1;
+       u8 port_t_power_on_value:5;
+       u8 res7;
+-};
++} __packed;
+ struct rtw8821cs_efuse {
+       u8 res4[0x4a];                  /* 0xd0 */
+@@ -101,7 +102,7 @@ struct rtw8821c_efuse {
+               struct rtw8821cu_efuse u;
+               struct rtw8821cs_efuse s;
+       };
+-};
++} __packed;
+ static inline void
+ _rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data)
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.h
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.h
+@@ -27,7 +27,7 @@ struct rtw8822bu_efuse {
+       u8 res11[0xcf];
+       u8 package_type;                /* 0x1fb */
+       u8 res12[0x4];
+-};
++} __packed;
+ struct rtw8822be_efuse {
+       u8 mac_addr[ETH_ALEN];          /* 0xd0 */
+@@ -47,7 +47,8 @@ struct rtw8822be_efuse {
+       u8 ltr_en:1;
+       u8 res1:2;
+       u8 obff:2;
+-      u8 res2:3;
++      u8 res2_1:1;
++      u8 res2_2:2;
+       u8 obff_cap:2;
+       u8 res3:4;
+       u8 res4[3];
+@@ -63,7 +64,7 @@ struct rtw8822be_efuse {
+       u8 res6:1;
+       u8 port_t_power_on_value:5;
+       u8 res7;
+-};
++} __packed;
+ struct rtw8822bs_efuse {
+       u8 res4[0x4a];                  /* 0xd0 */
+@@ -103,7 +104,7 @@ struct rtw8822b_efuse {
+               struct rtw8822bu_efuse u;
+               struct rtw8822bs_efuse s;
+       };
+-};
++} __packed;
+ static inline void
+ _rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data)
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.h
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.h
+@@ -14,7 +14,7 @@ struct rtw8822cu_efuse {
+       u8 res1[3];
+       u8 mac_addr[ETH_ALEN];          /* 0x157 */
+       u8 res2[0x3d];
+-};
++} __packed;
+ struct rtw8822cs_efuse {
+       u8 res0[0x4a];                  /* 0x120 */
+@@ -39,7 +39,8 @@ struct rtw8822ce_efuse {
+       u8 ltr_en:1;
+       u8 res1:2;
+       u8 obff:2;
+-      u8 res2:3;
++      u8 res2_1:1;
++      u8 res2_2:2;
+       u8 obff_cap:2;
+       u8 res3:4;
+       u8 class_code[3];
+@@ -55,7 +56,7 @@ struct rtw8822ce_efuse {
+       u8 res6:1;
+       u8 port_t_power_on_value:5;
+       u8 res7;
+-};
++} __packed;
+ struct rtw8822c_efuse {
+       __le16 rtl_id;
+@@ -102,7 +103,7 @@ struct rtw8822c_efuse {
+               struct rtw8822cu_efuse u;
+               struct rtw8822cs_efuse s;
+       };
+-};
++} __packed;
+ enum rtw8822c_dpk_agc_phase {
+       RTW_DPK_GAIN_CHECK,
diff --git a/package/kernel/mac80211/patches/rtl/053-v6.14-wifi-rtw88-8812a-Support-RFE-type-2.patch b/package/kernel/mac80211/patches/rtl/053-v6.14-wifi-rtw88-8812a-Support-RFE-type-2.patch
new file mode 100644 (file)
index 0000000..d59facb
--- /dev/null
@@ -0,0 +1,28 @@
+From 59ab27a9f20f8de6f7989e8a8c3d97c04ed8199c Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 18 Dec 2024 02:13:22 +0200
+Subject: [PATCH] wifi: rtw88: 8812a: Support RFE type 2
+
+RF front end type 2 exists in the wild and can be treated like types
+0 and 1.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/2917c7fc-6d88-4007-b6a6-9130bd1991e5@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8812a.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8812a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8812a.c
+@@ -985,6 +985,9 @@ static const struct rtw_rfe_def rtw8812a
+       [1] = { .phy_pg_tbl     = &rtw8812a_bb_pg_tbl,
+               .txpwr_lmt_tbl  = &rtw8812a_txpwr_lmt_tbl,
+               .pwr_track_tbl  = &rtw8812a_rtw_pwr_track_tbl, },
++      [2] = { .phy_pg_tbl     = &rtw8812a_bb_pg_tbl,
++              .txpwr_lmt_tbl  = &rtw8812a_txpwr_lmt_tbl,
++              .pwr_track_tbl  = &rtw8812a_rtw_pwr_track_tbl, },
+       [3] = { .phy_pg_tbl     = &rtw8812a_bb_pg_rfe3_tbl,
+               .txpwr_lmt_tbl  = &rtw8812a_txpwr_lmt_tbl,
+               .pwr_track_tbl  = &rtw8812a_rtw_pwr_track_rfe3_tbl, },
diff --git a/package/kernel/mac80211/patches/rtl/054-v6.14-wifi-rtw88-8821a-8812a-Set-ptct_efuse_size-to-0.patch b/package/kernel/mac80211/patches/rtl/054-v6.14-wifi-rtw88-8821a-8812a-Set-ptct_efuse_size-to-0.patch
new file mode 100644 (file)
index 0000000..3b5dea7
--- /dev/null
@@ -0,0 +1,51 @@
+From 74a72c367573ad521becf6cc4d649e14387b3c64 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 18 Dec 2024 02:16:11 +0200
+Subject: [PATCH] wifi: rtw88: 8821a/8812a: Set ptct_efuse_size to 0
+
+Some RTL8812AU devices fail to probe:
+
+[   12.478774] rtw_8812au 1-1.3:1.0: failed to dump efuse logical map
+[   12.487712] rtw_8812au 1-1.3:1.0: failed to setup chip efuse info
+[   12.487742] rtw_8812au 1-1.3:1.0: failed to setup chip information
+[   12.491077] rtw_8812au: probe of 1-1.3:1.0 failed with error -22
+
+It turns out these chips don't need to "protect" any bytes at the end of
+the efuse.
+
+The original value of 96 was copied from rtw8821c.c.
+
+No one reported any failures with RTL8821AU yet, but the vendor driver
+uses the same efuse reading code for both chips.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/1a477adb-60c3-463c-b158-3f86c94cb821@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8812a.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8821a.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8812a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8812a.c
+@@ -1027,7 +1027,7 @@ const struct rtw_chip_info rtw8812a_hw_s
+       .rx_buf_desc_sz = 8,
+       .phy_efuse_size = 512,
+       .log_efuse_size = 512,
+-      .ptct_efuse_size = 96 + 1, /* TODO or just 18? */
++      .ptct_efuse_size = 0,
+       .txff_size = 131072,
+       .rxff_size = 16128,
+       .rsvd_drv_pg_num = 9,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821a.c
+@@ -1118,7 +1118,7 @@ const struct rtw_chip_info rtw8821a_hw_s
+       .rx_buf_desc_sz = 8,
+       .phy_efuse_size = 512,
+       .log_efuse_size = 512,
+-      .ptct_efuse_size = 96 + 1, /* TODO or just 18? */
++      .ptct_efuse_size = 0,
+       .txff_size = 65536,
+       .rxff_size = 16128,
+       .rsvd_drv_pg_num = 8,
diff --git a/package/kernel/mac80211/patches/rtl/055-v6.14-wifi-rtw88-usb-Copy-instead-of-cloning-the-RX-skb.patch b/package/kernel/mac80211/patches/rtl/055-v6.14-wifi-rtw88-usb-Copy-instead-of-cloning-the-RX-skb.patch
new file mode 100644 (file)
index 0000000..30f13f9
--- /dev/null
@@ -0,0 +1,130 @@
+From e9048e2935f7d797c2ba047c15b705b57c2fa99a Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Thu, 19 Dec 2024 00:33:20 +0200
+Subject: [PATCH] wifi: rtw88: usb: Copy instead of cloning the RX skb
+
+"iperf3 -c 192.168.0.1 -R --udp -b 0" shows about 40% of datagrams
+are lost. Many torrents don't download faster than 3 MiB/s, probably
+because the Bittorrent protocol uses UDP. This is somehow related to
+the use of skb_clone() in the RX path.
+
+Don't use skb_clone(). Instead allocate a new skb for each 802.11 frame
+received and copy the data from the big (32768 byte) skb.
+
+With this patch, "iperf3 -c 192.168.0.1 -R --udp -b 0" shows only 1-2%
+of datagrams are lost, and torrents can reach download speeds of 36
+MiB/s.
+
+Tested with RTL8812AU and RTL8822CU.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/8c9d4f9d-ebd8-4dc0-a0c4-9ebe430521dd@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/usb.c | 52 ++++++++++++++----------
+ 1 file changed, 31 insertions(+), 21 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -7,6 +7,7 @@
+ #include <linux/mutex.h>
+ #include "main.h"
+ #include "debug.h"
++#include "mac.h"
+ #include "reg.h"
+ #include "tx.h"
+ #include "rx.h"
+@@ -547,49 +548,58 @@ static void rtw_usb_rx_handler(struct wo
+ {
+       struct rtw_usb *rtwusb = container_of(work, struct rtw_usb, rx_work);
+       struct rtw_dev *rtwdev = rtwusb->rtwdev;
+-      const struct rtw_chip_info *chip = rtwdev->chip;
+-      u32 pkt_desc_sz = chip->rx_pkt_desc_sz;
+       struct ieee80211_rx_status rx_status;
+-      u32 pkt_offset, next_pkt, urb_len;
+       struct rtw_rx_pkt_stat pkt_stat;
+-      struct sk_buff *next_skb;
++      struct sk_buff *rx_skb;
+       struct sk_buff *skb;
++      u32 pkt_desc_sz = rtwdev->chip->rx_pkt_desc_sz;
++      u32 max_skb_len = pkt_desc_sz + PHY_STATUS_SIZE * 8 +
++                        IEEE80211_MAX_MPDU_LEN_VHT_11454;
++      u32 pkt_offset, next_pkt, skb_len;
+       u8 *rx_desc;
+       int limit;
+       for (limit = 0; limit < 200; limit++) {
+-              skb = skb_dequeue(&rtwusb->rx_queue);
+-              if (!skb)
++              rx_skb = skb_dequeue(&rtwusb->rx_queue);
++              if (!rx_skb)
+                       break;
+               if (skb_queue_len(&rtwusb->rx_queue) >= RTW_USB_MAX_RXQ_LEN) {
+                       dev_dbg_ratelimited(rtwdev->dev, "failed to get rx_queue, overflow\n");
+-                      dev_kfree_skb_any(skb);
++                      dev_kfree_skb_any(rx_skb);
+                       continue;
+               }
+-              urb_len = skb->len;
++              rx_desc = rx_skb->data;
+               do {
+-                      rx_desc = skb->data;
+                       rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat,
+                                            &rx_status);
+                       pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
+                                    pkt_stat.shift;
+-                      next_pkt = round_up(pkt_stat.pkt_len + pkt_offset, 8);
++                      skb_len = pkt_stat.pkt_len + pkt_offset;
++                      if (skb_len > max_skb_len) {
++                              rtw_dbg(rtwdev, RTW_DBG_USB,
++                                      "skipping too big packet: %u\n",
++                                      skb_len);
++                              goto skip_packet;
++                      }
++
++                      skb = alloc_skb(skb_len, GFP_KERNEL);
++                      if (!skb) {
++                              rtw_dbg(rtwdev, RTW_DBG_USB,
++                                      "failed to allocate RX skb of size %u\n",
++                                      skb_len);
++                              goto skip_packet;
++                      }
+-                      if (urb_len >= next_pkt + pkt_desc_sz)
+-                              next_skb = skb_clone(skb, GFP_KERNEL);
+-                      else
+-                              next_skb = NULL;
++                      skb_put_data(skb, rx_desc, skb_len);
+                       if (pkt_stat.is_c2h) {
+-                              skb_trim(skb, pkt_stat.pkt_len + pkt_offset);
+                               rtw_fw_c2h_cmd_rx_irqsafe(rtwdev, pkt_offset, skb);
+                       } else {
+                               skb_pull(skb, pkt_offset);
+-                              skb_trim(skb, pkt_stat.pkt_len);
+                               rtw_update_rx_freq_for_invalid(rtwdev, skb,
+                                                              &rx_status,
+                                                              &pkt_stat);
+@@ -598,12 +608,12 @@ static void rtw_usb_rx_handler(struct wo
+                               ieee80211_rx_irqsafe(rtwdev->hw, skb);
+                       }
+-                      skb = next_skb;
+-                      if (skb)
+-                              skb_pull(skb, next_pkt);
++skip_packet:
++                      next_pkt = round_up(skb_len, 8);
++                      rx_desc += next_pkt;
++              } while (rx_desc + pkt_desc_sz < rx_skb->data + rx_skb->len);
+-                      urb_len -= next_pkt;
+-              } while (skb);
++              dev_kfree_skb_any(rx_skb);
+       }
+ }
diff --git a/package/kernel/mac80211/patches/rtl/058-v6.14-wifi-rtw88-Add-USB-PHY-configuration.patch b/package/kernel/mac80211/patches/rtl/058-v6.14-wifi-rtw88-Add-USB-PHY-configuration.patch
new file mode 100644 (file)
index 0000000..606c0fd
--- /dev/null
@@ -0,0 +1,141 @@
+From 5b1b9545262b5126a3c2776e7e64ff29765cbe6e Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 1 Jan 2025 18:16:32 +0200
+Subject: [PATCH] wifi: rtw88: Add USB PHY configuration
+
+Add some extra configuration for USB devices. Currently only RTL8822BU
+version (cut) D needs this. The new code makes use of the existing
+usb3_param_8822b array from rtw8822b.c.
+
+A user reported that TP-Link Archer T3U in USB 3 mode was randomly
+disconnecting from USB:
+
+[ 26.036502] usb 2-2: new SuperSpeed USB device number 3 using xhci_hcd
+...
+[ 27.576491] usb 2-2: USB disconnect, device number 3
+[ 28.621528] usb 2-2: new SuperSpeed USB device number 4 using xhci_hcd
+...
+[ 45.984521] usb 2-2: USB disconnect, device number 4
+...
+[ 46.845585] usb 2-2: new SuperSpeed USB device number 5 using xhci_hcd
+...
+[ 94.400380] usb 2-2: USB disconnect, device number 5
+...
+[ 95.590421] usb 2-2: new SuperSpeed USB device number 6 using xhci_hcd
+
+This patch fixes that.
+
+Link: https://github.com/lwfinger/rtw88/issues/262
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/9d312b14-0146-4be8-9c50-ef432234db50@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/reg.h | 10 ++++
+ drivers/net/wireless/realtek/rtw88/usb.c | 68 ++++++++++++++++++++++++
+ 2 files changed, 78 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/reg.h
++++ b/drivers/net/wireless/realtek/rtw88/reg.h
+@@ -871,7 +871,17 @@
+ #define REG_USB_MOD   0xf008
+ #define REG_USB3_RXITV        0xf050
++#define REG_USB2_PHY_ADR      0xfe40
++#define REG_USB2_PHY_DAT      0xfe41
++#define REG_USB2_PHY_CMD      0xfe42
++#define BIT_USB2_PHY_CMD_TRG  0x81
+ #define REG_USB_HRPWM 0xfe58
++#define REG_USB3_PHY_ADR      0xff0c
++#define REG_USB3_PHY_DAT_L    0xff0d
++#define REG_USB3_PHY_DAT_H    0xff0e
++#define BIT_USB3_PHY_ADR_WR   BIT(7)
++#define BIT_USB3_PHY_ADR_RD   BIT(6)
++#define BIT_USB3_PHY_ADR_MASK GENMASK(5, 0)
+ #define RF_MODE               0x00
+ #define RF_MODOPT     0x01
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -1079,6 +1079,71 @@ static int rtw_usb_switch_mode(struct rt
+               return rtw_usb_switch_mode_new(rtwdev);
+ }
++#define USB_REG_PAGE  0xf4
++#define USB_PHY_PAGE0 0x9b
++#define USB_PHY_PAGE1 0xbb
++
++static void rtw_usb_phy_write(struct rtw_dev *rtwdev, u8 addr, u16 data,
++                            enum usb_device_speed speed)
++{
++      if (speed == USB_SPEED_SUPER) {
++              rtw_write8(rtwdev, REG_USB3_PHY_DAT_L, data & 0xff);
++              rtw_write8(rtwdev, REG_USB3_PHY_DAT_H, data >> 8);
++              rtw_write8(rtwdev, REG_USB3_PHY_ADR, addr | BIT_USB3_PHY_ADR_WR);
++      } else if (speed == USB_SPEED_HIGH) {
++              rtw_write8(rtwdev, REG_USB2_PHY_DAT, data);
++              rtw_write8(rtwdev, REG_USB2_PHY_ADR, addr);
++              rtw_write8(rtwdev, REG_USB2_PHY_CMD, BIT_USB2_PHY_CMD_TRG);
++      }
++}
++
++static void rtw_usb_page_switch(struct rtw_dev *rtwdev,
++                              enum usb_device_speed speed, u8 page)
++{
++      if (speed == USB_SPEED_SUPER)
++              return;
++
++      rtw_usb_phy_write(rtwdev, USB_REG_PAGE, page, speed);
++}
++
++static void rtw_usb_phy_cfg(struct rtw_dev *rtwdev,
++                          enum usb_device_speed speed)
++{
++      const struct rtw_intf_phy_para *para = NULL;
++      u16 offset;
++
++      if (!rtwdev->chip->intf_table)
++              return;
++
++      if (speed == USB_SPEED_SUPER)
++              para = rtwdev->chip->intf_table->usb3_para;
++      else if (speed == USB_SPEED_HIGH)
++              para = rtwdev->chip->intf_table->usb2_para;
++
++      if (!para)
++              return;
++
++      for ( ; para->offset != 0xffff; para++) {
++              if (!(para->cut_mask & BIT(rtwdev->hal.cut_version)))
++                      continue;
++
++              offset = para->offset;
++
++              if (para->ip_sel == RTW_IP_SEL_MAC) {
++                      rtw_write8(rtwdev, offset, para->value);
++              } else {
++                      if (offset > 0x100)
++                              rtw_usb_page_switch(rtwdev, speed, USB_PHY_PAGE1);
++                      else
++                              rtw_usb_page_switch(rtwdev, speed, USB_PHY_PAGE0);
++
++                      offset &= 0xff;
++
++                      rtw_usb_phy_write(rtwdev, offset, para->value, speed);
++              }
++      }
++}
++
+ int rtw_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
+ {
+       struct rtw_dev *rtwdev;
+@@ -1134,6 +1199,9 @@ int rtw_usb_probe(struct usb_interface *
+               goto err_destroy_rxwq;
+       }
++      rtw_usb_phy_cfg(rtwdev, USB_SPEED_HIGH);
++      rtw_usb_phy_cfg(rtwdev, USB_SPEED_SUPER);
++
+       ret = rtw_usb_switch_mode(rtwdev);
+       if (ret) {
+               /* Not a fail, but we do need to skip rtw_register_hw. */
diff --git a/package/kernel/mac80211/patches/rtl/059-v6.14-wifi-rtw88-Delete-rf_type-member-of-struct-rtw_sta_i.patch b/package/kernel/mac80211/patches/rtl/059-v6.14-wifi-rtw88-Delete-rf_type-member-of-struct-rtw_sta_i.patch
new file mode 100644 (file)
index 0000000..6a4998e
--- /dev/null
@@ -0,0 +1,60 @@
+From 5ad483955acc85dc91b88c7b76dc1429e8ba33bc Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 1 Jan 2025 18:27:35 +0200
+Subject: [PATCH] wifi: rtw88: Delete rf_type member of struct rtw_sta_info
+
+It's not used for anything.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/b80f7904-c6b4-4d12-a5f9-69ab9b965732@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.c | 9 ++-------
+ drivers/net/wireless/realtek/rtw88/main.h | 1 -
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -1217,7 +1217,6 @@ void rtw_update_sta_info(struct rtw_dev
+       u8 wireless_set;
+       u8 bw_mode;
+       u8 rate_id;
+-      u8 rf_type = RF_1T1R;
+       u8 stbc_en = 0;
+       u8 ldpc_en = 0;
+       u8 tx_num = 1;
+@@ -1302,13 +1301,10 @@ void rtw_update_sta_info(struct rtw_dev
+               break;
+       }
+-      if (sta->deflink.vht_cap.vht_supported && ra_mask & 0xffc00000) {
++      if (sta->deflink.vht_cap.vht_supported && ra_mask & 0xffc00000)
+               tx_num = 2;
+-              rf_type = RF_2T2R;
+-      } else if (sta->deflink.ht_cap.ht_supported && ra_mask & 0xfff00000) {
++      else if (sta->deflink.ht_cap.ht_supported && ra_mask & 0xfff00000)
+               tx_num = 2;
+-              rf_type = RF_2T2R;
+-      }
+       rate_id = get_rate_id(wireless_set, bw_mode, tx_num);
+@@ -1319,7 +1315,6 @@ void rtw_update_sta_info(struct rtw_dev
+       si->bw_mode = bw_mode;
+       si->stbc_en = stbc_en;
+       si->ldpc_en = ldpc_en;
+-      si->rf_type = rf_type;
+       si->sgi_enable = is_support_sgi;
+       si->vht_enable = is_vht_enable;
+       si->ra_mask = ra_mask;
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -757,7 +757,6 @@ struct rtw_sta_info {
+       u8 mac_id;
+       u8 rate_id;
+       enum rtw_bandwidth bw_mode;
+-      enum rtw_rf_type rf_type;
+       u8 stbc_en:2;
+       u8 ldpc_en:2;
+       bool sgi_enable;
diff --git a/package/kernel/mac80211/patches/rtl/060-v6.14-wifi-rtw88-8703b-Fix-RX-TX-issues.patch b/package/kernel/mac80211/patches/rtl/060-v6.14-wifi-rtw88-8703b-Fix-RX-TX-issues.patch
new file mode 100644 (file)
index 0000000..0a512a3
--- /dev/null
@@ -0,0 +1,59 @@
+From a806a8160a0fcaff368bb510c8a52eff37faf727 Mon Sep 17 00:00:00 2001
+From: Vasily Khoruzhick <anarsoul@gmail.com>
+Date: Thu, 2 Jan 2025 23:50:53 -0800
+Subject: [PATCH] wifi: rtw88: 8703b: Fix RX/TX issues
+
+Fix 3 typos in 8703b driver. 2 typos in calibration routines are not
+fatal and do not seem to have any impact, just fix them to match vendor
+driver.
+
+However the last one in rtw8703b_set_channel_bb() clears too many bits
+in REG_OFDM0_TX_PSD_NOISE, causing TX and RX issues (neither rate goes
+above MCS0-MCS1). Vendor driver clears only 2 most significant bits.
+
+With the last typo fixed, the driver is able to reach MCS7 on Pinebook
+
+Cc: stable@vger.kernel.org
+Fixes: 9bb762b3a957 ("wifi: rtw88: Add definitions for 8703b chip")
+Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Tested-by: Fiona Klute <fiona.klute@gmx.de>
+Tested-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250103075107.1337533-1-anarsoul@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8703b.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8703b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8703b.c
+@@ -903,7 +903,7 @@ static void rtw8703b_set_channel_bb(stru
+               rtw_write32_mask(rtwdev, REG_FPGA0_RFMOD, BIT_MASK_RFMOD, 0x0);
+               rtw_write32_mask(rtwdev, REG_FPGA1_RFMOD, BIT_MASK_RFMOD, 0x0);
+               rtw_write32_mask(rtwdev, REG_OFDM0_TX_PSD_NOISE,
+-                               GENMASK(31, 20), 0x0);
++                               GENMASK(31, 30), 0x0);
+               rtw_write32(rtwdev, REG_BBRX_DFIR, 0x4A880000);
+               rtw_write32(rtwdev, REG_OFDM0_A_TX_AFE, 0x19F60000);
+               break;
+@@ -1198,9 +1198,9 @@ static u8 rtw8703b_iqk_rx_path(struct rt
+       rtw_write32(rtwdev, REG_RXIQK_TONE_A_11N, 0x38008c1c);
+       rtw_write32(rtwdev, REG_TX_IQK_TONE_B, 0x38008c1c);
+       rtw_write32(rtwdev, REG_RX_IQK_TONE_B, 0x38008c1c);
+-      rtw_write32(rtwdev, REG_TXIQK_PI_A_11N, 0x8216000f);
++      rtw_write32(rtwdev, REG_TXIQK_PI_A_11N, 0x8214030f);
+       rtw_write32(rtwdev, REG_RXIQK_PI_A_11N, 0x28110000);
+-      rtw_write32(rtwdev, REG_TXIQK_PI_B, 0x28110000);
++      rtw_write32(rtwdev, REG_TXIQK_PI_B, 0x82110000);
+       rtw_write32(rtwdev, REG_RXIQK_PI_B, 0x28110000);
+       /* LOK setting */
+@@ -1372,7 +1372,7 @@ void rtw8703b_iqk_fill_a_matrix(struct r
+               return;
+       tmp_rx_iqi |= FIELD_PREP(BIT_MASK_RXIQ_S1_X, result[IQK_S1_RX_X]);
+-      tmp_rx_iqi |= FIELD_PREP(BIT_MASK_RXIQ_S1_Y1, result[IQK_S1_RX_X]);
++      tmp_rx_iqi |= FIELD_PREP(BIT_MASK_RXIQ_S1_Y1, result[IQK_S1_RX_Y]);
+       rtw_write32(rtwdev, REG_A_RXIQI, tmp_rx_iqi);
+       rtw_write32_mask(rtwdev, REG_RXIQK_MATRIX_LSB_11N, BIT_MASK_RXIQ_S1_Y2,
+                        BIT_SET_RXIQ_S1_Y2(result[IQK_S1_RX_Y]));
diff --git a/package/kernel/mac80211/patches/rtl/061-v6.14-wifi-rtw88-sdio-Fix-disconnection-after-beacon-loss.patch b/package/kernel/mac80211/patches/rtl/061-v6.14-wifi-rtw88-sdio-Fix-disconnection-after-beacon-loss.patch
new file mode 100644 (file)
index 0000000..790dfe0
--- /dev/null
@@ -0,0 +1,31 @@
+From fb2fcfbe5eef9ae26b0425978435ae1308951e51 Mon Sep 17 00:00:00 2001
+From: Fiona Klute <fiona.klute@gmx.de>
+Date: Mon, 6 Jan 2025 15:54:34 +0200
+Subject: [PATCH] wifi: rtw88: sdio: Fix disconnection after beacon loss
+
+This is the equivalent of commit 28818b4d871b ("wifi: rtw88: usb: Fix
+disconnection after beacon loss") for SDIO chips.
+Tested on Pinephone (RTL8723CS), random disconnections became rare,
+instead of a frequent nuisance.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
+Tested-by: Vasily Khoruzhick <anarsoul@gmail.com> # Tested on Pinebook
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250106135434.35936-1-fiona.klute@gmx.de
+---
+ drivers/net/wireless/realtek/rtw88/sdio.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -1192,6 +1192,8 @@ static void rtw_sdio_indicate_tx_status(
+       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+       struct ieee80211_hw *hw = rtwdev->hw;
++      skb_pull(skb, rtwdev->chip->tx_pkt_desc_sz);
++
+       /* enqueue to wait for tx report */
+       if (info->flags & IEEE80211_TX_CTL_REQ_TX_STATUS) {
+               rtw_tx_report_enqueue(rtwdev, skb, tx_data->sn);
diff --git a/package/kernel/mac80211/patches/rtl/062-v6.14-wifi-rtw88-Add-support-for-LED-blinking.patch b/package/kernel/mac80211/patches/rtl/062-v6.14-wifi-rtw88-Add-support-for-LED-blinking.patch
new file mode 100644 (file)
index 0000000..b261d02
--- /dev/null
@@ -0,0 +1,424 @@
+From 4b6652bc6d8d5fb0648b3a7a16ef8af4e0345bcd Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 8 Jan 2025 13:41:23 +0200
+Subject: [PATCH] wifi: rtw88: Add support for LED blinking
+
+Register a struct led_classdev with the kernel's LED subsystem and
+create a throughput-based trigger for it. Then mac80211 makes the LED
+blink.
+
+Tested with Tenda U12 (RTL8812AU), Tenda U9 (RTL8811CU), TP-Link Archer
+T2U Nano (RTL8811AU), TP-Link Archer T3U Plus (RTL8812BU), Edimax
+EW-7611UCB (RTL8821AU), LM842 (RTL8822CU).
+
+Also tested with devices which don't have LEDs: the laptop's internal
+RTL8822CE and a no-name RTL8723DU.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/6c43451f-ab2f-4e76-ac6e-ff5a18dd981d@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/Makefile   |  2 +
+ drivers/net/wireless/realtek/rtw88/led.c      | 73 +++++++++++++++++++
+ drivers/net/wireless/realtek/rtw88/led.h      | 25 +++++++
+ drivers/net/wireless/realtek/rtw88/main.c     | 12 ++-
+ drivers/net/wireless/realtek/rtw88/main.h     |  5 ++
+ drivers/net/wireless/realtek/rtw88/reg.h      | 12 +++
+ drivers/net/wireless/realtek/rtw88/rtw8812a.c | 17 +++++
+ drivers/net/wireless/realtek/rtw88/rtw8821a.c | 26 +++++++
+ drivers/net/wireless/realtek/rtw88/rtw8821c.c | 19 +++++
+ drivers/net/wireless/realtek/rtw88/rtw8822b.c | 19 +++++
+ drivers/net/wireless/realtek/rtw88/rtw8822c.c | 19 +++++
+ 11 files changed, 227 insertions(+), 2 deletions(-)
+ create mode 100644 drivers/net/wireless/realtek/rtw88/led.c
+ create mode 100644 drivers/net/wireless/realtek/rtw88/led.h
+
+--- a/drivers/net/wireless/realtek/rtw88/Makefile
++++ b/drivers/net/wireless/realtek/rtw88/Makefile
+@@ -20,6 +20,8 @@ rtw88_core-y += main.o \
+ rtw88_core-$(CONFIG_PM) += wow.o
++rtw88_core-$(CONFIG_LEDS_CLASS) += led.o
++
+ obj-$(CPTCFG_RTW88_8822B)     += rtw88_8822b.o
+ rtw88_8822b-objs              := rtw8822b.o rtw8822b_table.o
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/led.c
+@@ -0,0 +1,73 @@
++// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#include "main.h"
++#include "debug.h"
++#include "led.h"
++
++static int rtw_led_set_blocking(struct led_classdev *led,
++                              enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++
++      rtwdev->chip->ops->led_set(led, brightness);
++
++      return 0;
++}
++
++void rtw_led_init(struct rtw_dev *rtwdev)
++{
++      static const struct ieee80211_tpt_blink rtw_tpt_blink[] = {
++              { .throughput = 0 * 1024, .blink_time = 334 },
++              { .throughput = 1 * 1024, .blink_time = 260 },
++              { .throughput = 5 * 1024, .blink_time = 220 },
++              { .throughput = 10 * 1024, .blink_time = 190 },
++              { .throughput = 20 * 1024, .blink_time = 170 },
++              { .throughput = 50 * 1024, .blink_time = 150 },
++              { .throughput = 70 * 1024, .blink_time = 130 },
++              { .throughput = 100 * 1024, .blink_time = 110 },
++              { .throughput = 200 * 1024, .blink_time = 80 },
++              { .throughput = 300 * 1024, .blink_time = 50 },
++      };
++      struct led_classdev *led = &rtwdev->led_cdev;
++      int err;
++
++      if (!rtwdev->chip->ops->led_set)
++              return;
++
++      if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE)
++              led->brightness_set = rtwdev->chip->ops->led_set;
++      else
++              led->brightness_set_blocking = rtw_led_set_blocking;
++
++      snprintf(rtwdev->led_name, sizeof(rtwdev->led_name),
++               "rtw88-%s", dev_name(rtwdev->dev));
++
++      led->name = rtwdev->led_name;
++      led->max_brightness = LED_ON;
++      led->default_trigger =
++              ieee80211_create_tpt_led_trigger(rtwdev->hw,
++                                               IEEE80211_TPT_LEDTRIG_FL_RADIO,
++                                               rtw_tpt_blink,
++                                               ARRAY_SIZE(rtw_tpt_blink));
++
++      err = led_classdev_register(rtwdev->dev, led);
++      if (err) {
++              rtw_warn(rtwdev, "Failed to register the LED, error %d\n", err);
++              return;
++      }
++
++      rtwdev->led_registered = true;
++}
++
++void rtw_led_deinit(struct rtw_dev *rtwdev)
++{
++      struct led_classdev *led = &rtwdev->led_cdev;
++
++      if (!rtwdev->led_registered)
++              return;
++
++      rtwdev->chip->ops->led_set(led, LED_OFF);
++      led_classdev_unregister(led);
++}
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/led.h
+@@ -0,0 +1,25 @@
++/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#ifndef __RTW_LED_H
++#define __RTW_LED_H
++
++#ifdef CONFIG_LEDS_CLASS
++
++void rtw_led_init(struct rtw_dev *rtwdev);
++void rtw_led_deinit(struct rtw_dev *rtwdev);
++
++#else
++
++static inline void rtw_led_init(struct rtw_dev *rtwdev)
++{
++}
++
++static inline void rtw_led_deinit(struct rtw_dev *rtwdev)
++{
++}
++
++#endif
++
++#endif
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -19,6 +19,7 @@
+ #include "bf.h"
+ #include "sar.h"
+ #include "sdio.h"
++#include "led.h"
+ bool rtw_disable_lps_deep_mode;
+ EXPORT_SYMBOL(rtw_disable_lps_deep_mode);
+@@ -2292,16 +2293,18 @@ int rtw_register_hw(struct rtw_dev *rtwd
+               return ret;
+       }
++      rtw_led_init(rtwdev);
++
+       ret = ieee80211_register_hw(hw);
+       if (ret) {
+               rtw_err(rtwdev, "failed to register hw\n");
+-              return ret;
++              goto led_deinit;
+       }
+       ret = rtw_regd_hint(rtwdev);
+       if (ret) {
+               rtw_err(rtwdev, "failed to hint regd\n");
+-              return ret;
++              goto led_deinit;
+       }
+       rtw_debugfs_init(rtwdev);
+@@ -2310,6 +2313,10 @@ int rtw_register_hw(struct rtw_dev *rtwd
+       rtwdev->bf_info.bfer_su_cnt = 0;
+       return 0;
++
++led_deinit:
++      rtw_led_deinit(rtwdev);
++      return ret;
+ }
+ EXPORT_SYMBOL(rtw_register_hw);
+@@ -2320,6 +2327,7 @@ void rtw_unregister_hw(struct rtw_dev *r
+       ieee80211_unregister_hw(hw);
+       rtw_unset_supported_band(hw, chip);
+       rtw_debugfs_deinit(rtwdev);
++      rtw_led_deinit(rtwdev);
+ }
+ EXPORT_SYMBOL(rtw_unregister_hw);
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -887,6 +887,7 @@ struct rtw_chip_ops {
+                              bool is_tx2_path);
+       void (*config_txrx_mode)(struct rtw_dev *rtwdev, u8 tx_path,
+                                u8 rx_path, bool is_tx2_path);
++      void (*led_set)(struct led_classdev *led, enum led_brightness brightness);
+       /* for USB/SDIO only */
+       void (*fill_txdesc_checksum)(struct rtw_dev *rtwdev,
+                                    struct rtw_tx_pkt_info *pkt_info,
+@@ -2097,6 +2098,10 @@ struct rtw_dev {
+       struct completion fw_scan_density;
+       bool ap_active;
++      bool led_registered;
++      char led_name[32];
++      struct led_classdev led_cdev;
++
+       /* hci related data, must be last */
+       u8 priv[] __aligned(sizeof(void *));
+ };
+--- a/drivers/net/wireless/realtek/rtw88/reg.h
++++ b/drivers/net/wireless/realtek/rtw88/reg.h
+@@ -78,7 +78,19 @@
+ #define BIT_PAPE_SEL_EN               BIT(25)
+ #define BIT_DPDT_WL_SEL               BIT(24)
+ #define BIT_DPDT_SEL_EN               BIT(23)
++#define BIT_GPIO13_14_WL_CTRL_EN      BIT(22)
++#define BIT_LED2_SV           BIT(19)
++#define BIT_LED2_CM           GENMASK(18, 16)
++#define BIT_LED1_SV           BIT(11)
++#define BIT_LED1_CM           GENMASK(10, 8)
++#define BIT_LED0_SV           BIT(3)
++#define BIT_LED0_CM           GENMASK(2, 0)
++#define BIT_LED_MODE_SW_CTRL  0
++#define BIT_LED_MODE_RX               6
++#define BIT_LED_MODE_TX               4
++#define BIT_LED_MODE_TRX      2
+ #define REG_LEDCFG2           0x004E
++#define REG_GPIO_PIN_CTRL_2   0x0060
+ #define REG_PAD_CTRL1         0x0064
+ #define BIT_BT_BTG_SEL                BIT(31)
+ #define BIT_PAPE_WLBT_SEL     BIT(29)
+--- a/drivers/net/wireless/realtek/rtw88/rtw8812a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8812a.c
+@@ -868,6 +868,22 @@ static void rtw8812a_pwr_track(struct rt
+       dm_info->pwr_trk_triggered = false;
+ }
++static void rtw8812a_led_set(struct led_classdev *led,
++                           enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++      u8 ledcfg;
++
++      ledcfg = rtw_read8(rtwdev, REG_LED_CFG);
++      ledcfg &= BIT(6) | BIT(4);
++      ledcfg |= BIT(5);
++
++      if (brightness == LED_OFF)
++              ledcfg |= BIT(3);
++
++      rtw_write8(rtwdev, REG_LED_CFG, ledcfg);
++}
++
+ static void rtw8812a_fill_txdesc_checksum(struct rtw_dev *rtwdev,
+                                         struct rtw_tx_pkt_info *pkt_info,
+                                         u8 *txdesc)
+@@ -916,6 +932,7 @@ static const struct rtw_chip_ops rtw8812
+       .config_bfee            = NULL,
+       .set_gid_table          = NULL,
+       .cfg_csi_rate           = NULL,
++      .led_set                = rtw8812a_led_set,
+       .fill_txdesc_checksum   = rtw8812a_fill_txdesc_checksum,
+       .coex_set_init          = rtw8812a_coex_cfg_init,
+       .coex_set_ant_switch    = NULL,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821a.c
+@@ -706,6 +706,31 @@ static void rtw8821a_pwr_track(struct rt
+       dm_info->pwr_trk_triggered = false;
+ }
++static void rtw8821a_led_set(struct led_classdev *led,
++                           enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++      u32 gpio8_cfg;
++      u8 ledcfg;
++
++      if (brightness == LED_OFF) {
++              gpio8_cfg = rtw_read32(rtwdev, REG_GPIO_PIN_CTRL_2);
++              gpio8_cfg &= ~BIT(24);
++              gpio8_cfg |= BIT(16) | BIT(8);
++              rtw_write32(rtwdev, REG_GPIO_PIN_CTRL_2, gpio8_cfg);
++      } else {
++              ledcfg = rtw_read8(rtwdev, REG_LED_CFG + 2);
++              gpio8_cfg = rtw_read32(rtwdev, REG_GPIO_PIN_CTRL_2);
++
++              ledcfg &= BIT(7) | BIT(6);
++              rtw_write8(rtwdev, REG_LED_CFG + 2, ledcfg);
++
++              gpio8_cfg &= ~(BIT(24) | BIT(8));
++              gpio8_cfg |= BIT(16);
++              rtw_write32(rtwdev, REG_GPIO_PIN_CTRL_2, gpio8_cfg);
++      }
++}
++
+ static void rtw8821a_fill_txdesc_checksum(struct rtw_dev *rtwdev,
+                                         struct rtw_tx_pkt_info *pkt_info,
+                                         u8 *txdesc)
+@@ -853,6 +878,7 @@ static const struct rtw_chip_ops rtw8821
+       .config_bfee            = NULL,
+       .set_gid_table          = NULL,
+       .cfg_csi_rate           = NULL,
++      .led_set                = rtw8821a_led_set,
+       .fill_txdesc_checksum   = rtw8821a_fill_txdesc_checksum,
+       .coex_set_init          = rtw8821a_coex_cfg_init,
+       .coex_set_ant_switch    = rtw8821a_coex_cfg_ant_switch,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+@@ -1206,6 +1206,24 @@ static void rtw8821c_phy_cck_pd_set(stru
+                        dm_info->cck_pd_default + new_lvl * 2);
+ }
++static void rtw8821c_led_set(struct led_classdev *led,
++                           enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++      u32 ledcfg;
++
++      ledcfg = rtw_read32(rtwdev, REG_LED_CFG);
++      u32p_replace_bits(&ledcfg, BIT_LED_MODE_SW_CTRL, BIT_LED2_CM);
++      ledcfg &= ~BIT_GPIO13_14_WL_CTRL_EN;
++
++      if (brightness == LED_OFF)
++              ledcfg |= BIT_LED2_SV;
++      else
++              ledcfg &= ~BIT_LED2_SV;
++
++      rtw_write32(rtwdev, REG_LED_CFG, ledcfg);
++}
++
+ static void rtw8821c_fill_txdesc_checksum(struct rtw_dev *rtwdev,
+                                         struct rtw_tx_pkt_info *pkt_info,
+                                         u8 *txdesc)
+@@ -1655,6 +1673,7 @@ static const struct rtw_chip_ops rtw8821
+       .config_bfee            = rtw8821c_bf_config_bfee,
+       .set_gid_table          = rtw_bf_set_gid_table,
+       .cfg_csi_rate           = rtw_bf_cfg_csi_rate,
++      .led_set                = rtw8821c_led_set,
+       .fill_txdesc_checksum   = rtw8821c_fill_txdesc_checksum,
+       .coex_set_init          = rtw8821c_coex_cfg_init,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+@@ -1566,6 +1566,24 @@ static void rtw8822b_adaptivity(struct r
+       rtw_phy_set_edcca_th(rtwdev, l2h, h2l);
+ }
++static void rtw8822b_led_set(struct led_classdev *led,
++                           enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++      u32 ledcfg;
++
++      ledcfg = rtw_read32(rtwdev, REG_LED_CFG);
++      u32p_replace_bits(&ledcfg, BIT_LED_MODE_SW_CTRL, BIT_LED2_CM);
++      ledcfg &= ~BIT_GPIO13_14_WL_CTRL_EN;
++
++      if (brightness == LED_OFF)
++              ledcfg |= BIT_LED2_SV;
++      else
++              ledcfg &= ~BIT_LED2_SV;
++
++      rtw_write32(rtwdev, REG_LED_CFG, ledcfg);
++}
++
+ static void rtw8822b_fill_txdesc_checksum(struct rtw_dev *rtwdev,
+                                         struct rtw_tx_pkt_info *pkt_info,
+                                         u8 *txdesc)
+@@ -2146,6 +2164,7 @@ static const struct rtw_chip_ops rtw8822
+       .cfg_csi_rate           = rtw_bf_cfg_csi_rate,
+       .adaptivity_init        = rtw8822b_adaptivity_init,
+       .adaptivity             = rtw8822b_adaptivity,
++      .led_set                = rtw8822b_led_set,
+       .fill_txdesc_checksum   = rtw8822b_fill_txdesc_checksum,
+       .coex_set_init          = rtw8822b_coex_cfg_init,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+@@ -4537,6 +4537,24 @@ static void rtw8822c_adaptivity(struct r
+       rtw_phy_set_edcca_th(rtwdev, l2h, h2l);
+ }
++static void rtw8822c_led_set(struct led_classdev *led,
++                           enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++      u32 ledcfg;
++
++      ledcfg = rtw_read32(rtwdev, REG_LED_CFG);
++      u32p_replace_bits(&ledcfg, BIT_LED_MODE_SW_CTRL, BIT_LED2_CM);
++      ledcfg &= ~BIT_GPIO13_14_WL_CTRL_EN;
++
++      if (brightness == LED_OFF)
++              ledcfg |= BIT_LED2_SV;
++      else
++              ledcfg &= ~BIT_LED2_SV;
++
++      rtw_write32(rtwdev, REG_LED_CFG, ledcfg);
++}
++
+ static void rtw8822c_fill_txdesc_checksum(struct rtw_dev *rtwdev,
+                                         struct rtw_tx_pkt_info *pkt_info,
+                                         u8 *txdesc)
+@@ -4964,6 +4982,7 @@ static const struct rtw_chip_ops rtw8822
+       .cfo_track              = rtw8822c_cfo_track,
+       .config_tx_path         = rtw8822c_config_tx_path,
+       .config_txrx_mode       = rtw8822c_config_trx_mode,
++      .led_set                = rtw8822c_led_set,
+       .fill_txdesc_checksum   = rtw8822c_fill_txdesc_checksum,
+       .coex_set_init          = rtw8822c_coex_cfg_init,
diff --git a/package/kernel/mac80211/patches/rtl/063-v6.14-wifi-rtw88-add-RTW88_LEDS-depends-on-LEDS_CLASS-to-K.patch b/package/kernel/mac80211/patches/rtl/063-v6.14-wifi-rtw88-add-RTW88_LEDS-depends-on-LEDS_CLASS-to-K.patch
new file mode 100644 (file)
index 0000000..f1f09fd
--- /dev/null
@@ -0,0 +1,73 @@
+From b4bfbc50b1b92a0815800eb1231f73bfc917af03 Mon Sep 17 00:00:00 2001
+From: Ping-Ke Shih <pkshih@realtek.com>
+Date: Thu, 16 Jan 2025 20:04:24 +0800
+Subject: [PATCH] wifi: rtw88: add RTW88_LEDS depends on LEDS_CLASS to Kconfig
+
+When using allmodconfig, .config has CONFIG_LEDS_CLASS=m but
+autoconf.h has CONFIG_LEDS_CLASS_MODULE (additional suffix _MODULE)
+instead of CONFIG_LEDS_CLASS, which condition CONFIG_LEDS_CLASS in
+rtw88/led.h can't work properly.
+
+Add RTW88_LEDS to Kconfig, and use it as condition to fix this problem.
+
+drivers/net/wireless/realtek/rtw88/led.c:19:6: error: redefinition of 'rtw_led_init'
+   19 | void rtw_led_init(struct rtw_dev *rtwdev)
+      |      ^~~~~~~~~~~~
+In file included from drivers/net/wireless/realtek/rtw88/led.c:7:
+drivers/net/wireless/realtek/rtw88/led.h:15:20: note: previous definition of 'rtw_led_init' with type 'void(struct rtw_dev *)'
+   15 | static inline void rtw_led_init(struct rtw_dev *rtwdev)
+      |                    ^~~~~~~~~~~~
+drivers/net/wireless/realtek/rtw88/led.c:64:6: error: redefinition of 'rtw_led_deinit'
+   64 | void rtw_led_deinit(struct rtw_dev *rtwdev)
+      |      ^~~~~~~~~~~~~~
+drivers/net/wireless/realtek/rtw88/led.h:19:20: note: previous definition of 'rtw_led_deinit' with type 'void(struct rtw_dev *)'
+   19 | static inline void rtw_led_deinit(struct rtw_dev *rtwdev)
+      |                    ^~~~~~~~~~~~~~
+
+Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
+Closes: https://lore.kernel.org/linux-wireless/e19a87ad9cd54bfa9907f3a043b25d30@realtek.com/T/#me407832de1040ce22e53517bcb18e322ad0e2260
+Fixes: 4b6652bc6d8d ("wifi: rtw88: Add support for LED blinking")
+Cc: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Kalle Valo <kvalo@kernel.org>
+Link: https://patch.msgid.link/20250116120424.13174-1-pkshih@realtek.com
+---
+ drivers/net/wireless/realtek/rtw88/Kconfig  | 5 +++++
+ drivers/net/wireless/realtek/rtw88/Makefile | 2 +-
+ drivers/net/wireless/realtek/rtw88/led.h    | 2 +-
+ 3 files changed, 7 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/Kconfig
++++ b/drivers/net/wireless/realtek/rtw88/Kconfig
+@@ -267,4 +267,9 @@ config RTW88_DEBUGFS
+         If unsure, say Y to simplify debug problems
++config RTW88_LEDS
++      bool
++      depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211
++      default y
++
+ endif
+--- a/drivers/net/wireless/realtek/rtw88/Makefile
++++ b/drivers/net/wireless/realtek/rtw88/Makefile
+@@ -20,7 +20,7 @@ rtw88_core-y += main.o \
+ rtw88_core-$(CONFIG_PM) += wow.o
+-rtw88_core-$(CONFIG_LEDS_CLASS) += led.o
++rtw88_core-$(CPTCFG_RTW88_LEDS) += led.o
+ obj-$(CPTCFG_RTW88_8822B)     += rtw88_8822b.o
+ rtw88_8822b-objs              := rtw8822b.o rtw8822b_table.o
+--- a/drivers/net/wireless/realtek/rtw88/led.h
++++ b/drivers/net/wireless/realtek/rtw88/led.h
+@@ -5,7 +5,7 @@
+ #ifndef __RTW_LED_H
+ #define __RTW_LED_H
+-#ifdef CONFIG_LEDS_CLASS
++#ifdef CPTCFG_RTW88_LEDS
+ void rtw_led_init(struct rtw_dev *rtwdev);
+ void rtw_led_deinit(struct rtw_dev *rtwdev);
diff --git a/package/kernel/mac80211/patches/rtl/064-v6.14.9-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch b/package/kernel/mac80211/patches/rtl/064-v6.14.9-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch
new file mode 100644 (file)
index 0000000..3b3550d
--- /dev/null
@@ -0,0 +1,68 @@
+From 00451eb3bec763f708e7e58326468c1e575e5a66 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Sun, 26 Jan 2025 16:03:11 +0200
+Subject: [PATCH] wifi: rtw88: Don't use static local variable in
+ rtw8822b_set_tx_power_index_by_rate
+
+Some users want to plug two identical USB devices at the same time.
+This static variable could theoretically cause them to use incorrect
+TX power values.
+
+Move the variable to the caller and pass a pointer to it to
+rtw8822b_set_tx_power_index_by_rate().
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/8a60f581-0ab5-4d98-a97d-dd83b605008f@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8822b.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+@@ -935,11 +935,11 @@ static void query_phy_status(struct rtw_
+ }
+ static void
+-rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
++rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path,
++                                  u8 rs, u32 *phy_pwr_idx)
+ {
+       struct rtw_hal *hal = &rtwdev->hal;
+       static const u32 offset_txagc[2] = {0x1d00, 0x1d80};
+-      static u32 phy_pwr_idx;
+       u8 rate, rate_idx, pwr_index, shift;
+       int j;
+@@ -947,12 +947,12 @@ rtw8822b_set_tx_power_index_by_rate(stru
+               rate = rtw_rate_section[rs][j];
+               pwr_index = hal->tx_pwr_tbl[path][rate];
+               shift = rate & 0x3;
+-              phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
++              *phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
+               if (shift == 0x3) {
+                       rate_idx = rate & 0xfc;
+                       rtw_write32(rtwdev, offset_txagc[path] + rate_idx,
+-                                  phy_pwr_idx);
+-                      phy_pwr_idx = 0;
++                                  *phy_pwr_idx);
++                      *phy_pwr_idx = 0;
+               }
+       }
+ }
+@@ -960,11 +960,13 @@ rtw8822b_set_tx_power_index_by_rate(stru
+ static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev)
+ {
+       struct rtw_hal *hal = &rtwdev->hal;
++      u32 phy_pwr_idx = 0;
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+               for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
+-                      rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs);
++                      rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs,
++                                                          &phy_pwr_idx);
+       }
+ }
diff --git a/package/kernel/mac80211/patches/rtl/065-v6.15-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch b/package/kernel/mac80211/patches/rtl/065-v6.15-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch
new file mode 100644 (file)
index 0000000..ff04eea
--- /dev/null
@@ -0,0 +1,71 @@
+From 0d1d165eff9d6cfad51113e18d9d8c9a8de27d6d Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Sun, 26 Jan 2025 16:04:21 +0200
+Subject: [PATCH] wifi: rtw88: Don't use static local variable in
+ rtw8821c_set_tx_power_index_by_rate
+
+Some users want to plug two identical USB devices at the same time.
+This static variable could theoretically cause them to use incorrect
+TX power values.
+
+Move the variable to the caller and pass a pointer to it to
+rtw8821c_set_tx_power_index_by_rate().
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/fe42858c-9b9f-4f03-9aaa-737472c2cd90@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8821c.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+@@ -680,11 +680,11 @@ static void query_phy_status(struct rtw_
+ }
+ static void
+-rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
++rtw8821c_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path,
++                                  u8 rs, u32 *phy_pwr_idx)
+ {
+       struct rtw_hal *hal = &rtwdev->hal;
+       static const u32 offset_txagc[2] = {0x1d00, 0x1d80};
+-      static u32 phy_pwr_idx;
+       u8 rate, rate_idx, pwr_index, shift;
+       int j;
+@@ -692,12 +692,12 @@ rtw8821c_set_tx_power_index_by_rate(stru
+               rate = rtw_rate_section[rs][j];
+               pwr_index = hal->tx_pwr_tbl[path][rate];
+               shift = rate & 0x3;
+-              phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
++              *phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
+               if (shift == 0x3 || rate == DESC_RATEVHT1SS_MCS9) {
+                       rate_idx = rate & 0xfc;
+                       rtw_write32(rtwdev, offset_txagc[path] + rate_idx,
+-                                  phy_pwr_idx);
+-                      phy_pwr_idx = 0;
++                                  *phy_pwr_idx);
++                      *phy_pwr_idx = 0;
+               }
+       }
+ }
+@@ -705,6 +705,7 @@ rtw8821c_set_tx_power_index_by_rate(stru
+ static void rtw8821c_set_tx_power_index(struct rtw_dev *rtwdev)
+ {
+       struct rtw_hal *hal = &rtwdev->hal;
++      u32 phy_pwr_idx = 0;
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+@@ -712,7 +713,8 @@ static void rtw8821c_set_tx_power_index(
+                       if (rs == RTW_RATE_SECTION_HT_2S ||
+                           rs == RTW_RATE_SECTION_VHT_2S)
+                               continue;
+-                      rtw8821c_set_tx_power_index_by_rate(rtwdev, path, rs);
++                      rtw8821c_set_tx_power_index_by_rate(rtwdev, path, rs,
++                                                          &phy_pwr_idx);
+               }
+       }
+ }
diff --git a/package/kernel/mac80211/patches/rtl/066-v6.15-wifi-rtw88-Fix-a-typo-of-debug-message-in-rtw8723d_i.patch b/package/kernel/mac80211/patches/rtl/066-v6.15-wifi-rtw88-Fix-a-typo-of-debug-message-in-rtw8723d_i.patch
new file mode 100644 (file)
index 0000000..a2404ba
--- /dev/null
@@ -0,0 +1,39 @@
+From 105dc94233e48ff30e572a50fb39d7e3dec810fa Mon Sep 17 00:00:00 2001
+From: Andrew Kreimer <algonell@gmail.com>
+Date: Mon, 3 Feb 2025 20:08:27 +0200
+Subject: [PATCH] wifi: rtw88: Fix a typo of debug message in
+ rtw8723d_iqk_check_tx_failed()
+
+There is a typo in debug messages:
+ - afer -> after
+
+Fix it via codespell.
+
+Signed-off-by: Andrew Kreimer <algonell@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250203180913.5435-1-algonell@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8723d.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723d.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723d.c
+@@ -444,7 +444,7 @@ static u8 rtw8723d_iqk_check_tx_failed(s
+               rtw_read32(rtwdev, REG_IQK_RES_TX),
+               rtw_read32(rtwdev, REG_IQK_RES_TY));
+       rtw_dbg(rtwdev, RTW_DBG_RFK,
+-              "[IQK] 0xe90(before IQK)= 0x%x, 0xe98(afer IQK) = 0x%x\n",
++              "[IQK] 0xe90(before IQK)= 0x%x, 0xe98(after IQK) = 0x%x\n",
+               rtw_read32(rtwdev, 0xe90),
+               rtw_read32(rtwdev, 0xe98));
+@@ -472,7 +472,7 @@ static u8 rtw8723d_iqk_check_rx_failed(s
+               rtw_read32(rtwdev, REG_IQK_RES_RY));
+       rtw_dbg(rtwdev, RTW_DBG_RFK,
+-              "[IQK] 0xea0(before IQK)= 0x%x, 0xea8(afer IQK) = 0x%x\n",
++              "[IQK] 0xea0(before IQK)= 0x%x, 0xea8(after IQK) = 0x%x\n",
+               rtw_read32(rtwdev, 0xea0),
+               rtw_read32(rtwdev, 0xea8));
diff --git a/package/kernel/mac80211/patches/rtl/067-v6.14.9-wifi-rtw88-Fix-__rtw_download_firmware-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/067-v6.14.9-wifi-rtw88-Fix-__rtw_download_firmware-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..4de1255
--- /dev/null
@@ -0,0 +1,39 @@
+From 8425f5c8f04dbcf11ade78f984a494fc0b90e7a0 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:36:56 +0200
+Subject: [PATCH] wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU
+
+Don't call ltecoex_read_reg() and ltecoex_reg_write() when the
+ltecoex_addr member of struct rtw_chip_info is NULL. The RTL8814AU
+doesn't have this feature.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/55b5641f-094e-4f94-9f79-ac053733f2cf@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/mac.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/mac.c
++++ b/drivers/net/wireless/realtek/rtw88/mac.c
+@@ -784,7 +784,8 @@ static int __rtw_download_firmware(struc
+       if (!check_firmware_size(data, size))
+               return -EINVAL;
+-      if (!ltecoex_read_reg(rtwdev, 0x38, &ltecoex_bckp))
++      if (rtwdev->chip->ltecoex_addr &&
++          !ltecoex_read_reg(rtwdev, 0x38, &ltecoex_bckp))
+               return -EBUSY;
+       wlan_cpu_enable(rtwdev, false);
+@@ -802,7 +803,8 @@ static int __rtw_download_firmware(struc
+       wlan_cpu_enable(rtwdev, true);
+-      if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) {
++      if (rtwdev->chip->ltecoex_addr &&
++          !ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) {
+               ret = -EBUSY;
+               goto dlfw_fail;
+       }
diff --git a/package/kernel/mac80211/patches/rtl/068-v6.14.9-wifi-rtw88-Fix-download_firmware_validate-for-RTL881.patch b/package/kernel/mac80211/patches/rtl/068-v6.14.9-wifi-rtw88-Fix-download_firmware_validate-for-RTL881.patch
new file mode 100644 (file)
index 0000000..8ff1dc4
--- /dev/null
@@ -0,0 +1,39 @@
+From 9e8243025cc06abc975c876dffda052073207ab3 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:37:36 +0200
+Subject: [PATCH] wifi: rtw88: Fix download_firmware_validate() for RTL8814AU
+
+After the firmware is uploaded, download_firmware_validate() checks some
+bits in REG_MCUFW_CTRL to see if everything went okay. The
+RTL8814AU power on sequence sets bits 13 and 12 to 2, which this
+function does not expect, so it thinks the firmware upload failed.
+
+Make download_firmware_validate() ignore bits 13 and 12.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/049d2887-22fc-47b7-9e59-62627cb525f8@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/reg.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/reg.h
++++ b/drivers/net/wireless/realtek/rtw88/reg.h
+@@ -130,6 +130,7 @@
+ #define BIT_SHIFT_ROM_PGE     16
+ #define BIT_FW_INIT_RDY               BIT(15)
+ #define BIT_FW_DW_RDY         BIT(14)
++#define BIT_CPU_CLK_SEL               (BIT(12) | BIT(13))
+ #define BIT_RPWM_TOGGLE               BIT(7)
+ #define BIT_RAM_DL_SEL                BIT(7)  /* legacy only */
+ #define BIT_DMEM_CHKSUM_OK    BIT(6)
+@@ -147,7 +148,7 @@
+                                BIT_CHECK_SUM_OK)
+ #define FW_READY_LEGACY               (BIT_MCUFWDL_RDY | BIT_FWDL_CHK_RPT |          \
+                                BIT_WINTINI_RDY | BIT_RAM_DL_SEL)
+-#define FW_READY_MASK         0xffff
++#define FW_READY_MASK         (0xffff & ~BIT_CPU_CLK_SEL)
+ #define REG_MCU_TST_CFG               0x84
+ #define VAL_FW_TRIGGER                0x1
diff --git a/package/kernel/mac80211/patches/rtl/069-v6.15-wifi-rtw88-Extend-struct-rtw_pwr_track_tbl-for-RTL88.patch b/package/kernel/mac80211/patches/rtl/069-v6.15-wifi-rtw88-Extend-struct-rtw_pwr_track_tbl-for-RTL88.patch
new file mode 100644 (file)
index 0000000..c6ac281
--- /dev/null
@@ -0,0 +1,46 @@
+From 62f726848da42554e6d270dfda17ed19bfa3456f Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:38:17 +0200
+Subject: [PATCH] wifi: rtw88: Extend struct rtw_pwr_track_tbl for RTL8814AU
+
+Currently this struct has the members required for chips with 2 RF
+paths. Add more members to support chips with 4 RF paths, like the
+RTL8814AU.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/be5a73f4-a0fe-43d6-9457-930cde199284@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.h | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -1130,14 +1130,26 @@ struct rtw_rfe_def {
+  * For 2G there are cck rate and ofdm rate with different settings.
+  */
+ struct rtw_pwr_track_tbl {
++      const u8 *pwrtrk_5gd_n[RTW_PWR_TRK_5G_NUM];
++      const u8 *pwrtrk_5gd_p[RTW_PWR_TRK_5G_NUM];
++      const u8 *pwrtrk_5gc_n[RTW_PWR_TRK_5G_NUM];
++      const u8 *pwrtrk_5gc_p[RTW_PWR_TRK_5G_NUM];
+       const u8 *pwrtrk_5gb_n[RTW_PWR_TRK_5G_NUM];
+       const u8 *pwrtrk_5gb_p[RTW_PWR_TRK_5G_NUM];
+       const u8 *pwrtrk_5ga_n[RTW_PWR_TRK_5G_NUM];
+       const u8 *pwrtrk_5ga_p[RTW_PWR_TRK_5G_NUM];
++      const u8 *pwrtrk_2gd_n;
++      const u8 *pwrtrk_2gd_p;
++      const u8 *pwrtrk_2gc_n;
++      const u8 *pwrtrk_2gc_p;
+       const u8 *pwrtrk_2gb_n;
+       const u8 *pwrtrk_2gb_p;
+       const u8 *pwrtrk_2ga_n;
+       const u8 *pwrtrk_2ga_p;
++      const u8 *pwrtrk_2g_cckd_n;
++      const u8 *pwrtrk_2g_cckd_p;
++      const u8 *pwrtrk_2g_cckc_n;
++      const u8 *pwrtrk_2g_cckc_p;
+       const u8 *pwrtrk_2g_cckb_n;
+       const u8 *pwrtrk_2g_cckb_p;
+       const u8 *pwrtrk_2g_ccka_n;
diff --git a/package/kernel/mac80211/patches/rtl/070-v6.15-wifi-rtw88-Extend-rf_base_addr-and-rf_sipi_addr-for-.patch b/package/kernel/mac80211/patches/rtl/070-v6.15-wifi-rtw88-Extend-rf_base_addr-and-rf_sipi_addr-for-.patch
new file mode 100644 (file)
index 0000000..ad80a27
--- /dev/null
@@ -0,0 +1,32 @@
+From d80e7d9b6ba38102f92559dbb647330216ea290b Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:38:43 +0200
+Subject: [PATCH] wifi: rtw88: Extend rf_base_addr and rf_sipi_addr for
+ RTL8814AU
+
+These members of struct rtw_chip_info each have a size of 2. Increase
+their size to 4, which is the number of RF paths the RTL8814AU has.
+
+This is required to read and write the RF registers of the RTL8814AU.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/7a4d8209-b8af-4943-b5de-f53d6edf591a@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -1239,8 +1239,8 @@ struct rtw_chip_info {
+       const struct rtw_hw_reg *dig;
+       const struct rtw_hw_reg *dig_cck;
+-      u32 rf_base_addr[2];
+-      u32 rf_sipi_addr[2];
++      u32 rf_base_addr[RTW_RF_PATH_MAX];
++      u32 rf_sipi_addr[RTW_RF_PATH_MAX];
+       const struct rtw_rf_sipi_addr *rf_sipi_read_addr;
+       u8 fix_rf_phy_num;
+       const struct rtw_ltecoex_addr *ltecoex_addr;
diff --git a/package/kernel/mac80211/patches/rtl/071-v6.14.9-wifi-rtw88-Extend-rtw_fw_send_ra_info-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/071-v6.14.9-wifi-rtw88-Extend-rtw_fw_send_ra_info-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..9366a54
--- /dev/null
@@ -0,0 +1,70 @@
+From 8f0076726b66a70727a1bef5c087c60291e90ad8 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:39:29 +0200
+Subject: [PATCH] wifi: rtw88: Extend rtw_fw_send_ra_info() for RTL8814AU
+
+The existing code is suitable for chips with up to 2 spatial streams.
+Inform the firmware about the rates it's allowed to use when
+transmitting 3 spatial streams.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/08e2f328-1aab-4e50-93ac-c1e5dd9541ac@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/fw.c   | 15 +++++++++++++++
+ drivers/net/wireless/realtek/rtw88/fw.h   |  1 +
+ drivers/net/wireless/realtek/rtw88/main.h |  1 +
+ 3 files changed, 17 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/fw.c
++++ b/drivers/net/wireless/realtek/rtw88/fw.c
+@@ -736,6 +736,7 @@ void rtw_fw_send_ra_info(struct rtw_dev
+ {
+       u8 h2c_pkt[H2C_PKT_SIZE] = {0};
+       bool disable_pt = true;
++      u32 mask_hi;
+       SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO);
+@@ -756,6 +757,20 @@ void rtw_fw_send_ra_info(struct rtw_dev
+       si->init_ra_lv = 0;
+       rtw_fw_send_h2c_command(rtwdev, h2c_pkt);
++
++      if (rtwdev->chip->id != RTW_CHIP_TYPE_8814A)
++              return;
++
++      SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO_HI);
++
++      mask_hi = si->ra_mask >> 32;
++
++      SET_RA_INFO_RA_MASK0(h2c_pkt, (mask_hi & 0xff));
++      SET_RA_INFO_RA_MASK1(h2c_pkt, (mask_hi & 0xff00) >> 8);
++      SET_RA_INFO_RA_MASK2(h2c_pkt, (mask_hi & 0xff0000) >> 16);
++      SET_RA_INFO_RA_MASK3(h2c_pkt, (mask_hi & 0xff000000) >> 24);
++
++      rtw_fw_send_h2c_command(rtwdev, h2c_pkt);
+ }
+ void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool connect)
+--- a/drivers/net/wireless/realtek/rtw88/fw.h
++++ b/drivers/net/wireless/realtek/rtw88/fw.h
+@@ -557,6 +557,7 @@ static inline void rtw_h2c_pkt_set_heade
+ #define H2C_CMD_DEFAULT_PORT          0x2c
+ #define H2C_CMD_RA_INFO                       0x40
+ #define H2C_CMD_RSSI_MONITOR          0x42
++#define H2C_CMD_RA_INFO_HI            0x46
+ #define H2C_CMD_BCN_FILTER_OFFLOAD_P0 0x56
+ #define H2C_CMD_BCN_FILTER_OFFLOAD_P1 0x57
+ #define H2C_CMD_WL_PHY_INFO           0x58
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -191,6 +191,7 @@ enum rtw_chip_type {
+       RTW_CHIP_TYPE_8703B,
+       RTW_CHIP_TYPE_8821A,
+       RTW_CHIP_TYPE_8812A,
++      RTW_CHIP_TYPE_8814A,
+ };
+ enum rtw_tx_queue_type {
diff --git a/package/kernel/mac80211/patches/rtl/072-v6.15-wifi-rtw88-Constify-some-more-structs-and-arrays.patch b/package/kernel/mac80211/patches/rtl/072-v6.15-wifi-rtw88-Constify-some-more-structs-and-arrays.patch
new file mode 100644 (file)
index 0000000..6d3b4e6
--- /dev/null
@@ -0,0 +1,213 @@
+From e66f3b5c7535bb508e9c561a047b32de4ddc1cda Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:40:22 +0200
+Subject: [PATCH] wifi: rtw88: Constify some more structs and arrays
+
+These structs and arrays are never modified, so make them const:
+
+rtw_band_2ghz
+rtw_band_5ghz
+rtw_pci_tx_queue_idx_addr
+rtw_pci_ops
+rtw_cck_rates
+rtw_ofdm_rates
+rtw_ht_1s_rates
+rtw_ht_2s_rates
+rtw_vht_1s_rates
+rtw_vht_2s_rates
+rtw_rate_section
+rtw_rate_size
+rtw_sdio_ops
+rtw_usb_ops
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/502f124e-ccf3-4c09-80a4-1e5c5304822b@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.c |  4 ++--
+ drivers/net/wireless/realtek/rtw88/main.h |  2 +-
+ drivers/net/wireless/realtek/rtw88/pci.c  |  4 ++--
+ drivers/net/wireless/realtek/rtw88/phy.c  | 26 ++++++++++++++---------
+ drivers/net/wireless/realtek/rtw88/phy.h  | 16 +++++++-------
+ drivers/net/wireless/realtek/rtw88/sdio.c |  2 +-
+ drivers/net/wireless/realtek/rtw88/usb.c  |  2 +-
+ 7 files changed, 31 insertions(+), 25 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -136,7 +136,7 @@ u16 rtw_desc_to_bitrate(u8 desc_rate)
+       return rate.bitrate;
+ }
+-static struct ieee80211_supported_band rtw_band_2ghz = {
++static const struct ieee80211_supported_band rtw_band_2ghz = {
+       .band = NL80211_BAND_2GHZ,
+       .channels = rtw_channeltable_2g,
+@@ -149,7 +149,7 @@ static struct ieee80211_supported_band r
+       .vht_cap = {0},
+ };
+-static struct ieee80211_supported_band rtw_band_5ghz = {
++static const struct ieee80211_supported_band rtw_band_5ghz = {
+       .band = NL80211_BAND_5GHZ,
+       .channels = rtw_channeltable_5g,
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -61,7 +61,7 @@ enum rtw_hci_type {
+ };
+ struct rtw_hci {
+-      struct rtw_hci_ops *ops;
++      const struct rtw_hci_ops *ops;
+       enum rtw_hci_type type;
+       u32 rpwm_addr;
+--- a/drivers/net/wireless/realtek/rtw88/pci.c
++++ b/drivers/net/wireless/realtek/rtw88/pci.c
+@@ -20,7 +20,7 @@ module_param_named(disable_aspm, rtw_pci
+ MODULE_PARM_DESC(disable_msi, "Set Y to disable MSI interrupt support");
+ MODULE_PARM_DESC(disable_aspm, "Set Y to disable PCI ASPM support");
+-static u32 rtw_pci_tx_queue_idx_addr[] = {
++static const u32 rtw_pci_tx_queue_idx_addr[] = {
+       [RTW_TX_QUEUE_BK]       = RTK_PCI_TXBD_IDX_BKQ,
+       [RTW_TX_QUEUE_BE]       = RTK_PCI_TXBD_IDX_BEQ,
+       [RTW_TX_QUEUE_VI]       = RTK_PCI_TXBD_IDX_VIQ,
+@@ -1591,7 +1591,7 @@ static void rtw_pci_destroy(struct rtw_d
+       rtw_pci_io_unmapping(rtwdev, pdev);
+ }
+-static struct rtw_hci_ops rtw_pci_ops = {
++static const struct rtw_hci_ops rtw_pci_ops = {
+       .tx_write = rtw_pci_tx_write,
+       .tx_kick_off = rtw_pci_tx_kick_off,
+       .flush_queues = rtw_pci_flush_queues,
+--- a/drivers/net/wireless/realtek/rtw88/phy.c
++++ b/drivers/net/wireless/realtek/rtw88/phy.c
+@@ -52,44 +52,50 @@ static const u32 db_invert_table[12][8]
+        1995262315,    2511886432U,    3162277660U,    3981071706U}
+ };
+-u8 rtw_cck_rates[] = { DESC_RATE1M, DESC_RATE2M, DESC_RATE5_5M, DESC_RATE11M };
+-u8 rtw_ofdm_rates[] = {
++const u8 rtw_cck_rates[] = { DESC_RATE1M, DESC_RATE2M, DESC_RATE5_5M, DESC_RATE11M };
++
++const u8 rtw_ofdm_rates[] = {
+       DESC_RATE6M,  DESC_RATE9M,  DESC_RATE12M,
+       DESC_RATE18M, DESC_RATE24M, DESC_RATE36M,
+       DESC_RATE48M, DESC_RATE54M
+ };
+-u8 rtw_ht_1s_rates[] = {
++
++const u8 rtw_ht_1s_rates[] = {
+       DESC_RATEMCS0, DESC_RATEMCS1, DESC_RATEMCS2,
+       DESC_RATEMCS3, DESC_RATEMCS4, DESC_RATEMCS5,
+       DESC_RATEMCS6, DESC_RATEMCS7
+ };
+-u8 rtw_ht_2s_rates[] = {
++
++const u8 rtw_ht_2s_rates[] = {
+       DESC_RATEMCS8,  DESC_RATEMCS9,  DESC_RATEMCS10,
+       DESC_RATEMCS11, DESC_RATEMCS12, DESC_RATEMCS13,
+       DESC_RATEMCS14, DESC_RATEMCS15
+ };
+-u8 rtw_vht_1s_rates[] = {
++
++const u8 rtw_vht_1s_rates[] = {
+       DESC_RATEVHT1SS_MCS0, DESC_RATEVHT1SS_MCS1,
+       DESC_RATEVHT1SS_MCS2, DESC_RATEVHT1SS_MCS3,
+       DESC_RATEVHT1SS_MCS4, DESC_RATEVHT1SS_MCS5,
+       DESC_RATEVHT1SS_MCS6, DESC_RATEVHT1SS_MCS7,
+       DESC_RATEVHT1SS_MCS8, DESC_RATEVHT1SS_MCS9
+ };
+-u8 rtw_vht_2s_rates[] = {
++
++const u8 rtw_vht_2s_rates[] = {
+       DESC_RATEVHT2SS_MCS0, DESC_RATEVHT2SS_MCS1,
+       DESC_RATEVHT2SS_MCS2, DESC_RATEVHT2SS_MCS3,
+       DESC_RATEVHT2SS_MCS4, DESC_RATEVHT2SS_MCS5,
+       DESC_RATEVHT2SS_MCS6, DESC_RATEVHT2SS_MCS7,
+       DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9
+ };
+-u8 *rtw_rate_section[RTW_RATE_SECTION_MAX] = {
++
++const u8 * const rtw_rate_section[RTW_RATE_SECTION_MAX] = {
+       rtw_cck_rates, rtw_ofdm_rates,
+       rtw_ht_1s_rates, rtw_ht_2s_rates,
+       rtw_vht_1s_rates, rtw_vht_2s_rates
+ };
+ EXPORT_SYMBOL(rtw_rate_section);
+-u8 rtw_rate_size[RTW_RATE_SECTION_MAX] = {
++const u8 rtw_rate_size[RTW_RATE_SECTION_MAX] = {
+       ARRAY_SIZE(rtw_cck_rates),
+       ARRAY_SIZE(rtw_ofdm_rates),
+       ARRAY_SIZE(rtw_ht_1s_rates),
+@@ -2214,7 +2220,7 @@ static void rtw_phy_set_tx_power_index_b
+ {
+       struct rtw_hal *hal = &rtwdev->hal;
+       u8 regd = rtw_regd_get(rtwdev);
+-      u8 *rates;
++      const u8 *rates;
+       u8 size;
+       u8 rate;
+       u8 pwr_idx;
+@@ -2274,7 +2280,7 @@ EXPORT_SYMBOL(rtw_phy_set_tx_power_level
+ static void
+ rtw_phy_tx_power_by_rate_config_by_path(struct rtw_hal *hal, u8 path,
+-                                      u8 rs, u8 size, u8 *rates)
++                                      u8 rs, u8 size, const u8 *rates)
+ {
+       u8 rate;
+       u8 base_idx, rate_idx;
+--- a/drivers/net/wireless/realtek/rtw88/phy.h
++++ b/drivers/net/wireless/realtek/rtw88/phy.h
+@@ -7,14 +7,14 @@
+ #include "debug.h"
+-extern u8 rtw_cck_rates[];
+-extern u8 rtw_ofdm_rates[];
+-extern u8 rtw_ht_1s_rates[];
+-extern u8 rtw_ht_2s_rates[];
+-extern u8 rtw_vht_1s_rates[];
+-extern u8 rtw_vht_2s_rates[];
+-extern u8 *rtw_rate_section[];
+-extern u8 rtw_rate_size[];
++extern const u8 rtw_cck_rates[];
++extern const u8 rtw_ofdm_rates[];
++extern const u8 rtw_ht_1s_rates[];
++extern const u8 rtw_ht_2s_rates[];
++extern const u8 rtw_vht_1s_rates[];
++extern const u8 rtw_vht_2s_rates[];
++extern const u8 * const rtw_rate_section[];
++extern const u8 rtw_rate_size[];
+ void rtw_phy_init(struct rtw_dev *rtwdev);
+ void rtw_phy_dynamic_mechanism(struct rtw_dev *rtwdev);
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -1147,7 +1147,7 @@ static void rtw_sdio_declaim(struct rtw_
+       sdio_release_host(sdio_func);
+ }
+-static struct rtw_hci_ops rtw_sdio_ops = {
++static const struct rtw_hci_ops rtw_sdio_ops = {
+       .tx_write = rtw_sdio_tx_write,
+       .tx_kick_off = rtw_sdio_tx_kick_off,
+       .setup = rtw_sdio_setup,
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -844,7 +844,7 @@ static void rtw_usb_dynamic_rx_agg(struc
+       }
+ }
+-static struct rtw_hci_ops rtw_usb_ops = {
++static const struct rtw_hci_ops rtw_usb_ops = {
+       .tx_write = rtw_usb_tx_write,
+       .tx_kick_off = rtw_usb_tx_kick_off,
+       .setup = rtw_usb_setup,
diff --git a/package/kernel/mac80211/patches/rtl/073-v6.15-wifi-rtw88-Rename-RTW_RATE_SECTION_MAX-to-RTW_RATE_S.patch b/package/kernel/mac80211/patches/rtl/073-v6.15-wifi-rtw88-Rename-RTW_RATE_SECTION_MAX-to-RTW_RATE_S.patch
new file mode 100644 (file)
index 0000000..4a6d512
--- /dev/null
@@ -0,0 +1,227 @@
+From ad815f3920035a0c5b6ffe45bddc9fb308194b49 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:40:58 +0200
+Subject: [PATCH] wifi: rtw88: Rename RTW_RATE_SECTION_MAX to
+ RTW_RATE_SECTION_NUM
+
+It fits the meaning of the enum better.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/5a1c5a46-8ebb-43b0-9ab1-b78e2a22b3d2@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.h     | 12 +++++-----
+ drivers/net/wireless/realtek/rtw88/phy.c      | 24 +++++++++----------
+ drivers/net/wireless/realtek/rtw88/rtw8821c.c |  2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822b.c |  2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822c.c |  2 +-
+ drivers/net/wireless/realtek/rtw88/rtw88xxa.c |  2 +-
+ drivers/net/wireless/realtek/rtw88/sar.c      |  2 +-
+ 7 files changed, 23 insertions(+), 23 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -168,7 +168,7 @@ enum rtw_rate_section {
+       RTW_RATE_SECTION_VHT_2S,
+       /* keep last */
+-      RTW_RATE_SECTION_MAX,
++      RTW_RATE_SECTION_NUM,
+ };
+ enum rtw_wireless_set {
+@@ -1937,7 +1937,7 @@ union rtw_sar_cfg {
+ struct rtw_sar {
+       enum rtw_sar_sources src;
+-      union rtw_sar_cfg cfg[RTW_RF_PATH_MAX][RTW_RATE_SECTION_MAX];
++      union rtw_sar_cfg cfg[RTW_RF_PATH_MAX][RTW_RATE_SECTION_NUM];
+ };
+ struct rtw_hal {
+@@ -1981,16 +1981,16 @@ struct rtw_hal {
+       s8 tx_pwr_by_rate_offset_5g[RTW_RF_PATH_MAX]
+                                  [DESC_RATE_MAX];
+       s8 tx_pwr_by_rate_base_2g[RTW_RF_PATH_MAX]
+-                               [RTW_RATE_SECTION_MAX];
++                               [RTW_RATE_SECTION_NUM];
+       s8 tx_pwr_by_rate_base_5g[RTW_RF_PATH_MAX]
+-                               [RTW_RATE_SECTION_MAX];
++                               [RTW_RATE_SECTION_NUM];
+       s8 tx_pwr_limit_2g[RTW_REGD_MAX]
+                         [RTW_CHANNEL_WIDTH_MAX]
+-                        [RTW_RATE_SECTION_MAX]
++                        [RTW_RATE_SECTION_NUM]
+                         [RTW_MAX_CHANNEL_NUM_2G];
+       s8 tx_pwr_limit_5g[RTW_REGD_MAX]
+                         [RTW_CHANNEL_WIDTH_MAX]
+-                        [RTW_RATE_SECTION_MAX]
++                        [RTW_RATE_SECTION_NUM]
+                         [RTW_MAX_CHANNEL_NUM_5G];
+       s8 tx_pwr_tbl[RTW_RF_PATH_MAX]
+                    [DESC_RATE_MAX];
+--- a/drivers/net/wireless/realtek/rtw88/phy.c
++++ b/drivers/net/wireless/realtek/rtw88/phy.c
+@@ -88,14 +88,14 @@ const u8 rtw_vht_2s_rates[] = {
+       DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9
+ };
+-const u8 * const rtw_rate_section[RTW_RATE_SECTION_MAX] = {
++const u8 * const rtw_rate_section[RTW_RATE_SECTION_NUM] = {
+       rtw_cck_rates, rtw_ofdm_rates,
+       rtw_ht_1s_rates, rtw_ht_2s_rates,
+       rtw_vht_1s_rates, rtw_vht_2s_rates
+ };
+ EXPORT_SYMBOL(rtw_rate_section);
+-const u8 rtw_rate_size[RTW_RATE_SECTION_MAX] = {
++const u8 rtw_rate_size[RTW_RATE_SECTION_NUM] = {
+       ARRAY_SIZE(rtw_cck_rates),
+       ARRAY_SIZE(rtw_ofdm_rates),
+       ARRAY_SIZE(rtw_ht_1s_rates),
+@@ -1596,7 +1596,7 @@ static void rtw_phy_set_tx_power_limit(s
+       ch_idx = rtw_channel_to_idx(band, ch);
+       if (regd >= RTW_REGD_MAX || bw >= RTW_CHANNEL_WIDTH_MAX ||
+-          rs >= RTW_RATE_SECTION_MAX || ch_idx < 0) {
++          rs >= RTW_RATE_SECTION_NUM || ch_idx < 0) {
+               WARN(1,
+                    "wrong txpwr_lmt regd=%u, band=%u bw=%u, rs=%u, ch_idx=%u, pwr_limit=%d\n",
+                    regd, band, bw, rs, ch_idx, pwr_limit);
+@@ -1701,7 +1701,7 @@ rtw_cfg_txpwr_lmt_by_alt(struct rtw_dev
+       u8 bw, rs;
+       for (bw = 0; bw < RTW_CHANNEL_WIDTH_MAX; bw++)
+-              for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
++              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++)
+                       __cfg_txpwr_lmt_by_alt(&rtwdev->hal, regd, regd_alt,
+                                              bw, rs);
+ }
+@@ -2060,7 +2060,7 @@ static u8 rtw_phy_get_5g_tx_power_index(
+       return tx_power;
+ }
+-/* return RTW_RATE_SECTION_MAX to indicate rate is invalid */
++/* return RTW_RATE_SECTION_NUM to indicate rate is invalid */
+ static u8 rtw_phy_rate_to_rate_section(u8 rate)
+ {
+       if (rate >= DESC_RATE1M && rate <= DESC_RATE11M)
+@@ -2076,7 +2076,7 @@ static u8 rtw_phy_rate_to_rate_section(u
+       else if (rate >= DESC_RATEVHT2SS_MCS0 && rate <= DESC_RATEVHT2SS_MCS9)
+               return RTW_RATE_SECTION_VHT_2S;
+       else
+-              return RTW_RATE_SECTION_MAX;
++              return RTW_RATE_SECTION_NUM;
+ }
+ static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band,
+@@ -2094,7 +2094,7 @@ static s8 rtw_phy_get_tx_power_limit(str
+       if (regd > RTW_REGD_WW)
+               return power_limit;
+-      if (rs == RTW_RATE_SECTION_MAX)
++      if (rs == RTW_RATE_SECTION_NUM)
+               goto err;
+       /* only 20M BW with cck and ofdm */
+@@ -2138,7 +2138,7 @@ static s8 rtw_phy_get_tx_power_sar(struc
+               .rs = rs,
+       };
+-      if (rs == RTW_RATE_SECTION_MAX)
++      if (rs == RTW_RATE_SECTION_NUM)
+               goto err;
+       return rtw_query_sar(rtwdev, &arg);
+@@ -2227,7 +2227,7 @@ static void rtw_phy_set_tx_power_index_b
+       u8 bw;
+       int i;
+-      if (rs >= RTW_RATE_SECTION_MAX)
++      if (rs >= RTW_RATE_SECTION_NUM)
+               return;
+       rates = rtw_rate_section[rs];
+@@ -2258,7 +2258,7 @@ static void rtw_phy_set_tx_power_level_b
+       else
+               rs = RTW_RATE_SECTION_OFDM;
+-      for (; rs < RTW_RATE_SECTION_MAX; rs++)
++      for (; rs < RTW_RATE_SECTION_NUM; rs++)
+               rtw_phy_set_tx_power_index_by_rs(rtwdev, ch, path, rs);
+ }
+@@ -2353,7 +2353,7 @@ void rtw_phy_tx_power_limit_config(struc
+       for (regd = 0; regd < RTW_REGD_MAX; regd++)
+               for (bw = 0; bw < RTW_CHANNEL_WIDTH_MAX; bw++)
+-                      for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
++                      for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++)
+                               __rtw_phy_tx_power_limit_config(hal, regd, bw, rs);
+ }
+@@ -2389,7 +2389,7 @@ void rtw_phy_init_tx_power(struct rtw_de
+       /* init tx power limit */
+       for (regd = 0; regd < RTW_REGD_MAX; regd++)
+               for (bw = 0; bw < RTW_CHANNEL_WIDTH_MAX; bw++)
+-                      for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
++                      for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++)
+                               rtw_phy_init_tx_power_limit(rtwdev, regd, bw,
+                                                           rs);
+ }
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+@@ -709,7 +709,7 @@ static void rtw8821c_set_tx_power_index(
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+-              for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) {
++              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) {
+                       if (rs == RTW_RATE_SECTION_HT_2S ||
+                           rs == RTW_RATE_SECTION_VHT_2S)
+                               continue;
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+@@ -964,7 +964,7 @@ static void rtw8822b_set_tx_power_index(
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+-              for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
++              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++)
+                       rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs,
+                                                           &phy_pwr_idx);
+       }
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+@@ -2746,7 +2746,7 @@ static void rtw8822c_set_tx_power_index(
+       s8 diff_idx[4];
+       rtw8822c_set_write_tx_power_ref(rtwdev, pwr_ref_cck, pwr_ref_ofdm);
+-      for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) {
++      for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) {
+               for (j = 0; j < rtw_rate_size[rs]; j++) {
+                       rate = rtw_rate_section[rs][j];
+                       pwr_a = hal->tx_pwr_tbl[RF_PATH_A][rate];
+--- a/drivers/net/wireless/realtek/rtw88/rtw88xxa.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw88xxa.c
+@@ -1637,7 +1637,7 @@ void rtw88xxa_set_tx_power_index(struct
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+-              for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) {
++              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) {
+                       if (hal->rf_path_num == 1 &&
+                           (rs == RTW_RATE_SECTION_HT_2S ||
+                            rs == RTW_RATE_SECTION_VHT_2S))
+--- a/drivers/net/wireless/realtek/rtw88/sar.c
++++ b/drivers/net/wireless/realtek/rtw88/sar.c
+@@ -97,7 +97,7 @@ int rtw_set_sar_specs(struct rtw_dev *rt
+                       power, BIT(RTW_COMMON_SAR_FCT));
+               for (j = 0; j < RTW_RF_PATH_MAX; j++) {
+-                      for (k = 0; k < RTW_RATE_SECTION_MAX; k++) {
++                      for (k = 0; k < RTW_RATE_SECTION_NUM; k++) {
+                               arg = (struct rtw_sar_arg){
+                                       .sar_band = idx,
+                                       .path = j,
diff --git a/package/kernel/mac80211/patches/rtl/074-v6.15-wifi-rtw88-Extend-TX-power-stuff-for-3-4-spatial-str.patch b/package/kernel/mac80211/patches/rtl/074-v6.15-wifi-rtw88-Extend-TX-power-stuff-for-3-4-spatial-str.patch
new file mode 100644 (file)
index 0000000..fc9aa3b
--- /dev/null
@@ -0,0 +1,369 @@
+From 0f98a59596579b34932c06aec7d52c1e835fa1f0 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:41:43 +0200
+Subject: [PATCH] wifi: rtw88: Extend TX power stuff for 3-4 spatial streams
+
+Although the RTL8814AU only has 3 spatial streams, maybe some other chip
+has 4.
+
+Correct the TX power index and TX power limit calculations for 3SS and
+4SS HT/VHT rates.
+
+With this the RTL8814AU can set the TX power correctly.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/d0c0e126-0794-4c4e-9203-ea39a707b673@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.h     |   5 +
+ drivers/net/wireless/realtek/rtw88/phy.c      | 145 ++++++++++++------
+ drivers/net/wireless/realtek/rtw88/phy.h      |   4 +
+ drivers/net/wireless/realtek/rtw88/rtw8821c.c |   2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822b.c |   2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822c.c |   2 +-
+ drivers/net/wireless/realtek/rtw88/rtw88xxa.c |   2 +-
+ 7 files changed, 111 insertions(+), 51 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -166,6 +166,11 @@ enum rtw_rate_section {
+       RTW_RATE_SECTION_HT_2S,
+       RTW_RATE_SECTION_VHT_1S,
+       RTW_RATE_SECTION_VHT_2S,
++      __RTW_RATE_SECTION_2SS_MAX = RTW_RATE_SECTION_VHT_2S,
++      RTW_RATE_SECTION_HT_3S,
++      RTW_RATE_SECTION_HT_4S,
++      RTW_RATE_SECTION_VHT_3S,
++      RTW_RATE_SECTION_VHT_4S,
+       /* keep last */
+       RTW_RATE_SECTION_NUM,
+--- a/drivers/net/wireless/realtek/rtw88/phy.c
++++ b/drivers/net/wireless/realtek/rtw88/phy.c
+@@ -88,10 +88,40 @@ const u8 rtw_vht_2s_rates[] = {
+       DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9
+ };
++const u8 rtw_ht_3s_rates[] = {
++      DESC_RATEMCS16, DESC_RATEMCS17, DESC_RATEMCS18,
++      DESC_RATEMCS19, DESC_RATEMCS20, DESC_RATEMCS21,
++      DESC_RATEMCS22, DESC_RATEMCS23
++};
++
++const u8 rtw_ht_4s_rates[] = {
++      DESC_RATEMCS24, DESC_RATEMCS25, DESC_RATEMCS26,
++      DESC_RATEMCS27, DESC_RATEMCS28, DESC_RATEMCS29,
++      DESC_RATEMCS30, DESC_RATEMCS31
++};
++
++const u8 rtw_vht_3s_rates[] = {
++      DESC_RATEVHT3SS_MCS0, DESC_RATEVHT3SS_MCS1,
++      DESC_RATEVHT3SS_MCS2, DESC_RATEVHT3SS_MCS3,
++      DESC_RATEVHT3SS_MCS4, DESC_RATEVHT3SS_MCS5,
++      DESC_RATEVHT3SS_MCS6, DESC_RATEVHT3SS_MCS7,
++      DESC_RATEVHT3SS_MCS8, DESC_RATEVHT3SS_MCS9
++};
++
++const u8 rtw_vht_4s_rates[] = {
++      DESC_RATEVHT4SS_MCS0, DESC_RATEVHT4SS_MCS1,
++      DESC_RATEVHT4SS_MCS2, DESC_RATEVHT4SS_MCS3,
++      DESC_RATEVHT4SS_MCS4, DESC_RATEVHT4SS_MCS5,
++      DESC_RATEVHT4SS_MCS6, DESC_RATEVHT4SS_MCS7,
++      DESC_RATEVHT4SS_MCS8, DESC_RATEVHT4SS_MCS9
++};
++
+ const u8 * const rtw_rate_section[RTW_RATE_SECTION_NUM] = {
+       rtw_cck_rates, rtw_ofdm_rates,
+       rtw_ht_1s_rates, rtw_ht_2s_rates,
+-      rtw_vht_1s_rates, rtw_vht_2s_rates
++      rtw_vht_1s_rates, rtw_vht_2s_rates,
++      rtw_ht_3s_rates, rtw_ht_4s_rates,
++      rtw_vht_3s_rates, rtw_vht_4s_rates
+ };
+ EXPORT_SYMBOL(rtw_rate_section);
+@@ -101,17 +131,14 @@ const u8 rtw_rate_size[RTW_RATE_SECTION_
+       ARRAY_SIZE(rtw_ht_1s_rates),
+       ARRAY_SIZE(rtw_ht_2s_rates),
+       ARRAY_SIZE(rtw_vht_1s_rates),
+-      ARRAY_SIZE(rtw_vht_2s_rates)
++      ARRAY_SIZE(rtw_vht_2s_rates),
++      ARRAY_SIZE(rtw_ht_3s_rates),
++      ARRAY_SIZE(rtw_ht_4s_rates),
++      ARRAY_SIZE(rtw_vht_3s_rates),
++      ARRAY_SIZE(rtw_vht_4s_rates)
+ };
+ EXPORT_SYMBOL(rtw_rate_size);
+-static const u8 rtw_cck_size = ARRAY_SIZE(rtw_cck_rates);
+-static const u8 rtw_ofdm_size = ARRAY_SIZE(rtw_ofdm_rates);
+-static const u8 rtw_ht_1s_size = ARRAY_SIZE(rtw_ht_1s_rates);
+-static const u8 rtw_ht_2s_size = ARRAY_SIZE(rtw_ht_2s_rates);
+-static const u8 rtw_vht_1s_size = ARRAY_SIZE(rtw_vht_1s_rates);
+-static const u8 rtw_vht_2s_size = ARRAY_SIZE(rtw_vht_2s_rates);
+-
+ enum rtw_phy_band_type {
+       PHY_BAND_2G     = 0,
+       PHY_BAND_5G     = 1,
+@@ -1640,11 +1667,15 @@ rtw_xref_5g_txpwr_lmt(struct rtw_dev *rt
+ static void
+ rtw_xref_txpwr_lmt_by_rs(struct rtw_dev *rtwdev, u8 regd, u8 bw, u8 ch_idx)
+ {
++      static const u8 rs_cmp[4][2] = {
++              {RTW_RATE_SECTION_HT_1S, RTW_RATE_SECTION_VHT_1S},
++              {RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_2S},
++              {RTW_RATE_SECTION_HT_3S, RTW_RATE_SECTION_VHT_3S},
++              {RTW_RATE_SECTION_HT_4S, RTW_RATE_SECTION_VHT_4S}
++      };
+       u8 rs_idx, rs_ht, rs_vht;
+-      u8 rs_cmp[2][2] = {{RTW_RATE_SECTION_HT_1S, RTW_RATE_SECTION_VHT_1S},
+-                         {RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_2S} };
+-      for (rs_idx = 0; rs_idx < 2; rs_idx++) {
++      for (rs_idx = 0; rs_idx < 4; rs_idx++) {
+               rs_ht = rs_cmp[rs_idx][0];
+               rs_vht = rs_cmp[rs_idx][1];
+@@ -1965,10 +1996,10 @@ static u8 rtw_phy_get_2g_tx_power_index(
+                                       u8 rate, u8 group)
+ {
+       const struct rtw_chip_info *chip = rtwdev->chip;
+-      u8 tx_power;
+-      bool mcs_rate;
+-      bool above_2ss;
++      bool above_2ss, above_3ss, above_4ss;
+       u8 factor = chip->txgi_factor;
++      bool mcs_rate;
++      u8 tx_power;
+       if (rate <= DESC_RATE11M)
+               tx_power = pwr_idx_2g->cck_base[group];
+@@ -1978,11 +2009,15 @@ static u8 rtw_phy_get_2g_tx_power_index(
+       if (rate >= DESC_RATE6M && rate <= DESC_RATE54M)
+               tx_power += pwr_idx_2g->ht_1s_diff.ofdm * factor;
+-      mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS15) ||
++      mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS31) ||
+                  (rate >= DESC_RATEVHT1SS_MCS0 &&
+-                  rate <= DESC_RATEVHT2SS_MCS9);
+-      above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15) ||
++                  rate <= DESC_RATEVHT4SS_MCS9);
++      above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS31) ||
+                   (rate >= DESC_RATEVHT2SS_MCS0);
++      above_3ss = (rate >= DESC_RATEMCS16 && rate <= DESC_RATEMCS31) ||
++                  (rate >= DESC_RATEVHT3SS_MCS0);
++      above_4ss = (rate >= DESC_RATEMCS24 && rate <= DESC_RATEMCS31) ||
++                  (rate >= DESC_RATEVHT4SS_MCS0);
+       if (!mcs_rate)
+               return tx_power;
+@@ -1995,11 +2030,19 @@ static u8 rtw_phy_get_2g_tx_power_index(
+               tx_power += pwr_idx_2g->ht_1s_diff.bw20 * factor;
+               if (above_2ss)
+                       tx_power += pwr_idx_2g->ht_2s_diff.bw20 * factor;
++              if (above_3ss)
++                      tx_power += pwr_idx_2g->ht_3s_diff.bw20 * factor;
++              if (above_4ss)
++                      tx_power += pwr_idx_2g->ht_4s_diff.bw20 * factor;
+               break;
+       case RTW_CHANNEL_WIDTH_40:
+               /* bw40 is the base power */
+               if (above_2ss)
+                       tx_power += pwr_idx_2g->ht_2s_diff.bw40 * factor;
++              if (above_3ss)
++                      tx_power += pwr_idx_2g->ht_3s_diff.bw40 * factor;
++              if (above_4ss)
++                      tx_power += pwr_idx_2g->ht_4s_diff.bw40 * factor;
+               break;
+       }
+@@ -2012,19 +2055,23 @@ static u8 rtw_phy_get_5g_tx_power_index(
+                                       u8 rate, u8 group)
+ {
+       const struct rtw_chip_info *chip = rtwdev->chip;
+-      u8 tx_power;
++      bool above_2ss, above_3ss, above_4ss;
++      u8 factor = chip->txgi_factor;
+       u8 upper, lower;
+       bool mcs_rate;
+-      bool above_2ss;
+-      u8 factor = chip->txgi_factor;
++      u8 tx_power;
+       tx_power = pwr_idx_5g->bw40_base[group];
+-      mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS15) ||
++      mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS31) ||
+                  (rate >= DESC_RATEVHT1SS_MCS0 &&
+-                  rate <= DESC_RATEVHT2SS_MCS9);
+-      above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15) ||
++                  rate <= DESC_RATEVHT4SS_MCS9);
++      above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS31) ||
+                   (rate >= DESC_RATEVHT2SS_MCS0);
++      above_3ss = (rate >= DESC_RATEMCS16 && rate <= DESC_RATEMCS31) ||
++                  (rate >= DESC_RATEVHT3SS_MCS0);
++      above_4ss = (rate >= DESC_RATEMCS24 && rate <= DESC_RATEMCS31) ||
++                  (rate >= DESC_RATEVHT4SS_MCS0);
+       if (!mcs_rate) {
+               tx_power += pwr_idx_5g->ht_1s_diff.ofdm * factor;
+@@ -2039,11 +2086,19 @@ static u8 rtw_phy_get_5g_tx_power_index(
+               tx_power += pwr_idx_5g->ht_1s_diff.bw20 * factor;
+               if (above_2ss)
+                       tx_power += pwr_idx_5g->ht_2s_diff.bw20 * factor;
++              if (above_3ss)
++                      tx_power += pwr_idx_5g->ht_3s_diff.bw20 * factor;
++              if (above_4ss)
++                      tx_power += pwr_idx_5g->ht_4s_diff.bw20 * factor;
+               break;
+       case RTW_CHANNEL_WIDTH_40:
+               /* bw40 is the base power */
+               if (above_2ss)
+                       tx_power += pwr_idx_5g->ht_2s_diff.bw40 * factor;
++              if (above_3ss)
++                      tx_power += pwr_idx_5g->ht_3s_diff.bw40 * factor;
++              if (above_4ss)
++                      tx_power += pwr_idx_5g->ht_4s_diff.bw40 * factor;
+               break;
+       case RTW_CHANNEL_WIDTH_80:
+               /* the base idx of bw80 is the average of bw40+/bw40- */
+@@ -2054,6 +2109,10 @@ static u8 rtw_phy_get_5g_tx_power_index(
+               tx_power += pwr_idx_5g->vht_1s_diff.bw80 * factor;
+               if (above_2ss)
+                       tx_power += pwr_idx_5g->vht_2s_diff.bw80 * factor;
++              if (above_3ss)
++                      tx_power += pwr_idx_5g->vht_3s_diff.bw80 * factor;
++              if (above_4ss)
++                      tx_power += pwr_idx_5g->vht_4s_diff.bw80 * factor;
+               break;
+       }
+@@ -2071,10 +2130,18 @@ static u8 rtw_phy_rate_to_rate_section(u
+               return RTW_RATE_SECTION_HT_1S;
+       else if (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15)
+               return RTW_RATE_SECTION_HT_2S;
++      else if (rate >= DESC_RATEMCS16 && rate <= DESC_RATEMCS23)
++              return RTW_RATE_SECTION_HT_3S;
++      else if (rate >= DESC_RATEMCS24 && rate <= DESC_RATEMCS31)
++              return RTW_RATE_SECTION_HT_4S;
+       else if (rate >= DESC_RATEVHT1SS_MCS0 && rate <= DESC_RATEVHT1SS_MCS9)
+               return RTW_RATE_SECTION_VHT_1S;
+       else if (rate >= DESC_RATEVHT2SS_MCS0 && rate <= DESC_RATEVHT2SS_MCS9)
+               return RTW_RATE_SECTION_VHT_2S;
++      else if (rate >= DESC_RATEVHT3SS_MCS0 && rate <= DESC_RATEVHT3SS_MCS9)
++              return RTW_RATE_SECTION_VHT_3S;
++      else if (rate >= DESC_RATEVHT4SS_MCS0 && rate <= DESC_RATEVHT4SS_MCS9)
++              return RTW_RATE_SECTION_VHT_4S;
+       else
+               return RTW_RATE_SECTION_NUM;
+ }
+@@ -2102,7 +2169,7 @@ static s8 rtw_phy_get_tx_power_limit(str
+               bw = RTW_CHANNEL_WIDTH_20;
+       /* only 20/40M BW with ht */
+-      if (rs == RTW_RATE_SECTION_HT_1S || rs == RTW_RATE_SECTION_HT_2S)
++      if (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS31)
+               bw = min_t(u8, bw, RTW_CHANNEL_WIDTH_40);
+       /* select min power limit among [20M BW ~ current BW] */
+@@ -2286,7 +2353,7 @@ rtw_phy_tx_power_by_rate_config_by_path(
+       u8 base_idx, rate_idx;
+       s8 base_2g, base_5g;
+-      if (rs >= RTW_RATE_SECTION_VHT_1S)
++      if (size == 10) /* VHT rates */
+               base_idx = rates[size - 3];
+       else
+               base_idx = rates[size - 1];
+@@ -2303,28 +2370,12 @@ rtw_phy_tx_power_by_rate_config_by_path(
+ void rtw_phy_tx_power_by_rate_config(struct rtw_hal *hal)
+ {
+-      u8 path;
++      u8 path, rs;
+-      for (path = 0; path < RTW_RF_PATH_MAX; path++) {
+-              rtw_phy_tx_power_by_rate_config_by_path(hal, path,
+-                              RTW_RATE_SECTION_CCK,
+-                              rtw_cck_size, rtw_cck_rates);
+-              rtw_phy_tx_power_by_rate_config_by_path(hal, path,
+-                              RTW_RATE_SECTION_OFDM,
+-                              rtw_ofdm_size, rtw_ofdm_rates);
+-              rtw_phy_tx_power_by_rate_config_by_path(hal, path,
+-                              RTW_RATE_SECTION_HT_1S,
+-                              rtw_ht_1s_size, rtw_ht_1s_rates);
+-              rtw_phy_tx_power_by_rate_config_by_path(hal, path,
+-                              RTW_RATE_SECTION_HT_2S,
+-                              rtw_ht_2s_size, rtw_ht_2s_rates);
+-              rtw_phy_tx_power_by_rate_config_by_path(hal, path,
+-                              RTW_RATE_SECTION_VHT_1S,
+-                              rtw_vht_1s_size, rtw_vht_1s_rates);
+-              rtw_phy_tx_power_by_rate_config_by_path(hal, path,
+-                              RTW_RATE_SECTION_VHT_2S,
+-                              rtw_vht_2s_size, rtw_vht_2s_rates);
+-      }
++      for (path = 0; path < RTW_RF_PATH_MAX; path++)
++              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++)
++                      rtw_phy_tx_power_by_rate_config_by_path(hal, path, rs,
++                              rtw_rate_size[rs], rtw_rate_section[rs]);
+ }
+ static void
+--- a/drivers/net/wireless/realtek/rtw88/phy.h
++++ b/drivers/net/wireless/realtek/rtw88/phy.h
+@@ -13,6 +13,10 @@ extern const u8 rtw_ht_1s_rates[];
+ extern const u8 rtw_ht_2s_rates[];
+ extern const u8 rtw_vht_1s_rates[];
+ extern const u8 rtw_vht_2s_rates[];
++extern const u8 rtw_ht_3s_rates[];
++extern const u8 rtw_ht_4s_rates[];
++extern const u8 rtw_vht_3s_rates[];
++extern const u8 rtw_vht_4s_rates[];
+ extern const u8 * const rtw_rate_section[];
+ extern const u8 rtw_rate_size[];
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+@@ -709,7 +709,7 @@ static void rtw8821c_set_tx_power_index(
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+-              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) {
++              for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) {
+                       if (rs == RTW_RATE_SECTION_HT_2S ||
+                           rs == RTW_RATE_SECTION_VHT_2S)
+                               continue;
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+@@ -964,7 +964,7 @@ static void rtw8822b_set_tx_power_index(
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+-              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++)
++              for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++)
+                       rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs,
+                                                           &phy_pwr_idx);
+       }
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+@@ -2746,7 +2746,7 @@ static void rtw8822c_set_tx_power_index(
+       s8 diff_idx[4];
+       rtw8822c_set_write_tx_power_ref(rtwdev, pwr_ref_cck, pwr_ref_ofdm);
+-      for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) {
++      for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) {
+               for (j = 0; j < rtw_rate_size[rs]; j++) {
+                       rate = rtw_rate_section[rs][j];
+                       pwr_a = hal->tx_pwr_tbl[RF_PATH_A][rate];
+--- a/drivers/net/wireless/realtek/rtw88/rtw88xxa.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw88xxa.c
+@@ -1637,7 +1637,7 @@ void rtw88xxa_set_tx_power_index(struct
+       int rs, path;
+       for (path = 0; path < hal->rf_path_num; path++) {
+-              for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) {
++              for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) {
+                       if (hal->rf_path_num == 1 &&
+                           (rs == RTW_RATE_SECTION_HT_2S ||
+                            rs == RTW_RATE_SECTION_VHT_2S))
diff --git a/package/kernel/mac80211/patches/rtl/075-v6.14.9-wifi-rtw88-Fix-rtw_update_sta_info-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/075-v6.14.9-wifi-rtw88-Fix-rtw_update_sta_info-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..64bc7f8
--- /dev/null
@@ -0,0 +1,61 @@
+From 9f00e2218e15a2ea3c284567424a100c10b6fb85 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 4 Feb 2025 20:42:08 +0200
+Subject: [PATCH] wifi: rtw88: Fix rtw_update_sta_info() for RTL8814AU
+
+This function tells the firmware what rates it can use.
+
+Put the 3SS and 4SS HT rates supported by the other station into the
+rate mask.
+
+Remove the 3SS and 4SS rates from the rate mask if the hardware only has
+2 spatial streams.
+
+And finally, select the right rate ID (a parameter for the firmware)
+when the hardware has 3 spatial streams.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/48d1d90f-2aeb-4ec5-9a24-0980e10eae1e@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.c | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -1234,7 +1234,9 @@ void rtw_update_sta_info(struct rtw_dev
+               if (sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC)
+                       ldpc_en = VHT_LDPC_EN;
+       } else if (sta->deflink.ht_cap.ht_supported) {
+-              ra_mask |= (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) |
++              ra_mask |= ((u64)sta->deflink.ht_cap.mcs.rx_mask[3] << 36) |
++                         ((u64)sta->deflink.ht_cap.mcs.rx_mask[2] << 28) |
++                         (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) |
+                          (sta->deflink.ht_cap.mcs.rx_mask[0] << 12);
+               if (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_RX_STBC)
+                       stbc_en = HT_STBC_EN;
+@@ -1244,6 +1246,9 @@ void rtw_update_sta_info(struct rtw_dev
+       if (efuse->hw_cap.nss == 1 || rtwdev->hal.txrx_1ss)
+               ra_mask &= RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS;
++      else if (efuse->hw_cap.nss == 2)
++              ra_mask &= RA_MASK_VHT_RATES_2SS | RA_MASK_HT_RATES_2SS |
++                         RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS;
+       if (hal->current_band_type == RTW_BAND_5G) {
+               ra_mask |= (u64)sta->deflink.supp_rates[NL80211_BAND_5GHZ] << 4;
+@@ -1302,10 +1307,9 @@ void rtw_update_sta_info(struct rtw_dev
+               break;
+       }
+-      if (sta->deflink.vht_cap.vht_supported && ra_mask & 0xffc00000)
+-              tx_num = 2;
+-      else if (sta->deflink.ht_cap.ht_supported && ra_mask & 0xfff00000)
+-              tx_num = 2;
++      if (sta->deflink.vht_cap.vht_supported ||
++          sta->deflink.ht_cap.ht_supported)
++              tx_num = efuse->hw_cap.nss;
+       rate_id = get_rate_id(wireless_set, bw_mode, tx_num);
diff --git a/package/kernel/mac80211/patches/rtl/076-v6.14-wifi-rtw88-Add-support-for-Mercusys-MA30N-and-D-Link.patch b/package/kernel/mac80211/patches/rtl/076-v6.14-wifi-rtw88-Add-support-for-Mercusys-MA30N-and-D-Link.patch
new file mode 100644 (file)
index 0000000..e281cf6
--- /dev/null
@@ -0,0 +1,31 @@
+From 80c4668d024ff7b5427d90b5fad655ce9461c7b1 Mon Sep 17 00:00:00 2001
+From: Zenm Chen <zenmchen@gmail.com>
+Date: Mon, 10 Feb 2025 15:36:10 +0800
+Subject: [PATCH] wifi: rtw88: Add support for Mercusys MA30N and D-Link
+ DWA-T185 rev. A1
+
+Add two more USB IDs found in
+https://github.com/RinCat/RTL88x2BU-Linux-Driver
+to support Mercusys MA30N and D-Link DWA-T185 rev. A1.
+
+Signed-off-by: Zenm Chen <zenmchen@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250210073610.4174-1-zenmchen@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8822bu.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822bu.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822bu.c
+@@ -73,6 +73,10 @@ static const struct usb_device_id rtw_88
+         .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* ELECOM WDB-867DU3S */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x2c4e, 0x0107, 0xff, 0xff, 0xff),
+         .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* Mercusys MA30H */
++      { USB_DEVICE_AND_INTERFACE_INFO(0x2c4e, 0x010a, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* Mercusys MA30N */
++      { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3322, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* D-Link DWA-T185 rev. A1 */
+       {},
+ };
+ MODULE_DEVICE_TABLE(usb, rtw_8822bu_id_table);
diff --git a/package/kernel/mac80211/patches/rtl/077-v6.14.9-wifi-rtw88-Fix-rtw_mac_power_switch-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/077-v6.14.9-wifi-rtw88-Fix-rtw_mac_power_switch-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..092a767
--- /dev/null
@@ -0,0 +1,27 @@
+From e66bca16638ee59e997f9d9a3711b3ae587d04d9 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:28:59 +0200
+Subject: [PATCH] wifi: rtw88: Fix rtw_mac_power_switch() for RTL8814AU
+
+rtw_mac_power_switch() checks bit 8 of REG_SYS_STATUS1 to see if the
+chip is powered on. This bit appears to be always on in the RTL8814AU,
+so ignore it.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/2f0fcffb-3067-4d95-a68c-f2f3a5a47921@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/mac.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/mac.c
++++ b/drivers/net/wireless/realtek/rtw88/mac.c
+@@ -291,6 +291,7 @@ static int rtw_mac_power_switch(struct r
+       if (rtw_read8(rtwdev, REG_CR) == 0xea)
+               cur_pwr = false;
+       else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB &&
++               chip->id != RTW_CHIP_TYPE_8814A &&
+                (rtw_read8(rtwdev, REG_SYS_STATUS1 + 1) & BIT(0)))
+               cur_pwr = false;
+       else
diff --git a/package/kernel/mac80211/patches/rtl/078-v6.14.9-wifi-rtw88-Fix-rtw_desc_to_mcsrate-to-handle-MCS16-3.patch b/package/kernel/mac80211/patches/rtl/078-v6.14.9-wifi-rtw88-Fix-rtw_desc_to_mcsrate-to-handle-MCS16-3.patch
new file mode 100644 (file)
index 0000000..c9588ad
--- /dev/null
@@ -0,0 +1,32 @@
+From 86d04f8f991a0509e318fe886d5a1cf795736c7d Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:29:52 +0200
+Subject: [PATCH] wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31
+
+This function translates the rate number reported by the hardware into
+something mac80211 can understand. It was ignoring the 3SS and 4SS HT
+rates. Translate them too.
+
+Also set *nss to 0 for the HT rates, just to make sure it's
+initialised.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/d0a5a86b-4869-47f6-a5a7-01c0f987cc7f@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/util.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/util.c
++++ b/drivers/net/wireless/realtek/rtw88/util.c
+@@ -101,7 +101,8 @@ void rtw_desc_to_mcsrate(u16 rate, u8 *m
+               *nss = 4;
+               *mcs = rate - DESC_RATEVHT4SS_MCS0;
+       } else if (rate >= DESC_RATEMCS0 &&
+-                 rate <= DESC_RATEMCS15) {
++                 rate <= DESC_RATEMCS31) {
++              *nss = 0;
+               *mcs = rate - DESC_RATEMCS0;
+       }
+ }
diff --git a/package/kernel/mac80211/patches/rtl/079-v6.14.9-wifi-rtw88-Fix-rtw_init_ht_cap-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/079-v6.14.9-wifi-rtw88-Fix-rtw_init_ht_cap-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..78014f8
--- /dev/null
@@ -0,0 +1,49 @@
+From c7eea1ba05ca5b0dbf77a27cf2e1e6e2fb3c0043 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:30:22 +0200
+Subject: [PATCH] wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU
+
+Set the RX mask and the highest RX rate according to the number of
+spatial streams the chip can receive. For RTL8814AU that is 3.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/4e786f50-ed1c-4387-8b28-e6ff00e35e81@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.c | 17 ++++++-----------
+ 1 file changed, 6 insertions(+), 11 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -1565,6 +1565,7 @@ static void rtw_init_ht_cap(struct rtw_d
+ {
+       const struct rtw_chip_info *chip = rtwdev->chip;
+       struct rtw_efuse *efuse = &rtwdev->efuse;
++      int i;
+       ht_cap->ht_supported = true;
+       ht_cap->cap = 0;
+@@ -1584,17 +1585,11 @@ static void rtw_init_ht_cap(struct rtw_d
+       ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
+       ht_cap->ampdu_density = chip->ampdu_density;
+       ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
+-      if (efuse->hw_cap.nss > 1) {
+-              ht_cap->mcs.rx_mask[0] = 0xFF;
+-              ht_cap->mcs.rx_mask[1] = 0xFF;
+-              ht_cap->mcs.rx_mask[4] = 0x01;
+-              ht_cap->mcs.rx_highest = cpu_to_le16(300);
+-      } else {
+-              ht_cap->mcs.rx_mask[0] = 0xFF;
+-              ht_cap->mcs.rx_mask[1] = 0x00;
+-              ht_cap->mcs.rx_mask[4] = 0x01;
+-              ht_cap->mcs.rx_highest = cpu_to_le16(150);
+-      }
++
++      for (i = 0; i < efuse->hw_cap.nss; i++)
++              ht_cap->mcs.rx_mask[i] = 0xFF;
++      ht_cap->mcs.rx_mask[4] = 0x01;
++      ht_cap->mcs.rx_highest = cpu_to_le16(150 * efuse->hw_cap.nss);
+ }
+ static void rtw_init_vht_cap(struct rtw_dev *rtwdev,
diff --git a/package/kernel/mac80211/patches/rtl/080-v6.14.9-wifi-rtw88-Fix-rtw_init_vht_cap-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/080-v6.14.9-wifi-rtw88-Fix-rtw_init_vht_cap-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..e5f0de8
--- /dev/null
@@ -0,0 +1,58 @@
+From 6be7544d19fcfcb729495e793bc6181f85bb8949 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:30:48 +0200
+Subject: [PATCH] wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU
+
+Set the MCS maps and the highest rates according to the number of
+spatial streams the chip has. For RTL8814AU that is 3.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/e86aa009-b5bf-4b3a-8112-ea5e3cd49465@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.c | 23 +++++++++--------------
+ 1 file changed, 9 insertions(+), 14 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -1596,8 +1596,9 @@ static void rtw_init_vht_cap(struct rtw_
+                            struct ieee80211_sta_vht_cap *vht_cap)
+ {
+       struct rtw_efuse *efuse = &rtwdev->efuse;
+-      u16 mcs_map;
++      u16 mcs_map = 0;
+       __le16 highest;
++      int i;
+       if (efuse->hw_cap.ptcl != EFUSE_HW_CAP_IGNORE &&
+           efuse->hw_cap.ptcl != EFUSE_HW_CAP_PTCL_VHT)
+@@ -1620,21 +1621,15 @@ static void rtw_init_vht_cap(struct rtw_
+       if (rtw_chip_has_rx_ldpc(rtwdev))
+               vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC;
+-      mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 |
+-                IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 |
+-                IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 |
+-                IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 |
+-                IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 |
+-                IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 |
+-                IEEE80211_VHT_MCS_NOT_SUPPORTED << 14;
+-      if (efuse->hw_cap.nss > 1) {
+-              highest = cpu_to_le16(780);
+-              mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << 2;
+-      } else {
+-              highest = cpu_to_le16(390);
+-              mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << 2;
++      for (i = 0; i < 8; i++) {
++              if (i < efuse->hw_cap.nss)
++                      mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i * 2);
++              else
++                      mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2);
+       }
++      highest = cpu_to_le16(390 * efuse->hw_cap.nss);
++
+       vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
+       vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
+       vht_cap->vht_mcs.rx_highest = highest;
diff --git a/package/kernel/mac80211/patches/rtl/081-v6.15-wifi-rtw88-Fix-rtw_rx_phy_stat-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/081-v6.15-wifi-rtw88-Fix-rtw_rx_phy_stat-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..a1ca98f
--- /dev/null
@@ -0,0 +1,54 @@
+From 053a7aace0207593776c729f229d87f1be464b98 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:31:13 +0200
+Subject: [PATCH] wifi: rtw88: Fix rtw_rx_phy_stat() for RTL8814AU
+
+Record statistics for the 3SS rates too.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/39e3c7cf-37ed-4c0e-af00-dcd9eab351f0@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.h | 7 +++++++
+ drivers/net/wireless/realtek/rtw88/rx.c   | 6 ++++++
+ 2 files changed, 13 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -386,6 +386,9 @@ enum rtw_evm {
+       RTW_EVM_1SS,
+       RTW_EVM_2SS_A,
+       RTW_EVM_2SS_B,
++      RTW_EVM_3SS_A,
++      RTW_EVM_3SS_B,
++      RTW_EVM_3SS_C,
+       /* keep it last */
+       RTW_EVM_NUM
+ };
+@@ -403,6 +406,10 @@ enum rtw_snr {
+       RTW_SNR_2SS_B,
+       RTW_SNR_2SS_C,
+       RTW_SNR_2SS_D,
++      RTW_SNR_3SS_A,
++      RTW_SNR_3SS_B,
++      RTW_SNR_3SS_C,
++      RTW_SNR_3SS_D,
+       /* keep it last */
+       RTW_SNR_NUM
+ };
+--- a/drivers/net/wireless/realtek/rtw88/rx.c
++++ b/drivers/net/wireless/realtek/rtw88/rx.c
+@@ -73,6 +73,12 @@ static void rtw_rx_phy_stat(struct rtw_d
+               rate_ss_evm = 2;
+               evm_id = RTW_EVM_2SS_A;
+               break;
++      case DESC_RATEMCS16...DESC_RATEMCS23:
++      case DESC_RATEVHT3SS_MCS0...DESC_RATEVHT3SS_MCS9:
++              rate_ss = 3;
++              rate_ss_evm = 3;
++              evm_id = RTW_EVM_3SS_A;
++              break;
+       default:
+               rtw_warn(rtwdev, "unknown pkt rate = %d\n", pkt_stat->rate);
+               return;
diff --git a/package/kernel/mac80211/patches/rtl/082-v6.15-wifi-rtw88-Extend-rtw_phy_config_swing_table-for-RTL.patch b/package/kernel/mac80211/patches/rtl/082-v6.15-wifi-rtw88-Extend-rtw_phy_config_swing_table-for-RTL.patch
new file mode 100644 (file)
index 0000000..2ac27f3
--- /dev/null
@@ -0,0 +1,75 @@
+From 8b42c46cf6656ef3c2f6d1ec0f113753c6875712 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:31:51 +0200
+Subject: [PATCH] wifi: rtw88: Extend rtw_phy_config_swing_table() for
+ RTL8814AU
+
+Select the TX power tracking tables for RF paths C and D as well.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/e1e532c9-8733-4ec8-84fe-ced4af6c08da@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/phy.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/phy.c
++++ b/drivers/net/wireless/realtek/rtw88/phy.c
+@@ -2458,32 +2458,56 @@ void rtw_phy_config_swing_table(struct r
+                       swing_table->n[RF_PATH_A] = tbl->pwrtrk_2g_ccka_n;
+                       swing_table->p[RF_PATH_B] = tbl->pwrtrk_2g_cckb_p;
+                       swing_table->n[RF_PATH_B] = tbl->pwrtrk_2g_cckb_n;
++                      swing_table->p[RF_PATH_C] = tbl->pwrtrk_2g_cckc_p;
++                      swing_table->n[RF_PATH_C] = tbl->pwrtrk_2g_cckc_n;
++                      swing_table->p[RF_PATH_D] = tbl->pwrtrk_2g_cckd_p;
++                      swing_table->n[RF_PATH_D] = tbl->pwrtrk_2g_cckd_n;
+               } else {
+                       swing_table->p[RF_PATH_A] = tbl->pwrtrk_2ga_p;
+                       swing_table->n[RF_PATH_A] = tbl->pwrtrk_2ga_n;
+                       swing_table->p[RF_PATH_B] = tbl->pwrtrk_2gb_p;
+                       swing_table->n[RF_PATH_B] = tbl->pwrtrk_2gb_n;
++                      swing_table->p[RF_PATH_C] = tbl->pwrtrk_2gc_p;
++                      swing_table->n[RF_PATH_C] = tbl->pwrtrk_2gc_n;
++                      swing_table->p[RF_PATH_D] = tbl->pwrtrk_2gd_p;
++                      swing_table->n[RF_PATH_D] = tbl->pwrtrk_2gd_n;
+               }
+       } else if (IS_CH_5G_BAND_1(channel) || IS_CH_5G_BAND_2(channel)) {
+               swing_table->p[RF_PATH_A] = tbl->pwrtrk_5ga_p[RTW_PWR_TRK_5G_1];
+               swing_table->n[RF_PATH_A] = tbl->pwrtrk_5ga_n[RTW_PWR_TRK_5G_1];
+               swing_table->p[RF_PATH_B] = tbl->pwrtrk_5gb_p[RTW_PWR_TRK_5G_1];
+               swing_table->n[RF_PATH_B] = tbl->pwrtrk_5gb_n[RTW_PWR_TRK_5G_1];
++              swing_table->p[RF_PATH_C] = tbl->pwrtrk_5gc_p[RTW_PWR_TRK_5G_1];
++              swing_table->n[RF_PATH_C] = tbl->pwrtrk_5gc_n[RTW_PWR_TRK_5G_1];
++              swing_table->p[RF_PATH_D] = tbl->pwrtrk_5gd_p[RTW_PWR_TRK_5G_1];
++              swing_table->n[RF_PATH_D] = tbl->pwrtrk_5gd_n[RTW_PWR_TRK_5G_1];
+       } else if (IS_CH_5G_BAND_3(channel)) {
+               swing_table->p[RF_PATH_A] = tbl->pwrtrk_5ga_p[RTW_PWR_TRK_5G_2];
+               swing_table->n[RF_PATH_A] = tbl->pwrtrk_5ga_n[RTW_PWR_TRK_5G_2];
+               swing_table->p[RF_PATH_B] = tbl->pwrtrk_5gb_p[RTW_PWR_TRK_5G_2];
+               swing_table->n[RF_PATH_B] = tbl->pwrtrk_5gb_n[RTW_PWR_TRK_5G_2];
++              swing_table->p[RF_PATH_C] = tbl->pwrtrk_5gc_p[RTW_PWR_TRK_5G_2];
++              swing_table->n[RF_PATH_C] = tbl->pwrtrk_5gc_n[RTW_PWR_TRK_5G_2];
++              swing_table->p[RF_PATH_D] = tbl->pwrtrk_5gd_p[RTW_PWR_TRK_5G_2];
++              swing_table->n[RF_PATH_D] = tbl->pwrtrk_5gd_n[RTW_PWR_TRK_5G_2];
+       } else if (IS_CH_5G_BAND_4(channel)) {
+               swing_table->p[RF_PATH_A] = tbl->pwrtrk_5ga_p[RTW_PWR_TRK_5G_3];
+               swing_table->n[RF_PATH_A] = tbl->pwrtrk_5ga_n[RTW_PWR_TRK_5G_3];
+               swing_table->p[RF_PATH_B] = tbl->pwrtrk_5gb_p[RTW_PWR_TRK_5G_3];
+               swing_table->n[RF_PATH_B] = tbl->pwrtrk_5gb_n[RTW_PWR_TRK_5G_3];
++              swing_table->p[RF_PATH_C] = tbl->pwrtrk_5gc_p[RTW_PWR_TRK_5G_3];
++              swing_table->n[RF_PATH_C] = tbl->pwrtrk_5gc_n[RTW_PWR_TRK_5G_3];
++              swing_table->p[RF_PATH_D] = tbl->pwrtrk_5gd_p[RTW_PWR_TRK_5G_3];
++              swing_table->n[RF_PATH_D] = tbl->pwrtrk_5gd_n[RTW_PWR_TRK_5G_3];
+       } else {
+               swing_table->p[RF_PATH_A] = tbl->pwrtrk_2ga_p;
+               swing_table->n[RF_PATH_A] = tbl->pwrtrk_2ga_n;
+               swing_table->p[RF_PATH_B] = tbl->pwrtrk_2gb_p;
+               swing_table->n[RF_PATH_B] = tbl->pwrtrk_2gb_n;
++              swing_table->p[RF_PATH_C] = tbl->pwrtrk_2gc_p;
++              swing_table->n[RF_PATH_C] = tbl->pwrtrk_2gc_n;
++              swing_table->p[RF_PATH_D] = tbl->pwrtrk_2gd_p;
++              swing_table->n[RF_PATH_D] = tbl->pwrtrk_2gd_n;
+       }
+ }
+ EXPORT_SYMBOL(rtw_phy_config_swing_table);
diff --git a/package/kernel/mac80211/patches/rtl/083-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_phy_info-for-RTL88.patch b/package/kernel/mac80211/patches/rtl/083-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_phy_info-for-RTL88.patch
new file mode 100644 (file)
index 0000000..d34d72a
--- /dev/null
@@ -0,0 +1,86 @@
+From cfebabdd351e9cbafdc99cb198db482208ec5ad9 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:32:15 +0200
+Subject: [PATCH] wifi: rtw88: Extend rtw_debugfs_get_phy_info() for RTL8814AU
+
+Print information about the 3rd and 4th RF paths and about the 3rd
+spatial stream.
+
+Also, fix a small bug: don't show the average SNR and EVM for the OFDM
+and HT/VHT rates when the rate is actually CCK 11M.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/7c8e94e2-e034-40f3-bdaf-b000018b5573@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/debug.c | 37 +++++++++++++++-------
+ 1 file changed, 26 insertions(+), 11 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/debug.c
++++ b/drivers/net/wireless/realtek/rtw88/debug.c
+@@ -654,10 +654,10 @@ static void rtw_print_rate(struct seq_fi
+       case DESC_RATE6M...DESC_RATE54M:
+               rtw_print_ofdm_rate_txt(m, rate);
+               break;
+-      case DESC_RATEMCS0...DESC_RATEMCS15:
++      case DESC_RATEMCS0...DESC_RATEMCS31:
+               rtw_print_ht_rate_txt(m, rate);
+               break;
+-      case DESC_RATEVHT1SS_MCS0...DESC_RATEVHT2SS_MCS9:
++      case DESC_RATEVHT1SS_MCS0...DESC_RATEVHT4SS_MCS9:
+               rtw_print_vht_rate_txt(m, rate);
+               break;
+       default:
+@@ -849,20 +849,28 @@ static int rtw_debugfs_get_phy_info(stru
+                          last_cnt->num_qry_pkt[rate_id + 9]);
+       }
+-      seq_printf(m, "[RSSI(dBm)] = {%d, %d}\n",
++      seq_printf(m, "[RSSI(dBm)] = {%d, %d, %d, %d}\n",
+                  dm_info->rssi[RF_PATH_A] - 100,
+-                 dm_info->rssi[RF_PATH_B] - 100);
+-      seq_printf(m, "[Rx EVM(dB)] = {-%d, -%d}\n",
++                 dm_info->rssi[RF_PATH_B] - 100,
++                 dm_info->rssi[RF_PATH_C] - 100,
++                 dm_info->rssi[RF_PATH_D] - 100);
++      seq_printf(m, "[Rx EVM(dB)] = {-%d, -%d, -%d, -%d}\n",
+                  dm_info->rx_evm_dbm[RF_PATH_A],
+-                 dm_info->rx_evm_dbm[RF_PATH_B]);
+-      seq_printf(m, "[Rx SNR] = {%d, %d}\n",
++                 dm_info->rx_evm_dbm[RF_PATH_B],
++                 dm_info->rx_evm_dbm[RF_PATH_C],
++                 dm_info->rx_evm_dbm[RF_PATH_D]);
++      seq_printf(m, "[Rx SNR] = {%d, %d, %d, %d}\n",
+                  dm_info->rx_snr[RF_PATH_A],
+-                 dm_info->rx_snr[RF_PATH_B]);
+-      seq_printf(m, "[CFO_tail(KHz)] = {%d, %d}\n",
++                 dm_info->rx_snr[RF_PATH_B],
++                 dm_info->rx_snr[RF_PATH_C],
++                 dm_info->rx_snr[RF_PATH_D]);
++      seq_printf(m, "[CFO_tail(KHz)] = {%d, %d, %d, %d}\n",
+                  dm_info->cfo_tail[RF_PATH_A],
+-                 dm_info->cfo_tail[RF_PATH_B]);
++                 dm_info->cfo_tail[RF_PATH_B],
++                 dm_info->cfo_tail[RF_PATH_C],
++                 dm_info->cfo_tail[RF_PATH_D]);
+-      if (dm_info->curr_rx_rate >= DESC_RATE11M) {
++      if (dm_info->curr_rx_rate >= DESC_RATE6M) {
+               seq_puts(m, "[Rx Average Status]:\n");
+               seq_printf(m, " * OFDM, EVM: {-%d}, SNR: {%d}\n",
+                          (u8)ewma_evm_read(&ewma_evm[RTW_EVM_OFDM]),
+@@ -875,6 +883,13 @@ static int rtw_debugfs_get_phy_info(stru
+                          (u8)ewma_evm_read(&ewma_evm[RTW_EVM_2SS_B]),
+                          (u8)ewma_snr_read(&ewma_snr[RTW_SNR_2SS_A]),
+                          (u8)ewma_snr_read(&ewma_snr[RTW_SNR_2SS_B]));
++              seq_printf(m, " * 3SS, EVM: {-%d, -%d, -%d}, SNR: {%d, %d, %d}\n",
++                         (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_A]),
++                         (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_B]),
++                         (u8)ewma_evm_read(&ewma_evm[RTW_EVM_3SS_C]),
++                         (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_A]),
++                         (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_B]),
++                         (u8)ewma_snr_read(&ewma_snr[RTW_SNR_3SS_C]));
+       }
+       seq_puts(m, "[Rx Counter]:\n");
diff --git a/package/kernel/mac80211/patches/rtl/084-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_tx_pwr_tbl-for-RTL.patch b/package/kernel/mac80211/patches/rtl/084-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_tx_pwr_tbl-for-RTL.patch
new file mode 100644 (file)
index 0000000..75fff03
--- /dev/null
@@ -0,0 +1,65 @@
+From c374281f828545b3698cf936b584249c2f9e40c5 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Tue, 18 Feb 2025 01:32:49 +0200
+Subject: [PATCH] wifi: rtw88: Extend rtw_debugfs_get_tx_pwr_tbl() for
+ RTL8814AU
+
+Make it print the TX power details for all RF paths, not just A and B,
+and for all the rates supported by the chip, not just 1SS and 2SS
+rates.
+
+Also skip the RF paths and rates not supported by the chip.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/ea65a978-a735-4c97-af82-d7fe26f95da1@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/debug.c | 20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/debug.c
++++ b/drivers/net/wireless/realtek/rtw88/debug.c
+@@ -692,9 +692,11 @@ static int rtw_debugfs_get_tx_pwr_tbl(st
+ {
+       struct rtw_debugfs_priv *debugfs_priv = m->private;
+       struct rtw_dev *rtwdev = debugfs_priv->rtwdev;
++      struct rtw_power_params pwr_param = {0};
+       struct rtw_hal *hal = &rtwdev->hal;
++      u8 nss = rtwdev->efuse.hw_cap.nss;
+       u8 path, rate, bw, ch, regd;
+-      struct rtw_power_params pwr_param = {0};
++      u8 max_ht_rate, max_rate;
+       mutex_lock(&rtwdev->mutex);
+       bw = hal->current_band_width;
+@@ -707,19 +709,23 @@ static int rtw_debugfs_get_tx_pwr_tbl(st
+       seq_printf(m, "%-4s %-10s %-9s %-9s (%-4s %-4s %-4s) %-4s\n",
+                  "path", "rate", "pwr", "base", "byr", "lmt", "sar", "rem");
++      max_ht_rate = DESC_RATEMCS0 + nss * 8 - 1;
++
++      if (rtwdev->chip->vht_supported)
++              max_rate = DESC_RATEVHT1SS_MCS0 + nss * 10 - 1;
++      else
++              max_rate = max_ht_rate;
++
+       mutex_lock(&hal->tx_power_mutex);
+-      for (path = RF_PATH_A; path <= RF_PATH_B; path++) {
++      for (path = RF_PATH_A; path < hal->rf_path_num; path++) {
+               /* there is no CCK rates used in 5G */
+               if (hal->current_band_type == RTW_BAND_5G)
+                       rate = DESC_RATE6M;
+               else
+                       rate = DESC_RATE1M;
+-              /* now, not support vht 3ss and vht 4ss*/
+-              for (; rate <= DESC_RATEVHT2SS_MCS9; rate++) {
+-                      /* now, not support ht 3ss and ht 4ss*/
+-                      if (rate > DESC_RATEMCS15 &&
+-                          rate < DESC_RATEVHT1SS_MCS0)
++              for (; rate <= max_rate; rate++) {
++                      if (rate > max_ht_rate && rate <= DESC_RATEMCS31)
+                               continue;
+                       rtw_get_tx_power_params(rtwdev, path, rate, bw,
diff --git a/package/kernel/mac80211/patches/rtl/085-v6.15-wifi-rtw88-Add-some-definitions-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/085-v6.15-wifi-rtw88-Add-some-definitions-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..d14f1ea
--- /dev/null
@@ -0,0 +1,200 @@
+From 679ec431477cdb68d1cab068c008da0de7f842ef Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:22:17 +0200
+Subject: [PATCH] wifi: rtw88: Add some definitions for RTL8814AU
+
+Add various register definitions which will be used by the new driver.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/1dcb5abb-26f8-4db5-be36-057de56465e5@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/reg.h | 66 ++++++++++++++++++++++--
+ 1 file changed, 62 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/reg.h
++++ b/drivers/net/wireless/realtek/rtw88/reg.h
+@@ -8,6 +8,7 @@
+ #define REG_SYS_FUNC_EN               0x0002
+ #define BIT_FEN_EN_25_1               BIT(13)
+ #define BIT_FEN_ELDR          BIT(12)
++#define BIT_FEN_PCIEA         BIT(6)
+ #define BIT_FEN_CPUEN         BIT(2)
+ #define BIT_FEN_USBA          BIT(2)
+ #define BIT_FEN_BB_GLB_RST    BIT(1)
+@@ -39,6 +40,9 @@
+ #define BIT_RF_RSTB           BIT(1)
+ #define BIT_RF_EN             BIT(0)
++#define REG_RF_CTRL1          0x0020
++#define REG_RF_CTRL2          0x0021
++
+ #define REG_AFE_CTRL1         0x0024
+ #define BIT_MAC_CLK_SEL               (BIT(20) | BIT(21))
+ #define REG_EFUSE_CTRL                0x0030
+@@ -73,6 +77,8 @@
+ #define BIT_BT_PTA_EN         BIT(5)
+ #define BIT_WLRFE_4_5_EN      BIT(2)
++#define REG_GPIO_PIN_CTRL     0x0044
++
+ #define REG_LED_CFG           0x004C
+ #define BIT_LNAON_SEL_EN      BIT(26)
+ #define BIT_PAPE_SEL_EN               BIT(25)
+@@ -110,6 +116,7 @@
+ #define BIT_SDIO_PAD_E5               BIT(18)
+ #define REG_RF_B_CTRL         0x76
++#define REG_RF_CTRL3          0x0076
+ #define REG_AFE_CTRL_4                0x0078
+ #define BIT_CK320M_AFE_EN     BIT(4)
+@@ -603,15 +610,25 @@
+ #define REG_CCA2ND            0x0838
+ #define REG_L1PKTH            0x0848
+ #define REG_CLKTRK            0x0860
++#define REG_CSI_MASK_SETTING1 0x0874
++#define REG_NBI_SETTING               0x087c
++#define BIT_NBI_ENABLE                BIT(13)
++#define REG_CSI_FIX_MASK0     0x0880
++#define REG_CSI_FIX_MASK1     0x0884
++#define REG_CSI_FIX_MASK6     0x0898
++#define REG_CSI_FIX_MASK7     0x089c
+ #define REG_ADCCLK            0x08AC
+ #define REG_HSSI_READ         0x08B0
+ #define REG_FPGA0_XCD_RF_PARA 0x08B4
+ #define REG_RX_MCS_LIMIT      0x08BC
+ #define REG_ADC160            0x08C4
++#define REG_DBGSEL            0x08fc
+ #define REG_ANTSEL_SW         0x0900
+ #define REG_DAC_RSTB          0x090c
++#define REG_PSD                       0x0910
++#define BIT_PSD_INI           GENMASK(23, 22)
+ #define REG_SINGLE_TONE_CONT_TX       0x0914
+-
++#define REG_AGC_TABLE         0x0958
+ #define REG_RFE_CTRL_E                0x0974
+ #define REG_2ND_CCA_CTRL      0x0976
+ #define REG_IQK_COM00         0x0978
+@@ -621,10 +638,18 @@
+ #define REG_FAS                       0x09a4
+ #define REG_RXSB              0x0a00
++#define BIT_RXSB_ANA_DIV      BIT(15)
+ #define REG_CCK_RX            0x0a04
+ #define REG_CCK_PD_TH         0x0a0a
+-
+-#define REG_CCK0_FAREPORT     0xa2c
++#define REG_PRECTRL           0x0a14
++#define BIT_DIS_CO_PATHSEL    BIT(7)
++#define BIT_IQ_WGT            GENMASK(9, 8)
++#define REG_CCA_MF            0x0a20
++#define BIT_MBC_WIN           GENMASK(5, 4)
++#define REG_CCK0_TX_FILTER1   0x0a20
++#define REG_CCK0_TX_FILTER2   0x0a24
++#define REG_CCK0_DEBUG_PORT   0x0a28
++#define REG_CCK0_FAREPORT     0x0a2c
+ #define BIT_CCK0_2RX          BIT(18)
+ #define BIT_CCK0_MRC          BIT(22)
+ #define REG_FA_CCK            0x0a5c
+@@ -643,10 +668,18 @@
+ #define DIS_DPD_RATEVHT2SS_MCS1       BIT(9)
+ #define DIS_DPD_RATEALL               GENMASK(9, 0)
++#define REG_CCA                       0x0a70
++#define BIT_CCA_CO            BIT(7)
++#define REG_ANTSEL            0x0a74
++#define BIT_ANT_BYCO          BIT(8)
++#define REG_CCKTX             0x0a84
++#define BIT_CMB_CCA_2R                BIT(28)
++
+ #define REG_CNTRST            0x0b58
+ #define REG_3WIRE_SWA         0x0c00
+ #define REG_RX_IQC_AB_A               0x0c10
++#define REG_RX_IQC_CD_A               0x0c14
+ #define REG_TXSCALE_A         0x0c1c
+ #define BB_SWING_MASK         GENMASK(31, 21)
+ #define REG_TX_AGC_A_CCK_11_CCK_1             0xc20
+@@ -674,7 +707,7 @@
+ #define REG_LSSI_WRITE_A      0x0c90
+ #define REG_PREDISTA          0x0c90
+ #define REG_TXAGCIDX          0x0c94
+-
++#define REG_TX_AGC_A          0x0c94
+ #define REG_RFE_PINMUX_A      0x0cb0
+ #define REG_RFE_INV_A         0x0cb4
+ #define REG_RFE_CTRL8         0x0cb4
+@@ -683,6 +716,7 @@
+ #define DPDT_CTRL_PIN         0x77
+ #define RFE_INV_MASK          0x3ff00000
+ #define REG_RFECTL_A          0x0cb8
++#define REG_RFE_INV0          0x0cbc
+ #define REG_RFE_INV8          0x0cbd
+ #define BIT_MASK_RFE_INV89    GENMASK(1, 0)
+ #define REG_RFE_INV16         0x0cbe
+@@ -703,6 +737,7 @@
+ #define REG_3WIRE_SWB         0x0e00
+ #define REG_RX_IQC_AB_B               0x0e10
++#define REG_RX_IQC_CD_B               0x0e14
+ #define REG_TXSCALE_B         0x0e1c
+ #define REG_TX_AGC_B_CCK_11_CCK_1             0xe20
+ #define REG_TX_AGC_B_OFDM18_OFDM6             0xe24
+@@ -729,6 +764,7 @@
+ #define REG_LSSI_WRITE_B      0x0e90
+ #define REG_PREDISTB          0x0e90
+ #define REG_INIDLYB           0x0e94
++#define REG_TX_AGC_B          0x0e94
+ #define REG_RFE_PINMUX_B      0x0eb0
+ #define REG_RFE_INV_B         0x0eb4
+ #define REG_RFECTL_B          0x0eb8
+@@ -744,8 +780,11 @@
+ #define REG_CRC_HT            0x0f10
+ #define REG_CRC_OFDM          0x0f14
+ #define REG_FA_OFDM           0x0f48
++#define REG_DBGRPT            0x0fa0
+ #define REG_CCA_CCK           0x0fcc
++#define REG_SYS_CFG3_8814A    0x1000
++
+ #define REG_ANAPARSW_MAC_0    0x1010
+ #define BIT_CF_L_V2           GENMASK(29, 28)
+@@ -863,9 +902,27 @@
+ #define LTECOEX_WRITE_DATA REG_WL2LTECOEX_INDIRECT_ACCESS_WRITE_DATA_V1
+ #define LTECOEX_READ_DATA REG_WL2LTECOEX_INDIRECT_ACCESS_READ_DATA_V1
++#define REG_RX_IQC_AB_C               0x1810
++#define REG_RX_IQC_CD_C               0x1814
++#define REG_TXSCALE_C         0x181c
++#define REG_CK_MONHC          0x185c
++#define REG_AFE_PWR1_C                0x1860
+ #define REG_IGN_GNT_BT1       0x1860
++#define REG_TX_AGC_C          0x1894
++#define REG_RFE_PINMUX_C      0x18b4
+ #define REG_RFESEL_CTRL       0x1990
++#define REG_AGC_TBL           0x1998
++
++#define REG_RX_IQC_AB_D               0x1a10
++#define REG_RX_IQC_CD_D               0x1a14
++#define REG_TXSCALE_D         0x1a1c
++#define REG_CK_MONHD          0x1a5c
++#define REG_AFE_PWR1_D                0x1a60
++#define REG_TX_AGC_D          0x1a94
++#define REG_RFE_PINMUX_D      0x1ab4
++#define REG_RFE_INVSEL_D      0x1abc
++#define BIT_RFE_SELSW0_D      GENMASK(27, 20)
+ #define REG_NOMASK_TXBT       0x1ca7
+ #define REG_ANAPAR    0x1c30
+@@ -906,6 +963,7 @@
+ #define RF18_BAND_MASK        (BIT(16) | BIT(9) | BIT(8))
+ #define RF18_CHANNEL_MASK     (MASKBYTE0)
+ #define RF18_RFSI_MASK        (BIT(18) | BIT(17))
++#define RF_RCK1_V1    0x1c
+ #define RF_RCK                0x1d
+ #define RF_MODE_TABLE_ADDR    0x30
+ #define RF_MODE_TABLE_DATA0   0x31
diff --git a/package/kernel/mac80211/patches/rtl/086-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-1-2.patch b/package/kernel/mac80211/patches/rtl/086-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-1-2.patch
new file mode 100644 (file)
index 0000000..6f42855
--- /dev/null
@@ -0,0 +1,12573 @@
+From f4debfcb1b3c14a28ec157a41e0b98be72e554a0 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:23:22 +0200
+Subject: [PATCH] wifi: rtw88: Add rtw8814a_table.c (part 1/2)
+
+This contains various tables for initialising the RTL8814A, plus TX
+power limits.
+
+Split into two patches because they are big.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/df0b8ceb-2c2f-4bda-906f-a05c7b4d424c@gmail.com
+---
+ .../wireless/realtek/rtw88/rtw8814a_table.c   | 12551 ++++++++++++++++
+ 1 file changed, 12551 insertions(+)
+ create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8814a_table.c
+
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a_table.c
+@@ -0,0 +1,12551 @@
++// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#include "main.h"
++#include "phy.h"
++#include "rtw8814a_table.h"
++
++static const u32 rtw8814a_mac[] = {
++      0x010, 0x0000007C,
++      0x014, 0x000000DB,
++      0x016, 0x00000002,
++      0x073, 0x00000010,
++      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,
++      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, 0x0000003C,
++      0x4CB, 0x0000003C,
++      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, 0x00000047,
++      0x550, 0x00000010,
++      0x551, 0x00000010,
++      0x559, 0x00000002,
++      0x55C, 0x00000064,
++      0x55D, 0x000000FF,
++      0x577, 0x00000003,
++      0x5BE, 0x00000064,
++      0x604, 0x00000001,
++      0x605, 0x00000030,
++      0x607, 0x00000001,
++      0x608, 0x0000000E,
++      0x609, 0x0000002A,
++      0x60A, 0x00000000,
++      0x60C, 0x00000018,
++      0x60D, 0x00000050,
++      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, 0x00000064,
++      0x63C, 0x0000000A,
++      0x63D, 0x0000000A,
++      0x63E, 0x0000000E,
++      0x63F, 0x0000000E,
++      0x640, 0x00000040,
++      0x642, 0x00000040,
++      0x643, 0x00000000,
++      0x652, 0x000000C8,
++      0x66E, 0x00000005,
++      0x700, 0x00000021,
++      0x701, 0x00000043,
++      0x702, 0x00000065,
++      0x703, 0x00000087,
++      0x708, 0x00000021,
++      0x709, 0x00000043,
++      0x70A, 0x00000065,
++      0x70B, 0x00000087,
++      0x718, 0x00000040,
++      0x7D5, 0x000000BC,
++      0x7D8, 0x00000028,
++      0x7D9, 0x00000000,
++      0x7DA, 0x0000000B,
++};
++
++RTW_DECL_TABLE_PHY_COND(rtw8814a_mac, rtw_phy_cfg_mac);
++
++static const u32 rtw8814a_agc[] = {
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000003,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000003,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0xA0000000,     0x00000000,
++      0x81C, 0xFF000003,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      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, 0xCF240003,
++      0x81C, 0xCE260003,
++      0x81C, 0xCD280003,
++      0x81C, 0xCC2A0003,
++      0x81C, 0xCB2C0003,
++      0x81C, 0xCA2E0003,
++      0x81C, 0xC9300003,
++      0x81C, 0xC8320003,
++      0x81C, 0xC7340003,
++      0x81C, 0xC6360003,
++      0x81C, 0xC5380003,
++      0x81C, 0xC43A0003,
++      0x81C, 0xA63C0003,
++      0x81C, 0xA53E0003,
++      0x81C, 0xA4400003,
++      0x81C, 0xA3420003,
++      0x81C, 0xA2440003,
++      0x81C, 0xA1460003,
++      0x81C, 0x86480003,
++      0x81C, 0x854A0003,
++      0x81C, 0x844C0003,
++      0x81C, 0x834E0003,
++      0x81C, 0x66500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x435C0003,
++      0x81C, 0x425E0003,
++      0x81C, 0x41600003,
++      0x81C, 0x27620003,
++      0x81C, 0x26640003,
++      0x81C, 0x25660003,
++      0x81C, 0x24680003,
++      0x81C, 0x236A0003,
++      0x81C, 0x226C0003,
++      0x81C, 0x216E0003,
++      0x81C, 0x21700003,
++      0x81C, 0x21720003,
++      0x81C, 0x21740003,
++      0x81C, 0x21760003,
++      0x81C, 0x21780003,
++      0x81C, 0x217A0003,
++      0x81C, 0x217C0003,
++      0x81C, 0x217E0003,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000003,
++      0x81C, 0xFE020003,
++      0x81C, 0xFD040003,
++      0x81C, 0xFC060003,
++      0x81C, 0xFB080003,
++      0x81C, 0xFA0A0003,
++      0x81C, 0xF90C0003,
++      0x81C, 0xF80E0003,
++      0x81C, 0xF7100003,
++      0x81C, 0xF6120003,
++      0x81C, 0xF5140003,
++      0x81C, 0xF4160003,
++      0x81C, 0xF3180003,
++      0x81C, 0xF21A0003,
++      0x81C, 0xF11C0003,
++      0x81C, 0xF01E0003,
++      0x81C, 0xEF200003,
++      0x81C, 0xEE220003,
++      0x81C, 0xED240003,
++      0x81C, 0xEC260003,
++      0x81C, 0xEB280003,
++      0x81C, 0xEA2A0003,
++      0x81C, 0xE92C0003,
++      0x81C, 0xE82E0003,
++      0x81C, 0xE7300003,
++      0x81C, 0xE6320003,
++      0x81C, 0xE5340003,
++      0x81C, 0xE4360003,
++      0x81C, 0xE3380003,
++      0x81C, 0xC53A0003,
++      0x81C, 0xC43C0003,
++      0x81C, 0xC33E0003,
++      0x81C, 0xC2400003,
++      0x81C, 0xC1420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0xA44C0003,
++      0x81C, 0xA34E0003,
++      0x81C, 0xA2500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x475C0003,
++      0x81C, 0x465E0003,
++      0x81C, 0x45600003,
++      0x81C, 0x44620003,
++      0x81C, 0x43640003,
++      0x81C, 0x42660003,
++      0x81C, 0x41680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      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, 0xE4340003,
++      0x81C, 0xE3360003,
++      0x81C, 0xC6380003,
++      0x81C, 0xC53A0003,
++      0x81C, 0xC43C0003,
++      0x81C, 0xC33E0003,
++      0x81C, 0xC2400003,
++      0x81C, 0xA9420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0xA44C0003,
++      0x81C, 0xA34E0003,
++      0x81C, 0x66500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x49580003,
++      0x81C, 0x485A0003,
++      0x81C, 0x475C0003,
++      0x81C, 0x465E0003,
++      0x81C, 0x45600003,
++      0x81C, 0x44620003,
++      0x81C, 0x43640003,
++      0x81C, 0x42660003,
++      0x81C, 0x41680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000003,
++      0x81C, 0xFE020003,
++      0x81C, 0xFD040003,
++      0x81C, 0xFC060003,
++      0x81C, 0xFB080003,
++      0x81C, 0xFA0A0003,
++      0x81C, 0xF90C0003,
++      0x81C, 0xF80E0003,
++      0x81C, 0xF7100003,
++      0x81C, 0xF6120003,
++      0x81C, 0xF5140003,
++      0x81C, 0xF4160003,
++      0x81C, 0xF3180003,
++      0x81C, 0xF21A0003,
++      0x81C, 0xF11C0003,
++      0x81C, 0xF01E0003,
++      0x81C, 0xEF200003,
++      0x81C, 0xEE220003,
++      0x81C, 0xED240003,
++      0x81C, 0xEC260003,
++      0x81C, 0xEB280003,
++      0x81C, 0xEA2A0003,
++      0x81C, 0xE92C0003,
++      0x81C, 0xE82E0003,
++      0x81C, 0xE7300003,
++      0x81C, 0xE6320003,
++      0x81C, 0xE5340003,
++      0x81C, 0xE4360003,
++      0x81C, 0xE3380003,
++      0x81C, 0xC53A0003,
++      0x81C, 0xC43C0003,
++      0x81C, 0xC33E0003,
++      0x81C, 0xC2400003,
++      0x81C, 0xC1420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0xA44C0003,
++      0x81C, 0xA34E0003,
++      0x81C, 0xA2500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x475C0003,
++      0x81C, 0x465E0003,
++      0x81C, 0x45600003,
++      0x81C, 0x44620003,
++      0x81C, 0x43640003,
++      0x81C, 0x42660003,
++      0x81C, 0x41680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      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, 0xE4340003,
++      0x81C, 0xE3360003,
++      0x81C, 0xC6380003,
++      0x81C, 0xC53A0003,
++      0x81C, 0xC43C0003,
++      0x81C, 0xC33E0003,
++      0x81C, 0xC2400003,
++      0x81C, 0xA9420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0xA44C0003,
++      0x81C, 0xA34E0003,
++      0x81C, 0x66500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x49580003,
++      0x81C, 0x485A0003,
++      0x81C, 0x475C0003,
++      0x81C, 0x465E0003,
++      0x81C, 0x45600003,
++      0x81C, 0x44620003,
++      0x81C, 0x43640003,
++      0x81C, 0x42660003,
++      0x81C, 0x41680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xDF000003,
++      0x81C, 0xDF020003,
++      0x81C, 0xDF040003,
++      0x81C, 0xDE060003,
++      0x81C, 0xDD080003,
++      0x81C, 0xDC0A0003,
++      0x81C, 0xDB0C0003,
++      0x81C, 0xDA0E0003,
++      0x81C, 0xD9100003,
++      0x81C, 0xD8120003,
++      0x81C, 0xD7140003,
++      0x81C, 0xD6160003,
++      0x81C, 0xD5180003,
++      0x81C, 0xD41A0003,
++      0x81C, 0xD31C0003,
++      0x81C, 0xD21E0003,
++      0x81C, 0xD1200003,
++      0x81C, 0xD0220003,
++      0x81C, 0xCF240003,
++      0x81C, 0xCE260003,
++      0x81C, 0xCD280003,
++      0x81C, 0xCC2A0003,
++      0x81C, 0xCB2C0003,
++      0x81C, 0xCA2E0003,
++      0x81C, 0xC9300003,
++      0x81C, 0xC8320003,
++      0x81C, 0xC7340003,
++      0x81C, 0xC6360003,
++      0x81C, 0xC5380003,
++      0x81C, 0xA73A0003,
++      0x81C, 0xA63C0003,
++      0x81C, 0xA53E0003,
++      0x81C, 0xA4400003,
++      0x81C, 0xA3420003,
++      0x81C, 0xA2440003,
++      0x81C, 0x87460003,
++      0x81C, 0x86480003,
++      0x81C, 0x854A0003,
++      0x81C, 0x844C0003,
++      0x81C, 0x834E0003,
++      0x81C, 0x82500003,
++      0x81C, 0x81520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x445C0003,
++      0x81C, 0x435E0003,
++      0x81C, 0x42600003,
++      0x81C, 0x41620003,
++      0x81C, 0x27640003,
++      0x81C, 0x26660003,
++      0x81C, 0x25680003,
++      0x81C, 0x246A0003,
++      0x81C, 0x236C0003,
++      0x81C, 0x226E0003,
++      0x81C, 0x21700003,
++      0x81C, 0x21720003,
++      0x81C, 0x21740003,
++      0x81C, 0x21760003,
++      0x81C, 0x21780003,
++      0x81C, 0x217A0003,
++      0x81C, 0x217C0003,
++      0x81C, 0x217E0003,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000003,
++      0x81C, 0xFE020003,
++      0x81C, 0xFD040003,
++      0x81C, 0xFC060003,
++      0x81C, 0xFB080003,
++      0x81C, 0xFA0A0003,
++      0x81C, 0xF90C0003,
++      0x81C, 0xF80E0003,
++      0x81C, 0xF7100003,
++      0x81C, 0xF6120003,
++      0x81C, 0xF5140003,
++      0x81C, 0xF4160003,
++      0x81C, 0xF3180003,
++      0x81C, 0xF21A0003,
++      0x81C, 0xF11C0003,
++      0x81C, 0xF01E0003,
++      0x81C, 0xEF200003,
++      0x81C, 0xEE220003,
++      0x81C, 0xED240003,
++      0x81C, 0xEC260003,
++      0x81C, 0xEB280003,
++      0x81C, 0xEA2A0003,
++      0x81C, 0xE92C0003,
++      0x81C, 0xE82E0003,
++      0x81C, 0xE7300003,
++      0x81C, 0xE6320003,
++      0x81C, 0xE5340003,
++      0x81C, 0xE4360003,
++      0x81C, 0xE3380003,
++      0x81C, 0xC53A0003,
++      0x81C, 0xC43C0003,
++      0x81C, 0xC33E0003,
++      0x81C, 0xC2400003,
++      0x81C, 0xC1420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0xA44C0003,
++      0x81C, 0xA34E0003,
++      0x81C, 0xA2500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x475C0003,
++      0x81C, 0x465E0003,
++      0x81C, 0x45600003,
++      0x81C, 0x44620003,
++      0x81C, 0x43640003,
++      0x81C, 0x42660003,
++      0x81C, 0x41680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xDF000003,
++      0x81C, 0xDF020003,
++      0x81C, 0xDF040003,
++      0x81C, 0xDE060003,
++      0x81C, 0xDD080003,
++      0x81C, 0xDC0A0003,
++      0x81C, 0xDB0C0003,
++      0x81C, 0xDA0E0003,
++      0x81C, 0xD9100003,
++      0x81C, 0xD8120003,
++      0x81C, 0xD7140003,
++      0x81C, 0xD6160003,
++      0x81C, 0xD5180003,
++      0x81C, 0xD41A0003,
++      0x81C, 0xD31C0003,
++      0x81C, 0xD21E0003,
++      0x81C, 0xD1200003,
++      0x81C, 0xD0220003,
++      0x81C, 0xCF240003,
++      0x81C, 0xCE260003,
++      0x81C, 0xCD280003,
++      0x81C, 0xCC2A0003,
++      0x81C, 0xCB2C0003,
++      0x81C, 0xCA2E0003,
++      0x81C, 0xC9300003,
++      0x81C, 0xC8320003,
++      0x81C, 0xC7340003,
++      0x81C, 0xC6360003,
++      0x81C, 0xC5380003,
++      0x81C, 0xA73A0003,
++      0x81C, 0xA63C0003,
++      0x81C, 0xA53E0003,
++      0x81C, 0xA4400003,
++      0x81C, 0xA3420003,
++      0x81C, 0xA2440003,
++      0x81C, 0x87460003,
++      0x81C, 0x86480003,
++      0x81C, 0x854A0003,
++      0x81C, 0x844C0003,
++      0x81C, 0x834E0003,
++      0x81C, 0x82500003,
++      0x81C, 0x81520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x445C0003,
++      0x81C, 0x435E0003,
++      0x81C, 0x42600003,
++      0x81C, 0x41620003,
++      0x81C, 0x27640003,
++      0x81C, 0x26660003,
++      0x81C, 0x25680003,
++      0x81C, 0x246A0003,
++      0x81C, 0x236C0003,
++      0x81C, 0x226E0003,
++      0x81C, 0x21700003,
++      0x81C, 0x21720003,
++      0x81C, 0x21740003,
++      0x81C, 0x21760003,
++      0x81C, 0x21780003,
++      0x81C, 0x217A0003,
++      0x81C, 0x217C0003,
++      0x81C, 0x217E0003,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x81C, 0xFE020003,
++      0x81C, 0xFD040003,
++      0x81C, 0xFC060003,
++      0x81C, 0xFB080003,
++      0x81C, 0xFA0A0003,
++      0x81C, 0xF90C0003,
++      0x81C, 0xF80E0003,
++      0x81C, 0xF7100003,
++      0x81C, 0xF6120003,
++      0x81C, 0xF5140003,
++      0x81C, 0xF4160003,
++      0x81C, 0xF3180003,
++      0x81C, 0xF21A0003,
++      0x81C, 0xF11C0003,
++      0x81C, 0xF01E0003,
++      0x81C, 0xEF200003,
++      0x81C, 0xEE220003,
++      0x81C, 0xED240003,
++      0x81C, 0x0F260003,
++      0x81C, 0x0E280003,
++      0x81C, 0x0D2A0003,
++      0x81C, 0x0C2C0003,
++      0x81C, 0x0B2E0003,
++      0x81C, 0x0A300003,
++      0x81C, 0x09320003,
++      0x81C, 0x08340003,
++      0x81C, 0x07360003,
++      0x81C, 0x06380003,
++      0x81C, 0x053A0003,
++      0x81C, 0x043C0003,
++      0x81C, 0x033E0003,
++      0x81C, 0x23400003,
++      0x81C, 0x22420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0xA44C0003,
++      0x81C, 0x684E0003,
++      0x81C, 0x67500003,
++      0x81C, 0x66520003,
++      0x81C, 0x65540003,
++      0x81C, 0x64560003,
++      0x81C, 0x63580003,
++      0x81C, 0x625A0003,
++      0x81C, 0x615C0003,
++      0x81C, 0x475E0003,
++      0x81C, 0x46600003,
++      0x81C, 0x45620003,
++      0x81C, 0x44640003,
++      0x81C, 0x43660003,
++      0x81C, 0x42680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000003,
++      0x81C, 0xFE020003,
++      0x81C, 0xFD040003,
++      0x81C, 0xFC060003,
++      0x81C, 0xFB080003,
++      0x81C, 0xFA0A0003,
++      0x81C, 0xF90C0003,
++      0x81C, 0xF80E0003,
++      0x81C, 0xF7100003,
++      0x81C, 0xF6120003,
++      0x81C, 0xF5140003,
++      0x81C, 0xF4160003,
++      0x81C, 0xF3180003,
++      0x81C, 0xF21A0003,
++      0x81C, 0xF11C0003,
++      0x81C, 0xF01E0003,
++      0x81C, 0xEF200003,
++      0x81C, 0xEE220003,
++      0x81C, 0xED240003,
++      0x81C, 0xEC260003,
++      0x81C, 0xEB280003,
++      0x81C, 0xEA2A0003,
++      0x81C, 0xE92C0003,
++      0x81C, 0xE72E0003,
++      0x81C, 0xE6300003,
++      0x81C, 0xE5320003,
++      0x81C, 0x08340003,
++      0x81C, 0x07360003,
++      0x81C, 0x06380003,
++      0x81C, 0x053A0003,
++      0x81C, 0x043C0003,
++      0x81C, 0x033E0003,
++      0x81C, 0x02400003,
++      0x81C, 0xA9420003,
++      0x81C, 0xA8440003,
++      0x81C, 0xA7460003,
++      0x81C, 0xA6480003,
++      0x81C, 0xA54A0003,
++      0x81C, 0x684C0003,
++      0x81C, 0x674E0003,
++      0x81C, 0x66500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x475C0003,
++      0x81C, 0x465E0003,
++      0x81C, 0x45600003,
++      0x81C, 0x44620003,
++      0x81C, 0x43640003,
++      0x81C, 0x42660003,
++      0x81C, 0x41680003,
++      0x81C, 0x416A0003,
++      0x81C, 0x416C0003,
++      0x81C, 0x416E0003,
++      0x81C, 0x41700003,
++      0x81C, 0x41720003,
++      0x81C, 0x41740003,
++      0x81C, 0x41760003,
++      0x81C, 0x41780003,
++      0x81C, 0x417A0003,
++      0x81C, 0x417C0003,
++      0x81C, 0x417E0003,
++      0xA0000000,     0x00000000,
++      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, 0xCF240003,
++      0x81C, 0xCE260003,
++      0x81C, 0xCD280003,
++      0x81C, 0xCC2A0003,
++      0x81C, 0xCB2C0003,
++      0x81C, 0xCA2E0003,
++      0x81C, 0xC9300003,
++      0x81C, 0xC8320003,
++      0x81C, 0xC7340003,
++      0x81C, 0xC6360003,
++      0x81C, 0xC5380003,
++      0x81C, 0xC43A0003,
++      0x81C, 0xA63C0003,
++      0x81C, 0xA53E0003,
++      0x81C, 0xA4400003,
++      0x81C, 0xA3420003,
++      0x81C, 0xA2440003,
++      0x81C, 0xA1460003,
++      0x81C, 0x86480003,
++      0x81C, 0x854A0003,
++      0x81C, 0x844C0003,
++      0x81C, 0x834E0003,
++      0x81C, 0x66500003,
++      0x81C, 0x65520003,
++      0x81C, 0x64540003,
++      0x81C, 0x63560003,
++      0x81C, 0x62580003,
++      0x81C, 0x615A0003,
++      0x81C, 0x435C0003,
++      0x81C, 0x425E0003,
++      0x81C, 0x41600003,
++      0x81C, 0x27620003,
++      0x81C, 0x26640003,
++      0x81C, 0x25660003,
++      0x81C, 0x24680003,
++      0x81C, 0x236A0003,
++      0x81C, 0x226C0003,
++      0x81C, 0x216E0003,
++      0x81C, 0x21700003,
++      0x81C, 0x21720003,
++      0x81C, 0x21740003,
++      0x81C, 0x21760003,
++      0x81C, 0x21780003,
++      0x81C, 0x217A0003,
++      0x81C, 0x217C0003,
++      0x81C, 0x217E0003,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xF9000103,
++      0x81C, 0xF8020103,
++      0x81C, 0xF7040103,
++      0x81C, 0xF6060103,
++      0x81C, 0xF5080103,
++      0x81C, 0xF40A0103,
++      0x81C, 0xF30C0103,
++      0x81C, 0xF20E0103,
++      0x81C, 0xF1100103,
++      0x81C, 0xF0120103,
++      0x81C, 0xEF140103,
++      0x81C, 0xEE160103,
++      0x81C, 0xED180103,
++      0x81C, 0xEC1A0103,
++      0x81C, 0xEB1C0103,
++      0x81C, 0xEA1E0103,
++      0x81C, 0xE9200103,
++      0x81C, 0xE8220103,
++      0x81C, 0xE7240103,
++      0x81C, 0xE6260103,
++      0x81C, 0xE5280103,
++      0x81C, 0xE42A0103,
++      0x81C, 0xE32C0103,
++      0x81C, 0xC32E0103,
++      0x81C, 0xC2300103,
++      0x81C, 0xC1320103,
++      0x81C, 0xA5340103,
++      0x81C, 0xA4360103,
++      0x81C, 0xA3380103,
++      0x81C, 0xA23A0103,
++      0x81C, 0xA13C0103,
++      0x81C, 0x843E0103,
++      0x81C, 0x83400103,
++      0x81C, 0x82420103,
++      0x81C, 0x81440103,
++      0x81C, 0x64460103,
++      0x81C, 0x63480103,
++      0x81C, 0x624A0103,
++      0x81C, 0x614C0103,
++      0x81C, 0x444E0103,
++      0x81C, 0x43500103,
++      0x81C, 0x42520103,
++      0x81C, 0x41540103,
++      0x81C, 0x25560103,
++      0x81C, 0x24580103,
++      0x81C, 0x235A0103,
++      0x81C, 0x065C0103,
++      0x81C, 0x055E0103,
++      0x81C, 0x04600103,
++      0x81C, 0x03620103,
++      0x81C, 0x02640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000002,     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, 0xE12E0103,
++      0x81C, 0xA5300103,
++      0x81C, 0xA4320103,
++      0x81C, 0xA3340103,
++      0x81C, 0xA2360103,
++      0x81C, 0xA1380103,
++      0x81C, 0x843A0103,
++      0x81C, 0x833C0103,
++      0x81C, 0x823E0103,
++      0x81C, 0x81400103,
++      0x81C, 0x64420103,
++      0x81C, 0x63440103,
++      0x81C, 0x62460103,
++      0x81C, 0x61480103,
++      0x81C, 0x454A0103,
++      0x81C, 0x444C0103,
++      0x81C, 0x434E0103,
++      0x81C, 0x42500103,
++      0x81C, 0x25520103,
++      0x81C, 0x24540103,
++      0x81C, 0x23560103,
++      0x81C, 0x06580103,
++      0x81C, 0x055A0103,
++      0x81C, 0x045C0103,
++      0x81C, 0x035E0103,
++      0x81C, 0x02600103,
++      0x81C, 0x01620103,
++      0x81C, 0x01640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFC000103,
++      0x81C, 0xFB020103,
++      0x81C, 0xFA040103,
++      0x81C, 0xF9060103,
++      0x81C, 0xF8080103,
++      0x81C, 0xF70A0103,
++      0x81C, 0xF60C0103,
++      0x81C, 0xF50E0103,
++      0x81C, 0xF4100103,
++      0x81C, 0xF3120103,
++      0x81C, 0xF2140103,
++      0x81C, 0xF1160103,
++      0x81C, 0xF0180103,
++      0x81C, 0xEF1A0103,
++      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, 0xE1360103,
++      0x81C, 0x87380103,
++      0x81C, 0x863A0103,
++      0x81C, 0x853C0103,
++      0x81C, 0x843E0103,
++      0x81C, 0x83400103,
++      0x81C, 0x82420103,
++      0x81C, 0x81440103,
++      0x81C, 0x64460103,
++      0x81C, 0x63480103,
++      0x81C, 0x624A0103,
++      0x81C, 0x464C0103,
++      0x81C, 0x454E0103,
++      0x81C, 0x44500103,
++      0x81C, 0x43520103,
++      0x81C, 0x26540103,
++      0x81C, 0x25560103,
++      0x81C, 0x24580103,
++      0x81C, 0x075A0103,
++      0x81C, 0x065C0103,
++      0x81C, 0x055E0103,
++      0x81C, 0x04600103,
++      0x81C, 0x03620103,
++      0x81C, 0x02640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xF9000103,
++      0x81C, 0xF8020103,
++      0x81C, 0xF7040103,
++      0x81C, 0xF6060103,
++      0x81C, 0xF5080103,
++      0x81C, 0xF40A0103,
++      0x81C, 0xF30C0103,
++      0x81C, 0xF20E0103,
++      0x81C, 0xF1100103,
++      0x81C, 0xF0120103,
++      0x81C, 0xEF140103,
++      0x81C, 0xEE160103,
++      0x81C, 0xED180103,
++      0x81C, 0xEC1A0103,
++      0x81C, 0xEB1C0103,
++      0x81C, 0xEA1E0103,
++      0x81C, 0xE9200103,
++      0x81C, 0xE8220103,
++      0x81C, 0xE7240103,
++      0x81C, 0xE6260103,
++      0x81C, 0xE5280103,
++      0x81C, 0xE42A0103,
++      0x81C, 0xE32C0103,
++      0x81C, 0xE22E0103,
++      0x81C, 0xA6300103,
++      0x81C, 0xA5320103,
++      0x81C, 0xA4340103,
++      0x81C, 0xA3360103,
++      0x81C, 0xA2380103,
++      0x81C, 0xA13A0103,
++      0x81C, 0x843C0103,
++      0x81C, 0x833E0103,
++      0x81C, 0x82400103,
++      0x81C, 0x81420103,
++      0x81C, 0x64440103,
++      0x81C, 0x63460103,
++      0x81C, 0x62480103,
++      0x81C, 0x614A0103,
++      0x81C, 0x444C0103,
++      0x81C, 0x434E0103,
++      0x81C, 0x42500103,
++      0x81C, 0x41520103,
++      0x81C, 0x25540103,
++      0x81C, 0x24560103,
++      0x81C, 0x23580103,
++      0x81C, 0x225A0103,
++      0x81C, 0x055C0103,
++      0x81C, 0x045E0103,
++      0x81C, 0x03600103,
++      0x81C, 0x02620103,
++      0x81C, 0x01640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000005,     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, 0xE1380103,
++      0x81C, 0xA33A0103,
++      0x81C, 0xA23C0103,
++      0x81C, 0xA13E0103,
++      0x81C, 0x84400103,
++      0x81C, 0x83420103,
++      0x81C, 0x82440103,
++      0x81C, 0x81460103,
++      0x81C, 0x64480103,
++      0x81C, 0x634A0103,
++      0x81C, 0x624C0103,
++      0x81C, 0x614E0103,
++      0x81C, 0x45500103,
++      0x81C, 0x44520103,
++      0x81C, 0x43540103,
++      0x81C, 0x42560103,
++      0x81C, 0x25580103,
++      0x81C, 0x245A0103,
++      0x81C, 0x235C0103,
++      0x81C, 0x065E0103,
++      0x81C, 0x05600103,
++      0x81C, 0x04620103,
++      0x81C, 0x03640103,
++      0x81C, 0x02660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000006,     0x00000000,     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, 0xE42C0103,
++      0x81C, 0xE32E0103,
++      0x81C, 0xE2300103,
++      0x81C, 0xE1320103,
++      0x81C, 0xA5340103,
++      0x81C, 0xA4360103,
++      0x81C, 0xA3380103,
++      0x81C, 0xA23A0103,
++      0x81C, 0xA13C0103,
++      0x81C, 0x843E0103,
++      0x81C, 0x83400103,
++      0x81C, 0x82420103,
++      0x81C, 0x81440103,
++      0x81C, 0x64460103,
++      0x81C, 0x63480103,
++      0x81C, 0x624A0103,
++      0x81C, 0x614C0103,
++      0x81C, 0x454E0103,
++      0x81C, 0x44500103,
++      0x81C, 0x43520103,
++      0x81C, 0x42540103,
++      0x81C, 0x41560103,
++      0x81C, 0x24580103,
++      0x81C, 0x235A0103,
++      0x81C, 0x225C0103,
++      0x81C, 0x055E0103,
++      0x81C, 0x04600103,
++      0x81C, 0x03620103,
++      0x81C, 0x02640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000103,
++      0x81C, 0xFF020103,
++      0x81C, 0xFE040103,
++      0x81C, 0xFD060103,
++      0x81C, 0xFC080103,
++      0x81C, 0xFB0A0103,
++      0x81C, 0xFA0C0103,
++      0x81C, 0xF90E0103,
++      0x81C, 0xF8100103,
++      0x81C, 0xF7120103,
++      0x81C, 0xF6140103,
++      0x81C, 0xF5160103,
++      0x81C, 0xF4180103,
++      0x81C, 0xF31A0103,
++      0x81C, 0xF21C0103,
++      0x81C, 0xF11E0103,
++      0x81C, 0xF0200103,
++      0x81C, 0xEF220103,
++      0x81C, 0xEE240103,
++      0x81C, 0xED260103,
++      0x81C, 0xEC280103,
++      0x81C, 0xEB2A0103,
++      0x81C, 0xEA2C0103,
++      0x81C, 0xE92E0103,
++      0x81C, 0xE8300103,
++      0x81C, 0xE7320103,
++      0x81C, 0xE6340103,
++      0x81C, 0xE5360103,
++      0x81C, 0xE4380103,
++      0x81C, 0xE33A0103,
++      0x81C, 0xA53C0103,
++      0x81C, 0xA43E0103,
++      0x81C, 0xA3400103,
++      0x81C, 0xA2420103,
++      0x81C, 0xA1440103,
++      0x81C, 0x85460103,
++      0x81C, 0x84480103,
++      0x81C, 0x834A0103,
++      0x81C, 0x824C0103,
++      0x81C, 0x814E0103,
++      0x81C, 0x64500103,
++      0x81C, 0x63520103,
++      0x81C, 0x62540103,
++      0x81C, 0x44560103,
++      0x81C, 0x43580103,
++      0x81C, 0x425A0103,
++      0x81C, 0x265C0103,
++      0x81C, 0x255E0103,
++      0x81C, 0x24600103,
++      0x81C, 0x07620103,
++      0x81C, 0x06640103,
++      0x81C, 0x05660103,
++      0x81C, 0x04680103,
++      0x81C, 0x036A0103,
++      0x81C, 0x026C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000008,     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, 0xE12E0103,
++      0x81C, 0xA4300103,
++      0x81C, 0xA3320103,
++      0x81C, 0xA2340103,
++      0x81C, 0xA1360103,
++      0x81C, 0x85380103,
++      0x81C, 0x843A0103,
++      0x81C, 0x833C0103,
++      0x81C, 0x823E0103,
++      0x81C, 0x65400103,
++      0x81C, 0x64420103,
++      0x81C, 0x63440103,
++      0x81C, 0x62460103,
++      0x81C, 0x45480103,
++      0x81C, 0x444A0103,
++      0x81C, 0x434C0103,
++      0x81C, 0x264E0103,
++      0x81C, 0x25500103,
++      0x81C, 0x24520103,
++      0x81C, 0x08540103,
++      0x81C, 0x07560103,
++      0x81C, 0x06580103,
++      0x81C, 0x055A0103,
++      0x81C, 0x045C0103,
++      0x81C, 0x035E0103,
++      0x81C, 0x02600103,
++      0x81C, 0x01620103,
++      0x81C, 0x01640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000103,
++      0x81C, 0xFF020103,
++      0x81C, 0xFE040103,
++      0x81C, 0xFD060103,
++      0x81C, 0xFC080103,
++      0x81C, 0xFB0A0103,
++      0x81C, 0xFA0C0103,
++      0x81C, 0xF90E0103,
++      0x81C, 0xF8100103,
++      0x81C, 0xF7120103,
++      0x81C, 0xF6140103,
++      0x81C, 0xF5160103,
++      0x81C, 0xF4180103,
++      0x81C, 0xF31A0103,
++      0x81C, 0xF21C0103,
++      0x81C, 0xF11E0103,
++      0x81C, 0xF0200103,
++      0x81C, 0xEF220103,
++      0x81C, 0xEE240103,
++      0x81C, 0xED260103,
++      0x81C, 0xEC280103,
++      0x81C, 0xEB2A0103,
++      0x81C, 0xEA2C0103,
++      0x81C, 0xE92E0103,
++      0x81C, 0xE8300103,
++      0x81C, 0xE7320103,
++      0x81C, 0xE6340103,
++      0x81C, 0xE5360103,
++      0x81C, 0xE4380103,
++      0x81C, 0xE33A0103,
++      0x81C, 0xA53C0103,
++      0x81C, 0xA43E0103,
++      0x81C, 0xA3400103,
++      0x81C, 0xA2420103,
++      0x81C, 0xA1440103,
++      0x81C, 0x85460103,
++      0x81C, 0x84480103,
++      0x81C, 0x834A0103,
++      0x81C, 0x824C0103,
++      0x81C, 0x814E0103,
++      0x81C, 0x64500103,
++      0x81C, 0x63520103,
++      0x81C, 0x62540103,
++      0x81C, 0x44560103,
++      0x81C, 0x43580103,
++      0x81C, 0x425A0103,
++      0x81C, 0x265C0103,
++      0x81C, 0x255E0103,
++      0x81C, 0x24600103,
++      0x81C, 0x07620103,
++      0x81C, 0x06640103,
++      0x81C, 0x05660103,
++      0x81C, 0x04680103,
++      0x81C, 0x036A0103,
++      0x81C, 0x026C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xF9000103,
++      0x81C, 0xF8020103,
++      0x81C, 0xF7040103,
++      0x81C, 0xF6060103,
++      0x81C, 0xF5080103,
++      0x81C, 0xF40A0103,
++      0x81C, 0xF30C0103,
++      0x81C, 0xF20E0103,
++      0x81C, 0xF1100103,
++      0x81C, 0xF0120103,
++      0x81C, 0xEF140103,
++      0x81C, 0xEE160103,
++      0x81C, 0xED180103,
++      0x81C, 0xEC1A0103,
++      0x81C, 0xEB1C0103,
++      0x81C, 0xEA1E0103,
++      0x81C, 0xE9200103,
++      0x81C, 0xE8220103,
++      0x81C, 0xE7240103,
++      0x81C, 0xE6260103,
++      0x81C, 0xE5280103,
++      0x81C, 0xE42A0103,
++      0x81C, 0xE32C0103,
++      0x81C, 0xE22E0103,
++      0x81C, 0xA6300103,
++      0x81C, 0xA5320103,
++      0x81C, 0xA4340103,
++      0x81C, 0xA3360103,
++      0x81C, 0xA2380103,
++      0x81C, 0xA13A0103,
++      0x81C, 0x843C0103,
++      0x81C, 0x833E0103,
++      0x81C, 0x82400103,
++      0x81C, 0x81420103,
++      0x81C, 0x64440103,
++      0x81C, 0x63460103,
++      0x81C, 0x62480103,
++      0x81C, 0x614A0103,
++      0x81C, 0x444C0103,
++      0x81C, 0x434E0103,
++      0x81C, 0x42500103,
++      0x81C, 0x41520103,
++      0x81C, 0x25540103,
++      0x81C, 0x24560103,
++      0x81C, 0x23580103,
++      0x81C, 0x225A0103,
++      0x81C, 0x055C0103,
++      0x81C, 0x045E0103,
++      0x81C, 0x03600103,
++      0x81C, 0x02620103,
++      0x81C, 0x01640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0x9000000b,     0x00000000,     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, 0xCC1C0103,
++      0x81C, 0xCB1E0103,
++      0x81C, 0xCA200103,
++      0x81C, 0xE9220103,
++      0x81C, 0xE8240103,
++      0x81C, 0xE7260103,
++      0x81C, 0xE6280103,
++      0x81C, 0xE42A0103,
++      0x81C, 0xE32C0103,
++      0x81C, 0xE22E0103,
++      0x81C, 0xA7300103,
++      0x81C, 0xA6320103,
++      0x81C, 0xA5340103,
++      0x81C, 0xA4360103,
++      0x81C, 0xA3380103,
++      0x81C, 0xA23A0103,
++      0x81C, 0xA13C0103,
++      0x81C, 0x843E0103,
++      0x81C, 0x83400103,
++      0x81C, 0x82420103,
++      0x81C, 0x65440103,
++      0x81C, 0x64460103,
++      0x81C, 0x63480103,
++      0x81C, 0x624A0103,
++      0x81C, 0x614C0103,
++      0x81C, 0x444E0103,
++      0x81C, 0x43500103,
++      0x81C, 0x42520103,
++      0x81C, 0x41540103,
++      0x81C, 0x24560103,
++      0x81C, 0x23580103,
++      0x81C, 0x055A0103,
++      0x81C, 0x045C0103,
++      0x81C, 0x035E0103,
++      0x81C, 0x02600103,
++      0x81C, 0x01620103,
++      0x81C, 0x01640103,
++      0x81C, 0x01660103,
++      0x81C, 0x01680103,
++      0x81C, 0x016A0103,
++      0x81C, 0x016C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0xA0000000,     0x00000000,
++      0x81C, 0xFF000103,
++      0x81C, 0xFE020103,
++      0x81C, 0xFD040103,
++      0x81C, 0xFC060103,
++      0x81C, 0xFB080103,
++      0x81C, 0xFA0A0103,
++      0x81C, 0xF90C0103,
++      0x81C, 0xF80E0103,
++      0x81C, 0xF7100103,
++      0x81C, 0xF6120103,
++      0x81C, 0xF5140103,
++      0x81C, 0xF4160103,
++      0x81C, 0xF3180103,
++      0x81C, 0xF21A0103,
++      0x81C, 0xF11C0103,
++      0x81C, 0xF01E0103,
++      0x81C, 0xEF200103,
++      0x81C, 0xEE220103,
++      0x81C, 0xED240103,
++      0x81C, 0xEC260103,
++      0x81C, 0xEB280103,
++      0x81C, 0xEA2A0103,
++      0x81C, 0xE92C0103,
++      0x81C, 0xE82E0103,
++      0x81C, 0xE7300103,
++      0x81C, 0xE6320103,
++      0x81C, 0xE5340103,
++      0x81C, 0xE4360103,
++      0x81C, 0xE3380103,
++      0x81C, 0xE23A0103,
++      0x81C, 0xE13C0103,
++      0x81C, 0xA43E0103,
++      0x81C, 0xA3400103,
++      0x81C, 0xA2420103,
++      0x81C, 0xA1440103,
++      0x81C, 0x86460103,
++      0x81C, 0x85480103,
++      0x81C, 0x844A0103,
++      0x81C, 0x834C0103,
++      0x81C, 0x824E0103,
++      0x81C, 0x81500103,
++      0x81C, 0x64520103,
++      0x81C, 0x63540103,
++      0x81C, 0x62560103,
++      0x81C, 0x61580103,
++      0x81C, 0x435A0103,
++      0x81C, 0x425C0103,
++      0x81C, 0x415E0103,
++      0x81C, 0x25600103,
++      0x81C, 0x24620103,
++      0x81C, 0x06640103,
++      0x81C, 0x05660103,
++      0x81C, 0x04680103,
++      0x81C, 0x036A0103,
++      0x81C, 0x026C0103,
++      0x81C, 0x016E0103,
++      0x81C, 0x01700103,
++      0x81C, 0x01720103,
++      0x81C, 0x01740103,
++      0x81C, 0x01760103,
++      0x81C, 0x01780103,
++      0x81C, 0x017A0103,
++      0x81C, 0x017C0103,
++      0x81C, 0x017E0103,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFA000203,
++      0x81C, 0xF9020203,
++      0x81C, 0xF8040203,
++      0x81C, 0xF7060203,
++      0x81C, 0xF6080203,
++      0x81C, 0xF50A0203,
++      0x81C, 0xF40C0203,
++      0x81C, 0xF30E0203,
++      0x81C, 0xF2100203,
++      0x81C, 0xF1120203,
++      0x81C, 0xF0140203,
++      0x81C, 0xEF160203,
++      0x81C, 0xEE180203,
++      0x81C, 0xED1A0203,
++      0x81C, 0xEC1C0203,
++      0x81C, 0xEB1E0203,
++      0x81C, 0xEA200203,
++      0x81C, 0xE9220203,
++      0x81C, 0xE8240203,
++      0x81C, 0xE7260203,
++      0x81C, 0xE6280203,
++      0x81C, 0xE52A0203,
++      0x81C, 0xE42C0203,
++      0x81C, 0xE32E0203,
++      0x81C, 0xE2300203,
++      0x81C, 0xE1320203,
++      0x81C, 0xA5340203,
++      0x81C, 0xA4360203,
++      0x81C, 0xA3380203,
++      0x81C, 0xA23A0203,
++      0x81C, 0xA13C0203,
++      0x81C, 0x843E0203,
++      0x81C, 0x83400203,
++      0x81C, 0x82420203,
++      0x81C, 0x81440203,
++      0x81C, 0x63460203,
++      0x81C, 0x62480203,
++      0x81C, 0x614A0203,
++      0x81C, 0x464C0203,
++      0x81C, 0x454E0203,
++      0x81C, 0x44500203,
++      0x81C, 0x43520203,
++      0x81C, 0x42540203,
++      0x81C, 0x41560203,
++      0x81C, 0x24580203,
++      0x81C, 0x235A0203,
++      0x81C, 0x065C0203,
++      0x81C, 0x055E0203,
++      0x81C, 0x04600203,
++      0x81C, 0x03620203,
++      0x81C, 0x02640203,
++      0x81C, 0x01660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000002,     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, 0xE22C0203,
++      0x81C, 0xE12E0203,
++      0x81C, 0xA6300203,
++      0x81C, 0xA5320203,
++      0x81C, 0xA4340203,
++      0x81C, 0xA3360203,
++      0x81C, 0xA2380203,
++      0x81C, 0x853A0203,
++      0x81C, 0x843C0203,
++      0x81C, 0x833E0203,
++      0x81C, 0x82400203,
++      0x81C, 0x81420203,
++      0x81C, 0x64440203,
++      0x81C, 0x63460203,
++      0x81C, 0x62480203,
++      0x81C, 0x614A0203,
++      0x81C, 0x444C0203,
++      0x81C, 0x434E0203,
++      0x81C, 0x42500203,
++      0x81C, 0x25520203,
++      0x81C, 0x24540203,
++      0x81C, 0x23560203,
++      0x81C, 0x06580203,
++      0x81C, 0x055A0203,
++      0x81C, 0x045C0203,
++      0x81C, 0x035E0203,
++      0x81C, 0x02600203,
++      0x81C, 0x01620203,
++      0x81C, 0x01640203,
++      0x81C, 0x01660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000003,     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, 0x87380203,
++      0x81C, 0x863A0203,
++      0x81C, 0x853C0203,
++      0x81C, 0x843E0203,
++      0x81C, 0x83400203,
++      0x81C, 0x82420203,
++      0x81C, 0x81440203,
++      0x81C, 0x64460203,
++      0x81C, 0x63480203,
++      0x81C, 0x624A0203,
++      0x81C, 0x474C0203,
++      0x81C, 0x464E0203,
++      0x81C, 0x45500203,
++      0x81C, 0x44520203,
++      0x81C, 0x43540203,
++      0x81C, 0x42560203,
++      0x81C, 0x24580203,
++      0x81C, 0x235A0203,
++      0x81C, 0x075C0203,
++      0x81C, 0x065E0203,
++      0x81C, 0x05600203,
++      0x81C, 0x04620203,
++      0x81C, 0x03640203,
++      0x81C, 0x02660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000004,     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, 0xE22C0203,
++      0x81C, 0xE12E0203,
++      0x81C, 0xA6300203,
++      0x81C, 0xA5320203,
++      0x81C, 0xA4340203,
++      0x81C, 0xA3360203,
++      0x81C, 0xA2380203,
++      0x81C, 0xA13A0203,
++      0x81C, 0x843C0203,
++      0x81C, 0x833E0203,
++      0x81C, 0x82400203,
++      0x81C, 0x81420203,
++      0x81C, 0x64440203,
++      0x81C, 0x63460203,
++      0x81C, 0x62480203,
++      0x81C, 0x614A0203,
++      0x81C, 0x444C0203,
++      0x81C, 0x434E0203,
++      0x81C, 0x42500203,
++      0x81C, 0x41520203,
++      0x81C, 0x25540203,
++      0x81C, 0x24560203,
++      0x81C, 0x23580203,
++      0x81C, 0x065A0203,
++      0x81C, 0x055C0203,
++      0x81C, 0x045E0203,
++      0x81C, 0x03600203,
++      0x81C, 0x02620203,
++      0x81C, 0x01640203,
++      0x81C, 0x01660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000005,     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, 0xE1340203,
++      0x81C, 0xA5360203,
++      0x81C, 0xA4380203,
++      0x81C, 0xA33A0203,
++      0x81C, 0xA23C0203,
++      0x81C, 0x843E0203,
++      0x81C, 0x83400203,
++      0x81C, 0x82420203,
++      0x81C, 0x81440203,
++      0x81C, 0x64460203,
++      0x81C, 0x63480203,
++      0x81C, 0x624A0203,
++      0x81C, 0x614C0203,
++      0x81C, 0x474E0203,
++      0x81C, 0x46500203,
++      0x81C, 0x45520203,
++      0x81C, 0x44540203,
++      0x81C, 0x43560203,
++      0x81C, 0x25580203,
++      0x81C, 0x245A0203,
++      0x81C, 0x235C0203,
++      0x81C, 0x075E0203,
++      0x81C, 0x06600203,
++      0x81C, 0x05620203,
++      0x81C, 0x04640203,
++      0x81C, 0x03660203,
++      0x81C, 0x02680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000006,     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, 0xA5380203,
++      0x81C, 0xA43A0203,
++      0x81C, 0xA33C0203,
++      0x81C, 0x853E0203,
++      0x81C, 0x84400203,
++      0x81C, 0x83420203,
++      0x81C, 0x82440203,
++      0x81C, 0x81460203,
++      0x81C, 0x64480203,
++      0x81C, 0x634A0203,
++      0x81C, 0x624C0203,
++      0x81C, 0x614E0203,
++      0x81C, 0x46500203,
++      0x81C, 0x45520203,
++      0x81C, 0x44540203,
++      0x81C, 0x43560203,
++      0x81C, 0x25580203,
++      0x81C, 0x245A0203,
++      0x81C, 0x235C0203,
++      0x81C, 0x075E0203,
++      0x81C, 0x06600203,
++      0x81C, 0x05620203,
++      0x81C, 0x04640203,
++      0x81C, 0x03660203,
++      0x81C, 0x02680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000203,
++      0x81C, 0xFF020203,
++      0x81C, 0xFE040203,
++      0x81C, 0xFD060203,
++      0x81C, 0xFC080203,
++      0x81C, 0xFB0A0203,
++      0x81C, 0xFA0C0203,
++      0x81C, 0xF90E0203,
++      0x81C, 0xF8100203,
++      0x81C, 0xF7120203,
++      0x81C, 0xF6140203,
++      0x81C, 0xF5160203,
++      0x81C, 0xF4180203,
++      0x81C, 0xF31A0203,
++      0x81C, 0xF21C0203,
++      0x81C, 0xF11E0203,
++      0x81C, 0xF0200203,
++      0x81C, 0xEF220203,
++      0x81C, 0xEE240203,
++      0x81C, 0xED260203,
++      0x81C, 0xEC280203,
++      0x81C, 0xEB2A0203,
++      0x81C, 0xEA2C0203,
++      0x81C, 0xE92E0203,
++      0x81C, 0xE8300203,
++      0x81C, 0xE7320203,
++      0x81C, 0xE6340203,
++      0x81C, 0xE5360203,
++      0x81C, 0xE4380203,
++      0x81C, 0xE33A0203,
++      0x81C, 0xE23C0203,
++      0x81C, 0xE13E0203,
++      0x81C, 0xA4400203,
++      0x81C, 0xA3420203,
++      0x81C, 0xA2440203,
++      0x81C, 0xA1460203,
++      0x81C, 0x84480203,
++      0x81C, 0x834A0203,
++      0x81C, 0x824C0203,
++      0x81C, 0x814E0203,
++      0x81C, 0x64500203,
++      0x81C, 0x63520203,
++      0x81C, 0x62540203,
++      0x81C, 0x61560203,
++      0x81C, 0x45580203,
++      0x81C, 0x445A0203,
++      0x81C, 0x435C0203,
++      0x81C, 0x425E0203,
++      0x81C, 0x24600203,
++      0x81C, 0x23620203,
++      0x81C, 0x07640203,
++      0x81C, 0x06660203,
++      0x81C, 0x05680203,
++      0x81C, 0x046A0203,
++      0x81C, 0x036C0203,
++      0x81C, 0x026E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000008,     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, 0xE22A0203,
++      0x81C, 0xA62C0203,
++      0x81C, 0xA52E0203,
++      0x81C, 0xA4300203,
++      0x81C, 0xA3320203,
++      0x81C, 0xA2340203,
++      0x81C, 0xA1360203,
++      0x81C, 0x86380203,
++      0x81C, 0x853A0203,
++      0x81C, 0x843C0203,
++      0x81C, 0x833E0203,
++      0x81C, 0x65400203,
++      0x81C, 0x64420203,
++      0x81C, 0x63440203,
++      0x81C, 0x46460203,
++      0x81C, 0x45480203,
++      0x81C, 0x444A0203,
++      0x81C, 0x434C0203,
++      0x81C, 0x264E0203,
++      0x81C, 0x25500203,
++      0x81C, 0x24520203,
++      0x81C, 0x08540203,
++      0x81C, 0x07560203,
++      0x81C, 0x06580203,
++      0x81C, 0x055A0203,
++      0x81C, 0x045C0203,
++      0x81C, 0x035E0203,
++      0x81C, 0x02600203,
++      0x81C, 0x01620203,
++      0x81C, 0x01640203,
++      0x81C, 0x01660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFF000203,
++      0x81C, 0xFF020203,
++      0x81C, 0xFE040203,
++      0x81C, 0xFD060203,
++      0x81C, 0xFC080203,
++      0x81C, 0xFB0A0203,
++      0x81C, 0xFA0C0203,
++      0x81C, 0xF90E0203,
++      0x81C, 0xF8100203,
++      0x81C, 0xF7120203,
++      0x81C, 0xF6140203,
++      0x81C, 0xF5160203,
++      0x81C, 0xF4180203,
++      0x81C, 0xF31A0203,
++      0x81C, 0xF21C0203,
++      0x81C, 0xF11E0203,
++      0x81C, 0xF0200203,
++      0x81C, 0xEF220203,
++      0x81C, 0xEE240203,
++      0x81C, 0xED260203,
++      0x81C, 0xEC280203,
++      0x81C, 0xEB2A0203,
++      0x81C, 0xEA2C0203,
++      0x81C, 0xE92E0203,
++      0x81C, 0xE8300203,
++      0x81C, 0xE7320203,
++      0x81C, 0xE6340203,
++      0x81C, 0xE5360203,
++      0x81C, 0xE4380203,
++      0x81C, 0xE33A0203,
++      0x81C, 0xE23C0203,
++      0x81C, 0xE13E0203,
++      0x81C, 0xA4400203,
++      0x81C, 0xA3420203,
++      0x81C, 0xA2440203,
++      0x81C, 0xA1460203,
++      0x81C, 0x84480203,
++      0x81C, 0x834A0203,
++      0x81C, 0x824C0203,
++      0x81C, 0x814E0203,
++      0x81C, 0x64500203,
++      0x81C, 0x63520203,
++      0x81C, 0x62540203,
++      0x81C, 0x61560203,
++      0x81C, 0x45580203,
++      0x81C, 0x445A0203,
++      0x81C, 0x435C0203,
++      0x81C, 0x425E0203,
++      0x81C, 0x24600203,
++      0x81C, 0x23620203,
++      0x81C, 0x07640203,
++      0x81C, 0x06660203,
++      0x81C, 0x05680203,
++      0x81C, 0x046A0203,
++      0x81C, 0x036C0203,
++      0x81C, 0x026E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x9000000a,     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, 0xE22C0203,
++      0x81C, 0xE12E0203,
++      0x81C, 0xA6300203,
++      0x81C, 0xA5320203,
++      0x81C, 0xA4340203,
++      0x81C, 0xA3360203,
++      0x81C, 0xA2380203,
++      0x81C, 0xA13A0203,
++      0x81C, 0x843C0203,
++      0x81C, 0x833E0203,
++      0x81C, 0x82400203,
++      0x81C, 0x81420203,
++      0x81C, 0x64440203,
++      0x81C, 0x63460203,
++      0x81C, 0x62480203,
++      0x81C, 0x614A0203,
++      0x81C, 0x444C0203,
++      0x81C, 0x434E0203,
++      0x81C, 0x42500203,
++      0x81C, 0x41520203,
++      0x81C, 0x25540203,
++      0x81C, 0x24560203,
++      0x81C, 0x23580203,
++      0x81C, 0x065A0203,
++      0x81C, 0x055C0203,
++      0x81C, 0x045E0203,
++      0x81C, 0x03600203,
++      0x81C, 0x02620203,
++      0x81C, 0x01640203,
++      0x81C, 0x01660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0x9000000b,     0x00000000,     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, 0xCE160203,
++      0x81C, 0xCD180203,
++      0x81C, 0xCC1A0203,
++      0x81C, 0xCB1C0203,
++      0x81C, 0xCA1E0203,
++      0x81C, 0xC9200203,
++      0x81C, 0xC8220203,
++      0x81C, 0xC7240203,
++      0x81C, 0xC6260203,
++      0x81C, 0xC5280203,
++      0x81C, 0xC42A0203,
++      0x81C, 0xC32C0203,
++      0x81C, 0xC22E0203,
++      0x81C, 0xC1300203,
++      0x81C, 0xA5320203,
++      0x81C, 0xA4340203,
++      0x81C, 0xA3360203,
++      0x81C, 0xA2380203,
++      0x81C, 0xA13A0203,
++      0x81C, 0x853C0203,
++      0x81C, 0x843E0203,
++      0x81C, 0x83400203,
++      0x81C, 0x82420203,
++      0x81C, 0x81440203,
++      0x81C, 0x64460203,
++      0x81C, 0x63480203,
++      0x81C, 0x624A0203,
++      0x81C, 0x614C0203,
++      0x81C, 0x444E0203,
++      0x81C, 0x43500203,
++      0x81C, 0x42520203,
++      0x81C, 0x41540203,
++      0x81C, 0x24560203,
++      0x81C, 0x23580203,
++      0x81C, 0x075A0203,
++      0x81C, 0x065C0203,
++      0x81C, 0x055E0203,
++      0x81C, 0x04600203,
++      0x81C, 0x03620203,
++      0x81C, 0x02640203,
++      0x81C, 0x01660203,
++      0x81C, 0x01680203,
++      0x81C, 0x016A0203,
++      0x81C, 0x016C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0xA0000000,     0x00000000,
++      0x81C, 0xFF000203,
++      0x81C, 0xFF020203,
++      0x81C, 0xFE040203,
++      0x81C, 0xFD060203,
++      0x81C, 0xFC080203,
++      0x81C, 0xFB0A0203,
++      0x81C, 0xFA0C0203,
++      0x81C, 0xF90E0203,
++      0x81C, 0xF8100203,
++      0x81C, 0xF7120203,
++      0x81C, 0xF6140203,
++      0x81C, 0xF5160203,
++      0x81C, 0xF4180203,
++      0x81C, 0xF31A0203,
++      0x81C, 0xF21C0203,
++      0x81C, 0xF11E0203,
++      0x81C, 0xF0200203,
++      0x81C, 0xEF220203,
++      0x81C, 0xEE240203,
++      0x81C, 0xED260203,
++      0x81C, 0xEC280203,
++      0x81C, 0xEB2A0203,
++      0x81C, 0xEA2C0203,
++      0x81C, 0xE92E0203,
++      0x81C, 0xE8300203,
++      0x81C, 0xE7320203,
++      0x81C, 0xE6340203,
++      0x81C, 0xE5360203,
++      0x81C, 0xE4380203,
++      0x81C, 0xE33A0203,
++      0x81C, 0xE23C0203,
++      0x81C, 0xE13E0203,
++      0x81C, 0xA4400203,
++      0x81C, 0xA3420203,
++      0x81C, 0xA2440203,
++      0x81C, 0xA1460203,
++      0x81C, 0x85480203,
++      0x81C, 0x844A0203,
++      0x81C, 0x834C0203,
++      0x81C, 0x824E0203,
++      0x81C, 0x81500203,
++      0x81C, 0x64520203,
++      0x81C, 0x63540203,
++      0x81C, 0x62560203,
++      0x81C, 0x61580203,
++      0x81C, 0x445A0203,
++      0x81C, 0x435C0203,
++      0x81C, 0x425E0203,
++      0x81C, 0x25600203,
++      0x81C, 0x24620203,
++      0x81C, 0x06640203,
++      0x81C, 0x05660203,
++      0x81C, 0x04680203,
++      0x81C, 0x036A0203,
++      0x81C, 0x026C0203,
++      0x81C, 0x016E0203,
++      0x81C, 0x01700203,
++      0x81C, 0x01720203,
++      0x81C, 0x01740203,
++      0x81C, 0x01760203,
++      0x81C, 0x01780203,
++      0x81C, 0x017A0203,
++      0x81C, 0x017C0203,
++      0x81C, 0x017E0203,
++      0xB0000000,     0x00000000,
++      0x80000001,     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, 0xE8200303,
++      0x81C, 0xE7220303,
++      0x81C, 0xE6240303,
++      0x81C, 0xE5260303,
++      0x81C, 0xE4280303,
++      0x81C, 0xE32A0303,
++      0x81C, 0xE22C0303,
++      0x81C, 0xE12E0303,
++      0x81C, 0xA6300303,
++      0x81C, 0xA5320303,
++      0x81C, 0xA4340303,
++      0x81C, 0xA3360303,
++      0x81C, 0xA2380303,
++      0x81C, 0xA13A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x82400303,
++      0x81C, 0x81420303,
++      0x81C, 0x64440303,
++      0x81C, 0x63460303,
++      0x81C, 0x62480303,
++      0x81C, 0x614A0303,
++      0x81C, 0x454C0303,
++      0x81C, 0x444E0303,
++      0x81C, 0x43500303,
++      0x81C, 0x42520303,
++      0x81C, 0x41540303,
++      0x81C, 0x24560303,
++      0x81C, 0x23580303,
++      0x81C, 0x065A0303,
++      0x81C, 0x055C0303,
++      0x81C, 0x045E0303,
++      0x81C, 0x03600303,
++      0x81C, 0x02620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000002,     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, 0xE81E0303,
++      0x81C, 0xE7200303,
++      0x81C, 0xE6220303,
++      0x81C, 0xE5240303,
++      0x81C, 0xE4260303,
++      0x81C, 0xE3280303,
++      0x81C, 0xC32A0303,
++      0x81C, 0xC22C0303,
++      0x81C, 0xC12E0303,
++      0x81C, 0xA5300303,
++      0x81C, 0xA4320303,
++      0x81C, 0xA3340303,
++      0x81C, 0xA2360303,
++      0x81C, 0xA1380303,
++      0x81C, 0x853A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x82400303,
++      0x81C, 0x81420303,
++      0x81C, 0x64440303,
++      0x81C, 0x63460303,
++      0x81C, 0x62480303,
++      0x81C, 0x614A0303,
++      0x81C, 0x454C0303,
++      0x81C, 0x444E0303,
++      0x81C, 0x43500303,
++      0x81C, 0x25520303,
++      0x81C, 0x24540303,
++      0x81C, 0x23560303,
++      0x81C, 0x06580303,
++      0x81C, 0x055A0303,
++      0x81C, 0x045C0303,
++      0x81C, 0x035E0303,
++      0x81C, 0x02600303,
++      0x81C, 0x01620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000003,     0x00000000,     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, 0xE9200303,
++      0x81C, 0xE8220303,
++      0x81C, 0xE7240303,
++      0x81C, 0xE6260303,
++      0x81C, 0xE5280303,
++      0x81C, 0xE42A0303,
++      0x81C, 0xE32C0303,
++      0x81C, 0xE22E0303,
++      0x81C, 0xE1300303,
++      0x81C, 0xA4320303,
++      0x81C, 0xA3340303,
++      0x81C, 0xA2360303,
++      0x81C, 0xA1380303,
++      0x81C, 0x853A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x82400303,
++      0x81C, 0x81420303,
++      0x81C, 0x64440303,
++      0x81C, 0x63460303,
++      0x81C, 0x62480303,
++      0x81C, 0x614A0303,
++      0x81C, 0x444C0303,
++      0x81C, 0x434E0303,
++      0x81C, 0x42500303,
++      0x81C, 0x25520303,
++      0x81C, 0x24540303,
++      0x81C, 0x23560303,
++      0x81C, 0x07580303,
++      0x81C, 0x065A0303,
++      0x81C, 0x055C0303,
++      0x81C, 0x045E0303,
++      0x81C, 0x03600303,
++      0x81C, 0x02620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000004,     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, 0xE81E0303,
++      0x81C, 0xE7200303,
++      0x81C, 0xE6220303,
++      0x81C, 0xE5240303,
++      0x81C, 0xE4260303,
++      0x81C, 0xE3280303,
++      0x81C, 0xE22A0303,
++      0x81C, 0xE12C0303,
++      0x81C, 0xA72E0303,
++      0x81C, 0xA6300303,
++      0x81C, 0xA5320303,
++      0x81C, 0xA4340303,
++      0x81C, 0xA3360303,
++      0x81C, 0xA2380303,
++      0x81C, 0xA13A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x82400303,
++      0x81C, 0x81420303,
++      0x81C, 0x64440303,
++      0x81C, 0x63460303,
++      0x81C, 0x62480303,
++      0x81C, 0x614A0303,
++      0x81C, 0x454C0303,
++      0x81C, 0x444E0303,
++      0x81C, 0x43500303,
++      0x81C, 0x42520303,
++      0x81C, 0x41540303,
++      0x81C, 0x24560303,
++      0x81C, 0x23580303,
++      0x81C, 0x065A0303,
++      0x81C, 0x055C0303,
++      0x81C, 0x045E0303,
++      0x81C, 0x03600303,
++      0x81C, 0x02620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000005,     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, 0xC2360303,
++      0x81C, 0xC1380303,
++      0x81C, 0xA33A0303,
++      0x81C, 0xA23C0303,
++      0x81C, 0x853E0303,
++      0x81C, 0x84400303,
++      0x81C, 0x83420303,
++      0x81C, 0x66440303,
++      0x81C, 0x65460303,
++      0x81C, 0x64480303,
++      0x81C, 0x634A0303,
++      0x81C, 0x624C0303,
++      0x81C, 0x614E0303,
++      0x81C, 0x45500303,
++      0x81C, 0x44520303,
++      0x81C, 0x43540303,
++      0x81C, 0x42560303,
++      0x81C, 0x25580303,
++      0x81C, 0x245A0303,
++      0x81C, 0x235C0303,
++      0x81C, 0x065E0303,
++      0x81C, 0x05600303,
++      0x81C, 0x04620303,
++      0x81C, 0x03640303,
++      0x81C, 0x02660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000006,     0x00000000,     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, 0xE9200303,
++      0x81C, 0xE8220303,
++      0x81C, 0xE7240303,
++      0x81C, 0xE6260303,
++      0x81C, 0xE5280303,
++      0x81C, 0xE42A0303,
++      0x81C, 0xE32C0303,
++      0x81C, 0xE22E0303,
++      0x81C, 0xE1300303,
++      0x81C, 0xA6320303,
++      0x81C, 0xA5340303,
++      0x81C, 0xA4360303,
++      0x81C, 0xA3380303,
++      0x81C, 0xA23A0303,
++      0x81C, 0xA13C0303,
++      0x81C, 0x853E0303,
++      0x81C, 0x84400303,
++      0x81C, 0x83420303,
++      0x81C, 0x82440303,
++      0x81C, 0x81460303,
++      0x81C, 0x64480303,
++      0x81C, 0x634A0303,
++      0x81C, 0x624C0303,
++      0x81C, 0x614E0303,
++      0x81C, 0x44500303,
++      0x81C, 0x43520303,
++      0x81C, 0x42540303,
++      0x81C, 0x41560303,
++      0x81C, 0x25580303,
++      0x81C, 0x245A0303,
++      0x81C, 0x235C0303,
++      0x81C, 0x055E0303,
++      0x81C, 0x04600303,
++      0x81C, 0x03620303,
++      0x81C, 0x02640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000303,
++      0x81C, 0xFD020303,
++      0x81C, 0xFC040303,
++      0x81C, 0xFB060303,
++      0x81C, 0xFA080303,
++      0x81C, 0xF90A0303,
++      0x81C, 0xF80C0303,
++      0x81C, 0xF70E0303,
++      0x81C, 0xF6100303,
++      0x81C, 0xF5120303,
++      0x81C, 0xF4140303,
++      0x81C, 0xF3160303,
++      0x81C, 0xF2180303,
++      0x81C, 0xF11A0303,
++      0x81C, 0xF01C0303,
++      0x81C, 0xEF1E0303,
++      0x81C, 0xEE200303,
++      0x81C, 0xED220303,
++      0x81C, 0xEC240303,
++      0x81C, 0xEB260303,
++      0x81C, 0xEA280303,
++      0x81C, 0xE92A0303,
++      0x81C, 0xE82C0303,
++      0x81C, 0xE72E0303,
++      0x81C, 0xE6300303,
++      0x81C, 0xE5320303,
++      0x81C, 0xE4340303,
++      0x81C, 0xE3360303,
++      0x81C, 0xC3380303,
++      0x81C, 0xC23A0303,
++      0x81C, 0xC13C0303,
++      0x81C, 0xA43E0303,
++      0x81C, 0xA3400303,
++      0x81C, 0xA2420303,
++      0x81C, 0xA1440303,
++      0x81C, 0x85460303,
++      0x81C, 0x84480303,
++      0x81C, 0x834A0303,
++      0x81C, 0x824C0303,
++      0x81C, 0x814E0303,
++      0x81C, 0x64500303,
++      0x81C, 0x63520303,
++      0x81C, 0x62540303,
++      0x81C, 0x61560303,
++      0x81C, 0x44580303,
++      0x81C, 0x435A0303,
++      0x81C, 0x425C0303,
++      0x81C, 0x265E0303,
++      0x81C, 0x25600303,
++      0x81C, 0x24620303,
++      0x81C, 0x06640303,
++      0x81C, 0x05660303,
++      0x81C, 0x04680303,
++      0x81C, 0x036A0303,
++      0x81C, 0x026C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000008,     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, 0xE81E0303,
++      0x81C, 0xE7200303,
++      0x81C, 0xE6220303,
++      0x81C, 0xE5240303,
++      0x81C, 0xE4260303,
++      0x81C, 0xE3280303,
++      0x81C, 0xE22A0303,
++      0x81C, 0xA62C0303,
++      0x81C, 0xA52E0303,
++      0x81C, 0xA4300303,
++      0x81C, 0xA3320303,
++      0x81C, 0xA2340303,
++      0x81C, 0x87360303,
++      0x81C, 0x86380303,
++      0x81C, 0x853A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x66400303,
++      0x81C, 0x65420303,
++      0x81C, 0x64440303,
++      0x81C, 0x45460303,
++      0x81C, 0x44480303,
++      0x81C, 0x434A0303,
++      0x81C, 0x274C0303,
++      0x81C, 0x264E0303,
++      0x81C, 0x25500303,
++      0x81C, 0x24520303,
++      0x81C, 0x23540303,
++      0x81C, 0x08560303,
++      0x81C, 0x07580303,
++      0x81C, 0x065A0303,
++      0x81C, 0x055C0303,
++      0x81C, 0x045E0303,
++      0x81C, 0x03600303,
++      0x81C, 0x02620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++      0x81C, 0xFE000303,
++      0x81C, 0xFD020303,
++      0x81C, 0xFC040303,
++      0x81C, 0xFB060303,
++      0x81C, 0xFA080303,
++      0x81C, 0xF90A0303,
++      0x81C, 0xF80C0303,
++      0x81C, 0xF70E0303,
++      0x81C, 0xF6100303,
++      0x81C, 0xF5120303,
++      0x81C, 0xF4140303,
++      0x81C, 0xF3160303,
++      0x81C, 0xF2180303,
++      0x81C, 0xF11A0303,
++      0x81C, 0xF01C0303,
++      0x81C, 0xEF1E0303,
++      0x81C, 0xEE200303,
++      0x81C, 0xED220303,
++      0x81C, 0xEC240303,
++      0x81C, 0xEB260303,
++      0x81C, 0xEA280303,
++      0x81C, 0xE92A0303,
++      0x81C, 0xE82C0303,
++      0x81C, 0xE72E0303,
++      0x81C, 0xE6300303,
++      0x81C, 0xE5320303,
++      0x81C, 0xE4340303,
++      0x81C, 0xE3360303,
++      0x81C, 0xC3380303,
++      0x81C, 0xC23A0303,
++      0x81C, 0xC13C0303,
++      0x81C, 0xA43E0303,
++      0x81C, 0xA3400303,
++      0x81C, 0xA2420303,
++      0x81C, 0xA1440303,
++      0x81C, 0x85460303,
++      0x81C, 0x84480303,
++      0x81C, 0x834A0303,
++      0x81C, 0x824C0303,
++      0x81C, 0x814E0303,
++      0x81C, 0x64500303,
++      0x81C, 0x63520303,
++      0x81C, 0x62540303,
++      0x81C, 0x61560303,
++      0x81C, 0x44580303,
++      0x81C, 0x435A0303,
++      0x81C, 0x425C0303,
++      0x81C, 0x265E0303,
++      0x81C, 0x25600303,
++      0x81C, 0x24620303,
++      0x81C, 0x06640303,
++      0x81C, 0x05660303,
++      0x81C, 0x04680303,
++      0x81C, 0x036A0303,
++      0x81C, 0x026C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x9000000a,     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, 0xE81E0303,
++      0x81C, 0xE7200303,
++      0x81C, 0xE6220303,
++      0x81C, 0xE5240303,
++      0x81C, 0xE4260303,
++      0x81C, 0xE3280303,
++      0x81C, 0xE22A0303,
++      0x81C, 0xE12C0303,
++      0x81C, 0xA72E0303,
++      0x81C, 0xA6300303,
++      0x81C, 0xA5320303,
++      0x81C, 0xA4340303,
++      0x81C, 0xA3360303,
++      0x81C, 0xA2380303,
++      0x81C, 0xA13A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x82400303,
++      0x81C, 0x81420303,
++      0x81C, 0x64440303,
++      0x81C, 0x63460303,
++      0x81C, 0x62480303,
++      0x81C, 0x614A0303,
++      0x81C, 0x454C0303,
++      0x81C, 0x444E0303,
++      0x81C, 0x43500303,
++      0x81C, 0x42520303,
++      0x81C, 0x41540303,
++      0x81C, 0x24560303,
++      0x81C, 0x23580303,
++      0x81C, 0x065A0303,
++      0x81C, 0x055C0303,
++      0x81C, 0x045E0303,
++      0x81C, 0x03600303,
++      0x81C, 0x02620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0x9000000b,     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, 0xAF1C0303,
++      0x81C, 0xAE1E0303,
++      0x81C, 0xAD200303,
++      0x81C, 0xAC220303,
++      0x81C, 0xAB240303,
++      0x81C, 0xAA260303,
++      0x81C, 0xC5280303,
++      0x81C, 0xC42A0303,
++      0x81C, 0xC32C0303,
++      0x81C, 0xC22E0303,
++      0x81C, 0xA5300303,
++      0x81C, 0xA4320303,
++      0x81C, 0xA3340303,
++      0x81C, 0xA2360303,
++      0x81C, 0xA1380303,
++      0x81C, 0x853A0303,
++      0x81C, 0x843C0303,
++      0x81C, 0x833E0303,
++      0x81C, 0x82400303,
++      0x81C, 0x81420303,
++      0x81C, 0x64440303,
++      0x81C, 0x63460303,
++      0x81C, 0x62480303,
++      0x81C, 0x614A0303,
++      0x81C, 0x444C0303,
++      0x81C, 0x434E0303,
++      0x81C, 0x42500303,
++      0x81C, 0x41520303,
++      0x81C, 0x25540303,
++      0x81C, 0x24560303,
++      0x81C, 0x06580303,
++      0x81C, 0x055A0303,
++      0x81C, 0x045C0303,
++      0x81C, 0x035E0303,
++      0x81C, 0x02600303,
++      0x81C, 0x01620303,
++      0x81C, 0x01640303,
++      0x81C, 0x01660303,
++      0x81C, 0x01680303,
++      0x81C, 0x016A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0xA0000000,     0x00000000,
++      0x81C, 0xFD000303,
++      0x81C, 0xFC020303,
++      0x81C, 0xFB040303,
++      0x81C, 0xFA060303,
++      0x81C, 0xF9080303,
++      0x81C, 0xF80A0303,
++      0x81C, 0xF70C0303,
++      0x81C, 0xF60E0303,
++      0x81C, 0xF5100303,
++      0x81C, 0xF4120303,
++      0x81C, 0xF3140303,
++      0x81C, 0xF2160303,
++      0x81C, 0xF1180303,
++      0x81C, 0xF01A0303,
++      0x81C, 0xEF1C0303,
++      0x81C, 0xEE1E0303,
++      0x81C, 0xED200303,
++      0x81C, 0xEC220303,
++      0x81C, 0xEB240303,
++      0x81C, 0xEA260303,
++      0x81C, 0xE9280303,
++      0x81C, 0xE82A0303,
++      0x81C, 0xE72C0303,
++      0x81C, 0xE62E0303,
++      0x81C, 0xE5300303,
++      0x81C, 0xE4320303,
++      0x81C, 0xE3340303,
++      0x81C, 0xE2360303,
++      0x81C, 0xE1380303,
++      0x81C, 0xA53A0303,
++      0x81C, 0xA43C0303,
++      0x81C, 0xA33E0303,
++      0x81C, 0xA2400303,
++      0x81C, 0xA1420303,
++      0x81C, 0x87440303,
++      0x81C, 0x86460303,
++      0x81C, 0x85480303,
++      0x81C, 0x844A0303,
++      0x81C, 0x834C0303,
++      0x81C, 0x824E0303,
++      0x81C, 0x81500303,
++      0x81C, 0x64520303,
++      0x81C, 0x63540303,
++      0x81C, 0x62560303,
++      0x81C, 0x61580303,
++      0x81C, 0x435A0303,
++      0x81C, 0x425C0303,
++      0x81C, 0x415E0303,
++      0x81C, 0x07600303,
++      0x81C, 0x06620303,
++      0x81C, 0x05640303,
++      0x81C, 0x04660303,
++      0x81C, 0x03680303,
++      0x81C, 0x026A0303,
++      0x81C, 0x016C0303,
++      0x81C, 0x016E0303,
++      0x81C, 0x01700303,
++      0x81C, 0x01720303,
++      0x81C, 0x01740303,
++      0x81C, 0x01760303,
++      0x81C, 0x01780303,
++      0x81C, 0x017A0303,
++      0x81C, 0x017C0303,
++      0x81C, 0x017E0303,
++      0xB0000000,     0x00000000,
++      0xC50, 0x00000022,
++      0xC50, 0x00000020,
++      0xE50, 0x00000022,
++      0xE50, 0x00000020,
++      0x1850, 0x00000022,
++      0x1850, 0x00000020,
++      0x1A50, 0x00000022,
++      0x1A50, 0x00000020,
++};
++
++RTW_DECL_TABLE_PHY_COND(rtw8814a_agc, rtw_phy_cfg_agc);
++
++static const u32 rtw8814a_bb[] = {
++      0x800, 0x9020D010,
++      0x804, 0x08011280,
++      0x808, 0x0E0282FF,
++      0x80C, 0x1000002F,
++      0x80000003,     0x00000000,     0x40000000,     0x00000000,
++      0x810, 0x33303265,
++      0xA0000000,     0x00000000,
++      0x810, 0x33303265,
++      0xB0000000,     0x00000000,
++      0x814, 0x020C3D10,
++      0x818, 0x04A10385,
++      0x820, 0x00000000,
++      0x824, 0x00033E40,
++      0x828, 0x00000000,
++      0x82C, 0x73985170,
++      0x830, 0x79A0EA08,
++      0x834, 0x042E708A,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0x838, 0x86667640,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x838, 0x86667641,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x838, 0x86667641,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x838, 0x86667641,
++      0xA0000000,     0x00000000,
++      0x838, 0x86667640,
++      0xB0000000,     0x00000000,
++      0x83C, 0x9798B9B9,
++      0x840, 0x17578F60,
++      0x844, 0x4BBDFCDE,
++      0x848, 0x5CD07F8B,
++      0x84C, 0x6CFBF7B5,
++      0x850, 0x28834706,
++      0x854, 0x0001520C,
++      0x858, 0x4060C000,
++      0x85C, 0x74210368,
++      0x860, 0x6929C321,
++      0x864, 0x79727432,
++      0x868, 0x8CA7A314,
++      0x86C, 0x438C2878,
++      0x870, 0x44444444,
++      0x874, 0x21612C2E,
++      0x878, 0x00003152,
++      0x87C, 0x000FC000,
++      0x8A0, 0x00000013,
++      0x8A4, 0x7F7F7F7F,
++      0x8A8, 0xA202033E,
++      0x8AC, 0xF40F550A,
++      0x8B0, 0x00000600,
++      0x8B4, 0x000FC080,
++      0x8B8, 0xEC0057FF,
++      0x8BC, 0x8CA520C3,
++      0x8C0, 0x3FF00020,
++      0x8C4, 0x44C00000,
++      0x80000009,     0x00000000,     0x40000000,     0x00000000,
++      0x8C8, 0x80025969,
++      0xA0000000,     0x00000000,
++      0x8C8, 0x80025167,
++      0xB0000000,     0x00000000,
++      0x8CC, 0x08250492,
++      0x8D0, 0x0000B800,
++      0x8D4, 0x940008A0,
++      0x8D8, 0x290B5612,
++      0x8DC, 0x00000000,
++      0x8E0, 0x32316407,
++      0x8E4, 0x4A092925,
++      0x8E8, 0xFFFFC42C,
++      0x8EC, 0x99999999,
++      0x8F0, 0x00009999,
++      0x8F4, 0x00F80FA1,
++      0x8F8, 0x400082C0,
++      0x8FC, 0x00000000,
++      0x900, 0x00400700,
++      0x90C, 0x09004000,
++      0x910, 0x0000FC00,
++      0x914, 0xD6400404,
++      0x918, 0x1C1028C0,
++      0x91C, 0x64B11A1C,
++      0x920, 0xE0767233,
++      0x924, 0x055AA500,
++      0x928, 0x4AB0E4E4,
++      0x92C, 0xFFFE0000,
++      0x930, 0xFFFFFFFE,
++      0x934, 0x001FFFFF,
++      0x938, 0x00008400,
++      0x93C, 0x932C0642,
++      0x940, 0x093E9360,
++      0x944, 0x08000000,
++      0x948, 0x04000000,
++      0x950, 0x02010080,
++      0x954, 0x86510080,
++      0x960, 0x00000000,
++      0x964, 0x00000000,
++      0x968, 0x00000000,
++      0x96C, 0x00000000,
++      0x970, 0x801FFFFF,
++      0x978, 0x00000000,
++      0x97C, 0x00000000,
++      0x980, 0x00000000,
++      0x984, 0x00000000,
++      0x988, 0x00000000,
++      0x98C, 0x03440000,
++      0x990, 0x27100000,
++      0x994, 0xFFFF0100,
++      0x998, 0xFFFFFF5C,
++      0x99C, 0xFFFFFFFF,
++      0x9A0, 0x000000FF,
++      0x9A4, 0x00080080,
++      0x9A8, 0x0C2F0000,
++      0x9AC, 0x00560000,
++      0x9B0, 0x81081008,
++      0x9B4, 0x00000000,
++      0x9B8, 0x01081008,
++      0x9BC, 0x01081008,
++      0x9D0, 0x00000000,
++      0x9D4, 0x00000000,
++      0x9D8, 0x00000000,
++      0x9DC, 0x00000000,
++      0x9E4, 0x00000002,
++      0x9E8, 0x000022D5,
++      0x9FC, 0xEFFFF7FF,
++      0xB00, 0xE3100000,
++      0xB04, 0x0000B000,
++      0xB0C, 0x31EAA006,
++      0xB5C, 0x41CFFFFF,
++      0xC00, 0x00000007,
++      0xC04, 0x00042020,
++      0xC08, 0x80410231,
++      0xC0C, 0x00000000,
++      0xC10, 0x00000100,
++      0xC14, 0x01000000,
++      0xC1C, 0x40000053,
++      0xC50, 0x00000020,
++      0xC54, 0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0xC58, 0x3C0A0C14,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0xC58, 0x3C0A0C14,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0xC58, 0x3C0A0C14,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xC58, 0x3C0A0C14,
++      0xA0000000,     0x00000000,
++      0xC58, 0x3C020C14,
++      0xB0000000,     0x00000000,
++      0xC5C, 0x0D000058,
++      0xC60, 0x1B800000,
++      0xC60, 0x0B800001,
++      0xC60, 0x05800002,
++      0xC60, 0x07800003,
++      0xC60, 0x1A800004,
++      0xC60, 0x0B800005,
++      0xC60, 0x05800006,
++      0xC60, 0x0E800007,
++      0xC60, 0x1A800008,
++      0xC60, 0x0B800009,
++      0xC60, 0x1580000A,
++      0xC60, 0x0880000B,
++      0xC60, 0x1A80000C,
++      0xC60, 0x0B80000D,
++      0xC60, 0x0580000E,
++      0xC60, 0x0E80000F,
++      0xC60, 0x1A800010,
++      0xC60, 0x0B800011,
++      0xC60, 0x15800012,
++      0xC60, 0x08800013,
++      0xC60, 0x1A800014,
++      0xC60, 0x0B800015,
++      0xC60, 0x05800016,
++      0xC60, 0x07800017,
++      0xC60, 0x1A800018,
++      0xC60, 0x0B800019,
++      0xC60, 0x1580001A,
++      0xC60, 0x0880001B,
++      0xC60, 0x1B80001C,
++      0xC60, 0x0B80001D,
++      0xC60, 0x0580001E,
++      0xC60, 0x0780001F,
++      0xC60, 0x1B800020,
++      0xC60, 0x0B800021,
++      0xC60, 0x05800022,
++      0xC60, 0x07800023,
++      0xC60, 0x1B800024,
++      0xC60, 0x0B800025,
++      0xC60, 0x05800026,
++      0xC60, 0x07800027,
++      0xC60, 0x1B800028,
++      0xC60, 0x0B800029,
++      0xC60, 0x0580002A,
++      0xC60, 0x0780002B,
++      0xC60, 0x1B800030,
++      0xC60, 0x0B800031,
++      0xC60, 0x05800032,
++      0xC60, 0x00800033,
++      0xC60, 0x1B800034,
++      0xC60, 0x0B800035,
++      0xC60, 0x05800036,
++      0xC60, 0x00800037,
++      0xC60, 0x1B800038,
++      0xC60, 0x0B800039,
++      0xC60, 0x0580003A,
++      0xC60, 0x0E80803B,
++      0xC94, 0x01000401,
++      0xC98, 0x00188000,
++      0xCA0, 0x00002929,
++      0xCA4, 0x08040201,
++      0xCA8, 0x80402010,
++      0xCAC, 0x77777000,
++      0xCB0, 0x54775477,
++      0xCB4, 0x54775477,
++      0xCB8, 0x00500000,
++      0xCBC, 0x77700000,
++      0xCC0, 0x00000010,
++      0xCC8, 0x00000010,
++      0xE00, 0x00000007,
++      0xE04, 0x00042020,
++      0xE08, 0x80410231,
++      0xE0C, 0x00000000,
++      0xE10, 0x00000100,
++      0xE14, 0x01000000,
++      0xE1C, 0x40000053,
++      0xE50, 0x00000020,
++      0xE54, 0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0xE58, 0x3C0A0C14,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0xE58, 0x3C0A0C14,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0xE58, 0x3C0A0C14,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xE58, 0x3C0A0C14,
++      0xA0000000,     0x00000000,
++      0xE58, 0x3C020C14,
++      0xB0000000,     0x00000000,
++      0xE5C, 0x0D000058,
++      0xE60, 0x1B800000,
++      0xE60, 0x0B800001,
++      0xE60, 0x05800002,
++      0xE60, 0x07800003,
++      0xE60, 0x1A800004,
++      0xE60, 0x0B800005,
++      0xE60, 0x05800006,
++      0xE60, 0x0E800007,
++      0xE60, 0x1A800008,
++      0xE60, 0x0B800009,
++      0xE60, 0x1580000A,
++      0xE60, 0x0880000B,
++      0xE60, 0x1A80000C,
++      0xE60, 0x0B80000D,
++      0xE60, 0x0580000E,
++      0xE60, 0x0E80000F,
++      0xE60, 0x1A800010,
++      0xE60, 0x0B800011,
++      0xE60, 0x15800012,
++      0xE60, 0x08800013,
++      0xE60, 0x1A800014,
++      0xE60, 0x0B800015,
++      0xE60, 0x05800016,
++      0xE60, 0x07800017,
++      0xE60, 0x1A800018,
++      0xE60, 0x0B800019,
++      0xE60, 0x1580001A,
++      0xE60, 0x0880001B,
++      0xE60, 0x1B80001C,
++      0xE60, 0x0B80001D,
++      0xE60, 0x0580001E,
++      0xE60, 0x0780001F,
++      0xE60, 0x1B800020,
++      0xE60, 0x0B800021,
++      0xE60, 0x05800022,
++      0xE60, 0x07800023,
++      0xE60, 0x1B800024,
++      0xE60, 0x0B800025,
++      0xE60, 0x05800026,
++      0xE60, 0x07800027,
++      0xE60, 0x1B800028,
++      0xE60, 0x0B800029,
++      0xE60, 0x0580002A,
++      0xE60, 0x0780002B,
++      0xE60, 0x1B800030,
++      0xE60, 0x0B800031,
++      0xE60, 0x05800032,
++      0xE60, 0x00800033,
++      0xE60, 0x1B800034,
++      0xE60, 0x0B800035,
++      0xE60, 0x05800036,
++      0xE60, 0x00800037,
++      0xE60, 0x1B800038,
++      0xE60, 0x0B800039,
++      0xE60, 0x0580003A,
++      0xE60, 0x0E80803B,
++      0xE94, 0x01000401,
++      0xE98, 0x00188000,
++      0xEA0, 0x00002929,
++      0xEA4, 0x08040201,
++      0xEA8, 0x80402010,
++      0xEAC, 0x77777000,
++      0xEB0, 0x54775477,
++      0xEB4, 0x54775477,
++      0xEB8, 0x00500000,
++      0xEBC, 0x77700000,
++      0x1800, 0x00000007,
++      0x1804, 0x00042020,
++      0x1808, 0x80410231,
++      0x180C, 0x00000000,
++      0x1810, 0x00000100,
++      0x1814, 0x01000000,
++      0x181C, 0x40000053,
++      0x1850, 0x00000020,
++      0x1854, 0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1858, 0x3C0A0C14,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1858, 0x3C0A0C14,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1858, 0x3C0A0C14,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1858, 0x3C0A0C14,
++      0xA0000000,     0x00000000,
++      0x1858, 0x3C020C14,
++      0xB0000000,     0x00000000,
++      0x185C, 0x0D000058,
++      0x1860, 0x1B800000,
++      0x1860, 0x0B800001,
++      0x1860, 0x05800002,
++      0x1860, 0x07800003,
++      0x1860, 0x1A800004,
++      0x1860, 0x0B800005,
++      0x1860, 0x05800006,
++      0x1860, 0x0E800007,
++      0x1860, 0x1A800008,
++      0x1860, 0x0B800009,
++      0x1860, 0x1580000A,
++      0x1860, 0x0880000B,
++      0x1860, 0x1A80000C,
++      0x1860, 0x0B80000D,
++      0x1860, 0x0580000E,
++      0x1860, 0x0E80000F,
++      0x1860, 0x1A800010,
++      0x1860, 0x0B800011,
++      0x1860, 0x15800012,
++      0x1860, 0x08800013,
++      0x1860, 0x1A800014,
++      0x1860, 0x0B800015,
++      0x1860, 0x05800016,
++      0x1860, 0x07800017,
++      0x1860, 0x1A800018,
++      0x1860, 0x0B800019,
++      0x1860, 0x1580001A,
++      0x1860, 0x0880001B,
++      0x1860, 0x1B80001C,
++      0x1860, 0x0B80001D,
++      0x1860, 0x0580001E,
++      0x1860, 0x0780001F,
++      0x1860, 0x1B800020,
++      0x1860, 0x0B800021,
++      0x1860, 0x05800022,
++      0x1860, 0x07800023,
++      0x1860, 0x1B800024,
++      0x1860, 0x0B800025,
++      0x1860, 0x05800026,
++      0x1860, 0x07800027,
++      0x1860, 0x1B800028,
++      0x1860, 0x0B800029,
++      0x1860, 0x0580002A,
++      0x1860, 0x0780002B,
++      0x1860, 0x1B800030,
++      0x1860, 0x0B800031,
++      0x1860, 0x05800032,
++      0x1860, 0x00800033,
++      0x1860, 0x1B800034,
++      0x1860, 0x0B800035,
++      0x1860, 0x05800036,
++      0x1860, 0x00800037,
++      0x1860, 0x1B800038,
++      0x1860, 0x0B800039,
++      0x1860, 0x0580003A,
++      0x1860, 0x0E80803B,
++      0x1894, 0x01000401,
++      0x1898, 0x00188000,
++      0x18A0, 0x00002929,
++      0x18A4, 0x08040201,
++      0x18A8, 0x80402010,
++      0x18AC, 0x77777000,
++      0x18B0, 0x54775477,
++      0x18B4, 0x54775477,
++      0x18B8, 0x00500000,
++      0x18BC, 0x77700000,
++      0x1A00, 0x00000007,
++      0x1A04, 0x00042020,
++      0x1A08, 0x80410231,
++      0x1A0C, 0x00000000,
++      0x1A10, 0x00000100,
++      0x1A14, 0x01000000,
++      0x1A1C, 0x40000053,
++      0x1A50, 0x00000020,
++      0x1A54, 0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1A58, 0x3C0A0C14,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1A58, 0x3C0A0C14,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1A58, 0x3C0A0C14,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1A58, 0x3C0A0C14,
++      0xA0000000,     0x00000000,
++      0x1A58, 0x3C020C14,
++      0xB0000000,     0x00000000,
++      0x1A5C, 0x0D000058,
++      0x1A60, 0x1B800000,
++      0x1A60, 0x0B800001,
++      0x1A60, 0x05800002,
++      0x1A60, 0x07800003,
++      0x1A60, 0x1A800004,
++      0x1A60, 0x0B800005,
++      0x1A60, 0x05800006,
++      0x1A60, 0x0E800007,
++      0x1A60, 0x1A800008,
++      0x1A60, 0x0B800009,
++      0x1A60, 0x1580000A,
++      0x1A60, 0x0880000B,
++      0x1A60, 0x1A80000C,
++      0x1A60, 0x0B80000D,
++      0x1A60, 0x0580000E,
++      0x1A60, 0x0E80000F,
++      0x1A60, 0x1A800010,
++      0x1A60, 0x0B800011,
++      0x1A60, 0x15800012,
++      0x1A60, 0x08800013,
++      0x1A60, 0x1A800014,
++      0x1A60, 0x0B800015,
++      0x1A60, 0x05800016,
++      0x1A60, 0x07800017,
++      0x1A60, 0x1A800018,
++      0x1A60, 0x0B800019,
++      0x1A60, 0x1580001A,
++      0x1A60, 0x0880001B,
++      0x1A60, 0x1B80001C,
++      0x1A60, 0x0B80001D,
++      0x1A60, 0x0580001E,
++      0x1A60, 0x0780001F,
++      0x1A60, 0x1B800020,
++      0x1A60, 0x0B800021,
++      0x1A60, 0x05800022,
++      0x1A60, 0x07800023,
++      0x1A60, 0x1B800024,
++      0x1A60, 0x0B800025,
++      0x1A60, 0x05800026,
++      0x1A60, 0x07800027,
++      0x1A60, 0x1B800028,
++      0x1A60, 0x0B800029,
++      0x1A60, 0x0580002A,
++      0x1A60, 0x0780002B,
++      0x1A60, 0x1B800030,
++      0x1A60, 0x0B800031,
++      0x1A60, 0x05800032,
++      0x1A60, 0x00800033,
++      0x1A60, 0x1B800034,
++      0x1A60, 0x0B800035,
++      0x1A60, 0x05800036,
++      0x1A60, 0x00800037,
++      0x1A60, 0x1B800038,
++      0x1A60, 0x0B800039,
++      0x1A60, 0x0580003A,
++      0x1A60, 0x0E80803B,
++      0x1A94, 0x01000401,
++      0x1A98, 0x00188000,
++      0x1AA0, 0x00002929,
++      0x1AA4, 0x08040201,
++      0x1AA8, 0x80402010,
++      0x1AAC, 0x77777000,
++      0x1AB0, 0x54775477,
++      0x1AB4, 0x54775477,
++      0x1AB8, 0x00500000,
++      0x1ABC, 0x77700000,
++      0x1904, 0x00030000,
++      0x1914, 0x00030000,
++      0x1984, 0x03000000,
++      0x1988, 0x00000087,
++      0x198C, 0x00000007,
++      0x1990, 0xFFAA5500,
++      0x1994, 0x00000077,
++      0x1998, 0x12801000,
++      0x1998, 0x12801000,
++      0x1998, 0x12801001,
++      0x1998, 0x12801002,
++      0x1998, 0x12801003,
++      0x1998, 0x12801004,
++      0x1998, 0x12801005,
++      0x1998, 0x12801006,
++      0x1998, 0x12801007,
++      0x1998, 0x12801008,
++      0x1998, 0x12801009,
++      0x1998, 0x1280100A,
++      0x1998, 0x1280100B,
++      0x1998, 0x1280100C,
++      0x1998, 0x1280100D,
++      0x1998, 0x1280100E,
++      0x1998, 0x1280100F,
++      0x1998, 0x12801010,
++      0x1998, 0x12801011,
++      0x1998, 0x12801012,
++      0x1998, 0x12801013,
++      0x1998, 0x12801014,
++      0x1998, 0x12801015,
++      0x1998, 0x12801016,
++      0x1998, 0x12801017,
++      0x1998, 0x12801018,
++      0x1998, 0x12801019,
++      0x1998, 0x1280101A,
++      0x1998, 0x1280101B,
++      0x1998, 0x1280101C,
++      0x1998, 0x1280101D,
++      0x1998, 0x1280101E,
++      0x1998, 0x1280101F,
++      0x1998, 0x12801020,
++      0x1998, 0x12801021,
++      0x1998, 0x12801022,
++      0x1998, 0x12801023,
++      0x1998, 0x1280102C,
++      0x1998, 0x1280102D,
++      0x1998, 0x1280102E,
++      0x1998, 0x1280102F,
++      0x1998, 0x12801030,
++      0x1998, 0x12801031,
++      0x1998, 0x12801032,
++      0x1998, 0x12801033,
++      0x1998, 0x12801034,
++      0x1998, 0x12801035,
++      0x1998, 0x12801036,
++      0x1998, 0x12801037,
++      0x1998, 0x12801038,
++      0x1998, 0x12801039,
++      0x1998, 0x1280103A,
++      0x1998, 0x1280103B,
++      0x1998, 0x1280103C,
++      0x1998, 0x1280103D,
++      0x1998, 0x1280103E,
++      0x1998, 0x1280103F,
++      0x1998, 0x12801040,
++      0x1998, 0x12801041,
++      0x1998, 0x12801042,
++      0x1998, 0x12801043,
++      0x1998, 0x12801044,
++      0x1998, 0x12801045,
++      0x1998, 0x12801046,
++      0x1998, 0x12801047,
++      0x1998, 0x12801048,
++      0x1998, 0x12801049,
++      0x1998, 0x12801100,
++      0x1998, 0x12801101,
++      0x1998, 0x12801102,
++      0x1998, 0x12801103,
++      0x1998, 0x12801104,
++      0x1998, 0x12801105,
++      0x1998, 0x12801106,
++      0x1998, 0x12801107,
++      0x1998, 0x12801108,
++      0x1998, 0x12801109,
++      0x1998, 0x1280110A,
++      0x1998, 0x1280110B,
++      0x1998, 0x1280110C,
++      0x1998, 0x1280110D,
++      0x1998, 0x1280110E,
++      0x1998, 0x1280110F,
++      0x1998, 0x12801110,
++      0x1998, 0x12801111,
++      0x1998, 0x12801112,
++      0x1998, 0x12801113,
++      0x1998, 0x12801114,
++      0x1998, 0x12801115,
++      0x1998, 0x12801116,
++      0x1998, 0x12801117,
++      0x1998, 0x12801118,
++      0x1998, 0x12801119,
++      0x1998, 0x1280111A,
++      0x1998, 0x1280111B,
++      0x1998, 0x1280111C,
++      0x1998, 0x1280111D,
++      0x1998, 0x1280111E,
++      0x1998, 0x1280111F,
++      0x1998, 0x12801120,
++      0x1998, 0x12801121,
++      0x1998, 0x12801122,
++      0x1998, 0x12801123,
++      0x1998, 0x1280112C,
++      0x1998, 0x1280112D,
++      0x1998, 0x1280112E,
++      0x1998, 0x1280112F,
++      0x1998, 0x12801130,
++      0x1998, 0x12801131,
++      0x1998, 0x12801132,
++      0x1998, 0x12801133,
++      0x1998, 0x12801134,
++      0x1998, 0x12801135,
++      0x1998, 0x12801136,
++      0x1998, 0x12801137,
++      0x1998, 0x12801138,
++      0x1998, 0x12801139,
++      0x1998, 0x1280113A,
++      0x1998, 0x1280113B,
++      0x1998, 0x1280113C,
++      0x1998, 0x1280113D,
++      0x1998, 0x1280113E,
++      0x1998, 0x1280113F,
++      0x1998, 0x12801140,
++      0x1998, 0x12801141,
++      0x1998, 0x12801142,
++      0x1998, 0x12801143,
++      0x1998, 0x12801144,
++      0x1998, 0x12801145,
++      0x1998, 0x12801146,
++      0x1998, 0x12801147,
++      0x1998, 0x12801148,
++      0x1998, 0x12801149,
++      0x1998, 0x12801200,
++      0x1998, 0x12801201,
++      0x1998, 0x12801202,
++      0x1998, 0x12801203,
++      0x1998, 0x12801204,
++      0x1998, 0x12801205,
++      0x1998, 0x12801206,
++      0x1998, 0x12801207,
++      0x1998, 0x12801208,
++      0x1998, 0x12801209,
++      0x1998, 0x1280120A,
++      0x1998, 0x1280120B,
++      0x1998, 0x1280120C,
++      0x1998, 0x1280120D,
++      0x1998, 0x1280120E,
++      0x1998, 0x1280120F,
++      0x1998, 0x12801210,
++      0x1998, 0x12801211,
++      0x1998, 0x12801212,
++      0x1998, 0x12801213,
++      0x1998, 0x12801214,
++      0x1998, 0x12801215,
++      0x1998, 0x12801216,
++      0x1998, 0x12801217,
++      0x1998, 0x12801218,
++      0x1998, 0x12801219,
++      0x1998, 0x1280121A,
++      0x1998, 0x1280121B,
++      0x1998, 0x1280121C,
++      0x1998, 0x1280121D,
++      0x1998, 0x1280121E,
++      0x1998, 0x1280121F,
++      0x1998, 0x12801220,
++      0x1998, 0x12801221,
++      0x1998, 0x12801222,
++      0x1998, 0x12801223,
++      0x1998, 0x1280122C,
++      0x1998, 0x1280122D,
++      0x1998, 0x1280122E,
++      0x1998, 0x1280122F,
++      0x1998, 0x12801230,
++      0x1998, 0x12801231,
++      0x1998, 0x12801232,
++      0x1998, 0x12801233,
++      0x1998, 0x12801234,
++      0x1998, 0x12801235,
++      0x1998, 0x12801236,
++      0x1998, 0x12801237,
++      0x1998, 0x12801238,
++      0x1998, 0x12801239,
++      0x1998, 0x1280123A,
++      0x1998, 0x1280123B,
++      0x1998, 0x1280123C,
++      0x1998, 0x1280123D,
++      0x1998, 0x1280123E,
++      0x1998, 0x1280123F,
++      0x1998, 0x12801240,
++      0x1998, 0x12801241,
++      0x1998, 0x12801242,
++      0x1998, 0x12801243,
++      0x1998, 0x12801244,
++      0x1998, 0x12801245,
++      0x1998, 0x12801246,
++      0x1998, 0x12801247,
++      0x1998, 0x12801248,
++      0x1998, 0x12801249,
++      0x1998, 0x12801300,
++      0x1998, 0x12801301,
++      0x1998, 0x12801302,
++      0x1998, 0x12801303,
++      0x1998, 0x12801304,
++      0x1998, 0x12801305,
++      0x1998, 0x12801306,
++      0x1998, 0x12801307,
++      0x1998, 0x12801308,
++      0x1998, 0x12801309,
++      0x1998, 0x1280130A,
++      0x1998, 0x1280130B,
++      0x1998, 0x1280130C,
++      0x1998, 0x1280130D,
++      0x1998, 0x1280130E,
++      0x1998, 0x1280130F,
++      0x1998, 0x12801310,
++      0x1998, 0x12801311,
++      0x1998, 0x12801312,
++      0x1998, 0x12801313,
++      0x1998, 0x12801314,
++      0x1998, 0x12801315,
++      0x1998, 0x12801316,
++      0x1998, 0x12801317,
++      0x1998, 0x12801318,
++      0x1998, 0x12801319,
++      0x1998, 0x1280131A,
++      0x1998, 0x1280131B,
++      0x1998, 0x1280131C,
++      0x1998, 0x1280131D,
++      0x1998, 0x1280131E,
++      0x1998, 0x1280131F,
++      0x1998, 0x12801320,
++      0x1998, 0x12801321,
++      0x1998, 0x12801322,
++      0x1998, 0x12801323,
++      0x1998, 0x1280132C,
++      0x1998, 0x1280132D,
++      0x1998, 0x1280132E,
++      0x1998, 0x1280132F,
++      0x1998, 0x12801330,
++      0x1998, 0x12801331,
++      0x1998, 0x12801332,
++      0x1998, 0x12801333,
++      0x1998, 0x12801334,
++      0x1998, 0x12801335,
++      0x1998, 0x12801336,
++      0x1998, 0x12801337,
++      0x1998, 0x12801338,
++      0x1998, 0x12801339,
++      0x1998, 0x1280133A,
++      0x1998, 0x1280133B,
++      0x1998, 0x1280133C,
++      0x1998, 0x1280133D,
++      0x1998, 0x1280133E,
++      0x1998, 0x1280133F,
++      0x1998, 0x12801340,
++      0x1998, 0x12801341,
++      0x1998, 0x12801342,
++      0x1998, 0x12801343,
++      0x1998, 0x12801344,
++      0x1998, 0x12801345,
++      0x1998, 0x12801346,
++      0x1998, 0x12801347,
++      0x1998, 0x12801348,
++      0x1998, 0x12801349,
++      0x19D4, 0x88888888,
++      0x19D8, 0x00000888,
++      0xB00, 0xE3100100,
++      0xB00, 0xE7100100,
++      0xC60, 0x15808002,
++      0xC60, 0x01808003,
++      0xE60, 0x15808002,
++      0xE60, 0x01808003,
++      0x1860, 0x15808002,
++      0x1860, 0x01808003,
++      0x1A60, 0x15808002,
++      0x1A60, 0x01808003,
++      0xB00, 0xE3100100,
++      0xC5C, 0x0D080058,
++      0xE5C, 0x0D080058,
++      0x185C, 0x0D080058,
++      0x1A5C, 0x0D080058,
++      0xC5C, 0x0D000058,
++      0xE5C, 0x0D000058,
++      0x185C, 0x0D000058,
++      0x1A5C, 0x0D000058,
++      0xC60, 0x05808002,
++      0xC60, 0x0E808003,
++      0xE60, 0x05808002,
++      0xE60, 0x0E808003,
++      0x1860, 0x05808002,
++      0x1860, 0x0E808003,
++      0x1A60, 0x05808002,
++      0x1A60, 0x0E808003,
++      0xB00, 0xE7100100,
++      0xB00, 0xE3100100,
++      0xB00, 0xE3100000,
++      0x1C38, 0x00000002,
++      0xA00, 0x00D047C8,
++      0xA04, 0x46FF800C,
++      0xA08, 0x8C838300,
++      0xA0C, 0x2E7E000F,
++      0xA10, 0x9500BB78,
++      0xA14, 0x11144028,
++      0xA18, 0x00881117,
++      0xA1C, 0x89140F00,
++      0xA20, 0x1A1B0030,
++      0xA24, 0x090E1317,
++      0xA28, 0x00000204,
++      0xA2C, 0x00900000,
++      0xA70, 0x101FFF00,
++      0xA74, 0x00000128,
++      0xA78, 0x00000900,
++      0xA7C, 0x225B0606,
++      0xA80, 0x218075B2,
++      0xA84, 0x9C1F8C00,
++      0x1B04, 0xE24628D2,
++      0x1B10, 0x88010D46,
++      0x1B14, 0x00000000,
++      0x1B18, 0x00292903,
++      0x1B00, 0xF8000000,
++      0x1B00, 0xF800D000,
++      0x1B00, 0xF801F000,
++      0x1B1C, 0xA2123DB2,
++      0x1B20, 0x07040001,
++      0x1B24, 0x07060807,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0xA0000000,     0x00000000,
++      0x1B28, 0xC0060348,
++      0xB0000000,     0x00000000,
++      0x1B2C, 0x20000003,
++      0x1B30, 0x20000000,
++      0x1B38, 0x20000000,
++      0x1B3C, 0x20000000,
++      0x1BD4, 0x00000001,
++      0x1B94, 0x80000000,
++      0x1B34, 0x00000000,
++      0x1B34, 0x00000002,
++      0x1B34, 0x00000000,
++      0x1B00, 0xF8000002,
++      0x1B00, 0xF800D002,
++      0x1B00, 0xF801F002,
++      0x1B1C, 0xA2123DB2,
++      0x1B20, 0x07040001,
++      0x1B24, 0x07060807,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0xA0000000,     0x00000000,
++      0x1B28, 0xC0060348,
++      0xB0000000,     0x00000000,
++      0x1B2C, 0x20000003,
++      0x1B30, 0x20000000,
++      0x1B38, 0x20000000,
++      0x1B3C, 0x20000000,
++      0x1BD4, 0x00000001,
++      0x1B94, 0x80000000,
++      0x1B34, 0x00000000,
++      0x1B34, 0x00000002,
++      0x1B34, 0x00000000,
++      0x1B00, 0xF8000004,
++      0x1B00, 0xF800D004,
++      0x1B00, 0xF801F004,
++      0x1B1C, 0xA2123DB2,
++      0x1B20, 0x07040001,
++      0x1B24, 0x07060807,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0xA0000000,     0x00000000,
++      0x1B28, 0xC0060348,
++      0xB0000000,     0x00000000,
++      0x1B2C, 0x20000003,
++      0x1B30, 0x20000000,
++      0x1B38, 0x20000000,
++      0x1B3C, 0x20000000,
++      0x1BD4, 0x00000001,
++      0x1B94, 0x80000000,
++      0x1B34, 0x00000000,
++      0x1B34, 0x00000002,
++      0x1B34, 0x00000000,
++      0x1B00, 0xF8000006,
++      0x1B00, 0xF800D006,
++      0x1B00, 0xF801F006,
++      0x1B1C, 0xA2123DB2,
++      0x1B20, 0x07040001,
++      0x1B24, 0x07060807,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B28, 0xC0060324,
++      0xA0000000,     0x00000000,
++      0x1B28, 0xC0060348,
++      0xB0000000,     0x00000000,
++      0x1B2C, 0x20000003,
++      0x1B30, 0x20000000,
++      0x1B38, 0x20000000,
++      0x1B3C, 0x20000000,
++      0x1BD4, 0x00000001,
++      0x1B94, 0x80000000,
++      0x1B34, 0x00000000,
++      0x1B34, 0x00000002,
++      0x1B34, 0x00000000,
++      0x1B00, 0xF8000000,
++      0x1B80, 0x00000007,
++      0x1B80, 0x09060005,
++      0x1B80, 0x09060007,
++      0x1B80, 0x0FFE0015,
++      0x1B80, 0x0FFE0017,
++      0x1B80, 0x00240025,
++      0x1B80, 0x00240027,
++      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, 0x090100A5,
++      0x1B80, 0x090100A7,
++      0x1B80, 0x0F0200B5,
++      0x1B80, 0x0F0200B7,
++      0x1B80, 0x002400C5,
++      0x1B80, 0x002400C7,
++      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, 0x40010165,
++      0x1B80, 0x40010167,
++      0x1B80, 0xE0290175,
++      0x1B80, 0xE0290177,
++      0x1B80, 0x00040185,
++      0x1B80, 0x00040187,
++      0x1B80, 0x4B050195,
++      0x1B80, 0x4B050197,
++      0x1B80, 0x860301A5,
++      0x1B80, 0x860301A7,
++      0x1B80, 0x400301B5,
++      0x1B80, 0x400301B7,
++      0x1B80, 0xE02901C5,
++      0x1B80, 0xE02901C7,
++      0x1B80, 0x000401D5,
++      0x1B80, 0x000401D7,
++      0x1B80, 0x4B0601E5,
++      0x1B80, 0x4B0601E7,
++      0x1B80, 0x870301F5,
++      0x1B80, 0x870301F7,
++      0x1B80, 0x40050205,
++      0x1B80, 0x40050207,
++      0x1B80, 0xE0290215,
++      0x1B80, 0xE0290217,
++      0x1B80, 0x00040225,
++      0x1B80, 0x00040227,
++      0x1B80, 0x4B070235,
++      0x1B80, 0x4B070237,
++      0x1B80, 0x88030245,
++      0x1B80, 0x88030247,
++      0x1B80, 0x40070255,
++      0x1B80, 0x40070257,
++      0x1B80, 0xE0290265,
++      0x1B80, 0xE0290267,
++      0x1B80, 0x4B000275,
++      0x1B80, 0x4B000277,
++      0x1B80, 0x30000285,
++      0x1B80, 0x30000287,
++      0x1B80, 0xFE100295,
++      0x1B80, 0xFE100297,
++      0x1B80, 0xFF1002A5,
++      0x1B80, 0xFF1002A7,
++      0x1B80, 0xE18602B5,
++      0x1B80, 0xE18602B7,
++      0x1B80, 0xF00A02C5,
++      0x1B80, 0xF00A02C7,
++      0x1B80, 0xF10A02D5,
++      0x1B80, 0xF10A02D7,
++      0x1B80, 0xF20A02E5,
++      0x1B80, 0xF20A02E7,
++      0x1B80, 0xF30802F5,
++      0x1B80, 0xF30802F7,
++      0x1B80, 0xF4070305,
++      0x1B80, 0xF4070307,
++      0x1B80, 0xF5060315,
++      0x1B80, 0xF5060317,
++      0x1B80, 0xF7060325,
++      0x1B80, 0xF7060327,
++      0x1B80, 0xF8050335,
++      0x1B80, 0xF8050337,
++      0x1B80, 0xF9040345,
++      0x1B80, 0xF9040347,
++      0x1B80, 0x00010355,
++      0x1B80, 0x00010357,
++      0x1B80, 0x303B0365,
++      0x1B80, 0x303B0367,
++      0x1B80, 0x30500375,
++      0x1B80, 0x30500377,
++      0x1B80, 0x305C0385,
++      0x1B80, 0x305C0387,
++      0x1B80, 0x31D50395,
++      0x1B80, 0x31D50397,
++      0x1B80, 0x31C503A5,
++      0x1B80, 0x31C503A7,
++      0x1B80, 0x4D0403B5,
++      0x1B80, 0x4D0403B7,
++      0x1B80, 0x2EF003C5,
++      0x1B80, 0x2EF003C7,
++      0x1B80, 0x000203D5,
++      0x1B80, 0x000203D7,
++      0x1B80, 0x208003E5,
++      0x1B80, 0x208003E7,
++      0x1B80, 0x000003F5,
++      0x1B80, 0x000003F7,
++      0x1B80, 0x4D000405,
++      0x1B80, 0x4D000407,
++      0x1B80, 0x55070415,
++      0x1B80, 0x55070417,
++      0x1B80, 0xE1230425,
++      0x1B80, 0xE1230427,
++      0x1B80, 0xE1230435,
++      0x1B80, 0xE1230437,
++      0x1B80, 0x4D040445,
++      0x1B80, 0x4D040447,
++      0x1B80, 0x20800455,
++      0x1B80, 0x20800457,
++      0x1B80, 0x84000465,
++      0x1B80, 0x84000467,
++      0x1B80, 0x4D000475,
++      0x1B80, 0x4D000477,
++      0x1B80, 0x550F0485,
++      0x1B80, 0x550F0487,
++      0x1B80, 0xE1230495,
++      0x1B80, 0xE1230497,
++      0x1B80, 0x4F0204A5,
++      0x1B80, 0x4F0204A7,
++      0x1B80, 0x4E0004B5,
++      0x1B80, 0x4E0004B7,
++      0x1B80, 0x530204C5,
++      0x1B80, 0x530204C7,
++      0x1B80, 0x520104D5,
++      0x1B80, 0x520104D7,
++      0x1B80, 0xE12704E5,
++      0x1B80, 0xE12704E7,
++      0x1B80, 0x000104F5,
++      0x1B80, 0x000104F7,
++      0x1B80, 0x5C720505,
++      0x1B80, 0x5C720507,
++      0x1B80, 0xE1320515,
++      0x1B80, 0xE1320517,
++      0x1B80, 0x54E50525,
++      0x1B80, 0x54E50527,
++      0x1B80, 0x54BF0535,
++      0x1B80, 0x54BF0537,
++      0x1B80, 0x54C50545,
++      0x1B80, 0x54C50547,
++      0x1B80, 0x54BE0555,
++      0x1B80, 0x54BE0557,
++      0x1B80, 0x54DF0565,
++      0x1B80, 0x54DF0567,
++      0x1B80, 0x0BA60575,
++      0x1B80, 0x0BA60577,
++      0x1B80, 0xF3130585,
++      0x1B80, 0xF3130587,
++      0x1B80, 0xF41E0595,
++      0x1B80, 0xF41E0597,
++      0x1B80, 0xF53C05A5,
++      0x1B80, 0xF53C05A7,
++      0x1B80, 0x000105B5,
++      0x1B80, 0x000105B7,
++      0x1B80, 0x620605C5,
++      0x1B80, 0x620605C7,
++      0x1B80, 0x600605D5,
++      0x1B80, 0x600605D7,
++      0x1B80, 0xE1A905E5,
++      0x1B80, 0xE1A905E7,
++      0x1B80, 0x0C0005F5,
++      0x1B80, 0x0C0005F7,
++      0x1B80, 0x5C720605,
++      0x1B80, 0x5C720607,
++      0x1B80, 0xE1320615,
++      0x1B80, 0xE1320617,
++      0x1B80, 0x5CF10625,
++      0x1B80, 0x5CF10627,
++      0x1B80, 0x0C010635,
++      0x1B80, 0x0C010637,
++      0x1B80, 0xF2020645,
++      0x1B80, 0xF2020647,
++      0x1B80, 0x30D60655,
++      0x1B80, 0x30D60657,
++      0x1B80, 0x0AC60665,
++      0x1B80, 0x0AC60667,
++      0x1B80, 0xE1B60675,
++      0x1B80, 0xE1B60677,
++      0x1B80, 0xE1580685,
++      0x1B80, 0xE1580687,
++      0x1B80, 0x54E50695,
++      0x1B80, 0x54E50697,
++      0x1B80, 0x000106A5,
++      0x1B80, 0x000106A7,
++      0x1B80, 0x560106B5,
++      0x1B80, 0x560106B7,
++      0x1B80, 0x5CE206C5,
++      0x1B80, 0x5CE206C7,
++      0x1B80, 0x0AE106D5,
++      0x1B80, 0x0AE106D7,
++      0x1B80, 0x630C06E5,
++      0x1B80, 0x630C06E7,
++      0x1B80, 0xE13F06F5,
++      0x1B80, 0xE13F06F7,
++      0x1B80, 0x00270705,
++      0x1B80, 0x00270707,
++      0x1B80, 0xE16C0715,
++      0x1B80, 0xE16C0717,
++      0x1B80, 0x00020725,
++      0x1B80, 0x00020727,
++      0x1B80, 0x002A0735,
++      0x1B80, 0x002A0737,
++      0x1B80, 0x07140745,
++      0x1B80, 0x07140747,
++      0x1B80, 0x00020755,
++      0x1B80, 0x00020757,
++      0x1B80, 0x30C30765,
++      0x1B80, 0x30C30767,
++      0x1B80, 0x56010775,
++      0x1B80, 0x56010777,
++      0x1B80, 0x5CE20785,
++      0x1B80, 0x5CE20787,
++      0x1B80, 0x0AE10795,
++      0x1B80, 0x0AE10797,
++      0x1B80, 0x631707A5,
++      0x1B80, 0x631707A7,
++      0x1B80, 0xE13F07B5,
++      0x1B80, 0xE13F07B7,
++      0x1B80, 0x002507C5,
++      0x1B80, 0x002507C7,
++      0x1B80, 0xE16C07D5,
++      0x1B80, 0xE16C07D7,
++      0x1B80, 0x000207E5,
++      0x1B80, 0x000207E7,
++      0x1B80, 0x630F07F5,
++      0x1B80, 0x630F07F7,
++      0x1B80, 0xE13F0805,
++      0x1B80, 0xE13F0807,
++      0x1B80, 0x63070815,
++      0x1B80, 0x63070817,
++      0x1B80, 0xE13F0825,
++      0x1B80, 0xE13F0827,
++      0x1B80, 0x07140835,
++      0x1B80, 0x07140837,
++      0x1B80, 0x56000845,
++      0x1B80, 0x56000847,
++      0x1B80, 0x5CF20855,
++      0x1B80, 0x5CF20857,
++      0x1B80, 0x0AF10865,
++      0x1B80, 0x0AF10867,
++      0x1B80, 0x07140875,
++      0x1B80, 0x07140877,
++      0x1B80, 0x07140885,
++      0x1B80, 0x07140887,
++      0x1B80, 0x630F0895,
++      0x1B80, 0x630F0897,
++      0x1B80, 0xE13F08A5,
++      0x1B80, 0xE13F08A7,
++      0x1B80, 0x631708B5,
++      0x1B80, 0x631708B7,
++      0x1B80, 0xE13F08C5,
++      0x1B80, 0xE13F08C7,
++      0x1B80, 0x002508D5,
++      0x1B80, 0x002508D7,
++      0x1B80, 0xE16C08E5,
++      0x1B80, 0xE16C08E7,
++      0x1B80, 0x000208F5,
++      0x1B80, 0x000208F7,
++      0x1B80, 0x30C30905,
++      0x1B80, 0x30C30907,
++      0x1B80, 0xE1A90915,
++      0x1B80, 0xE1A90917,
++      0x1B80, 0x62060925,
++      0x1B80, 0x62060927,
++      0x1B80, 0x60060935,
++      0x1B80, 0x60060937,
++      0x1B80, 0xE1160945,
++      0x1B80, 0xE1160947,
++      0x1B80, 0x54BE0955,
++      0x1B80, 0x54BE0957,
++      0x1B80, 0x56010965,
++      0x1B80, 0x56010967,
++      0x1B80, 0x5CE20975,
++      0x1B80, 0x5CE20977,
++      0x1B80, 0x0AE10985,
++      0x1B80, 0x0AE10987,
++      0x1B80, 0x633A0995,
++      0x1B80, 0x633A0997,
++      0x1B80, 0xE13F09A5,
++      0x1B80, 0xE13F09A7,
++      0x1B80, 0x633709B5,
++      0x1B80, 0x633709B7,
++      0x1B80, 0xE13F09C5,
++      0x1B80, 0xE13F09C7,
++      0x1B80, 0x632F09D5,
++      0x1B80, 0x632F09D7,
++      0x1B80, 0xE13F09E5,
++      0x1B80, 0xE13F09E7,
++      0x1B80, 0x632709F5,
++      0x1B80, 0x632709F7,
++      0x1B80, 0xE13F0A05,
++      0x1B80, 0xE13F0A07,
++      0x1B80, 0x631F0A15,
++      0x1B80, 0x631F0A17,
++      0x1B80, 0xE13F0A25,
++      0x1B80, 0xE13F0A27,
++      0x1B80, 0x63170A35,
++      0x1B80, 0x63170A37,
++      0x1B80, 0xE13F0A45,
++      0x1B80, 0xE13F0A47,
++      0x1B80, 0x630F0A55,
++      0x1B80, 0x630F0A57,
++      0x1B80, 0xE13F0A65,
++      0x1B80, 0xE13F0A67,
++      0x1B80, 0x63070A75,
++      0x1B80, 0x63070A77,
++      0x1B80, 0xE13F0A85,
++      0x1B80, 0xE13F0A87,
++      0x1B80, 0xE16C0A95,
++      0x1B80, 0xE16C0A97,
++      0x1B80, 0x56000AA5,
++      0x1B80, 0x56000AA7,
++      0x1B80, 0x5CF20AB5,
++      0x1B80, 0x5CF20AB7,
++      0x1B80, 0x0AF10AC5,
++      0x1B80, 0x0AF10AC7,
++      0x1B80, 0xF5040AD5,
++      0x1B80, 0xF5040AD7,
++      0x1B80, 0xE13F0AE5,
++      0x1B80, 0xE13F0AE7,
++      0x1B80, 0xE16C0AF5,
++      0x1B80, 0xE16C0AF7,
++      0x1B80, 0x30B30B05,
++      0x1B80, 0x30B30B07,
++      0x1B80, 0x07140B15,
++      0x1B80, 0x07140B17,
++      0x1B80, 0x07140B25,
++      0x1B80, 0x07140B27,
++      0x1B80, 0x630F0B35,
++      0x1B80, 0x630F0B37,
++      0x1B80, 0xE13F0B45,
++      0x1B80, 0xE13F0B47,
++      0x1B80, 0x63170B55,
++      0x1B80, 0x63170B57,
++      0x1B80, 0xE13F0B65,
++      0x1B80, 0xE13F0B67,
++      0x1B80, 0x631F0B75,
++      0x1B80, 0x631F0B77,
++      0x1B80, 0xE13F0B85,
++      0x1B80, 0xE13F0B87,
++      0x1B80, 0x63270B95,
++      0x1B80, 0x63270B97,
++      0x1B80, 0xE13F0BA5,
++      0x1B80, 0xE13F0BA7,
++      0x1B80, 0x632F0BB5,
++      0x1B80, 0x632F0BB7,
++      0x1B80, 0xE13F0BC5,
++      0x1B80, 0xE13F0BC7,
++      0x1B80, 0x63370BD5,
++      0x1B80, 0x63370BD7,
++      0x1B80, 0xE13F0BE5,
++      0x1B80, 0xE13F0BE7,
++      0x1B80, 0x633A0BF5,
++      0x1B80, 0x633A0BF7,
++      0x1B80, 0xE13F0C05,
++      0x1B80, 0xE13F0C07,
++      0x1B80, 0xF60B0C15,
++      0x1B80, 0xF60B0C17,
++      0x1B80, 0xF7170C25,
++      0x1B80, 0xF7170C27,
++      0x1B80, 0x4D300C35,
++      0x1B80, 0x4D300C37,
++      0x1B80, 0x57040C45,
++      0x1B80, 0x57040C47,
++      0x1B80, 0x57000C55,
++      0x1B80, 0x57000C57,
++      0x1B80, 0x96000C65,
++      0x1B80, 0x96000C67,
++      0x1B80, 0x57080C75,
++      0x1B80, 0x57080C77,
++      0x1B80, 0x57000C85,
++      0x1B80, 0x57000C87,
++      0x1B80, 0x95000C95,
++      0x1B80, 0x95000C97,
++      0x1B80, 0x4D000CA5,
++      0x1B80, 0x4D000CA7,
++      0x1B80, 0x6C070CB5,
++      0x1B80, 0x6C070CB7,
++      0x1B80, 0x00010CC5,
++      0x1B80, 0x00010CC7,
++      0x1B80, 0x00220CD5,
++      0x1B80, 0x00220CD7,
++      0x1B80, 0x06140CE5,
++      0x1B80, 0x06140CE7,
++      0x1B80, 0xE16C0CF5,
++      0x1B80, 0xE16C0CF7,
++      0x1B80, 0x00020D05,
++      0x1B80, 0x00020D07,
++      0x1B80, 0x00250D15,
++      0x1B80, 0x00250D17,
++      0x1B80, 0x06140D25,
++      0x1B80, 0x06140D27,
++      0x1B80, 0xE16C0D35,
++      0x1B80, 0xE16C0D37,
++      0x1B80, 0x00020D45,
++      0x1B80, 0x00020D47,
++      0x1B80, 0x00010D55,
++      0x1B80, 0x00010D57,
++      0x1B80, 0x00320D65,
++      0x1B80, 0x00320D67,
++      0x1B80, 0xE16C0D75,
++      0x1B80, 0xE16C0D77,
++      0x1B80, 0x00020D85,
++      0x1B80, 0x00020D87,
++      0x1B80, 0xE1860D95,
++      0x1B80, 0xE1860D97,
++      0x1B80, 0xE1B60DA5,
++      0x1B80, 0xE1B60DA7,
++      0x1B80, 0x5CD10DB5,
++      0x1B80, 0x5CD10DB7,
++      0x1B80, 0x673A0DC5,
++      0x1B80, 0x673A0DC7,
++      0x1B80, 0xE1230DD5,
++      0x1B80, 0xE1230DD7,
++      0x1B80, 0xF80B0DE5,
++      0x1B80, 0xF80B0DE7,
++      0x1B80, 0xF9110DF5,
++      0x1B80, 0xF9110DF7,
++      0x1B80, 0xE1580E05,
++      0x1B80, 0xE1580E07,
++      0x1B80, 0x67370E15,
++      0x1B80, 0x67370E17,
++      0x1B80, 0xE1580E25,
++      0x1B80, 0xE1580E27,
++      0x1B80, 0x672F0E35,
++      0x1B80, 0x672F0E37,
++      0x1B80, 0xE1580E45,
++      0x1B80, 0xE1580E47,
++      0x1B80, 0x67270E55,
++      0x1B80, 0x67270E57,
++      0x1B80, 0xE1580E65,
++      0x1B80, 0xE1580E67,
++      0x1B80, 0x671F0E75,
++      0x1B80, 0x671F0E77,
++      0x1B80, 0xE1580E85,
++      0x1B80, 0xE1580E87,
++      0x1B80, 0x67170E95,
++      0x1B80, 0x67170E97,
++      0x1B80, 0xE1580EA5,
++      0x1B80, 0xE1580EA7,
++      0x1B80, 0xF8020EB5,
++      0x1B80, 0xF8020EB7,
++      0x1B80, 0x30EE0EC5,
++      0x1B80, 0x30EE0EC7,
++      0x1B80, 0xE0D10ED5,
++      0x1B80, 0xE0D10ED7,
++      0x1B80, 0x670F0EE5,
++      0x1B80, 0x670F0EE7,
++      0x1B80, 0xE1580EF5,
++      0x1B80, 0xE1580EF7,
++      0x1B80, 0x67070F05,
++      0x1B80, 0x67070F07,
++      0x1B80, 0xE1580F15,
++      0x1B80, 0xE1580F17,
++      0x1B80, 0xF9020F25,
++      0x1B80, 0xF9020F27,
++      0x1B80, 0x30F50F35,
++      0x1B80, 0x30F50F37,
++      0x1B80, 0xE0CD0F45,
++      0x1B80, 0xE0CD0F47,
++      0x1B80, 0x06140F55,
++      0x1B80, 0x06140F57,
++      0x1B80, 0xE16C0F65,
++      0x1B80, 0xE16C0F67,
++      0x1B80, 0x5CF10F75,
++      0x1B80, 0x5CF10F77,
++      0x1B80, 0xE1580F85,
++      0x1B80, 0xE1580F87,
++      0x1B80, 0x06140F95,
++      0x1B80, 0x06140F97,
++      0x1B80, 0xE16C0FA5,
++      0x1B80, 0xE16C0FA7,
++      0x1B80, 0xF9020FB5,
++      0x1B80, 0xF9020FB7,
++      0x1B80, 0x30FF0FC5,
++      0x1B80, 0x30FF0FC7,
++      0x1B80, 0xE0CD0FD5,
++      0x1B80, 0xE0CD0FD7,
++      0x1B80, 0x31130FE5,
++      0x1B80, 0x31130FE7,
++      0x1B80, 0x670F0FF5,
++      0x1B80, 0x670F0FF7,
++      0x1B80, 0xE1581005,
++      0x1B80, 0xE1581007,
++      0x1B80, 0x67171015,
++      0x1B80, 0x67171017,
++      0x1B80, 0xE1581025,
++      0x1B80, 0xE1581027,
++      0x1B80, 0xF8021035,
++      0x1B80, 0xF8021037,
++      0x1B80, 0x31071045,
++      0x1B80, 0x31071047,
++      0x1B80, 0xE0D11055,
++      0x1B80, 0xE0D11057,
++      0x1B80, 0x31131065,
++      0x1B80, 0x31131067,
++      0x1B80, 0x670F1075,
++      0x1B80, 0x670F1077,
++      0x1B80, 0xE1581085,
++      0x1B80, 0xE1581087,
++      0x1B80, 0x671F1095,
++      0x1B80, 0x671F1097,
++      0x1B80, 0xE15810A5,
++      0x1B80, 0xE15810A7,
++      0x1B80, 0x672710B5,
++      0x1B80, 0x672710B7,
++      0x1B80, 0xE15810C5,
++      0x1B80, 0xE15810C7,
++      0x1B80, 0x672F10D5,
++      0x1B80, 0x672F10D7,
++      0x1B80, 0xE15810E5,
++      0x1B80, 0xE15810E7,
++      0x1B80, 0x673710F5,
++      0x1B80, 0x673710F7,
++      0x1B80, 0xE1581105,
++      0x1B80, 0xE1581107,
++      0x1B80, 0x673A1115,
++      0x1B80, 0x673A1117,
++      0x1B80, 0xE1581125,
++      0x1B80, 0xE1581127,
++      0x1B80, 0x4D101135,
++      0x1B80, 0x4D101137,
++      0x1B80, 0x30C41145,
++      0x1B80, 0x30C41147,
++      0x1B80, 0x00011155,
++      0x1B80, 0x00011157,
++      0x1B80, 0x6F241165,
++      0x1B80, 0x6F241167,
++      0x1B80, 0x6E401175,
++      0x1B80, 0x6E401177,
++      0x1B80, 0x6D001185,
++      0x1B80, 0x6D001187,
++      0x1B80, 0x55031195,
++      0x1B80, 0x55031197,
++      0x1B80, 0x312311A5,
++      0x1B80, 0x312311A7,
++      0x1B80, 0x6F1C11B5,
++      0x1B80, 0x6F1C11B7,
++      0x1B80, 0x6E4011C5,
++      0x1B80, 0x6E4011C7,
++      0x1B80, 0x550B11D5,
++      0x1B80, 0x550B11D7,
++      0x1B80, 0x312311E5,
++      0x1B80, 0x312311E7,
++      0x1B80, 0x061C11F5,
++      0x1B80, 0x061C11F7,
++      0x1B80, 0x54DE1205,
++      0x1B80, 0x54DE1207,
++      0x1B80, 0x06DC1215,
++      0x1B80, 0x06DC1217,
++      0x1B80, 0x55131225,
++      0x1B80, 0x55131227,
++      0x1B80, 0x74011235,
++      0x1B80, 0x74011237,
++      0x1B80, 0x74001245,
++      0x1B80, 0x74001247,
++      0x1B80, 0x8E001255,
++      0x1B80, 0x8E001257,
++      0x1B80, 0x00011265,
++      0x1B80, 0x00011267,
++      0x1B80, 0x57021275,
++      0x1B80, 0x57021277,
++      0x1B80, 0x57001285,
++      0x1B80, 0x57001287,
++      0x1B80, 0x97001295,
++      0x1B80, 0x97001297,
++      0x1B80, 0x000112A5,
++      0x1B80, 0x000112A7,
++      0x1B80, 0x54BF12B5,
++      0x1B80, 0x54BF12B7,
++      0x1B80, 0x54C112C5,
++      0x1B80, 0x54C112C7,
++      0x1B80, 0x54A212D5,
++      0x1B80, 0x54A212D7,
++      0x1B80, 0x54C012E5,
++      0x1B80, 0x54C012E7,
++      0x1B80, 0x54A112F5,
++      0x1B80, 0x54A112F7,
++      0x1B80, 0x54DF1305,
++      0x1B80, 0x54DF1307,
++      0x1B80, 0x00011315,
++      0x1B80, 0x00011317,
++      0x1B80, 0x55001325,
++      0x1B80, 0x55001327,
++      0x1B80, 0xE1231335,
++      0x1B80, 0xE1231337,
++      0x1B80, 0x54811345,
++      0x1B80, 0x54811347,
++      0x1B80, 0xE1231355,
++      0x1B80, 0xE1231357,
++      0x1B80, 0x54801365,
++      0x1B80, 0x54801367,
++      0x1B80, 0x002A1375,
++      0x1B80, 0x002A1377,
++      0x1B80, 0xE12B1385,
++      0x1B80, 0xE12B1387,
++      0x1B80, 0xE1231395,
++      0x1B80, 0xE1231397,
++      0x1B80, 0x548013A5,
++      0x1B80, 0x548013A7,
++      0x1B80, 0xE17213B5,
++      0x1B80, 0xE17213B7,
++      0x1B80, 0xBF3013C5,
++      0x1B80, 0xBF3013C7,
++      0x1B80, 0x000213D5,
++      0x1B80, 0x000213D7,
++      0x1B80, 0x302813E5,
++      0x1B80, 0x302813E7,
++      0x1B80, 0x4F7813F5,
++      0x1B80, 0x4F7813F7,
++      0x1B80, 0x4E001405,
++      0x1B80, 0x4E001407,
++      0x1B80, 0x53871415,
++      0x1B80, 0x53871417,
++      0x1B80, 0x52F11425,
++      0x1B80, 0x52F11427,
++      0x1B80, 0xE1161435,
++      0x1B80, 0xE1161437,
++      0x1B80, 0xE11B1445,
++      0x1B80, 0xE11B1447,
++      0x1B80, 0xE11F1455,
++      0x1B80, 0xE11F1457,
++      0x1B80, 0xE1271465,
++      0x1B80, 0xE1271467,
++      0x1B80, 0x54811475,
++      0x1B80, 0x54811477,
++      0x1B80, 0xE1161485,
++      0x1B80, 0xE1161487,
++      0x1B80, 0xE11B1495,
++      0x1B80, 0xE11B1497,
++      0x1B80, 0xE11F14A5,
++      0x1B80, 0xE11F14A7,
++      0x1B80, 0xE12714B5,
++      0x1B80, 0xE12714B7,
++      0x1B80, 0x548014C5,
++      0x1B80, 0x548014C7,
++      0x1B80, 0x002A14D5,
++      0x1B80, 0x002A14D7,
++      0x1B80, 0xE12B14E5,
++      0x1B80, 0xE12B14E7,
++      0x1B80, 0xE11614F5,
++      0x1B80, 0xE11614F7,
++      0x1B80, 0xE11B1505,
++      0x1B80, 0xE11B1507,
++      0x1B80, 0xE11F1515,
++      0x1B80, 0xE11F1517,
++      0x1B80, 0xE1271525,
++      0x1B80, 0xE1271527,
++      0x1B80, 0x54801535,
++      0x1B80, 0x54801537,
++      0x1B80, 0xE1721545,
++      0x1B80, 0xE1721547,
++      0x1B80, 0xBF171555,
++      0x1B80, 0xBF171557,
++      0x1B80, 0x00021565,
++      0x1B80, 0x00021567,
++      0x1B80, 0x30281575,
++      0x1B80, 0x30281577,
++      0x1B80, 0x06141585,
++      0x1B80, 0x06141587,
++      0x1B80, 0x73201595,
++      0x1B80, 0x73201597,
++      0x1B80, 0x720015A5,
++      0x1B80, 0x720015A7,
++      0x1B80, 0x710015B5,
++      0x1B80, 0x710015B7,
++      0x1B80, 0x550115C5,
++      0x1B80, 0x550115C7,
++      0x1B80, 0xE12315D5,
++      0x1B80, 0xE12315D7,
++      0x1B80, 0xE12715E5,
++      0x1B80, 0xE12715E7,
++      0x1B80, 0x548115F5,
++      0x1B80, 0x548115F7,
++      0x1B80, 0xE1231605,
++      0x1B80, 0xE1231607,
++      0x1B80, 0xE1271615,
++      0x1B80, 0xE1271617,
++      0x1B80, 0x54801625,
++      0x1B80, 0x54801627,
++      0x1B80, 0x002A1635,
++      0x1B80, 0x002A1637,
++      0x1B80, 0xE12B1645,
++      0x1B80, 0xE12B1647,
++      0x1B80, 0xE1231655,
++      0x1B80, 0xE1231657,
++      0x1B80, 0xE1271665,
++      0x1B80, 0xE1271667,
++      0x1B80, 0x54801675,
++      0x1B80, 0x54801677,
++      0x1B80, 0xE1721685,
++      0x1B80, 0xE1721687,
++      0x1B80, 0xBF031695,
++      0x1B80, 0xBF031697,
++      0x1B80, 0x000216A5,
++      0x1B80, 0x000216A7,
++      0x1B80, 0x302816B5,
++      0x1B80, 0x302816B7,
++      0x1B80, 0x54BF16C5,
++      0x1B80, 0x54BF16C7,
++      0x1B80, 0x54C516D5,
++      0x1B80, 0x54C516D7,
++      0x1B80, 0x050A16E5,
++      0x1B80, 0x050A16E7,
++      0x1B80, 0x071416F5,
++      0x1B80, 0x071416F7,
++      0x1B80, 0x54DF1705,
++      0x1B80, 0x54DF1707,
++      0x1B80, 0x00011715,
++      0x1B80, 0x00011717,
++      0x1B80, 0x54BF1725,
++      0x1B80, 0x54BF1727,
++      0x1B80, 0x54C01735,
++      0x1B80, 0x54C01737,
++      0x1B80, 0x54A31745,
++      0x1B80, 0x54A31747,
++      0x1B80, 0x54C11755,
++      0x1B80, 0x54C11757,
++      0x1B80, 0x54A41765,
++      0x1B80, 0x54A41767,
++      0x1B80, 0x4C831775,
++      0x1B80, 0x4C831777,
++      0x1B80, 0x4C031785,
++      0x1B80, 0x4C031787,
++      0x1B80, 0xBF0B1795,
++      0x1B80, 0xBF0B1797,
++      0x1B80, 0x54C217A5,
++      0x1B80, 0x54C217A7,
++      0x1B80, 0x54A417B5,
++      0x1B80, 0x54A417B7,
++      0x1B80, 0x4C8517C5,
++      0x1B80, 0x4C8517C7,
++      0x1B80, 0x4C0517D5,
++      0x1B80, 0x4C0517D7,
++      0x1B80, 0xBF0617E5,
++      0x1B80, 0xBF0617E7,
++      0x1B80, 0x54C117F5,
++      0x1B80, 0x54C117F7,
++      0x1B80, 0x54A31805,
++      0x1B80, 0x54A31807,
++      0x1B80, 0x4C861815,
++      0x1B80, 0x4C861817,
++      0x1B80, 0x4C061825,
++      0x1B80, 0x4C061827,
++      0x1B80, 0xBF011835,
++      0x1B80, 0xBF011837,
++      0x1B80, 0x54DF1845,
++      0x1B80, 0x54DF1847,
++      0x1B80, 0x00011855,
++      0x1B80, 0x00011857,
++      0x1B80, 0x00071865,
++      0x1B80, 0x00071867,
++      0x1B80, 0x54011875,
++      0x1B80, 0x54011877,
++      0x1B80, 0x00041885,
++      0x1B80, 0x00041887,
++      0x1B80, 0x56001895,
++      0x1B80, 0x56001897,
++      0x1B80, 0x5CF218A5,
++      0x1B80, 0x5CF218A7,
++      0x1B80, 0x630718B5,
++      0x1B80, 0x630718B7,
++      0x1B80, 0x620418C5,
++      0x1B80, 0x620418C7,
++      0x1B80, 0x610018D5,
++      0x1B80, 0x610018D7,
++      0x1B80, 0x670718E5,
++      0x1B80, 0x670718E7,
++      0x1B80, 0x660618F5,
++      0x1B80, 0x660618F7,
++      0x1B80, 0x6F201905,
++      0x1B80, 0x6F201907,
++      0x1B80, 0x6E001915,
++      0x1B80, 0x6E001917,
++      0x1B80, 0x6D001925,
++      0x1B80, 0x6D001927,
++      0x1B80, 0x6C031935,
++      0x1B80, 0x6C031937,
++      0x1B80, 0x73201945,
++      0x1B80, 0x73201947,
++      0x1B80, 0x72001955,
++      0x1B80, 0x72001957,
++      0x1B80, 0x71001965,
++      0x1B80, 0x71001967,
++      0x1B80, 0x7B201975,
++      0x1B80, 0x7B201977,
++      0x1B80, 0x7A001985,
++      0x1B80, 0x7A001987,
++      0x1B80, 0x79001995,
++      0x1B80, 0x79001997,
++      0x1B80, 0x7F2019A5,
++      0x1B80, 0x7F2019A7,
++      0x1B80, 0x7E0019B5,
++      0x1B80, 0x7E0019B7,
++      0x1B80, 0x7D0019C5,
++      0x1B80, 0x7D0019C7,
++      0x1B80, 0x090119D5,
++      0x1B80, 0x090119D7,
++      0x1B80, 0x0AC619E5,
++      0x1B80, 0x0AC619E7,
++      0x1B80, 0x0BA619F5,
++      0x1B80, 0x0BA619F7,
++      0x1B80, 0x0C011A05,
++      0x1B80, 0x0C011A07,
++      0x1B80, 0x0D021A15,
++      0x1B80, 0x0D021A17,
++      0x1B80, 0x0E041A25,
++      0x1B80, 0x0E041A27,
++      0x1B80, 0x0FFF1A35,
++      0x1B80, 0x0FFF1A37,
++      0x1B80, 0x4D041A45,
++      0x1B80, 0x4D041A47,
++      0x1B80, 0x28F81A55,
++      0x1B80, 0x28F81A57,
++      0x1B80, 0xE0001A65,
++      0x1B80, 0xE0001A67,
++      0x1B80, 0x4D001A75,
++      0x1B80, 0x4D001A77,
++      0x1B80, 0x00011A85,
++      0x1B80, 0x00011A87,
++      0x1B80, 0x4D041A95,
++      0x1B80, 0x4D041A97,
++      0x1B80, 0x2EF81AA5,
++      0x1B80, 0x2EF81AA7,
++      0x1B80, 0x00021AB5,
++      0x1B80, 0x00021AB7,
++      0x1B80, 0x23031AC5,
++      0x1B80, 0x23031AC7,
++      0x1B80, 0x00001AD5,
++      0x1B80, 0x00001AD7,
++      0x1B80, 0x23131AE5,
++      0x1B80, 0x23131AE7,
++      0x1B80, 0xE77F1AF5,
++      0x1B80, 0xE77F1AF7,
++      0x1B80, 0x232F1B05,
++      0x1B80, 0x232F1B07,
++      0x1B80, 0xEFBF1B15,
++      0x1B80, 0xEFBF1B17,
++      0x1B80, 0x2EF01B25,
++      0x1B80, 0x2EF01B27,
++      0x1B80, 0x00021B35,
++      0x1B80, 0x00021B37,
++      0x1B80, 0x4D001B45,
++      0x1B80, 0x4D001B47,
++      0x1B80, 0x00011B55,
++      0x1B80, 0x00011B57,
++      0x1B80, 0x4D041B65,
++      0x1B80, 0x4D041B67,
++      0x1B80, 0x2EF81B75,
++      0x1B80, 0x2EF81B77,
++      0x1B80, 0x00021B85,
++      0x1B80, 0x00021B87,
++      0x1B80, 0x23031B95,
++      0x1B80, 0x23031B97,
++      0x1B80, 0x00001BA5,
++      0x1B80, 0x00001BA7,
++      0x1B80, 0x23131BB5,
++      0x1B80, 0x23131BB7,
++      0x1B80, 0xE77F1BC5,
++      0x1B80, 0xE77F1BC7,
++      0x1B80, 0x232F1BD5,
++      0x1B80, 0x232F1BD7,
++      0x1B80, 0xE79F1BE5,
++      0x1B80, 0xE79F1BE7,
++      0x1B80, 0x2EF01BF5,
++      0x1B80, 0x2EF01BF7,
++      0x1B80, 0x00021C05,
++      0x1B80, 0x00021C07,
++      0x1B80, 0x28F81C15,
++      0x1B80, 0x28F81C17,
++      0x1B80, 0x80001C25,
++      0x1B80, 0x80001C27,
++      0x1B80, 0x4D001C35,
++      0x1B80, 0x4D001C37,
++      0x1B80, 0x00011C45,
++      0x1B80, 0x00011C47,
++      0x1B80, 0x00041C55,
++      0x1B80, 0x00041C57,
++      0x1B80, 0x6BC01C65,
++      0x1B80, 0x6BC01C67,
++      0x1B80, 0x4D041C75,
++      0x1B80, 0x4D041C77,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241C85,
++      0x1B80, 0x68241C87,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x68481C85,
++      0x1B80, 0x68481C87,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x66061C95,
++      0x1B80, 0x66061C97,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x650C1CA5,
++      0x1B80, 0x650C1CA7,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x65041CA5,
++      0x1B80, 0x65041CA7,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x64471CB5,
++      0x1B80, 0x64471CB7,
++      0x1B80, 0x23411CC5,
++      0x1B80, 0x23411CC7,
++      0x1B80, 0x100E1CD5,
++      0x1B80, 0x100E1CD7,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60101CE5,
++      0x1B80, 0x60101CE7,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x60011CE5,
++      0x1B80, 0x60011CE7,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x23411CF5,
++      0x1B80, 0x23411CF7,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60811D05,
++      0x1B80, 0x60811D07,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x60611D05,
++      0x1B80, 0x60611D07,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x23411D15,
++      0x1B80, 0x23411D17,
++      0x1B80, 0x70E11D25,
++      0x1B80, 0x70E11D27,
++      0x1B80, 0x4D001D35,
++      0x1B80, 0x4D001D37,
++      0x1B80, 0x00011D45,
++      0x1B80, 0x00011D47,
++      0x1B80, 0x00041D55,
++      0x1B80, 0x00041D57,
++      0x1B80, 0x6B401D65,
++      0x1B80, 0x6B401D67,
++      0x1B80, 0x4D041D75,
++      0x1B80, 0x4D041D77,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241D85,
++      0x1B80, 0x68241D87,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241D85,
++      0x1B80, 0x68241D87,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241D85,
++      0x1B80, 0x68241D87,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241D85,
++      0x1B80, 0x68241D87,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241D85,
++      0x1B80, 0x68241D87,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x68241D85,
++      0x1B80, 0x68241D87,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x68481D85,
++      0x1B80, 0x68481D87,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x66061D95,
++      0x1B80, 0x66061D97,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65081DA5,
++      0x1B80, 0x65081DA7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65181DA5,
++      0x1B80, 0x65181DA7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65181DA5,
++      0x1B80, 0x65181DA7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65181DA5,
++      0x1B80, 0x65181DA7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65181DA5,
++      0x1B80, 0x65181DA7,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65081DA5,
++      0x1B80, 0x65081DA7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65181DA5,
++      0x1B80, 0x65181DA7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x65181DA5,
++      0x1B80, 0x65181DA7,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x65081DA5,
++      0x1B80, 0x65081DA7,
++      0xB0000000,     0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x64481DB5,
++      0x1B80, 0x64481DB7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x64481DB5,
++      0x1B80, 0x64481DB7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x64481DB5,
++      0x1B80, 0x64481DB7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x64481DB5,
++      0x1B80, 0x64481DB7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x64481DB5,
++      0x1B80, 0x64481DB7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x64481DB5,
++      0x1B80, 0x64481DB7,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x64471DB5,
++      0x1B80, 0x64471DB7,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x23411DC5,
++      0x1B80, 0x23411DC7,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E41DD5,
++      0x1B80, 0x11E41DD7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E81DD5,
++      0x1B80, 0x11E81DD7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E81DD5,
++      0x1B80, 0x11E81DD7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E81DD5,
++      0x1B80, 0x11E81DD7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E81DD5,
++      0x1B80, 0x11E81DD7,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E41DD5,
++      0x1B80, 0x11E41DD7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E81DD5,
++      0x1B80, 0x11E81DD7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x11E81DD5,
++      0x1B80, 0x11E81DD7,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x11E41DD5,
++      0x1B80, 0x11E41DD7,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x60011DE5,
++      0x1B80, 0x60011DE7,
++      0x1B80, 0x23411DF5,
++      0x1B80, 0x23411DF7,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60E11E05,
++      0x1B80, 0x60E11E07,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x61E11E05,
++      0x1B80, 0x61E11E07,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x61E11E05,
++      0x1B80, 0x61E11E07,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x61E11E05,
++      0x1B80, 0x61E11E07,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x61E11E05,
++      0x1B80, 0x61E11E07,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x60E11E05,
++      0x1B80, 0x60E11E07,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x61E11E05,
++      0x1B80, 0x61E11E07,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0x1B80, 0x61E11E05,
++      0x1B80, 0x61E11E07,
++      0xA0000000,     0x00000000,
++      0x1B80, 0x60E11E05,
++      0x1B80, 0x60E11E07,
++      0xB0000000,     0x00000000,
++      0x1B80, 0x23411E15,
++      0x1B80, 0x23411E17,
++      0x1B80, 0x70611E25,
++      0x1B80, 0x70611E27,
++      0x1B80, 0x4D001E35,
++      0x1B80, 0x4D001E37,
++      0x1B80, 0x00011E45,
++      0x1B80, 0x00011E47,
++      0x1B80, 0x00001E55,
++      0x1B80, 0x00001E57,
++      0x1B80, 0x00001E65,
++      0x1B80, 0x00001E67,
++      0x1B80, 0x00001E75,
++      0x1B80, 0x00001E77,
++      0x1B80, 0x00001E85,
++      0x1B80, 0x00001E87,
++      0x1B80, 0x00001E95,
++      0x1B80, 0x00001E97,
++      0x1B80, 0x00001EA5,
++      0x1B80, 0x00001EA7,
++      0x1B80, 0x00001EB5,
++      0x1B80, 0x00001EB7,
++      0x1B80, 0x00001EC5,
++      0x1B80, 0x00001EC7,
++      0x1B80, 0x00001ED5,
++      0x1B80, 0x00001ED7,
++      0x1B80, 0x00001EE5,
++      0x1B80, 0x00001EE7,
++      0x1B80, 0x00001EF5,
++      0x1B80, 0x00001EF7,
++      0x1B80, 0x00001F05,
++      0x1B80, 0x00001F07,
++      0x1B80, 0x00001F15,
++      0x1B80, 0x00001F17,
++      0x1B80, 0x00001F25,
++      0x1B80, 0x00001F27,
++      0x1B80, 0x00001F35,
++      0x1B80, 0x00001F37,
++      0x1B80, 0x00001F45,
++      0x1B80, 0x00001F47,
++      0x1B80, 0x00001F55,
++      0x1B80, 0x00001F57,
++      0x1B80, 0x00001F65,
++      0x1B80, 0x00001F67,
++      0x1B80, 0x00001F75,
++      0x1B80, 0x00001F77,
++      0x1B80, 0x00001F85,
++      0x1B80, 0x00001F87,
++      0x1B80, 0x00001F95,
++      0x1B80, 0x00001F97,
++      0x1B80, 0x00001FA5,
++      0x1B80, 0x00001FA7,
++      0x1B80, 0x00001FB5,
++      0x1B80, 0x00001FB7,
++      0x1B80, 0x00001FC5,
++      0x1B80, 0x00001FC7,
++      0x1B80, 0x00001FD5,
++      0x1B80, 0x00001FD7,
++      0x1B80, 0x00001FE5,
++      0x1B80, 0x00001FE7,
++      0x1B80, 0x00001FF5,
++      0x1B80, 0x00001FF7,
++      0x1B80, 0x00000006,
++      0x1B80, 0x00000002,
++};
++
++RTW_DECL_TABLE_PHY_COND(rtw8814a_bb, rtw_phy_cfg_bb);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type0[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x32323232, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x32323232, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x32323232, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x32323232, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x28303232, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x26283032, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x30303030, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x24262830, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x26283032, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x30302224, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x28303030, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x32323232, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x32323232, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x28303232, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x32323232, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x26283032, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x30303030, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x24262830, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x28282828, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x22242628, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x32323232, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x26283032, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x30302224, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x28303030, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x20222426, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x28282828, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x22242628, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x18202020, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x32323232, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x28303232, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x32323232, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x26283032, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x30303030, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x24262830, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x28282828, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x22242628, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x32323232, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x26283032, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x30302224, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x28303030, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x20222426, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x28282828, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x22242628, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x18202020, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x32323232, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x28303232, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x32323232, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x26283032, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x30303030, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x24262830, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x28282828, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x22242628, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x32323232, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x26283032, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x30302224, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x28303030, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x20222426, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x28282828, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x22242628, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x18202020, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x32323232, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x28303232, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x32323232, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x26283032, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x30303030, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x24262830, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x28282828, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x22242628, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x32323232, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x26283032, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x30302224, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x28303030, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x20222426, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x28282828, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x22242628, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x18202020, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type0);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type2[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x32323232, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x26283032, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x32323232, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x26283032, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x30303030, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x24262830, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x32323232, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x26283032, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x30303030, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x24262830, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x32323232, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x26283032, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x30303030, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x24262830, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x32322426, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x30323232, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x32323232, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x26283032, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x30303030, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x24262830, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type2);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type3[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x48484848, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x42444646, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x42444646, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x46463840, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x46464646, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x38404244, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x42444646, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x38383840, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x48484848, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x42444646, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x42444646, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x46463840, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x46464646, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x38404244, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x42444646, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x38383840, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x48484848, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x46464646, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x44464646, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x42444646, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x46464646, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x42444646, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x42444646, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x42444646, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x46463840, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x46464646, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x38404244, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x42444646, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x38383840, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x48484848, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x42444646, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x42444646, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x46463840, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x46464646, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x38404244, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x42444646, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x38383840, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x42444646, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x42444646, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x46463840, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x46464646, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x38404244, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x42444646, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x38383840, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x42444646, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x42444646, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x46463840, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x46464646, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x38404244, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x42444646, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x38383840, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x44464646, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x42444646, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x46464646, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x42444646, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x42444646, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x42444646, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x46463840, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x46464646, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x38404244, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x42444646, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x38383840, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x42444646, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x42444646, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x46463840, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x46464646, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x38404244, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x42444646, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x38383840, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type3);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type4[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x42424242, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x42424242, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x42424242, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x42424242, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x36384042, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x34363840, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x42424242, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x34363840, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x34363840, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x42423032, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x38404242, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x42424242, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x42424242, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x36384042, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x42424242, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x34363840, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x42424242, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x34363840, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x42424242, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x34363840, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x42423032, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x38404242, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x30323436, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x34363840, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x30303032, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x42424242, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x36384042, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x42424242, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x34363840, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x42424242, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x34363840, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x42424242, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x34363840, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x42423032, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x38404242, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x30323436, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x34363840, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x30303032, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x42424242, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x36384042, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x42424242, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x34363840, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x42424242, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x34363840, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x42424242, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x34363840, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x42423032, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x38404242, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x30323436, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x34363840, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x30303032, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x42424242, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x36384042, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x42424242, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x34363840, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x42424242, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x34363840, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x42424242, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x34363840, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x42423032, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x38404242, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x30323436, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x34363840, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x30303032, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type4);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type5[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x48484848, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x40424444, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x38404242, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x44444040, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x44444444, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x38384042, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x38404242, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20203636, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x48484848, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x44444444, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x40424444, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x38404242, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x44444040, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x44444444, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x38384042, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x38404242, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20203636, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x48484848, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x46464646, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x44464646, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x42444646, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x44444444, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x40424444, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x38404242, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x42444646, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x44444040, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x44444444, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x38384042, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x38404242, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20203636, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x48484848, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x44444444, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x40424444, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x38404242, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x44444040, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x44444444, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x38384042, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x38404242, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20203636, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x44464646, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x42444646, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x44444444, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x40424444, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x42424242, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x38404242, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x42444646, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x44443840, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x44444444, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x36384042, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x42424242, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x38404242, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x20203436, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x44464646, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x42444646, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x44444444, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x40424444, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x42424242, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x38404242, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x42444646, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x44443840, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x44444444, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x36384042, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x42424242, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x38404242, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x20203436, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x44464646, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x42444646, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x44444444, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x40424444, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x42424242, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x38404242, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x42444646, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x44443840, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x44444444, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x36384042, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x42424242, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x38404242, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x20203436, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x44464646, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x42444646, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x44444444, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x40424444, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x42424242, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x38404242, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x42444646, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x44443840, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x44444444, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x36384042, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x42424242, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x38404242, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x20203436, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type5);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type7[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x34343434, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x28303234, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x34343434, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x34342426, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x32343434, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x24262830, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x34343434, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x28303234, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x24263434, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x34343434, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x28303234, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x34343434, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x34342426, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x32343434, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x24262830, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x34343434, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x28303234, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x24263434, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x30323434, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x28303234, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x34343434, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x28303234, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x34343434, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x34342426, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x32343434, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x24262830, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x34343434, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x28303234, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x24263434, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x34343434, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x28303234, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x34343434, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x34342426, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x32343434, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x24262830, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x34343434, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x28303234, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x24263434, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x30323434, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x28303234, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x34343434, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x28303234, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x34343434, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x28303234, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x34342426, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x32343434, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x24262830, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x34343434, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x28303234, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x24263434, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x30323434, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x28303234, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x34343434, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x28303234, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x34343434, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x28303234, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x34342426, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x32343434, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x24262830, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x34343434, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x28303234, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x24263434, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x30323434, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x28303234, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x34343434, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x28303234, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x34343434, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x28303234, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x34342426, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x32343434, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x24262830, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x34343434, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x28303234, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x24263434, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x30323434, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x28303234, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x34343434, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x28303234, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x34343434, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x28303234, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x34342426, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x32343434, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x24262830, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x34343434, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x28303234, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x24263434, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type7);
++
++static const struct rtw_phy_pg_cfg_pair rtw8814a_bb_pg_type8[] = {
++      { 0, 0, 0, 0x00000c20, 0xffffffff, 0x43434343, },
++      { 0, 0, 0, 0x00000c24, 0xffffffff, 0x43434343, },
++      { 0, 0, 0, 0x00000c28, 0xffffffff, 0x35373941, },
++      { 0, 0, 0, 0x00000c2c, 0xffffffff, 0x43434343, },
++      { 0, 0, 0, 0x00000c30, 0xffffffff, 0x33353739, },
++      { 0, 0, 1, 0x00000c34, 0xffffffff, 0x43434343, },
++      { 0, 0, 1, 0x00000c38, 0xffffffff, 0x31333537, },
++      { 0, 0, 2, 0x00000cd8, 0xffffffff, 0x43434343, },
++      { 0, 0, 2, 0x00000cdc, 0xffffffff, 0x29313335, },
++      { 0, 0, 0, 0x00000c3c, 0xffffffff, 0x34343434, },
++      { 0, 0, 0, 0x00000c40, 0xffffffff, 0x28303234, },
++      { 0, 0, 0, 0x00000c44, 0xffffffff, 0x32322426, },
++      { 0, 0, 1, 0x00000c48, 0xffffffff, 0x30323232, },
++      { 0, 0, 1, 0x00000c4c, 0xffffffff, 0x22242628, },
++      { 0, 0, 2, 0x00000ce0, 0xffffffff, 0x30303030, },
++      { 0, 0, 2, 0x00000ce4, 0xffffffff, 0x24262830, },
++      { 0, 0, 2, 0x00000ce8, 0x0000ffff, 0x20222222, },
++      { 0, 1, 0, 0x00000e20, 0xffffffff, 0x43434343, },
++      { 0, 1, 0, 0x00000e24, 0xffffffff, 0x43434343, },
++      { 0, 1, 0, 0x00000e28, 0xffffffff, 0x35373941, },
++      { 0, 1, 0, 0x00000e2c, 0xffffffff, 0x41434343, },
++      { 0, 1, 0, 0x00000e30, 0xffffffff, 0x33353739, },
++      { 0, 1, 1, 0x00000e34, 0xffffffff, 0x39414141, },
++      { 0, 1, 1, 0x00000e38, 0xffffffff, 0x31333537, },
++      { 0, 1, 2, 0x00000ed8, 0xffffffff, 0x37393939, },
++      { 0, 1, 2, 0x00000edc, 0xffffffff, 0x29313335, },
++      { 0, 1, 0, 0x00000e3c, 0xffffffff, 0x34343434, },
++      { 0, 1, 0, 0x00000e40, 0xffffffff, 0x28303234, },
++      { 0, 1, 0, 0x00000e44, 0xffffffff, 0x32322426, },
++      { 0, 1, 1, 0x00000e48, 0xffffffff, 0x30323232, },
++      { 0, 1, 1, 0x00000e4c, 0xffffffff, 0x22242628, },
++      { 0, 1, 2, 0x00000ee0, 0xffffffff, 0x30303030, },
++      { 0, 1, 2, 0x00000ee4, 0xffffffff, 0x24262830, },
++      { 0, 1, 2, 0x00000ee8, 0x0000ffff, 0x20222222, },
++      { 0, 2, 0, 0x00001820, 0xffffffff, 0x43434343, },
++      { 0, 2, 0, 0x00001824, 0xffffffff, 0x43434343, },
++      { 0, 2, 0, 0x00001828, 0xffffffff, 0x35373941, },
++      { 0, 2, 0, 0x0000182c, 0xffffffff, 0x41434343, },
++      { 0, 2, 0, 0x00001830, 0xffffffff, 0x33353739, },
++      { 0, 2, 1, 0x00001834, 0xffffffff, 0x39414141, },
++      { 0, 2, 1, 0x00001838, 0xffffffff, 0x31333537, },
++      { 0, 2, 2, 0x000018d8, 0xffffffff, 0x37393939, },
++      { 0, 2, 2, 0x000018dc, 0xffffffff, 0x29313335, },
++      { 0, 2, 0, 0x0000183c, 0xffffffff, 0x34343434, },
++      { 0, 2, 0, 0x00001840, 0xffffffff, 0x28303234, },
++      { 0, 2, 0, 0x00001844, 0xffffffff, 0x32322426, },
++      { 0, 2, 1, 0x00001848, 0xffffffff, 0x30323232, },
++      { 0, 2, 1, 0x0000184c, 0xffffffff, 0x22242628, },
++      { 0, 2, 2, 0x000018e0, 0xffffffff, 0x30303030, },
++      { 0, 2, 2, 0x000018e4, 0xffffffff, 0x24262830, },
++      { 0, 2, 2, 0x000018e8, 0x0000ffff, 0x20222222, },
++      { 0, 3, 0, 0x00001a20, 0xffffffff, 0x43434343, },
++      { 0, 3, 0, 0x00001a24, 0xffffffff, 0x43434343, },
++      { 0, 3, 0, 0x00001a28, 0xffffffff, 0x35373941, },
++      { 0, 3, 0, 0x00001a2c, 0xffffffff, 0x41434343, },
++      { 0, 3, 0, 0x00001a30, 0xffffffff, 0x33353739, },
++      { 0, 3, 1, 0x00001a34, 0xffffffff, 0x39414141, },
++      { 0, 3, 1, 0x00001a38, 0xffffffff, 0x31333537, },
++      { 0, 3, 2, 0x00001ad8, 0xffffffff, 0x37393939, },
++      { 0, 3, 2, 0x00001adc, 0xffffffff, 0x29313335, },
++      { 0, 3, 0, 0x00001a3c, 0xffffffff, 0x34343434, },
++      { 0, 3, 0, 0x00001a40, 0xffffffff, 0x28303234, },
++      { 0, 3, 0, 0x00001a44, 0xffffffff, 0x32322426, },
++      { 0, 3, 1, 0x00001a48, 0xffffffff, 0x30323232, },
++      { 0, 3, 1, 0x00001a4c, 0xffffffff, 0x22242628, },
++      { 0, 3, 2, 0x00001ae0, 0xffffffff, 0x30303030, },
++      { 0, 3, 2, 0x00001ae4, 0xffffffff, 0x24262830, },
++      { 0, 3, 2, 0x00001ae8, 0x0000ffff, 0x20222222, },
++      { 1, 0, 0, 0x00000c24, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c28, 0xffffffff, 0x39414345, },
++      { 1, 0, 0, 0x00000c2c, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c30, 0xffffffff, 0x38404244, },
++      { 1, 0, 1, 0x00000c34, 0xffffffff, 0x46464646, },
++      { 1, 0, 1, 0x00000c38, 0xffffffff, 0x36384042, },
++      { 1, 0, 2, 0x00000cd8, 0xffffffff, 0x46464646, },
++      { 1, 0, 2, 0x00000cdc, 0xffffffff, 0x34363840, },
++      { 1, 0, 0, 0x00000c3c, 0xffffffff, 0x46464646, },
++      { 1, 0, 0, 0x00000c40, 0xffffffff, 0x38404244, },
++      { 1, 0, 0, 0x00000c44, 0xffffffff, 0x46463738, },
++      { 1, 0, 1, 0x00000c48, 0xffffffff, 0x42444646, },
++      { 1, 0, 1, 0x00000c4c, 0xffffffff, 0x35373840, },
++      { 1, 0, 2, 0x00000ce0, 0xffffffff, 0x46464646, },
++      { 1, 0, 2, 0x00000ce4, 0xffffffff, 0x37394143, },
++      { 1, 0, 2, 0x00000ce8, 0x0000ffff, 0x33333335, },
++      { 1, 1, 0, 0x00000e24, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e28, 0xffffffff, 0x39414345, },
++      { 1, 1, 0, 0x00000e2c, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e30, 0xffffffff, 0x38404244, },
++      { 1, 1, 1, 0x00000e34, 0xffffffff, 0x46464646, },
++      { 1, 1, 1, 0x00000e38, 0xffffffff, 0x36384042, },
++      { 1, 1, 2, 0x00000ed8, 0xffffffff, 0x46464646, },
++      { 1, 1, 2, 0x00000edc, 0xffffffff, 0x34363840, },
++      { 1, 1, 0, 0x00000e3c, 0xffffffff, 0x46464646, },
++      { 1, 1, 0, 0x00000e40, 0xffffffff, 0x38404244, },
++      { 1, 1, 0, 0x00000e44, 0xffffffff, 0x46463738, },
++      { 1, 1, 1, 0x00000e48, 0xffffffff, 0x42444646, },
++      { 1, 1, 1, 0x00000e4c, 0xffffffff, 0x35373840, },
++      { 1, 1, 2, 0x00000ee0, 0xffffffff, 0x46464646, },
++      { 1, 1, 2, 0x00000ee4, 0xffffffff, 0x37394143, },
++      { 1, 1, 2, 0x00000ee8, 0x0000ffff, 0x33333335, },
++      { 1, 2, 0, 0x00001824, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001828, 0xffffffff, 0x39414345, },
++      { 1, 2, 0, 0x0000182c, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001830, 0xffffffff, 0x38404244, },
++      { 1, 2, 1, 0x00001834, 0xffffffff, 0x46464646, },
++      { 1, 2, 1, 0x00001838, 0xffffffff, 0x36384042, },
++      { 1, 2, 2, 0x000018d8, 0xffffffff, 0x46464646, },
++      { 1, 2, 2, 0x000018dc, 0xffffffff, 0x34363840, },
++      { 1, 2, 0, 0x0000183c, 0xffffffff, 0x46464646, },
++      { 1, 2, 0, 0x00001840, 0xffffffff, 0x38404244, },
++      { 1, 2, 0, 0x00001844, 0xffffffff, 0x46463738, },
++      { 1, 2, 1, 0x00001848, 0xffffffff, 0x42444646, },
++      { 1, 2, 1, 0x0000184c, 0xffffffff, 0x35373840, },
++      { 1, 2, 2, 0x000018e0, 0xffffffff, 0x46464646, },
++      { 1, 2, 2, 0x000018e4, 0xffffffff, 0x37394143, },
++      { 1, 2, 2, 0x000018e8, 0x0000ffff, 0x33333335, },
++      { 1, 3, 0, 0x00001a24, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a28, 0xffffffff, 0x39414345, },
++      { 1, 3, 0, 0x00001a2c, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a30, 0xffffffff, 0x38404244, },
++      { 1, 3, 1, 0x00001a34, 0xffffffff, 0x46464646, },
++      { 1, 3, 1, 0x00001a38, 0xffffffff, 0x36384042, },
++      { 1, 3, 2, 0x00001ad8, 0xffffffff, 0x46464646, },
++      { 1, 3, 2, 0x00001adc, 0xffffffff, 0x34363840, },
++      { 1, 3, 0, 0x00001a3c, 0xffffffff, 0x46464646, },
++      { 1, 3, 0, 0x00001a40, 0xffffffff, 0x38404244, },
++      { 1, 3, 0, 0x00001a44, 0xffffffff, 0x46463738, },
++      { 1, 3, 1, 0x00001a48, 0xffffffff, 0x42444646, },
++      { 1, 3, 1, 0x00001a4c, 0xffffffff, 0x35373840, },
++      { 1, 3, 2, 0x00001ae0, 0xffffffff, 0x46464646, },
++      { 1, 3, 2, 0x00001ae4, 0xffffffff, 0x37394143, },
++      { 1, 3, 2, 0x00001ae8, 0x0000ffff, 0x33333335, },
++};
++
++RTW_DECL_TABLE_BB_PG(rtw8814a_bb_pg_type8);
++
++static const u32 rtw8814a_rf_a[] = {
++              0x018, 0x00013124,
++              0x040, 0x00000C00,
++              0x058, 0x00000F98,
++              0x07F, 0x00068004,
++              0x0B0, 0x000FFFFE,
++              0x0B1, 0x0003FF48,
++              0x0B2, 0x0006AA3F,
++              0x0B3, 0x000FFC9A,
++              0x0B4, 0x0000A78F,
++              0x0B5, 0x00000A3F,
++              0x0B6, 0x0000C09C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0B7, 0x00030008,
++      0xA0000000,     0x00000000,
++              0x0B7, 0x0003000C,
++      0xB0000000,     0x00000000,
++              0x0B8, 0x0007400E,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0xA0000000,     0x00000000,
++              0x0B9, 0x000FBF50,
++      0xB0000000,     0x00000000,
++              0x0BA, 0x00050780,
++              0x0BB, 0x00000000,
++              0x0BC, 0x00040009,
++              0x0BD, 0x00000000,
++              0x0BE, 0x00000000,
++              0x0BF, 0x00000000,
++              0x0EF, 0x00020000,
++              0x03E, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00030000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00030000,
++      0xA0000000,     0x00000000,
++              0x03F, 0x00030000,
++      0xB0000000,     0x00000000,
++              0x03E, 0x00020000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00040000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00040000,
++      0xA0000000,     0x00000000,
++              0x03F, 0x00040000,
++      0xB0000000,     0x00000000,
++              0x03E, 0x00040000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00030000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00030000,
++      0xA0000000,     0x00000000,
++              0x03F, 0x00030000,
++      0xB0000000,     0x00000000,
++              0x03E, 0x00060000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00030000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03F, 0x00030000,
++      0xA0000000,     0x00000000,
++              0x03F, 0x00030000,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00010000,
++              0x03E, 0x00000000,
++              0x03F, 0x00006800,
++              0x03E, 0x00000080,
++              0x03F, 0x00006000,
++              0x03E, 0x00000100,
++              0x03F, 0x00004800,
++              0x03E, 0x00000180,
++              0x03F, 0x00004000,
++              0x03E, 0x00000200,
++              0x03F, 0x00004000,
++              0x03E, 0x00000280,
++              0x03F, 0x00002800,
++              0x03E, 0x00000300,
++              0x03F, 0x00002800,
++              0x03E, 0x00000380,
++              0x03F, 0x00002000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00040000,
++              0x03E, 0x00000000,
++              0x03F, 0x000000BC,
++              0x03E, 0x00000040,
++              0x03F, 0x00000053,
++              0x03E, 0x00000050,
++              0x03F, 0x00000050,
++              0x03E, 0x00000060,
++              0x03F, 0x00000050,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00000400,
++              0x03E, 0x00000006,
++              0x041, 0x000EE080,
++              0x03E, 0x00000008,
++              0x041, 0x000EE0C0,
++              0x03E, 0x0000000A,
++              0x041, 0x000EE100,
++              0x03E, 0x0000000C,
++              0x041, 0x000EE100,
++              0x0EF, 0x00000000,
++              0x018, 0x00000006,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0xA0000000,     0x00000000,
++              0x086, 0x000E4B58,
++              0x087, 0x00049F80,
++      0xB0000000,     0x00000000,
++              0x0DF, 0x00000008,
++              0x0EF, 0x00002000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x000179C3,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0003F258,
++              0x03B, 0x00030A58,
++              0x03B, 0x0002FA58,
++              0x03B, 0x00022590,
++              0x03B, 0x0001FA50,
++              0x03B, 0x00010248,
++              0x03B, 0x00008240,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000100,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000ADF6,
++              0x034, 0x00009DF3,
++              0x034, 0x00008DF0,
++              0x034, 0x00007DED,
++              0x034, 0x00006DEA,
++              0x034, 0x00005CED,
++              0x034, 0x00004CEA,
++              0x034, 0x000034EA,
++              0x034, 0x000024E7,
++              0x034, 0x0000146A,
++              0x034, 0x0000006B,
++      0xB0000000,     0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008ADF6,
++              0x034, 0x00089DF3,
++              0x034, 0x00088DF0,
++              0x034, 0x00087DED,
++              0x034, 0x00086DEA,
++              0x034, 0x00085CED,
++              0x034, 0x00084CEA,
++              0x034, 0x000834EA,
++              0x034, 0x000824E7,
++              0x034, 0x0008146A,
++              0x034, 0x0008006B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x000020A2,
++              0x0DF, 0x00000080,
++              0x035, 0x00000192,
++              0x035, 0x00008192,
++              0x035, 0x00010192,
++              0x036, 0x00000024,
++              0x036, 0x00008024,
++              0x036, 0x00010024,
++              0x036, 0x00018024,
++              0x0EF, 0x00000000,
++              0x051, 0x00000C21,
++              0x052, 0x000006D9,
++              0x053, 0x000FC649,
++              0x054, 0x0000017E,
++              0x018, 0x0001012A,
++              0x081, 0x0007FC00,
++              0x089, 0x00050110,
++              0x08A, 0x00043E50,
++              0x08B, 0x0002E180,
++              0x08C, 0x00093C3C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xA0000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0xA0000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00001000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00028000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00030023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00028623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00021633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0001C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00010293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00009593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0000118B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0000078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x000AC000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00040000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0004C000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00070023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00068623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00061633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0005C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00050293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00049593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0004138B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0004078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0008C000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00060000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00004000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B0023,
++      0x80000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A8623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A1633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0009C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00090293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00089593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0008118B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0008078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00000800,
++              0x03B, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000801,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00000803,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00040000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001801,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000003,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000003,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001001,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001000,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00080000,
++      0x80000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001802,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000800,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001002,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x00013124,
++              0x0EF, 0x00000100,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A1AD,
++              0x034, 0x000491AA,
++              0x034, 0x000481A7,
++              0x034, 0x000470AA,
++              0x034, 0x000460A7,
++              0x034, 0x00045049,
++              0x034, 0x00044046,
++              0x034, 0x00043026,
++              0x034, 0x00042009,
++              0x034, 0x00041006,
++              0x034, 0x00040003,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AF,
++              0x034, 0x000483AB,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004406A,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AF,
++              0x034, 0x000483AB,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004406A,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AF,
++              0x034, 0x000483AB,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004406A,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AF,
++              0x034, 0x000483AB,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004406A,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3F5,
++              0x034, 0x000493F2,
++              0x034, 0x000483B0,
++              0x034, 0x00047370,
++              0x034, 0x0004636D,
++              0x034, 0x0004536A,
++              0x034, 0x00044349,
++              0x034, 0x0004316A,
++              0x034, 0x00042167,
++              0x034, 0x00041129,
++              0x034, 0x00040049,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AF,
++              0x034, 0x000483AB,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004406A,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AF,
++              0x034, 0x000483AB,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004406A,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0004AFF1,
++              0x034, 0x00049FEE,
++              0x034, 0x00048FEB,
++              0x034, 0x00047FE8,
++              0x034, 0x00046DEA,
++              0x034, 0x00045DE7,
++              0x034, 0x00044CEA,
++              0x034, 0x00043CE7,
++              0x034, 0x00042C69,
++              0x034, 0x00041C66,
++              0x034, 0x00040C28,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A1AD,
++              0x034, 0x000291AA,
++              0x034, 0x000281A7,
++              0x034, 0x000270AA,
++              0x034, 0x000260A7,
++              0x034, 0x00025049,
++              0x034, 0x00024046,
++              0x034, 0x00023026,
++              0x034, 0x00022009,
++              0x034, 0x00021006,
++              0x034, 0x00020003,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3F5,
++              0x034, 0x000293F2,
++              0x034, 0x000282F1,
++              0x034, 0x000272B0,
++              0x034, 0x000262AD,
++              0x034, 0x000252AA,
++              0x034, 0x000242A7,
++              0x034, 0x000230EC,
++              0x034, 0x000220E9,
++              0x034, 0x0002106A,
++              0x034, 0x00020067,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0002AFF1,
++              0x034, 0x00029FEE,
++              0x034, 0x00028FEB,
++              0x034, 0x00027FE8,
++              0x034, 0x00026DEA,
++              0x034, 0x00025DE7,
++              0x034, 0x00024CEA,
++              0x034, 0x00023CE7,
++              0x034, 0x00022C69,
++              0x034, 0x00021C66,
++              0x034, 0x00020C28,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EC,
++              0x034, 0x0000938C,
++              0x034, 0x000081AD,
++              0x034, 0x000071AA,
++              0x034, 0x000061A7,
++              0x034, 0x000050AA,
++              0x034, 0x000040A7,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x0000100C,
++              0x034, 0x00000009,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3F4,
++              0x034, 0x000093F1,
++              0x034, 0x000082B1,
++              0x034, 0x000071D1,
++              0x034, 0x000061CE,
++              0x034, 0x000051CB,
++              0x034, 0x000041C8,
++              0x034, 0x000030CB,
++              0x034, 0x000020C8,
++              0x034, 0x00001087,
++              0x034, 0x00000084,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000AFF1,
++              0x034, 0x00009FEE,
++              0x034, 0x00008FEB,
++              0x034, 0x00007FE8,
++              0x034, 0x00006DEA,
++              0x034, 0x00005DE7,
++              0x034, 0x00004CEA,
++              0x034, 0x00003CE7,
++              0x034, 0x00002C69,
++              0x034, 0x00001C66,
++              0x034, 0x00000C28,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA1AD,
++              0x034, 0x000C91AA,
++              0x034, 0x000C81A7,
++              0x034, 0x000C70AA,
++              0x034, 0x000C60A7,
++              0x034, 0x000C5049,
++              0x034, 0x000C4046,
++              0x034, 0x000C3026,
++              0x034, 0x000C2009,
++              0x034, 0x000C1006,
++              0x034, 0x000C0003,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AF,
++              0x034, 0x000C83AB,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C406A,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AF,
++              0x034, 0x000C83AB,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C406A,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AF,
++              0x034, 0x000C83AB,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C406A,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AF,
++              0x034, 0x000C83AB,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C406A,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3F5,
++              0x034, 0x000C93F2,
++              0x034, 0x000C83B0,
++              0x034, 0x000C7370,
++              0x034, 0x000C636D,
++              0x034, 0x000C536A,
++              0x034, 0x000C4349,
++              0x034, 0x000C316A,
++              0x034, 0x000C2167,
++              0x034, 0x000C1129,
++              0x034, 0x000C0049,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AF,
++              0x034, 0x000C83AB,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C406A,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AF,
++              0x034, 0x000C83AB,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C406A,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0xA0000000,     0x00000000,
++              0x034, 0x000CA794,
++              0x034, 0x000C9791,
++              0x034, 0x000C878E,
++              0x034, 0x000C778B,
++              0x034, 0x000C658D,
++              0x034, 0x000C558A,
++              0x034, 0x000C448D,
++              0x034, 0x000C348A,
++              0x034, 0x000C244C,
++              0x034, 0x000C1449,
++              0x034, 0x000C042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA1AD,
++              0x034, 0x000A91AA,
++              0x034, 0x000A81A7,
++              0x034, 0x000A70AA,
++              0x034, 0x000A60A7,
++              0x034, 0x000A5049,
++              0x034, 0x000A4046,
++              0x034, 0x000A3026,
++              0x034, 0x000A2009,
++              0x034, 0x000A1006,
++              0x034, 0x000A0003,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3F5,
++              0x034, 0x000A93F2,
++              0x034, 0x000A82F1,
++              0x034, 0x000A72B0,
++              0x034, 0x000A62AD,
++              0x034, 0x000A52AA,
++              0x034, 0x000A42A7,
++              0x034, 0x000A30EC,
++              0x034, 0x000A20E9,
++              0x034, 0x000A106A,
++              0x034, 0x000A0067,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0xA0000000,     0x00000000,
++              0x034, 0x000AA794,
++              0x034, 0x000A9791,
++              0x034, 0x000A878E,
++              0x034, 0x000A778B,
++              0x034, 0x000A658D,
++              0x034, 0x000A558A,
++              0x034, 0x000A448D,
++              0x034, 0x000A348A,
++              0x034, 0x000A244C,
++              0x034, 0x000A1449,
++              0x034, 0x000A042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EC,
++              0x034, 0x0008938C,
++              0x034, 0x000881AD,
++              0x034, 0x000871AA,
++              0x034, 0x000861A7,
++              0x034, 0x000850AA,
++              0x034, 0x000840A7,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x0008100C,
++              0x034, 0x00080009,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3F4,
++              0x034, 0x000893F1,
++              0x034, 0x000882B1,
++              0x034, 0x000871D1,
++              0x034, 0x000861CE,
++              0x034, 0x000851CB,
++              0x034, 0x000841C8,
++              0x034, 0x000830CB,
++              0x034, 0x000820C8,
++              0x034, 0x00081087,
++              0x034, 0x00080084,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008A794,
++              0x034, 0x00089791,
++              0x034, 0x0008878E,
++              0x034, 0x0008778B,
++              0x034, 0x0008658D,
++              0x034, 0x0008558A,
++              0x034, 0x0008448D,
++              0x034, 0x0008348A,
++              0x034, 0x0008244C,
++              0x034, 0x00081449,
++              0x034, 0x0008042B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0DF, 0x00000001,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000040,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0xA0000000,     0x00000000,
++              0x035, 0x00000747,
++              0x035, 0x00008747,
++              0x035, 0x00010747,
++              0x035, 0x00020747,
++              0x035, 0x00028747,
++              0x035, 0x00030747,
++              0x035, 0x00040747,
++              0x035, 0x00048747,
++              0x035, 0x00050747,
++              0x035, 0x000805FB,
++              0x035, 0x000885FB,
++              0x035, 0x000905FB,
++              0x035, 0x000A05FB,
++              0x035, 0x000A85FB,
++              0x035, 0x000B05FB,
++              0x035, 0x000C05FB,
++              0x035, 0x000C85FB,
++              0x035, 0x000D05FB,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0DF, 0x00000001,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000010,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000473,
++              0x036, 0x00008473,
++              0x036, 0x00010473,
++              0x036, 0x00020473,
++              0x036, 0x00028473,
++              0x036, 0x00030473,
++              0x036, 0x00040473,
++              0x036, 0x00048473,
++              0x036, 0x00050473,
++              0x036, 0x00080473,
++              0x036, 0x00088473,
++              0x036, 0x00090473,
++              0x036, 0x000A0473,
++              0x036, 0x000A8473,
++              0x036, 0x000B0473,
++              0x036, 0x000C0473,
++              0x036, 0x000C8473,
++              0x036, 0x000D0473,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0xA0000000,     0x00000000,
++              0x036, 0x00000473,
++              0x036, 0x00008473,
++              0x036, 0x00010473,
++              0x036, 0x00020473,
++              0x036, 0x00028473,
++              0x036, 0x00030473,
++              0x036, 0x00040473,
++              0x036, 0x00048473,
++              0x036, 0x00050473,
++              0x036, 0x00080473,
++              0x036, 0x00088473,
++              0x036, 0x00090473,
++              0x036, 0x000A0473,
++              0x036, 0x000A8473,
++              0x036, 0x000B0473,
++              0x036, 0x000C0473,
++              0x036, 0x000C8473,
++              0x036, 0x000D0473,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x0EF, 0x00000004,
++              0x037, 0x00000000,
++              0x038, 0x00005146,
++              0x037, 0x00004000,
++              0x038, 0x00005146,
++              0x037, 0x00008000,
++              0x038, 0x00005146,
++              0x037, 0x00010000,
++              0x038, 0x00005146,
++              0x037, 0x00014000,
++              0x038, 0x00005146,
++              0x037, 0x00018000,
++              0x038, 0x00004D4E,
++              0x037, 0x0001C000,
++              0x038, 0x00004D4E,
++              0x037, 0x00020000,
++              0x038, 0x00004D4E,
++              0x037, 0x00024000,
++              0x038, 0x000071C6,
++              0x037, 0x00028000,
++              0x038, 0x000071C6,
++              0x037, 0x0002C000,
++              0x038, 0x000071C6,
++              0x037, 0x00030000,
++              0x038, 0x000071CE,
++              0x037, 0x00034000,
++              0x038, 0x000071CE,
++              0x037, 0x00038000,
++              0x038, 0x00005126,
++              0x037, 0x0003C000,
++              0x038, 0x00005126,
++              0x037, 0x00040000,
++              0x038, 0x00005126,
++              0x037, 0x00044000,
++              0x038, 0x00005126,
++              0x037, 0x00048000,
++              0x038, 0x00005126,
++              0x037, 0x00080000,
++              0x038, 0x00005ECE,
++              0x037, 0x00084000,
++              0x038, 0x00005ECE,
++              0x037, 0x00088000,
++              0x038, 0x00005ECE,
++              0x037, 0x00090000,
++              0x038, 0x00005ECE,
++              0x037, 0x00094000,
++              0x038, 0x00005ECE,
++              0x037, 0x00098000,
++              0x038, 0x00005ECE,
++              0x037, 0x0009C000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000AC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000BC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C8000,
++              0x038, 0x00005ECE,
++              0x0EF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000008,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000007D,
++              0x03C, 0x0000047D,
++              0x03C, 0x0000087D,
++              0x03C, 0x0000107D,
++              0x03C, 0x0000147D,
++              0x03C, 0x0000187D,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x0000054A,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x0000154A,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x0000254A,
++              0x03C, 0x00002821,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000037E,
++              0x03C, 0x00000575,
++              0x03C, 0x00000971,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001575,
++              0x03C, 0x00001871,
++              0x03C, 0x0000217E,
++              0x03C, 0x00002575,
++              0x03C, 0x00002871,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x061, 0x000C0D47,
++              0x062, 0x0000133C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0xA0000000,     0x00000000,
++              0x063, 0x0007D0E7,
++      0xB0000000,     0x00000000,
++              0x064, 0x00014FEC,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0xA0000000,     0x00000000,
++              0x065, 0x000933FF,
++      0xB0000000,     0x00000000,
++              0x066, 0x00000040,
++              0x057, 0x00050000,
++              0x056, 0x00051DF0,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x055, 0x00082061,
++      0xA0000000,     0x00000000,
++              0x055, 0x00082060,
++      0xB0000000,     0x00000000,
++              0x01C, 0x000739D2,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x01F, 0x0002255C,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x01F, 0x0002255C,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x01F, 0x0002255C,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x01F, 0x0002255C,
++      0xA0000000,     0x00000000,
++              0x01F, 0x0002255C,
++      0xB0000000,     0x00000000,
++              0x0B1, 0x0007FF48,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0C4, 0x00081700,
++      0xA0000000,     0x00000000,
++              0x0C4, 0x00083F00,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001B126,
++              0xFFE, 0x00000000,
++              0xFFE, 0x00000000,
++              0xFFE, 0x00000000,
++              0x018, 0x00013126,
++              0x018, 0x00013124,
++};
++
++RTW_DECL_TABLE_RF_RADIO(rtw8814a_rf_a, A);
++
++static const u32 rtw8814a_rf_b[] = {
++              0x018, 0x00013124,
++              0x040, 0x00000C00,
++              0x058, 0x00000F98,
++              0x07F, 0x00068004,
++              0x018, 0x00000006,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0xA0000000,     0x00000000,
++              0x086, 0x000E4B58,
++              0x087, 0x00049F80,
++      0xB0000000,     0x00000000,
++              0x0DF, 0x00000008,
++              0x0EF, 0x00002000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F39B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F39B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017BC3,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0003F258,
++              0x03B, 0x00030A58,
++              0x03B, 0x0002FA58,
++              0x03B, 0x00022590,
++              0x03B, 0x0001FA50,
++              0x03B, 0x00010248,
++              0x03B, 0x00008240,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000100,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000ADF6,
++              0x034, 0x00009DF3,
++              0x034, 0x00008DF0,
++              0x034, 0x00007DED,
++              0x034, 0x00006DEA,
++              0x034, 0x00005CED,
++              0x034, 0x00004CEA,
++              0x034, 0x000034EA,
++              0x034, 0x000024E7,
++              0x034, 0x0000146A,
++              0x034, 0x0000006B,
++      0xB0000000,     0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008ADF6,
++              0x034, 0x00089DF3,
++              0x034, 0x00088DF0,
++              0x034, 0x00087DED,
++              0x034, 0x00086DEA,
++              0x034, 0x00085CED,
++              0x034, 0x00084CEA,
++              0x034, 0x000834EA,
++              0x034, 0x000824E7,
++              0x034, 0x0008146A,
++              0x034, 0x0008006B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x000020A2,
++              0x0DF, 0x00000080,
++              0x035, 0x00000192,
++              0x035, 0x00008192,
++              0x035, 0x00010192,
++              0x036, 0x00000024,
++              0x036, 0x00008024,
++              0x036, 0x00010024,
++              0x036, 0x00018024,
++              0x0EF, 0x00000000,
++              0x051, 0x00000C21,
++              0x052, 0x000006D9,
++              0x053, 0x000FC649,
++              0x054, 0x0000017E,
++              0x018, 0x0001012A,
++              0x081, 0x0007FC00,
++              0x089, 0x00050110,
++              0x08A, 0x00043E50,
++              0x08B, 0x0002E180,
++              0x08C, 0x00093C3C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xA0000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xB0000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++              0x0EF, 0x00001000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00040000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00030023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00028623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00021633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0001C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00010293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00009593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x00000F8B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0000078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00060000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00070023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00068623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00061633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0005C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00050293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00049593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++              0x03B, 0x0004078B,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00060000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0004C000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0004C000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00004000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B0023,
++      0x80000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A8623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A1633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0009C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00090293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00089593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0008138B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0008078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00000800,
++              0x03B, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00000803,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00040000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000800,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000800,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001000,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00080000,
++      0x80000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001802,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001802,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001002,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x00013124,
++              0x0EF, 0x00000100,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38C,
++              0x034, 0x000491AD,
++              0x034, 0x000481AA,
++              0x034, 0x000471A7,
++              0x034, 0x000460AA,
++              0x034, 0x000450A7,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x0004200C,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38C,
++              0x034, 0x00049389,
++              0x034, 0x0004816D,
++              0x034, 0x0004716A,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38B,
++              0x034, 0x00049388,
++              0x034, 0x0004818B,
++              0x034, 0x00047188,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38C,
++              0x034, 0x00049389,
++              0x034, 0x0004816D,
++              0x034, 0x0004716A,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38B,
++              0x034, 0x00049388,
++              0x034, 0x0004818B,
++              0x034, 0x00047188,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3F5,
++              0x034, 0x000493F3,
++              0x034, 0x000483B2,
++              0x034, 0x00047390,
++              0x034, 0x0004638D,
++              0x034, 0x0004538A,
++              0x034, 0x00044387,
++              0x034, 0x0004324A,
++              0x034, 0x00042247,
++              0x034, 0x0004104D,
++              0x034, 0x0004004A,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004AFF7,
++              0x034, 0x00049FF6,
++              0x034, 0x00048FF3,
++              0x034, 0x00047FF0,
++              0x034, 0x00046FED,
++              0x034, 0x00045FEA,
++              0x034, 0x00044FE7,
++              0x034, 0x00043DEA,
++              0x034, 0x00042DE7,
++              0x034, 0x00041DE4,
++              0x034, 0x00040CE7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38C,
++              0x034, 0x00049389,
++              0x034, 0x0004816D,
++              0x034, 0x0004716A,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38C,
++              0x034, 0x00049389,
++              0x034, 0x0004816D,
++              0x034, 0x0004716A,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0xA0000000,     0x00000000,
++              0x034, 0x0004AFF4,
++              0x034, 0x00049FF1,
++              0x034, 0x00048FEE,
++              0x034, 0x00047FEB,
++              0x034, 0x00046FE8,
++              0x034, 0x00045DEA,
++              0x034, 0x00044CED,
++              0x034, 0x00043CEA,
++              0x034, 0x00042C6C,
++              0x034, 0x00041C69,
++              0x034, 0x00040C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A38C,
++              0x034, 0x000291AD,
++              0x034, 0x000281AA,
++              0x034, 0x000271A7,
++              0x034, 0x000260AA,
++              0x034, 0x000250A7,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x0002200C,
++              0x034, 0x00021009,
++              0x034, 0x00020006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EE,
++              0x034, 0x000293AC,
++              0x034, 0x00028389,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AD,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EE,
++              0x034, 0x000293AC,
++              0x034, 0x00028389,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EF,
++              0x034, 0x000293AD,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3F5,
++              0x034, 0x000293F3,
++              0x034, 0x000283D0,
++              0x034, 0x00027371,
++              0x034, 0x0002636E,
++              0x034, 0x0002536B,
++              0x034, 0x00024368,
++              0x034, 0x0002332A,
++              0x034, 0x00022327,
++              0x034, 0x0002104C,
++              0x034, 0x00020049,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002AFF7,
++              0x034, 0x00029FF6,
++              0x034, 0x00028FF3,
++              0x034, 0x00027FF0,
++              0x034, 0x00026FED,
++              0x034, 0x00025FEA,
++              0x034, 0x00024FE7,
++              0x034, 0x00023DEA,
++              0x034, 0x00022DE7,
++              0x034, 0x00021DE4,
++              0x034, 0x00020F25,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EE,
++              0x034, 0x000293AC,
++              0x034, 0x00028389,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EE,
++              0x034, 0x000293AC,
++              0x034, 0x00028389,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0002AFF4,
++              0x034, 0x00029FF1,
++              0x034, 0x00028FEE,
++              0x034, 0x00027FEB,
++              0x034, 0x00026FE8,
++              0x034, 0x00025DEA,
++              0x034, 0x00024CED,
++              0x034, 0x00023CEA,
++              0x034, 0x00022C6C,
++              0x034, 0x00021C69,
++              0x034, 0x00020C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A38C,
++              0x034, 0x000091AD,
++              0x034, 0x000081AA,
++              0x034, 0x000071A7,
++              0x034, 0x000060AA,
++              0x034, 0x000050A7,
++              0x034, 0x0000402C,
++              0x034, 0x00003029,
++              0x034, 0x00002026,
++              0x034, 0x00001009,
++              0x034, 0x00000006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EC,
++              0x034, 0x000093AC,
++              0x034, 0x000081EC,
++              0x034, 0x0000716D,
++              0x034, 0x0000616A,
++              0x034, 0x0000506D,
++              0x034, 0x0000404C,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EF,
++              0x034, 0x000093AD,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EC,
++              0x034, 0x000093AC,
++              0x034, 0x000081EC,
++              0x034, 0x0000716D,
++              0x034, 0x0000616A,
++              0x034, 0x0000506D,
++              0x034, 0x0000404C,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EF,
++              0x034, 0x000093AD,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3F4,
++              0x034, 0x000093F0,
++              0x034, 0x000083AE,
++              0x034, 0x00007350,
++              0x034, 0x0000634D,
++              0x034, 0x0000534A,
++              0x034, 0x00004347,
++              0x034, 0x0000312D,
++              0x034, 0x0000212A,
++              0x034, 0x00001127,
++              0x034, 0x0000002A,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000AFF7,
++              0x034, 0x00009FF4,
++              0x034, 0x00008FF1,
++              0x034, 0x00007FEE,
++              0x034, 0x00006FEB,
++              0x034, 0x00005FE8,
++              0x034, 0x00004DEB,
++              0x034, 0x00003DE8,
++              0x034, 0x00002DE5,
++              0x034, 0x00001C8B,
++              0x034, 0x00000C88,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EC,
++              0x034, 0x000093AC,
++              0x034, 0x000081EC,
++              0x034, 0x0000716D,
++              0x034, 0x0000616A,
++              0x034, 0x0000506D,
++              0x034, 0x0000404C,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EC,
++              0x034, 0x000093AC,
++              0x034, 0x000081EC,
++              0x034, 0x0000716D,
++              0x034, 0x0000616A,
++              0x034, 0x0000506D,
++              0x034, 0x0000404C,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000AFF4,
++              0x034, 0x00009FF1,
++              0x034, 0x00008FEE,
++              0x034, 0x00007FEB,
++              0x034, 0x00006FE8,
++              0x034, 0x00005DEA,
++              0x034, 0x00004CED,
++              0x034, 0x00003CEA,
++              0x034, 0x00002C6C,
++              0x034, 0x00001C69,
++              0x034, 0x00000C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38C,
++              0x034, 0x000C91AD,
++              0x034, 0x000C81AA,
++              0x034, 0x000C71A7,
++              0x034, 0x000C60AA,
++              0x034, 0x000C50A7,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C200C,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38C,
++              0x034, 0x000C9389,
++              0x034, 0x000C816D,
++              0x034, 0x000C716A,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38B,
++              0x034, 0x000C9388,
++              0x034, 0x000C818B,
++              0x034, 0x000C7188,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38C,
++              0x034, 0x000C9389,
++              0x034, 0x000C816D,
++              0x034, 0x000C716A,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38B,
++              0x034, 0x000C9388,
++              0x034, 0x000C818B,
++              0x034, 0x000C7188,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3F5,
++              0x034, 0x000C93F3,
++              0x034, 0x000C83B2,
++              0x034, 0x000C7390,
++              0x034, 0x000C638D,
++              0x034, 0x000C538A,
++              0x034, 0x000C4387,
++              0x034, 0x000C324A,
++              0x034, 0x000C2247,
++              0x034, 0x000C104D,
++              0x034, 0x000C004A,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CAFF7,
++              0x034, 0x000C9FF6,
++              0x034, 0x000C8FF3,
++              0x034, 0x000C7FF0,
++              0x034, 0x000C6FED,
++              0x034, 0x000C5FEA,
++              0x034, 0x000C4FE7,
++              0x034, 0x000C3DEA,
++              0x034, 0x000C2DE7,
++              0x034, 0x000C1DE4,
++              0x034, 0x000C0CE7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38C,
++              0x034, 0x000C9389,
++              0x034, 0x000C816D,
++              0x034, 0x000C716A,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38C,
++              0x034, 0x000C9389,
++              0x034, 0x000C816D,
++              0x034, 0x000C716A,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0xA0000000,     0x00000000,
++              0x034, 0x000CA794,
++              0x034, 0x000C9791,
++              0x034, 0x000C878E,
++              0x034, 0x000C778B,
++              0x034, 0x000C658D,
++              0x034, 0x000C558A,
++              0x034, 0x000C448D,
++              0x034, 0x000C348A,
++              0x034, 0x000C244C,
++              0x034, 0x000C1449,
++              0x034, 0x000C042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA38C,
++              0x034, 0x000A91AD,
++              0x034, 0x000A81AA,
++              0x034, 0x000A71A7,
++              0x034, 0x000A60AA,
++              0x034, 0x000A50A7,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A200C,
++              0x034, 0x000A1009,
++              0x034, 0x000A0006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EE,
++              0x034, 0x000A93AC,
++              0x034, 0x000A8389,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AD,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EE,
++              0x034, 0x000A93AC,
++              0x034, 0x000A8389,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EF,
++              0x034, 0x000A93AD,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3F5,
++              0x034, 0x000A93F3,
++              0x034, 0x000A83D0,
++              0x034, 0x000A7371,
++              0x034, 0x000A636E,
++              0x034, 0x000A536B,
++              0x034, 0x000A4368,
++              0x034, 0x000A332A,
++              0x034, 0x000A2327,
++              0x034, 0x000A104C,
++              0x034, 0x000A0049,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AAFF7,
++              0x034, 0x000A9FF6,
++              0x034, 0x000A8FF3,
++              0x034, 0x000A7FF0,
++              0x034, 0x000A6FED,
++              0x034, 0x000A5FEA,
++              0x034, 0x000A4FE7,
++              0x034, 0x000A3DEA,
++              0x034, 0x000A2DE7,
++              0x034, 0x000A1DE4,
++              0x034, 0x000A0F25,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EE,
++              0x034, 0x000A93AC,
++              0x034, 0x000A8389,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EE,
++              0x034, 0x000A93AC,
++              0x034, 0x000A8389,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0xA0000000,     0x00000000,
++              0x034, 0x000AA794,
++              0x034, 0x000A9791,
++              0x034, 0x000A878E,
++              0x034, 0x000A778B,
++              0x034, 0x000A658D,
++              0x034, 0x000A558A,
++              0x034, 0x000A448D,
++              0x034, 0x000A348A,
++              0x034, 0x000A244C,
++              0x034, 0x000A1449,
++              0x034, 0x000A042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A38C,
++              0x034, 0x000891AD,
++              0x034, 0x000881AA,
++              0x034, 0x000871A7,
++              0x034, 0x000860AA,
++              0x034, 0x000850A7,
++              0x034, 0x0008402C,
++              0x034, 0x00083029,
++              0x034, 0x00082026,
++              0x034, 0x00081009,
++              0x034, 0x00080006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EC,
++              0x034, 0x000893AC,
++              0x034, 0x000881EC,
++              0x034, 0x0008716D,
++              0x034, 0x0008616A,
++              0x034, 0x0008506D,
++              0x034, 0x0008404C,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EF,
++              0x034, 0x000893AD,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EC,
++              0x034, 0x000893AC,
++              0x034, 0x000881EC,
++              0x034, 0x0008716D,
++              0x034, 0x0008616A,
++              0x034, 0x0008506D,
++              0x034, 0x0008404C,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EF,
++              0x034, 0x000893AD,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3F4,
++              0x034, 0x000893F0,
++              0x034, 0x000883AE,
++              0x034, 0x00087350,
++              0x034, 0x0008634D,
++              0x034, 0x0008534A,
++              0x034, 0x00084347,
++              0x034, 0x0008312D,
++              0x034, 0x0008212A,
++              0x034, 0x00081127,
++              0x034, 0x0008002A,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008AFF7,
++              0x034, 0x00089FF4,
++              0x034, 0x00088FF1,
++              0x034, 0x00087FEE,
++              0x034, 0x00086FEB,
++              0x034, 0x00085FE8,
++              0x034, 0x00084DEB,
++              0x034, 0x00083DE8,
++              0x034, 0x00082DE5,
++              0x034, 0x00081C8B,
++              0x034, 0x00080C88,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EC,
++              0x034, 0x000893AC,
++              0x034, 0x000881EC,
++              0x034, 0x0008716D,
++              0x034, 0x0008616A,
++              0x034, 0x0008506D,
++              0x034, 0x0008404C,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EC,
++              0x034, 0x000893AC,
++              0x034, 0x000881EC,
++              0x034, 0x0008716D,
++              0x034, 0x0008616A,
++              0x034, 0x0008506D,
++              0x034, 0x0008404C,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008A794,
++              0x034, 0x00089791,
++              0x034, 0x0008878E,
++              0x034, 0x0008778B,
++              0x034, 0x0008658D,
++              0x034, 0x0008558A,
++              0x034, 0x0008448D,
++              0x034, 0x0008348A,
++              0x034, 0x0008244C,
++              0x034, 0x00081449,
++              0x034, 0x0008042B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x0DF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000040,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0xA0000000,     0x00000000,
++              0x035, 0x00000484,
++              0x035, 0x00008484,
++              0x035, 0x00010484,
++              0x035, 0x00020584,
++              0x035, 0x00028584,
++              0x035, 0x00030584,
++              0x035, 0x00040584,
++              0x035, 0x00048584,
++              0x035, 0x00050584,
++              0x035, 0x000805FB,
++              0x035, 0x000885FB,
++              0x035, 0x000905FB,
++              0x035, 0x000A05FB,
++              0x035, 0x000A85FB,
++              0x035, 0x000B05FB,
++              0x035, 0x000C05FB,
++              0x035, 0x000C85FB,
++              0x035, 0x000D05FB,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x0DF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000010,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000473,
++              0x036, 0x00008473,
++              0x036, 0x00010473,
++              0x036, 0x00020473,
++              0x036, 0x00028473,
++              0x036, 0x00030473,
++              0x036, 0x00040473,
++              0x036, 0x00048473,
++              0x036, 0x00050473,
++              0x036, 0x00080473,
++              0x036, 0x00088473,
++              0x036, 0x00090473,
++              0x036, 0x000A0473,
++              0x036, 0x000A8473,
++              0x036, 0x000B0473,
++              0x036, 0x000C0473,
++              0x036, 0x000C8473,
++              0x036, 0x000D0473,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0xA0000000,     0x00000000,
++              0x036, 0x00000474,
++              0x036, 0x00008474,
++              0x036, 0x00010474,
++              0x036, 0x00020474,
++              0x036, 0x00028474,
++              0x036, 0x00030474,
++              0x036, 0x00040474,
++              0x036, 0x00048474,
++              0x036, 0x00050474,
++              0x036, 0x00080474,
++              0x036, 0x00088474,
++              0x036, 0x00090474,
++              0x036, 0x000A0474,
++              0x036, 0x000A8474,
++              0x036, 0x000B0474,
++              0x036, 0x000C0474,
++              0x036, 0x000C8474,
++              0x036, 0x000D0474,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x0EF, 0x00000004,
++              0x037, 0x00000000,
++              0x038, 0x0000514E,
++              0x037, 0x00004000,
++              0x038, 0x0000514E,
++              0x037, 0x00008000,
++              0x038, 0x0000514E,
++              0x037, 0x00010000,
++              0x038, 0x0000514E,
++              0x037, 0x00014000,
++              0x038, 0x0000514E,
++              0x037, 0x00018000,
++              0x038, 0x0000514E,
++              0x037, 0x0001C000,
++              0x038, 0x0000514E,
++              0x037, 0x00020000,
++              0x038, 0x0000514E,
++              0x037, 0x00024000,
++              0x038, 0x0000514E,
++              0x037, 0x00028000,
++              0x038, 0x0000514E,
++              0x037, 0x0002C000,
++              0x038, 0x0000714E,
++              0x037, 0x00030000,
++              0x038, 0x0000514E,
++              0x037, 0x00034000,
++              0x038, 0x0000514E,
++              0x037, 0x00038000,
++              0x038, 0x0000514E,
++              0x037, 0x0003C000,
++              0x038, 0x0000514E,
++              0x037, 0x00040000,
++              0x038, 0x0000514E,
++              0x037, 0x00044000,
++              0x038, 0x0000514E,
++              0x037, 0x00048000,
++              0x038, 0x0000514E,
++              0x037, 0x00080000,
++              0x038, 0x00005ECE,
++              0x037, 0x00084000,
++              0x038, 0x00005ECE,
++              0x037, 0x00088000,
++              0x038, 0x00005ECE,
++              0x037, 0x00090000,
++              0x038, 0x00005ECE,
++              0x037, 0x00094000,
++              0x038, 0x00005ECE,
++              0x037, 0x00098000,
++              0x038, 0x00005ECE,
++              0x037, 0x0009C000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000AC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000BC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C8000,
++              0x038, 0x00005ECE,
++              0x0EF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000008,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000007D,
++              0x03C, 0x0000047D,
++              0x03C, 0x0000087D,
++              0x03C, 0x0000107D,
++              0x03C, 0x0000147D,
++              0x03C, 0x0000187D,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027E,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227E,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000037E,
++              0x03C, 0x00000575,
++              0x03C, 0x00000971,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001575,
++              0x03C, 0x00001871,
++              0x03C, 0x0000217E,
++              0x03C, 0x00002575,
++              0x03C, 0x00002871,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x061, 0x000C0D47,
++              0x062, 0x0000133C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0xA0000000,     0x00000000,
++              0x063, 0x0007D0E7,
++      0xB0000000,     0x00000000,
++              0x064, 0x00014FEC,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0xA0000000,     0x00000000,
++              0x065, 0x000923FF,
++      0xB0000000,     0x00000000,
++              0x066, 0x00000040,
++              0x057, 0x00050000,
++              0x056, 0x00051DF0,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x055, 0x00082060,
++      0xB0000000,     0x00000000,
++};
++
++RTW_DECL_TABLE_RF_RADIO(rtw8814a_rf_b, B);
++
++static const u32 rtw8814a_rf_c[] = {
++              0x018, 0x00013124,
++              0x040, 0x00000C00,
++              0x058, 0x00000F98,
++              0x07F, 0x00068004,
++              0x018, 0x00000006,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0xA0000000,     0x00000000,
++              0x086, 0x000E4B58,
++              0x087, 0x00049F80,
++      0xB0000000,     0x00000000,
++              0x0DF, 0x00000008,
++              0x0EF, 0x00002000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017823,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0003F258,
++              0x03B, 0x00030A58,
++              0x03B, 0x0002FA58,
++              0x03B, 0x00022590,
++              0x03B, 0x0001FA50,
++              0x03B, 0x00010248,
++              0x03B, 0x00008240,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000100,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000ADF6,
++              0x034, 0x00009DF3,
++              0x034, 0x00008DF0,
++              0x034, 0x00007DED,
++              0x034, 0x00006DEA,
++              0x034, 0x00005CED,
++              0x034, 0x00004CEA,
++              0x034, 0x000034EA,
++              0x034, 0x000024E7,
++              0x034, 0x0000146A,
++              0x034, 0x0000006B,
++      0xB0000000,     0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008ADF6,
++              0x034, 0x00089DF3,
++              0x034, 0x00088DF0,
++              0x034, 0x00087DED,
++              0x034, 0x00086DEA,
++              0x034, 0x00085CED,
++              0x034, 0x00084CEA,
++              0x034, 0x000834EA,
++              0x034, 0x000824E7,
++              0x034, 0x0008146A,
++              0x034, 0x0008006B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x000020A2,
++              0x0DF, 0x00000080,
++              0x035, 0x00000192,
++              0x035, 0x00008192,
++              0x035, 0x00010192,
++              0x036, 0x00000024,
++              0x036, 0x00008024,
++              0x036, 0x00010024,
++              0x036, 0x00018024,
++              0x0EF, 0x00000000,
++              0x051, 0x00000C21,
++              0x052, 0x000006D9,
++              0x053, 0x000FC649,
++              0x054, 0x0000017E,
++              0x018, 0x0001012A,
++              0x081, 0x0007FC00,
++              0x089, 0x00050110,
++              0x08A, 0x00043E50,
++              0x08B, 0x0002E180,
++              0x08C, 0x00093C3C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xA0000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0xA0000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00001000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0006C000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x000D4000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00080000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0006C000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0008C000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00004000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x000A0000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00030023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00028623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00021633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0001C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00010293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00009593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0000118B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0000078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0004C000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00084000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00080000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0004C000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x000D0000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00080000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00080000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00028000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00070023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00068623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00061633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0005C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00050293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00049593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++              0x03B, 0x0004078B,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00060000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00080000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B0023,
++      0x80000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A8623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A1633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0009C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00090293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00089593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0008128B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0008078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00000800,
++              0x03B, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001803,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001803,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00000803,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00040000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000800,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001000,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00080000,
++      0x80000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001802,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001802,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001002,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++      0xB0000000,     0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x018, 0x00013124,
++      0xA0000000,     0x00000000,
++              0x018, 0x00013124,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000100,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A38C,
++              0x034, 0x000491AD,
++              0x034, 0x000481AA,
++              0x034, 0x000471A7,
++              0x034, 0x000460AA,
++              0x034, 0x000450A7,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x0004200C,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AD,
++              0x034, 0x0004838A,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004404C,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AD,
++              0x034, 0x0004838A,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004404C,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AD,
++              0x034, 0x0004838A,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004404C,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AD,
++              0x034, 0x0004838A,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004404C,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3F5,
++              0x034, 0x000493F3,
++              0x034, 0x00048393,
++              0x034, 0x00047390,
++              0x034, 0x0004638D,
++              0x034, 0x0004538A,
++              0x034, 0x00044387,
++              0x034, 0x000430ED,
++              0x034, 0x000420EA,
++              0x034, 0x000410E7,
++              0x034, 0x0004002D,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004AFF7,
++              0x034, 0x00049FF6,
++              0x034, 0x00048FF3,
++              0x034, 0x00047FF0,
++              0x034, 0x00046FED,
++              0x034, 0x00045FEA,
++              0x034, 0x00044FE7,
++              0x034, 0x00043CD0,
++              0x034, 0x00042CCD,
++              0x034, 0x00041CCA,
++              0x034, 0x00040CC7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AD,
++              0x034, 0x0004838A,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004404C,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EF,
++              0x034, 0x000493AD,
++              0x034, 0x0004838A,
++              0x034, 0x0004718C,
++              0x034, 0x00046189,
++              0x034, 0x0004506D,
++              0x034, 0x0004404C,
++              0x034, 0x0004302C,
++              0x034, 0x00042029,
++              0x034, 0x00041026,
++              0x034, 0x00040023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0004AFF4,
++              0x034, 0x00049FF1,
++              0x034, 0x00048FEE,
++              0x034, 0x00047FEB,
++              0x034, 0x00046FE8,
++              0x034, 0x00045DEA,
++              0x034, 0x00044CED,
++              0x034, 0x00043CEA,
++              0x034, 0x00042C6C,
++              0x034, 0x00041C69,
++              0x034, 0x00040C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x0002938C,
++              0x034, 0x000281AD,
++              0x034, 0x000271AA,
++              0x034, 0x000261A7,
++              0x034, 0x000250AA,
++              0x034, 0x000240A7,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x0002100C,
++              0x034, 0x00020009,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x0002936D,
++              0x034, 0x0002836A,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x0002936D,
++              0x034, 0x0002836A,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x000293AC,
++              0x034, 0x0002838A,
++              0x034, 0x0002718C,
++              0x034, 0x00026189,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3F5,
++              0x034, 0x000293F3,
++              0x034, 0x000282F2,
++              0x034, 0x000272D0,
++              0x034, 0x000262CD,
++              0x034, 0x000252CA,
++              0x034, 0x000242C7,
++              0x034, 0x000230CD,
++              0x034, 0x000220CA,
++              0x034, 0x000210C7,
++              0x034, 0x00020086,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002AFF7,
++              0x034, 0x00029FF6,
++              0x034, 0x00028FF3,
++              0x034, 0x00027FF0,
++              0x034, 0x00026FED,
++              0x034, 0x00025FEA,
++              0x034, 0x00024FE7,
++              0x034, 0x00023DEA,
++              0x034, 0x00022DE7,
++              0x034, 0x00021DE4,
++              0x034, 0x00020E44,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x0002936D,
++              0x034, 0x0002836A,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EC,
++              0x034, 0x0002936D,
++              0x034, 0x0002836A,
++              0x034, 0x0002716D,
++              0x034, 0x0002616A,
++              0x034, 0x0002506D,
++              0x034, 0x0002406A,
++              0x034, 0x0002302C,
++              0x034, 0x00022029,
++              0x034, 0x00021026,
++              0x034, 0x00020023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0002AFF4,
++              0x034, 0x00029FF1,
++              0x034, 0x00028FEE,
++              0x034, 0x00027FEB,
++              0x034, 0x00026FE8,
++              0x034, 0x00025DEA,
++              0x034, 0x00024CED,
++              0x034, 0x00023CEA,
++              0x034, 0x00022C6C,
++              0x034, 0x00021C69,
++              0x034, 0x00020C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A38C,
++              0x034, 0x000091AD,
++              0x034, 0x000081AA,
++              0x034, 0x000071A7,
++              0x034, 0x000060AA,
++              0x034, 0x000050A7,
++              0x034, 0x0000402C,
++              0x034, 0x00003029,
++              0x034, 0x0000200C,
++              0x034, 0x00001009,
++              0x034, 0x00000006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AB,
++              0x034, 0x00008389,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AB,
++              0x034, 0x00008389,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AB,
++              0x034, 0x00008389,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AB,
++              0x034, 0x00008389,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3F5,
++              0x034, 0x000093F1,
++              0x034, 0x000083B0,
++              0x034, 0x00007370,
++              0x034, 0x0000636D,
++              0x034, 0x0000536A,
++              0x034, 0x00004367,
++              0x034, 0x0000308E,
++              0x034, 0x0000208B,
++              0x034, 0x00001088,
++              0x034, 0x00000085,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000AFF7,
++              0x034, 0x00009FF5,
++              0x034, 0x00008FF2,
++              0x034, 0x00007FEF,
++              0x034, 0x00006FEC,
++              0x034, 0x00005FE9,
++              0x034, 0x00004EAA,
++              0x034, 0x00003EA7,
++              0x034, 0x00002C70,
++              0x034, 0x00001C6D,
++              0x034, 0x00000C6A,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AB,
++              0x034, 0x00008389,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AB,
++              0x034, 0x00008389,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000AFF4,
++              0x034, 0x00009FF1,
++              0x034, 0x00008FEE,
++              0x034, 0x00007FEB,
++              0x034, 0x00006FE8,
++              0x034, 0x00005DEA,
++              0x034, 0x00004CED,
++              0x034, 0x00003CEA,
++              0x034, 0x00002C6C,
++              0x034, 0x00001C69,
++              0x034, 0x00000C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA38C,
++              0x034, 0x000C91AD,
++              0x034, 0x000C81AA,
++              0x034, 0x000C71A7,
++              0x034, 0x000C60AA,
++              0x034, 0x000C50A7,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C200C,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AD,
++              0x034, 0x000C838A,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C404C,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AD,
++              0x034, 0x000C838A,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C404C,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AD,
++              0x034, 0x000C838A,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C404C,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AD,
++              0x034, 0x000C838A,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C404C,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3F5,
++              0x034, 0x000C93F3,
++              0x034, 0x000C8393,
++              0x034, 0x000C7390,
++              0x034, 0x000C638D,
++              0x034, 0x000C538A,
++              0x034, 0x000C4387,
++              0x034, 0x000C30ED,
++              0x034, 0x000C20EA,
++              0x034, 0x000C10E7,
++              0x034, 0x000C002D,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CAFF7,
++              0x034, 0x000C9FF6,
++              0x034, 0x000C8FF3,
++              0x034, 0x000C7FF0,
++              0x034, 0x000C6FED,
++              0x034, 0x000C5FEA,
++              0x034, 0x000C4FE7,
++              0x034, 0x000C3CD0,
++              0x034, 0x000C2CCD,
++              0x034, 0x000C1CCA,
++              0x034, 0x000C0CC7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AD,
++              0x034, 0x000C838A,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C404C,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EF,
++              0x034, 0x000C93AD,
++              0x034, 0x000C838A,
++              0x034, 0x000C718C,
++              0x034, 0x000C6189,
++              0x034, 0x000C506D,
++              0x034, 0x000C404C,
++              0x034, 0x000C302C,
++              0x034, 0x000C2029,
++              0x034, 0x000C1026,
++              0x034, 0x000C0023,
++      0xA0000000,     0x00000000,
++              0x034, 0x000CA794,
++              0x034, 0x000C9791,
++              0x034, 0x000C878E,
++              0x034, 0x000C778B,
++              0x034, 0x000C658D,
++              0x034, 0x000C558A,
++              0x034, 0x000C448D,
++              0x034, 0x000C348A,
++              0x034, 0x000C244C,
++              0x034, 0x000C1449,
++              0x034, 0x000C042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A938C,
++              0x034, 0x000A81AD,
++              0x034, 0x000A71AA,
++              0x034, 0x000A61A7,
++              0x034, 0x000A50AA,
++              0x034, 0x000A40A7,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A100C,
++              0x034, 0x000A0009,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A936D,
++              0x034, 0x000A836A,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A936D,
++              0x034, 0x000A836A,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A93AC,
++              0x034, 0x000A838A,
++              0x034, 0x000A718C,
++              0x034, 0x000A6189,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3F5,
++              0x034, 0x000A93F3,
++              0x034, 0x000A82F2,
++              0x034, 0x000A72D0,
++              0x034, 0x000A62CD,
++              0x034, 0x000A52CA,
++              0x034, 0x000A42C7,
++              0x034, 0x000A30CD,
++              0x034, 0x000A20CA,
++              0x034, 0x000A10C7,
++              0x034, 0x000A0086,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AAFF7,
++              0x034, 0x000A9FF6,
++              0x034, 0x000A8FF3,
++              0x034, 0x000A7FF0,
++              0x034, 0x000A6FED,
++              0x034, 0x000A5FEA,
++              0x034, 0x000A4FE7,
++              0x034, 0x000A3DEA,
++              0x034, 0x000A2DE7,
++              0x034, 0x000A1DE4,
++              0x034, 0x000A0E44,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A936D,
++              0x034, 0x000A836A,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EC,
++              0x034, 0x000A936D,
++              0x034, 0x000A836A,
++              0x034, 0x000A716D,
++              0x034, 0x000A616A,
++              0x034, 0x000A506D,
++              0x034, 0x000A406A,
++              0x034, 0x000A302C,
++              0x034, 0x000A2029,
++              0x034, 0x000A1026,
++              0x034, 0x000A0023,
++      0xA0000000,     0x00000000,
++              0x034, 0x000AA794,
++              0x034, 0x000A9791,
++              0x034, 0x000A878E,
++              0x034, 0x000A778B,
++              0x034, 0x000A658D,
++              0x034, 0x000A558A,
++              0x034, 0x000A448D,
++              0x034, 0x000A348A,
++              0x034, 0x000A244C,
++              0x034, 0x000A1449,
++              0x034, 0x000A042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A38C,
++              0x034, 0x000891AD,
++              0x034, 0x000881AA,
++              0x034, 0x000871A7,
++              0x034, 0x000860AA,
++              0x034, 0x000850A7,
++              0x034, 0x0008402C,
++              0x034, 0x00083029,
++              0x034, 0x0008200C,
++              0x034, 0x00081009,
++              0x034, 0x00000006,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AB,
++              0x034, 0x00088389,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AB,
++              0x034, 0x00088389,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AB,
++              0x034, 0x00088389,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AB,
++              0x034, 0x00088389,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3F5,
++              0x034, 0x000893F1,
++              0x034, 0x000883B0,
++              0x034, 0x00087370,
++              0x034, 0x0008636D,
++              0x034, 0x0008536A,
++              0x034, 0x00084367,
++              0x034, 0x0008308E,
++              0x034, 0x0008208B,
++              0x034, 0x00081088,
++              0x034, 0x00080085,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008AFF7,
++              0x034, 0x00089FF5,
++              0x034, 0x00088FF2,
++              0x034, 0x00087FEF,
++              0x034, 0x00086FEC,
++              0x034, 0x00085FE9,
++              0x034, 0x00084EAA,
++              0x034, 0x00083EA7,
++              0x034, 0x00082C70,
++              0x034, 0x00081C6D,
++              0x034, 0x00080C6A,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AB,
++              0x034, 0x00088389,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AB,
++              0x034, 0x00088389,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008A794,
++              0x034, 0x00089791,
++              0x034, 0x0008878E,
++              0x034, 0x0008778B,
++              0x034, 0x0008658D,
++              0x034, 0x0008558A,
++              0x034, 0x0008448D,
++              0x034, 0x0008348A,
++              0x034, 0x0008244C,
++              0x034, 0x00081449,
++              0x034, 0x0008042B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x0DF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000040,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0xA0000000,     0x00000000,
++              0x035, 0x00000484,
++              0x035, 0x00008484,
++              0x035, 0x00010484,
++              0x035, 0x00020584,
++              0x035, 0x00028584,
++              0x035, 0x00030584,
++              0x035, 0x00040584,
++              0x035, 0x00048584,
++              0x035, 0x00050584,
++              0x035, 0x000805FB,
++              0x035, 0x000885FB,
++              0x035, 0x000905FB,
++              0x035, 0x000A05FB,
++              0x035, 0x000A85FB,
++              0x035, 0x000B05FB,
++              0x035, 0x000C05FB,
++              0x035, 0x000C85FB,
++              0x035, 0x000D05FB,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x0DF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000010,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000473,
++              0x036, 0x00008473,
++              0x036, 0x00010473,
++              0x036, 0x00020473,
++              0x036, 0x00028473,
++              0x036, 0x00030473,
++              0x036, 0x00040473,
++              0x036, 0x00048473,
++              0x036, 0x00050473,
++              0x036, 0x00080473,
++              0x036, 0x00088473,
++              0x036, 0x00090473,
++              0x036, 0x000A0473,
++              0x036, 0x000A8473,
++              0x036, 0x000B0473,
++              0x036, 0x000C0473,
++              0x036, 0x000C8473,
++              0x036, 0x000D0473,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0xA0000000,     0x00000000,
++              0x036, 0x00000474,
++              0x036, 0x00008474,
++              0x036, 0x00010474,
++              0x036, 0x00020474,
++              0x036, 0x00028474,
++              0x036, 0x00030474,
++              0x036, 0x00040474,
++              0x036, 0x00048474,
++              0x036, 0x00050474,
++              0x036, 0x00080474,
++              0x036, 0x00088474,
++              0x036, 0x00090474,
++              0x036, 0x000A0474,
++              0x036, 0x000A8474,
++              0x036, 0x000B0474,
++              0x036, 0x000C0474,
++              0x036, 0x000C8474,
++              0x036, 0x000D0474,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x0EF, 0x00000004,
++              0x037, 0x00000000,
++              0x038, 0x0000514E,
++              0x037, 0x00004000,
++              0x038, 0x0000514E,
++              0x037, 0x00008000,
++              0x038, 0x0000514E,
++              0x037, 0x00010000,
++              0x038, 0x0000514E,
++              0x037, 0x00014000,
++              0x038, 0x0000514E,
++              0x037, 0x00018000,
++              0x038, 0x0000514E,
++              0x037, 0x0001C000,
++              0x038, 0x0000514E,
++              0x037, 0x00020000,
++              0x038, 0x0000514E,
++              0x037, 0x00024000,
++              0x038, 0x0000514E,
++              0x037, 0x00028000,
++              0x038, 0x0000514E,
++              0x037, 0x0002C000,
++              0x038, 0x0000714E,
++              0x037, 0x00030000,
++              0x038, 0x0000514E,
++              0x037, 0x00034000,
++              0x038, 0x0000514E,
++              0x037, 0x00038000,
++              0x038, 0x0000514E,
++              0x037, 0x0003C000,
++              0x038, 0x0000514E,
++              0x037, 0x00040000,
++              0x038, 0x0000514E,
++              0x037, 0x00044000,
++              0x038, 0x0000514E,
++              0x037, 0x00048000,
++              0x038, 0x0000514E,
++              0x037, 0x00080000,
++              0x038, 0x00005ECE,
++              0x037, 0x00084000,
++              0x038, 0x00005ECE,
++              0x037, 0x00088000,
++              0x038, 0x00005ECE,
++              0x037, 0x00090000,
++              0x038, 0x00005ECE,
++              0x037, 0x00094000,
++              0x038, 0x00005ECE,
++              0x037, 0x00098000,
++              0x038, 0x00005ECE,
++              0x037, 0x0009C000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000AC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000BC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C8000,
++              0x038, 0x00005ECE,
++              0x0EF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000008,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000007D,
++              0x03C, 0x0000047D,
++              0x03C, 0x0000087D,
++              0x03C, 0x0000107D,
++              0x03C, 0x0000147D,
++              0x03C, 0x0000187D,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000541,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001541,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002541,
++              0x03C, 0x00002821,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027D,
++              0x03C, 0x00000546,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127D,
++              0x03C, 0x00001546,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227D,
++              0x03C, 0x00002546,
++              0x03C, 0x00002821,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000037E,
++              0x03C, 0x00000575,
++              0x03C, 0x00000971,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001575,
++              0x03C, 0x00001871,
++              0x03C, 0x0000217E,
++              0x03C, 0x00002575,
++              0x03C, 0x00002871,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x061, 0x000C0D47,
++              0x062, 0x0000133C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0xA0000000,     0x00000000,
++              0x063, 0x0007D0E7,
++      0xB0000000,     0x00000000,
++              0x064, 0x00014FEC,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0xA0000000,     0x00000000,
++              0x065, 0x000923FF,
++      0xB0000000,     0x00000000,
++              0x066, 0x00000040,
++              0x057, 0x00050000,
++              0x056, 0x00051DF0,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x055, 0x00082060,
++      0xB0000000,     0x00000000,
++};
++
++RTW_DECL_TABLE_RF_RADIO(rtw8814a_rf_c, C);
diff --git a/package/kernel/mac80211/patches/rtl/087-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-2-2.patch b/package/kernel/mac80211/patches/rtl/087-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-2-2.patch
new file mode 100644 (file)
index 0000000..56402a4
--- /dev/null
@@ -0,0 +1,11450 @@
+From e38246889cc9f8497c8d7413b73856ae1634322d Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:24:02 +0200
+Subject: [PATCH] wifi: rtw88: Add rtw8814a_table.c (part 2/2)
+
+This contains various tables for initialising the RTL8814A, plus TX
+power limits.
+
+Also add rtw8814a_table.h.
+
+Split into two patches because they are big.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/4c48e35e-1b04-42ed-940e-0e931693def6@gmail.com
+---
+ .../wireless/realtek/rtw88/rtw8814a_table.c   | 11379 ++++++++++++++++
+ .../wireless/realtek/rtw88/rtw8814a_table.h   |    40 +
+ 2 files changed, 11419 insertions(+)
+ create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8814a_table.h
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8814a_table.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a_table.c
+@@ -12549,3 +12549,11382 @@ static const u32 rtw8814a_rf_c[] = {
+ };
+ RTW_DECL_TABLE_RF_RADIO(rtw8814a_rf_c, C);
++
++static const u32 rtw8814a_rf_d[] = {
++              0x018, 0x00013124,
++              0x040, 0x00000C00,
++              0x058, 0x00000F98,
++              0x07F, 0x00068004,
++              0x018, 0x00000006,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x086, 0x000E335A,
++              0x087, 0x00079F80,
++      0xA0000000,     0x00000000,
++              0x086, 0x000E4B58,
++              0x087, 0x00049F80,
++      0xB0000000,     0x00000000,
++              0x0DF, 0x00000008,
++              0x0EF, 0x00002000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F09B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F09B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0003F19B,
++              0x03B, 0x00037A5B,
++              0x03B, 0x0002A433,
++              0x03B, 0x00027BD3,
++              0x03B, 0x0001F80B,
++              0x03B, 0x00017803,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0003F258,
++              0x03B, 0x00030A58,
++              0x03B, 0x0002FA58,
++              0x03B, 0x00022590,
++              0x03B, 0x0001FA50,
++              0x03B, 0x00010248,
++              0x03B, 0x00008240,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000100,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000ADF6,
++              0x034, 0x00009DF3,
++              0x034, 0x00008DF0,
++              0x034, 0x00007DED,
++              0x034, 0x00006DEA,
++              0x034, 0x00005CED,
++              0x034, 0x00004CEA,
++              0x034, 0x000034EA,
++              0x034, 0x000024E7,
++              0x034, 0x0000146A,
++              0x034, 0x0000006B,
++      0xB0000000,     0x00000000,
++      0x80000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A0D0,
++              0x034, 0x000090CD,
++              0x034, 0x000080CA,
++              0x034, 0x0000704D,
++              0x034, 0x0000604A,
++              0x034, 0x00005047,
++              0x034, 0x0000400A,
++              0x034, 0x00003007,
++              0x034, 0x00002004,
++              0x034, 0x00001001,
++              0x034, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008ADF6,
++              0x034, 0x00089DF3,
++              0x034, 0x00088DF0,
++              0x034, 0x00087DED,
++              0x034, 0x00086DEA,
++              0x034, 0x00085CED,
++              0x034, 0x00084CEA,
++              0x034, 0x000834EA,
++              0x034, 0x000824E7,
++              0x034, 0x0008146A,
++              0x034, 0x0008006B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x000020A2,
++              0x0DF, 0x00000080,
++              0x035, 0x00000192,
++              0x035, 0x00008192,
++              0x035, 0x00010192,
++              0x036, 0x00000024,
++              0x036, 0x00008024,
++              0x036, 0x00010024,
++              0x036, 0x00018024,
++              0x0EF, 0x00000000,
++              0x051, 0x00000C21,
++              0x052, 0x000006D9,
++              0x053, 0x000FC649,
++              0x054, 0x0000017E,
++              0x018, 0x0001012A,
++              0x081, 0x0007FC00,
++              0x089, 0x00050110,
++              0x08A, 0x00043E50,
++              0x08B, 0x0002E180,
++              0x08C, 0x00093C3C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xA0000000,     0x00000000,
++              0x085, 0x000F8000,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0xA0000000,     0x00000000,
++              0x08D, 0x000FFFF0,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00001000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00038023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00048000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00040000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00088000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00048000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00030023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00028623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00021633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0001C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00010293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00009593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x00000F8B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0000078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00078023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00044000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00024000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00070023,
++              0x03C, 0x00048000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00068623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00061633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0005C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00050293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00049593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x00040F8B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0004078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xA0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B8023,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00004000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00060000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00004000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00060000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00024000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00004000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000B0023,
++      0x80000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x00020000,
++      0xB0000000,     0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A8623,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x000A1633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x0009C633,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00090293,
++              0x03C, 0x00000000,
++              0x03A, 0x0000013C,
++              0x03B, 0x00089593,
++              0x03C, 0x00000000,
++              0x03A, 0x00000148,
++      0x80000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03B, 0x0008138B,
++      0xA0000000,     0x00000000,
++              0x03B, 0x0008078B,
++      0xB0000000,     0x00000000,
++              0x03C, 0x00000000,
++              0x0EF, 0x00000000,
++              0x0EF, 0x00000800,
++              0x03B, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001003,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001803,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000803,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00000803,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00040000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001002,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000001,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000802,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001803,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001000,
++      0xB0000000,     0x00000000,
++              0x03B, 0x00080000,
++      0x80000007,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001802,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00001000,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x03A, 0x00000802,
++      0xA0000000,     0x00000000,
++              0x03A, 0x00001002,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000006,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x00013124,
++              0x0EF, 0x00000100,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3EB,
++              0x034, 0x0004938B,
++              0x034, 0x000481AC,
++              0x034, 0x000471A9,
++              0x034, 0x000460AC,
++              0x034, 0x000450A9,
++              0x034, 0x0004402E,
++              0x034, 0x0004302B,
++              0x034, 0x00042028,
++              0x034, 0x0004100B,
++              0x034, 0x00040008,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3AD,
++              0x034, 0x0004938A,
++              0x034, 0x0004818C,
++              0x034, 0x00047189,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3AD,
++              0x034, 0x0004938A,
++              0x034, 0x0004818C,
++              0x034, 0x00047189,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3AD,
++              0x034, 0x0004938A,
++              0x034, 0x0004818C,
++              0x034, 0x00047189,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3AD,
++              0x034, 0x0004938A,
++              0x034, 0x0004818C,
++              0x034, 0x00047189,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3F4,
++              0x034, 0x000493D2,
++              0x034, 0x000482D1,
++              0x034, 0x000471F1,
++              0x034, 0x000461EE,
++              0x034, 0x000451EB,
++              0x034, 0x000441E8,
++              0x034, 0x0004314B,
++              0x034, 0x00042148,
++              0x034, 0x0004104B,
++              0x034, 0x00040048,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004AFF7,
++              0x034, 0x00049FF6,
++              0x034, 0x00048FF3,
++              0x034, 0x00047FF0,
++              0x034, 0x00046FED,
++              0x034, 0x00045FEA,
++              0x034, 0x00044FE7,
++              0x034, 0x00043CB1,
++              0x034, 0x00042CAE,
++              0x034, 0x00041CAB,
++              0x034, 0x00040CA8,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3AD,
++              0x034, 0x0004938A,
++              0x034, 0x0004818C,
++              0x034, 0x00047189,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0004A3AD,
++              0x034, 0x0004938A,
++              0x034, 0x0004818C,
++              0x034, 0x00047189,
++              0x034, 0x0004606D,
++              0x034, 0x0004506A,
++              0x034, 0x0004402C,
++              0x034, 0x00043029,
++              0x034, 0x00042026,
++              0x034, 0x00041009,
++              0x034, 0x00040006,
++      0xA0000000,     0x00000000,
++              0x034, 0x0004AFF4,
++              0x034, 0x00049FF1,
++              0x034, 0x00048FEE,
++              0x034, 0x00047FEB,
++              0x034, 0x00046FE8,
++              0x034, 0x00045DEA,
++              0x034, 0x00044CED,
++              0x034, 0x00043CEA,
++              0x034, 0x00042C6C,
++              0x034, 0x00041C69,
++              0x034, 0x00040C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3EE,
++              0x034, 0x000293EB,
++              0x034, 0x0002838B,
++              0x034, 0x000271AC,
++              0x034, 0x000261A9,
++              0x034, 0x000250AC,
++              0x034, 0x000240A9,
++              0x034, 0x000230A6,
++              0x034, 0x0002202C,
++              0x034, 0x00021029,
++              0x034, 0x00020026,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3AD,
++              0x034, 0x0002938A,
++              0x034, 0x0002818C,
++              0x034, 0x00027189,
++              0x034, 0x0002606D,
++              0x034, 0x0002504C,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x00022026,
++              0x034, 0x00021023,
++              0x034, 0x00020006,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3AD,
++              0x034, 0x0002938A,
++              0x034, 0x0002818C,
++              0x034, 0x00027189,
++              0x034, 0x0002606D,
++              0x034, 0x0002504C,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x00022026,
++              0x034, 0x00021023,
++              0x034, 0x00020006,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3AD,
++              0x034, 0x0002938A,
++              0x034, 0x0002818C,
++              0x034, 0x00027189,
++              0x034, 0x0002606D,
++              0x034, 0x0002504C,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x00022026,
++              0x034, 0x00021023,
++              0x034, 0x00020006,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3AD,
++              0x034, 0x0002938A,
++              0x034, 0x0002818C,
++              0x034, 0x00027189,
++              0x034, 0x0002606D,
++              0x034, 0x0002504C,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x00022026,
++              0x034, 0x00021023,
++              0x034, 0x00020006,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3F5,
++              0x034, 0x000293D2,
++              0x034, 0x000283CE,
++              0x034, 0x00027290,
++              0x034, 0x0002628D,
++              0x034, 0x0002528A,
++              0x034, 0x00024287,
++              0x034, 0x0002308D,
++              0x034, 0x0002208A,
++              0x034, 0x00021087,
++              0x034, 0x00020048,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002AFF7,
++              0x034, 0x00029FF6,
++              0x034, 0x00028FF3,
++              0x034, 0x00027FF0,
++              0x034, 0x00026FED,
++              0x034, 0x00025FEA,
++              0x034, 0x00024FE7,
++              0x034, 0x00023DEA,
++              0x034, 0x00022DE7,
++              0x034, 0x00021DE4,
++              0x034, 0x00020D48,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3AD,
++              0x034, 0x0002938A,
++              0x034, 0x0002818C,
++              0x034, 0x00027189,
++              0x034, 0x0002606D,
++              0x034, 0x0002504C,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x00022026,
++              0x034, 0x00021023,
++              0x034, 0x00020006,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0002A3AD,
++              0x034, 0x0002938A,
++              0x034, 0x0002818C,
++              0x034, 0x00027189,
++              0x034, 0x0002606D,
++              0x034, 0x0002504C,
++              0x034, 0x0002402C,
++              0x034, 0x00023029,
++              0x034, 0x00022026,
++              0x034, 0x00021023,
++              0x034, 0x00020006,
++      0xA0000000,     0x00000000,
++              0x034, 0x0002AFF4,
++              0x034, 0x00029FF1,
++              0x034, 0x00028FEE,
++              0x034, 0x00027FEB,
++              0x034, 0x00026FE8,
++              0x034, 0x00025DEA,
++              0x034, 0x00024CED,
++              0x034, 0x00023CEA,
++              0x034, 0x00022C6C,
++              0x034, 0x00021C69,
++              0x034, 0x00020C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EF,
++              0x034, 0x000093EC,
++              0x034, 0x0000838C,
++              0x034, 0x000071AD,
++              0x034, 0x000061AA,
++              0x034, 0x000050AD,
++              0x034, 0x000040AA,
++              0x034, 0x0000306A,
++              0x034, 0x0000202D,
++              0x034, 0x0000102A,
++              0x034, 0x00000027,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3F1,
++              0x034, 0x000092B1,
++              0x034, 0x000081CF,
++              0x034, 0x00007170,
++              0x034, 0x0000616D,
++              0x034, 0x0000516A,
++              0x034, 0x00004167,
++              0x034, 0x0000302F,
++              0x034, 0x0000202C,
++              0x034, 0x00001029,
++              0x034, 0x00000026,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000AFF7,
++              0x034, 0x00009FF6,
++              0x034, 0x00008FF3,
++              0x034, 0x00007FF0,
++              0x034, 0x00006FED,
++              0x034, 0x00005FEA,
++              0x034, 0x00004FE7,
++              0x034, 0x00003EC7,
++              0x034, 0x00002EC4,
++              0x034, 0x00001D4B,
++              0x034, 0x00000D48,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0000A3EE,
++              0x034, 0x000093AC,
++              0x034, 0x0000838A,
++              0x034, 0x0000718C,
++              0x034, 0x00006189,
++              0x034, 0x0000506D,
++              0x034, 0x0000406A,
++              0x034, 0x0000302C,
++              0x034, 0x00002029,
++              0x034, 0x00001026,
++              0x034, 0x00000023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0000AFF4,
++              0x034, 0x00009FF1,
++              0x034, 0x00008FEE,
++              0x034, 0x00007FEB,
++              0x034, 0x00006FE8,
++              0x034, 0x00005DEA,
++              0x034, 0x00004CED,
++              0x034, 0x00003CEA,
++              0x034, 0x00002C6C,
++              0x034, 0x00001C69,
++              0x034, 0x00000C2B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3EB,
++              0x034, 0x000C938B,
++              0x034, 0x000C81AC,
++              0x034, 0x000C71A9,
++              0x034, 0x000C60AC,
++              0x034, 0x000C50A9,
++              0x034, 0x000C402E,
++              0x034, 0x000C302B,
++              0x034, 0x000C2028,
++              0x034, 0x000C100B,
++              0x034, 0x000C0008,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3AD,
++              0x034, 0x000C938A,
++              0x034, 0x000C818C,
++              0x034, 0x000C7189,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3AD,
++              0x034, 0x000C938A,
++              0x034, 0x000C818C,
++              0x034, 0x000C7189,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3AD,
++              0x034, 0x000C938A,
++              0x034, 0x000C818C,
++              0x034, 0x000C7189,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3AD,
++              0x034, 0x000C938A,
++              0x034, 0x000C818C,
++              0x034, 0x000C7189,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3F4,
++              0x034, 0x000C93D2,
++              0x034, 0x000C82D1,
++              0x034, 0x000C71F1,
++              0x034, 0x000C61EE,
++              0x034, 0x000C51EB,
++              0x034, 0x000C41E8,
++              0x034, 0x000C314B,
++              0x034, 0x000C2148,
++              0x034, 0x000C104B,
++              0x034, 0x000C0048,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CAFF7,
++              0x034, 0x000C9FF6,
++              0x034, 0x000C8FF3,
++              0x034, 0x000C7FF0,
++              0x034, 0x000C6FED,
++              0x034, 0x000C5FEA,
++              0x034, 0x000C4FE7,
++              0x034, 0x000C3CB1,
++              0x034, 0x000C2CAE,
++              0x034, 0x000C1CAB,
++              0x034, 0x000C0CA8,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3AD,
++              0x034, 0x000C938A,
++              0x034, 0x000C818C,
++              0x034, 0x000C7189,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000CA3AD,
++              0x034, 0x000C938A,
++              0x034, 0x000C818C,
++              0x034, 0x000C7189,
++              0x034, 0x000C606D,
++              0x034, 0x000C506A,
++              0x034, 0x000C402C,
++              0x034, 0x000C3029,
++              0x034, 0x000C2026,
++              0x034, 0x000C1009,
++              0x034, 0x000C0006,
++      0xA0000000,     0x00000000,
++              0x034, 0x000CA794,
++              0x034, 0x000C9791,
++              0x034, 0x000C878E,
++              0x034, 0x000C778B,
++              0x034, 0x000C658D,
++              0x034, 0x000C558A,
++              0x034, 0x000C448D,
++              0x034, 0x000C348A,
++              0x034, 0x000C244C,
++              0x034, 0x000C1449,
++              0x034, 0x000C042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3EE,
++              0x034, 0x000A93EB,
++              0x034, 0x000A838B,
++              0x034, 0x000A71AC,
++              0x034, 0x000A61A9,
++              0x034, 0x000A50AC,
++              0x034, 0x000A40A9,
++              0x034, 0x000A30A6,
++              0x034, 0x000A202C,
++              0x034, 0x000A1029,
++              0x034, 0x000A0026,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3AD,
++              0x034, 0x000A938A,
++              0x034, 0x000A818C,
++              0x034, 0x000A7189,
++              0x034, 0x000A606D,
++              0x034, 0x000A504C,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A2026,
++              0x034, 0x000A1023,
++              0x034, 0x000A0006,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3AD,
++              0x034, 0x000A938A,
++              0x034, 0x000A818C,
++              0x034, 0x000A7189,
++              0x034, 0x000A606D,
++              0x034, 0x000A504C,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A2026,
++              0x034, 0x000A1023,
++              0x034, 0x000A0006,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3AD,
++              0x034, 0x000A938A,
++              0x034, 0x000A818C,
++              0x034, 0x000A7189,
++              0x034, 0x000A606D,
++              0x034, 0x000A504C,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A2026,
++              0x034, 0x000A1023,
++              0x034, 0x000A0006,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3AD,
++              0x034, 0x000A938A,
++              0x034, 0x000A818C,
++              0x034, 0x000A7189,
++              0x034, 0x000A606D,
++              0x034, 0x000A504C,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A2026,
++              0x034, 0x000A1023,
++              0x034, 0x000A0006,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3F5,
++              0x034, 0x000A93D2,
++              0x034, 0x000A83CE,
++              0x034, 0x000A7290,
++              0x034, 0x000A628D,
++              0x034, 0x000A528A,
++              0x034, 0x000A4287,
++              0x034, 0x000A308D,
++              0x034, 0x000A208A,
++              0x034, 0x000A1087,
++              0x034, 0x000A0048,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AAFF7,
++              0x034, 0x000A9FF6,
++              0x034, 0x000A8FF3,
++              0x034, 0x000A7FF0,
++              0x034, 0x000A6FED,
++              0x034, 0x000A5FEA,
++              0x034, 0x000A4FE7,
++              0x034, 0x000A3DEA,
++              0x034, 0x000A2DE7,
++              0x034, 0x000A1DE4,
++              0x034, 0x000A0D48,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3AD,
++              0x034, 0x000A938A,
++              0x034, 0x000A818C,
++              0x034, 0x000A7189,
++              0x034, 0x000A606D,
++              0x034, 0x000A504C,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A2026,
++              0x034, 0x000A1023,
++              0x034, 0x000A0006,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x000AA3AD,
++              0x034, 0x000A938A,
++              0x034, 0x000A818C,
++              0x034, 0x000A7189,
++              0x034, 0x000A606D,
++              0x034, 0x000A504C,
++              0x034, 0x000A402C,
++              0x034, 0x000A3029,
++              0x034, 0x000A2026,
++              0x034, 0x000A1023,
++              0x034, 0x000A0006,
++      0xA0000000,     0x00000000,
++              0x034, 0x000AA794,
++              0x034, 0x000A9791,
++              0x034, 0x000A878E,
++              0x034, 0x000A778B,
++              0x034, 0x000A658D,
++              0x034, 0x000A558A,
++              0x034, 0x000A448D,
++              0x034, 0x000A348A,
++              0x034, 0x000A244C,
++              0x034, 0x000A1449,
++              0x034, 0x000A042B,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EF,
++              0x034, 0x000893EC,
++              0x034, 0x0008838C,
++              0x034, 0x000871AD,
++              0x034, 0x000861AA,
++              0x034, 0x000850AD,
++              0x034, 0x000840AA,
++              0x034, 0x0008306A,
++              0x034, 0x0008202D,
++              0x034, 0x0008102A,
++              0x034, 0x00080027,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3F1,
++              0x034, 0x000892B1,
++              0x034, 0x000881CF,
++              0x034, 0x00087170,
++              0x034, 0x0008616D,
++              0x034, 0x0008516A,
++              0x034, 0x00084167,
++              0x034, 0x0008302F,
++              0x034, 0x0008202C,
++              0x034, 0x00081029,
++              0x034, 0x00080026,
++      0x90000009,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008AFF7,
++              0x034, 0x00089FF6,
++              0x034, 0x00088FF3,
++              0x034, 0x00087FF0,
++              0x034, 0x00086FED,
++              0x034, 0x00085FEA,
++              0x034, 0x00084FE7,
++              0x034, 0x00083EC7,
++              0x034, 0x00082EC4,
++              0x034, 0x00081D4B,
++              0x034, 0x00080D48,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x034, 0x0008A3EE,
++              0x034, 0x000893AC,
++              0x034, 0x0008838A,
++              0x034, 0x0008718C,
++              0x034, 0x00086189,
++              0x034, 0x0008506D,
++              0x034, 0x0008406A,
++              0x034, 0x0008302C,
++              0x034, 0x00082029,
++              0x034, 0x00081026,
++              0x034, 0x00080023,
++      0xA0000000,     0x00000000,
++              0x034, 0x0008A794,
++              0x034, 0x00089791,
++              0x034, 0x0008878E,
++              0x034, 0x0008778B,
++              0x034, 0x0008658D,
++              0x034, 0x0008558A,
++              0x034, 0x0008448D,
++              0x034, 0x0008348A,
++              0x034, 0x0008244C,
++              0x034, 0x00081449,
++              0x034, 0x0008042B,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x0DF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000040,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x035, 0x000006CC,
++              0x035, 0x000086CC,
++              0x035, 0x000106CC,
++              0x035, 0x000206CC,
++              0x035, 0x000286CC,
++              0x035, 0x000306CC,
++              0x035, 0x000406CC,
++              0x035, 0x000486CC,
++              0x035, 0x000506CC,
++              0x035, 0x000806CC,
++              0x035, 0x000886CC,
++              0x035, 0x000906CC,
++              0x035, 0x000A06CC,
++              0x035, 0x000A86CC,
++              0x035, 0x000B06CC,
++              0x035, 0x000C06CC,
++              0x035, 0x000C86CC,
++              0x035, 0x000D06CC,
++      0xA0000000,     0x00000000,
++              0x035, 0x00000484,
++              0x035, 0x00008484,
++              0x035, 0x00010484,
++              0x035, 0x00020584,
++              0x035, 0x00028584,
++              0x035, 0x00030584,
++              0x035, 0x00040584,
++              0x035, 0x00048584,
++              0x035, 0x00050584,
++              0x035, 0x000805FB,
++              0x035, 0x000885FB,
++              0x035, 0x000905FB,
++              0x035, 0x000A05FB,
++              0x035, 0x000A85FB,
++              0x035, 0x000B05FB,
++              0x035, 0x000C05FB,
++              0x035, 0x000C85FB,
++              0x035, 0x000D05FB,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x0DF, 0x00000001,
++      0xA0000000,     0x00000000,
++              0x0DF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x018, 0x0001712A,
++              0x0EF, 0x00000010,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000473,
++              0x036, 0x00008473,
++              0x036, 0x00010473,
++              0x036, 0x00020473,
++              0x036, 0x00028473,
++              0x036, 0x00030473,
++              0x036, 0x00040473,
++              0x036, 0x00048473,
++              0x036, 0x00050473,
++              0x036, 0x00080473,
++              0x036, 0x00088473,
++              0x036, 0x00090473,
++              0x036, 0x000A0473,
++              0x036, 0x000A8473,
++              0x036, 0x000B0473,
++              0x036, 0x000C0473,
++              0x036, 0x000C8473,
++              0x036, 0x000D0473,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x036, 0x00000475,
++              0x036, 0x00008475,
++              0x036, 0x00010475,
++              0x036, 0x00020475,
++              0x036, 0x00028475,
++              0x036, 0x00030475,
++              0x036, 0x00040475,
++              0x036, 0x00048475,
++              0x036, 0x00050475,
++              0x036, 0x00080475,
++              0x036, 0x00088475,
++              0x036, 0x00090475,
++              0x036, 0x000A0475,
++              0x036, 0x000A8475,
++              0x036, 0x000B0475,
++              0x036, 0x000C0475,
++              0x036, 0x000C8475,
++              0x036, 0x000D0475,
++      0xA0000000,     0x00000000,
++              0x036, 0x00000474,
++              0x036, 0x00008474,
++              0x036, 0x00010474,
++              0x036, 0x00020474,
++              0x036, 0x00028474,
++              0x036, 0x00030474,
++              0x036, 0x00040474,
++              0x036, 0x00048474,
++              0x036, 0x00050474,
++              0x036, 0x00080474,
++              0x036, 0x00088474,
++              0x036, 0x00090474,
++              0x036, 0x000A0474,
++              0x036, 0x000A8474,
++              0x036, 0x000B0474,
++              0x036, 0x000C0474,
++              0x036, 0x000C8474,
++              0x036, 0x000D0474,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x0EF, 0x00000004,
++              0x037, 0x00000000,
++              0x038, 0x0000514E,
++              0x037, 0x00004000,
++              0x038, 0x0000514E,
++              0x037, 0x00008000,
++              0x038, 0x0000514E,
++              0x037, 0x00010000,
++              0x038, 0x0000514E,
++              0x037, 0x00014000,
++              0x038, 0x0000514E,
++              0x037, 0x00018000,
++              0x038, 0x0000514E,
++              0x037, 0x0001C000,
++              0x038, 0x0000514E,
++              0x037, 0x00020000,
++              0x038, 0x0000514E,
++              0x037, 0x00024000,
++              0x038, 0x0000514E,
++              0x037, 0x00028000,
++              0x038, 0x0000514E,
++              0x037, 0x0002C000,
++              0x038, 0x0000714E,
++              0x037, 0x00030000,
++              0x038, 0x0000514E,
++              0x037, 0x00034000,
++              0x038, 0x0000514E,
++              0x037, 0x00038000,
++              0x038, 0x0000514E,
++              0x037, 0x0003C000,
++              0x038, 0x0000514E,
++              0x037, 0x00040000,
++              0x038, 0x0000514E,
++              0x037, 0x00044000,
++              0x038, 0x0000514E,
++              0x037, 0x00048000,
++              0x038, 0x0000514E,
++              0x037, 0x00080000,
++              0x038, 0x00005ECE,
++              0x037, 0x00084000,
++              0x038, 0x00005ECE,
++              0x037, 0x00088000,
++              0x038, 0x00005ECE,
++              0x037, 0x00090000,
++              0x038, 0x00005ECE,
++              0x037, 0x00094000,
++              0x038, 0x00005ECE,
++              0x037, 0x00098000,
++              0x038, 0x00005ECE,
++              0x037, 0x0009C000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000A8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000AC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000B8000,
++              0x038, 0x00005ECE,
++              0x037, 0x000BC000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C0000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C4000,
++              0x038, 0x00005ECE,
++              0x037, 0x000C8000,
++              0x038, 0x00005ECE,
++              0x0EF, 0x00000000,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000008,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000007D,
++              0x03C, 0x0000047D,
++              0x03C, 0x0000087D,
++              0x03C, 0x0000107D,
++              0x03C, 0x0000147D,
++              0x03C, 0x0000187D,
++      0xB0000000,     0x00000000,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x00000275,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x00001275,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x00002275,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x03C, 0x0000027F,
++              0x03C, 0x00000542,
++              0x03C, 0x00000821,
++              0x03C, 0x0000127F,
++              0x03C, 0x00001542,
++              0x03C, 0x00001821,
++              0x03C, 0x0000227F,
++              0x03C, 0x00002542,
++              0x03C, 0x00002821,
++      0xA0000000,     0x00000000,
++              0x03C, 0x0000037E,
++              0x03C, 0x00000575,
++              0x03C, 0x00000971,
++              0x03C, 0x0000127E,
++              0x03C, 0x00001575,
++              0x03C, 0x00001871,
++              0x03C, 0x0000217E,
++              0x03C, 0x00002575,
++              0x03C, 0x00002871,
++      0xB0000000,     0x00000000,
++              0x0EF, 0x00000000,
++              0x061, 0x000C0D47,
++              0x062, 0x0000133C,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x063, 0x000750E7,
++      0xA0000000,     0x00000000,
++              0x063, 0x0007D0E7,
++      0xB0000000,     0x00000000,
++              0x064, 0x00014FEC,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++              0x065, 0x000920D0,
++      0xA0000000,     0x00000000,
++              0x065, 0x000923FF,
++      0xB0000000,     0x00000000,
++              0x066, 0x00000040,
++              0x057, 0x00050000,
++              0x056, 0x00051DF0,
++      0x80000001,     0x00000000,     0x40000000,     0x00000000,
++      0x90000002,     0x00000000,     0x40000000,     0x00000000,
++      0x90000003,     0x00000000,     0x40000000,     0x00000000,
++      0x90000004,     0x00000000,     0x40000000,     0x00000000,
++      0x90000005,     0x00000000,     0x40000000,     0x00000000,
++      0x90000008,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000a,     0x00000000,     0x40000000,     0x00000000,
++      0x9000000b,     0x00000000,     0x40000000,     0x00000000,
++      0xA0000000,     0x00000000,
++              0x055, 0x00082060,
++      0xB0000000,     0x00000000,
++};
++
++RTW_DECL_TABLE_RF_RADIO(rtw8814a_rf_d, D);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt[] = {
++      { 0, 0, 0, 0, 1, 36, },
++      { 2, 0, 0, 0, 1, 32, },
++      { 1, 0, 0, 0, 1, 32, },
++      { 0, 0, 0, 0, 2, 36, },
++      { 2, 0, 0, 0, 2, 32, },
++      { 1, 0, 0, 0, 2, 32, },
++      { 0, 0, 0, 0, 3, 36, },
++      { 2, 0, 0, 0, 3, 32, },
++      { 1, 0, 0, 0, 3, 32, },
++      { 0, 0, 0, 0, 4, 36, },
++      { 2, 0, 0, 0, 4, 32, },
++      { 1, 0, 0, 0, 4, 32, },
++      { 0, 0, 0, 0, 5, 36, },
++      { 2, 0, 0, 0, 5, 32, },
++      { 1, 0, 0, 0, 5, 32, },
++      { 0, 0, 0, 0, 6, 36, },
++      { 2, 0, 0, 0, 6, 32, },
++      { 1, 0, 0, 0, 6, 32, },
++      { 0, 0, 0, 0, 7, 36, },
++      { 2, 0, 0, 0, 7, 32, },
++      { 1, 0, 0, 0, 7, 32, },
++      { 0, 0, 0, 0, 8, 36, },
++      { 2, 0, 0, 0, 8, 32, },
++      { 1, 0, 0, 0, 8, 32, },
++      { 0, 0, 0, 0, 9, 36, },
++      { 2, 0, 0, 0, 9, 32, },
++      { 1, 0, 0, 0, 9, 32, },
++      { 0, 0, 0, 0, 10, 36, },
++      { 2, 0, 0, 0, 10, 32, },
++      { 1, 0, 0, 0, 10, 32, },
++      { 0, 0, 0, 0, 11, 36, },
++      { 2, 0, 0, 0, 11, 32, },
++      { 1, 0, 0, 0, 11, 32, },
++      { 0, 0, 0, 0, 12, 63, },
++      { 2, 0, 0, 0, 12, 32, },
++      { 1, 0, 0, 0, 12, 32, },
++      { 0, 0, 0, 0, 13, 63, },
++      { 2, 0, 0, 0, 13, 32, },
++      { 1, 0, 0, 0, 13, 32, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 32, },
++      { 0, 0, 0, 1, 1, 34, },
++      { 2, 0, 0, 1, 1, 32, },
++      { 1, 0, 0, 1, 1, 32, },
++      { 0, 0, 0, 1, 2, 36, },
++      { 2, 0, 0, 1, 2, 32, },
++      { 1, 0, 0, 1, 2, 32, },
++      { 0, 0, 0, 1, 3, 36, },
++      { 2, 0, 0, 1, 3, 32, },
++      { 1, 0, 0, 1, 3, 32, },
++      { 0, 0, 0, 1, 4, 36, },
++      { 2, 0, 0, 1, 4, 32, },
++      { 1, 0, 0, 1, 4, 32, },
++      { 0, 0, 0, 1, 5, 36, },
++      { 2, 0, 0, 1, 5, 32, },
++      { 1, 0, 0, 1, 5, 32, },
++      { 0, 0, 0, 1, 6, 36, },
++      { 2, 0, 0, 1, 6, 32, },
++      { 1, 0, 0, 1, 6, 32, },
++      { 0, 0, 0, 1, 7, 36, },
++      { 2, 0, 0, 1, 7, 32, },
++      { 1, 0, 0, 1, 7, 32, },
++      { 0, 0, 0, 1, 8, 36, },
++      { 2, 0, 0, 1, 8, 32, },
++      { 1, 0, 0, 1, 8, 32, },
++      { 0, 0, 0, 1, 9, 36, },
++      { 2, 0, 0, 1, 9, 32, },
++      { 1, 0, 0, 1, 9, 32, },
++      { 0, 0, 0, 1, 10, 36, },
++      { 2, 0, 0, 1, 10, 32, },
++      { 1, 0, 0, 1, 10, 32, },
++      { 0, 0, 0, 1, 11, 32, },
++      { 2, 0, 0, 1, 11, 32, },
++      { 1, 0, 0, 1, 11, 32, },
++      { 0, 0, 0, 1, 12, 63, },
++      { 2, 0, 0, 1, 12, 32, },
++      { 1, 0, 0, 1, 12, 32, },
++      { 0, 0, 0, 1, 13, 63, },
++      { 2, 0, 0, 1, 13, 32, },
++      { 1, 0, 0, 1, 13, 32, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 34, },
++      { 2, 0, 0, 2, 1, 32, },
++      { 1, 0, 0, 2, 1, 32, },
++      { 0, 0, 0, 2, 2, 36, },
++      { 2, 0, 0, 2, 2, 32, },
++      { 1, 0, 0, 2, 2, 32, },
++      { 0, 0, 0, 2, 3, 36, },
++      { 2, 0, 0, 2, 3, 32, },
++      { 1, 0, 0, 2, 3, 32, },
++      { 0, 0, 0, 2, 4, 36, },
++      { 2, 0, 0, 2, 4, 32, },
++      { 1, 0, 0, 2, 4, 32, },
++      { 0, 0, 0, 2, 5, 36, },
++      { 2, 0, 0, 2, 5, 32, },
++      { 1, 0, 0, 2, 5, 32, },
++      { 0, 0, 0, 2, 6, 36, },
++      { 2, 0, 0, 2, 6, 32, },
++      { 1, 0, 0, 2, 6, 32, },
++      { 0, 0, 0, 2, 7, 36, },
++      { 2, 0, 0, 2, 7, 32, },
++      { 1, 0, 0, 2, 7, 32, },
++      { 0, 0, 0, 2, 8, 36, },
++      { 2, 0, 0, 2, 8, 32, },
++      { 1, 0, 0, 2, 8, 32, },
++      { 0, 0, 0, 2, 9, 36, },
++      { 2, 0, 0, 2, 9, 32, },
++      { 1, 0, 0, 2, 9, 32, },
++      { 0, 0, 0, 2, 10, 36, },
++      { 2, 0, 0, 2, 10, 32, },
++      { 1, 0, 0, 2, 10, 32, },
++      { 0, 0, 0, 2, 11, 32, },
++      { 2, 0, 0, 2, 11, 32, },
++      { 1, 0, 0, 2, 11, 32, },
++      { 0, 0, 0, 2, 12, 63, },
++      { 2, 0, 0, 2, 12, 32, },
++      { 1, 0, 0, 2, 12, 32, },
++      { 0, 0, 0, 2, 13, 63, },
++      { 2, 0, 0, 2, 13, 32, },
++      { 1, 0, 0, 2, 13, 32, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 32, },
++      { 2, 0, 0, 3, 1, 30, },
++      { 1, 0, 0, 3, 1, 30, },
++      { 0, 0, 0, 3, 2, 34, },
++      { 2, 0, 0, 3, 2, 30, },
++      { 1, 0, 0, 3, 2, 30, },
++      { 0, 0, 0, 3, 3, 34, },
++      { 2, 0, 0, 3, 3, 30, },
++      { 1, 0, 0, 3, 3, 30, },
++      { 0, 0, 0, 3, 4, 34, },
++      { 2, 0, 0, 3, 4, 30, },
++      { 1, 0, 0, 3, 4, 30, },
++      { 0, 0, 0, 3, 5, 34, },
++      { 2, 0, 0, 3, 5, 30, },
++      { 1, 0, 0, 3, 5, 30, },
++      { 0, 0, 0, 3, 6, 34, },
++      { 2, 0, 0, 3, 6, 30, },
++      { 1, 0, 0, 3, 6, 30, },
++      { 0, 0, 0, 3, 7, 34, },
++      { 2, 0, 0, 3, 7, 30, },
++      { 1, 0, 0, 3, 7, 30, },
++      { 0, 0, 0, 3, 8, 34, },
++      { 2, 0, 0, 3, 8, 30, },
++      { 1, 0, 0, 3, 8, 30, },
++      { 0, 0, 0, 3, 9, 34, },
++      { 2, 0, 0, 3, 9, 30, },
++      { 1, 0, 0, 3, 9, 30, },
++      { 0, 0, 0, 3, 10, 34, },
++      { 2, 0, 0, 3, 10, 30, },
++      { 1, 0, 0, 3, 10, 30, },
++      { 0, 0, 0, 3, 11, 30, },
++      { 2, 0, 0, 3, 11, 30, },
++      { 1, 0, 0, 3, 11, 30, },
++      { 0, 0, 0, 3, 12, 63, },
++      { 2, 0, 0, 3, 12, 30, },
++      { 1, 0, 0, 3, 12, 30, },
++      { 0, 0, 0, 3, 13, 63, },
++      { 2, 0, 0, 3, 13, 30, },
++      { 1, 0, 0, 3, 13, 30, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 30, },
++      { 2, 0, 0, 6, 1, 28, },
++      { 1, 0, 0, 6, 1, 28, },
++      { 0, 0, 0, 6, 2, 32, },
++      { 2, 0, 0, 6, 2, 28, },
++      { 1, 0, 0, 6, 2, 28, },
++      { 0, 0, 0, 6, 3, 32, },
++      { 2, 0, 0, 6, 3, 28, },
++      { 1, 0, 0, 6, 3, 28, },
++      { 0, 0, 0, 6, 4, 32, },
++      { 2, 0, 0, 6, 4, 28, },
++      { 1, 0, 0, 6, 4, 28, },
++      { 0, 0, 0, 6, 5, 32, },
++      { 2, 0, 0, 6, 5, 28, },
++      { 1, 0, 0, 6, 5, 28, },
++      { 0, 0, 0, 6, 6, 32, },
++      { 2, 0, 0, 6, 6, 28, },
++      { 1, 0, 0, 6, 6, 28, },
++      { 0, 0, 0, 6, 7, 32, },
++      { 2, 0, 0, 6, 7, 28, },
++      { 1, 0, 0, 6, 7, 28, },
++      { 0, 0, 0, 6, 8, 32, },
++      { 2, 0, 0, 6, 8, 28, },
++      { 1, 0, 0, 6, 8, 28, },
++      { 0, 0, 0, 6, 9, 32, },
++      { 2, 0, 0, 6, 9, 28, },
++      { 1, 0, 0, 6, 9, 28, },
++      { 0, 0, 0, 6, 10, 32, },
++      { 2, 0, 0, 6, 10, 28, },
++      { 1, 0, 0, 6, 10, 28, },
++      { 0, 0, 0, 6, 11, 28, },
++      { 2, 0, 0, 6, 11, 28, },
++      { 1, 0, 0, 6, 11, 28, },
++      { 0, 0, 0, 6, 12, 63, },
++      { 2, 0, 0, 6, 12, 28, },
++      { 1, 0, 0, 6, 12, 28, },
++      { 0, 0, 0, 6, 13, 63, },
++      { 2, 0, 0, 6, 13, 28, },
++      { 1, 0, 0, 6, 13, 28, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 28, },
++      { 2, 0, 0, 7, 1, 26, },
++      { 1, 0, 0, 7, 1, 26, },
++      { 0, 0, 0, 7, 2, 30, },
++      { 2, 0, 0, 7, 2, 26, },
++      { 1, 0, 0, 7, 2, 26, },
++      { 0, 0, 0, 7, 3, 30, },
++      { 2, 0, 0, 7, 3, 26, },
++      { 1, 0, 0, 7, 3, 26, },
++      { 0, 0, 0, 7, 4, 30, },
++      { 2, 0, 0, 7, 4, 26, },
++      { 1, 0, 0, 7, 4, 26, },
++      { 0, 0, 0, 7, 5, 30, },
++      { 2, 0, 0, 7, 5, 26, },
++      { 1, 0, 0, 7, 5, 26, },
++      { 0, 0, 0, 7, 6, 30, },
++      { 2, 0, 0, 7, 6, 26, },
++      { 1, 0, 0, 7, 6, 26, },
++      { 0, 0, 0, 7, 7, 30, },
++      { 2, 0, 0, 7, 7, 26, },
++      { 1, 0, 0, 7, 7, 26, },
++      { 0, 0, 0, 7, 8, 30, },
++      { 2, 0, 0, 7, 8, 26, },
++      { 1, 0, 0, 7, 8, 26, },
++      { 0, 0, 0, 7, 9, 30, },
++      { 2, 0, 0, 7, 9, 26, },
++      { 1, 0, 0, 7, 9, 26, },
++      { 0, 0, 0, 7, 10, 30, },
++      { 2, 0, 0, 7, 10, 26, },
++      { 1, 0, 0, 7, 10, 26, },
++      { 0, 0, 0, 7, 11, 26, },
++      { 2, 0, 0, 7, 11, 26, },
++      { 1, 0, 0, 7, 11, 26, },
++      { 0, 0, 0, 7, 12, 63, },
++      { 2, 0, 0, 7, 12, 26, },
++      { 1, 0, 0, 7, 12, 26, },
++      { 0, 0, 0, 7, 13, 63, },
++      { 2, 0, 0, 7, 13, 26, },
++      { 1, 0, 0, 7, 13, 26, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 32, },
++      { 2, 0, 1, 2, 3, 32, },
++      { 1, 0, 1, 2, 3, 32, },
++      { 0, 0, 1, 2, 4, 36, },
++      { 2, 0, 1, 2, 4, 32, },
++      { 1, 0, 1, 2, 4, 32, },
++      { 0, 0, 1, 2, 5, 36, },
++      { 2, 0, 1, 2, 5, 32, },
++      { 1, 0, 1, 2, 5, 32, },
++      { 0, 0, 1, 2, 6, 36, },
++      { 2, 0, 1, 2, 6, 32, },
++      { 1, 0, 1, 2, 6, 32, },
++      { 0, 0, 1, 2, 7, 36, },
++      { 2, 0, 1, 2, 7, 32, },
++      { 1, 0, 1, 2, 7, 32, },
++      { 0, 0, 1, 2, 8, 36, },
++      { 2, 0, 1, 2, 8, 32, },
++      { 1, 0, 1, 2, 8, 32, },
++      { 0, 0, 1, 2, 9, 36, },
++      { 2, 0, 1, 2, 9, 32, },
++      { 1, 0, 1, 2, 9, 32, },
++      { 0, 0, 1, 2, 10, 36, },
++      { 2, 0, 1, 2, 10, 32, },
++      { 1, 0, 1, 2, 10, 32, },
++      { 0, 0, 1, 2, 11, 32, },
++      { 2, 0, 1, 2, 11, 32, },
++      { 1, 0, 1, 2, 11, 32, },
++      { 0, 0, 1, 2, 12, 63, },
++      { 2, 0, 1, 2, 12, 32, },
++      { 1, 0, 1, 2, 12, 32, },
++      { 0, 0, 1, 2, 13, 63, },
++      { 2, 0, 1, 2, 13, 32, },
++      { 1, 0, 1, 2, 13, 32, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 30, },
++      { 2, 0, 1, 3, 3, 30, },
++      { 1, 0, 1, 3, 3, 30, },
++      { 0, 0, 1, 3, 4, 34, },
++      { 2, 0, 1, 3, 4, 30, },
++      { 1, 0, 1, 3, 4, 30, },
++      { 0, 0, 1, 3, 5, 34, },
++      { 2, 0, 1, 3, 5, 30, },
++      { 1, 0, 1, 3, 5, 30, },
++      { 0, 0, 1, 3, 6, 34, },
++      { 2, 0, 1, 3, 6, 30, },
++      { 1, 0, 1, 3, 6, 30, },
++      { 0, 0, 1, 3, 7, 34, },
++      { 2, 0, 1, 3, 7, 30, },
++      { 1, 0, 1, 3, 7, 30, },
++      { 0, 0, 1, 3, 8, 34, },
++      { 2, 0, 1, 3, 8, 30, },
++      { 1, 0, 1, 3, 8, 30, },
++      { 0, 0, 1, 3, 9, 34, },
++      { 2, 0, 1, 3, 9, 30, },
++      { 1, 0, 1, 3, 9, 30, },
++      { 0, 0, 1, 3, 10, 34, },
++      { 2, 0, 1, 3, 10, 30, },
++      { 1, 0, 1, 3, 10, 30, },
++      { 0, 0, 1, 3, 11, 30, },
++      { 2, 0, 1, 3, 11, 30, },
++      { 1, 0, 1, 3, 11, 30, },
++      { 0, 0, 1, 3, 12, 63, },
++      { 2, 0, 1, 3, 12, 30, },
++      { 1, 0, 1, 3, 12, 30, },
++      { 0, 0, 1, 3, 13, 63, },
++      { 2, 0, 1, 3, 13, 30, },
++      { 1, 0, 1, 3, 13, 30, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 28, },
++      { 2, 0, 1, 6, 3, 28, },
++      { 1, 0, 1, 6, 3, 28, },
++      { 0, 0, 1, 6, 4, 32, },
++      { 2, 0, 1, 6, 4, 28, },
++      { 1, 0, 1, 6, 4, 28, },
++      { 0, 0, 1, 6, 5, 32, },
++      { 2, 0, 1, 6, 5, 28, },
++      { 1, 0, 1, 6, 5, 28, },
++      { 0, 0, 1, 6, 6, 32, },
++      { 2, 0, 1, 6, 6, 28, },
++      { 1, 0, 1, 6, 6, 28, },
++      { 0, 0, 1, 6, 7, 32, },
++      { 2, 0, 1, 6, 7, 28, },
++      { 1, 0, 1, 6, 7, 28, },
++      { 0, 0, 1, 6, 8, 32, },
++      { 2, 0, 1, 6, 8, 28, },
++      { 1, 0, 1, 6, 8, 28, },
++      { 0, 0, 1, 6, 9, 32, },
++      { 2, 0, 1, 6, 9, 28, },
++      { 1, 0, 1, 6, 9, 28, },
++      { 0, 0, 1, 6, 10, 32, },
++      { 2, 0, 1, 6, 10, 28, },
++      { 1, 0, 1, 6, 10, 28, },
++      { 0, 0, 1, 6, 11, 28, },
++      { 2, 0, 1, 6, 11, 28, },
++      { 1, 0, 1, 6, 11, 28, },
++      { 0, 0, 1, 6, 12, 63, },
++      { 2, 0, 1, 6, 12, 28, },
++      { 1, 0, 1, 6, 12, 28, },
++      { 0, 0, 1, 6, 13, 63, },
++      { 2, 0, 1, 6, 13, 28, },
++      { 1, 0, 1, 6, 13, 28, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 26, },
++      { 2, 0, 1, 7, 3, 26, },
++      { 1, 0, 1, 7, 3, 26, },
++      { 0, 0, 1, 7, 4, 30, },
++      { 2, 0, 1, 7, 4, 26, },
++      { 1, 0, 1, 7, 4, 26, },
++      { 0, 0, 1, 7, 5, 30, },
++      { 2, 0, 1, 7, 5, 26, },
++      { 1, 0, 1, 7, 5, 26, },
++      { 0, 0, 1, 7, 6, 30, },
++      { 2, 0, 1, 7, 6, 26, },
++      { 1, 0, 1, 7, 6, 26, },
++      { 0, 0, 1, 7, 7, 30, },
++      { 2, 0, 1, 7, 7, 26, },
++      { 1, 0, 1, 7, 7, 26, },
++      { 0, 0, 1, 7, 8, 30, },
++      { 2, 0, 1, 7, 8, 26, },
++      { 1, 0, 1, 7, 8, 26, },
++      { 0, 0, 1, 7, 9, 30, },
++      { 2, 0, 1, 7, 9, 26, },
++      { 1, 0, 1, 7, 9, 26, },
++      { 0, 0, 1, 7, 10, 30, },
++      { 2, 0, 1, 7, 10, 26, },
++      { 1, 0, 1, 7, 10, 26, },
++      { 0, 0, 1, 7, 11, 26, },
++      { 2, 0, 1, 7, 11, 26, },
++      { 1, 0, 1, 7, 11, 26, },
++      { 0, 0, 1, 7, 12, 63, },
++      { 2, 0, 1, 7, 12, 26, },
++      { 1, 0, 1, 7, 12, 26, },
++      { 0, 0, 1, 7, 13, 63, },
++      { 2, 0, 1, 7, 13, 26, },
++      { 1, 0, 1, 7, 13, 26, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 30, },
++      { 2, 1, 0, 1, 36, 32, },
++      { 1, 1, 0, 1, 36, 32, },
++      { 0, 1, 0, 1, 40, 30, },
++      { 2, 1, 0, 1, 40, 32, },
++      { 1, 1, 0, 1, 40, 32, },
++      { 0, 1, 0, 1, 44, 30, },
++      { 2, 1, 0, 1, 44, 32, },
++      { 1, 1, 0, 1, 44, 32, },
++      { 0, 1, 0, 1, 48, 30, },
++      { 2, 1, 0, 1, 48, 32, },
++      { 1, 1, 0, 1, 48, 32, },
++      { 0, 1, 0, 1, 52, 36, },
++      { 2, 1, 0, 1, 52, 32, },
++      { 1, 1, 0, 1, 52, 32, },
++      { 0, 1, 0, 1, 56, 34, },
++      { 2, 1, 0, 1, 56, 32, },
++      { 1, 1, 0, 1, 56, 32, },
++      { 0, 1, 0, 1, 60, 32, },
++      { 2, 1, 0, 1, 60, 32, },
++      { 1, 1, 0, 1, 60, 32, },
++      { 0, 1, 0, 1, 64, 28, },
++      { 2, 1, 0, 1, 64, 32, },
++      { 1, 1, 0, 1, 64, 32, },
++      { 0, 1, 0, 1, 100, 30, },
++      { 2, 1, 0, 1, 100, 32, },
++      { 1, 1, 0, 1, 100, 32, },
++      { 0, 1, 0, 1, 104, 30, },
++      { 2, 1, 0, 1, 104, 32, },
++      { 1, 1, 0, 1, 104, 32, },
++      { 0, 1, 0, 1, 108, 32, },
++      { 2, 1, 0, 1, 108, 32, },
++      { 1, 1, 0, 1, 108, 32, },
++      { 0, 1, 0, 1, 112, 34, },
++      { 2, 1, 0, 1, 112, 32, },
++      { 1, 1, 0, 1, 112, 32, },
++      { 0, 1, 0, 1, 116, 34, },
++      { 2, 1, 0, 1, 116, 32, },
++      { 1, 1, 0, 1, 116, 32, },
++      { 0, 1, 0, 1, 120, 36, },
++      { 2, 1, 0, 1, 120, 32, },
++      { 1, 1, 0, 1, 120, 32, },
++      { 0, 1, 0, 1, 124, 34, },
++      { 2, 1, 0, 1, 124, 32, },
++      { 1, 1, 0, 1, 124, 32, },
++      { 0, 1, 0, 1, 128, 32, },
++      { 2, 1, 0, 1, 128, 32, },
++      { 1, 1, 0, 1, 128, 32, },
++      { 0, 1, 0, 1, 132, 30, },
++      { 2, 1, 0, 1, 132, 32, },
++      { 1, 1, 0, 1, 132, 32, },
++      { 0, 1, 0, 1, 136, 30, },
++      { 2, 1, 0, 1, 136, 32, },
++      { 1, 1, 0, 1, 136, 32, },
++      { 0, 1, 0, 1, 140, 28, },
++      { 2, 1, 0, 1, 140, 32, },
++      { 1, 1, 0, 1, 140, 32, },
++      { 0, 1, 0, 1, 149, 36, },
++      { 2, 1, 0, 1, 149, 32, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 36, },
++      { 2, 1, 0, 1, 153, 32, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 36, },
++      { 2, 1, 0, 1, 157, 32, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 36, },
++      { 2, 1, 0, 1, 161, 32, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 36, },
++      { 2, 1, 0, 1, 165, 32, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 30, },
++      { 2, 1, 0, 2, 36, 32, },
++      { 1, 1, 0, 2, 36, 32, },
++      { 0, 1, 0, 2, 40, 30, },
++      { 2, 1, 0, 2, 40, 32, },
++      { 1, 1, 0, 2, 40, 32, },
++      { 0, 1, 0, 2, 44, 30, },
++      { 2, 1, 0, 2, 44, 32, },
++      { 1, 1, 0, 2, 44, 32, },
++      { 0, 1, 0, 2, 48, 30, },
++      { 2, 1, 0, 2, 48, 32, },
++      { 1, 1, 0, 2, 48, 32, },
++      { 0, 1, 0, 2, 52, 36, },
++      { 2, 1, 0, 2, 52, 32, },
++      { 1, 1, 0, 2, 52, 32, },
++      { 0, 1, 0, 2, 56, 34, },
++      { 2, 1, 0, 2, 56, 32, },
++      { 1, 1, 0, 2, 56, 32, },
++      { 0, 1, 0, 2, 60, 32, },
++      { 2, 1, 0, 2, 60, 32, },
++      { 1, 1, 0, 2, 60, 32, },
++      { 0, 1, 0, 2, 64, 28, },
++      { 2, 1, 0, 2, 64, 32, },
++      { 1, 1, 0, 2, 64, 32, },
++      { 0, 1, 0, 2, 100, 30, },
++      { 2, 1, 0, 2, 100, 32, },
++      { 1, 1, 0, 2, 100, 32, },
++      { 0, 1, 0, 2, 104, 30, },
++      { 2, 1, 0, 2, 104, 32, },
++      { 1, 1, 0, 2, 104, 32, },
++      { 0, 1, 0, 2, 108, 32, },
++      { 2, 1, 0, 2, 108, 32, },
++      { 1, 1, 0, 2, 108, 32, },
++      { 0, 1, 0, 2, 112, 34, },
++      { 2, 1, 0, 2, 112, 32, },
++      { 1, 1, 0, 2, 112, 32, },
++      { 0, 1, 0, 2, 116, 34, },
++      { 2, 1, 0, 2, 116, 32, },
++      { 1, 1, 0, 2, 116, 32, },
++      { 0, 1, 0, 2, 120, 36, },
++      { 2, 1, 0, 2, 120, 32, },
++      { 1, 1, 0, 2, 120, 32, },
++      { 0, 1, 0, 2, 124, 34, },
++      { 2, 1, 0, 2, 124, 32, },
++      { 1, 1, 0, 2, 124, 32, },
++      { 0, 1, 0, 2, 128, 32, },
++      { 2, 1, 0, 2, 128, 32, },
++      { 1, 1, 0, 2, 128, 32, },
++      { 0, 1, 0, 2, 132, 30, },
++      { 2, 1, 0, 2, 132, 32, },
++      { 1, 1, 0, 2, 132, 32, },
++      { 0, 1, 0, 2, 136, 30, },
++      { 2, 1, 0, 2, 136, 32, },
++      { 1, 1, 0, 2, 136, 32, },
++      { 0, 1, 0, 2, 140, 28, },
++      { 2, 1, 0, 2, 140, 32, },
++      { 1, 1, 0, 2, 140, 32, },
++      { 0, 1, 0, 2, 149, 36, },
++      { 2, 1, 0, 2, 149, 32, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 36, },
++      { 2, 1, 0, 2, 153, 32, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 36, },
++      { 2, 1, 0, 2, 157, 32, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 36, },
++      { 2, 1, 0, 2, 161, 32, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 36, },
++      { 2, 1, 0, 2, 165, 32, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 28, },
++      { 2, 1, 0, 3, 36, 30, },
++      { 1, 1, 0, 3, 36, 30, },
++      { 0, 1, 0, 3, 40, 28, },
++      { 2, 1, 0, 3, 40, 30, },
++      { 1, 1, 0, 3, 40, 30, },
++      { 0, 1, 0, 3, 44, 28, },
++      { 2, 1, 0, 3, 44, 30, },
++      { 1, 1, 0, 3, 44, 30, },
++      { 0, 1, 0, 3, 48, 28, },
++      { 2, 1, 0, 3, 48, 30, },
++      { 1, 1, 0, 3, 48, 30, },
++      { 0, 1, 0, 3, 52, 34, },
++      { 2, 1, 0, 3, 52, 30, },
++      { 1, 1, 0, 3, 52, 30, },
++      { 0, 1, 0, 3, 56, 32, },
++      { 2, 1, 0, 3, 56, 30, },
++      { 1, 1, 0, 3, 56, 30, },
++      { 0, 1, 0, 3, 60, 30, },
++      { 2, 1, 0, 3, 60, 30, },
++      { 1, 1, 0, 3, 60, 30, },
++      { 0, 1, 0, 3, 64, 26, },
++      { 2, 1, 0, 3, 64, 30, },
++      { 1, 1, 0, 3, 64, 30, },
++      { 0, 1, 0, 3, 100, 28, },
++      { 2, 1, 0, 3, 100, 30, },
++      { 1, 1, 0, 3, 100, 30, },
++      { 0, 1, 0, 3, 104, 28, },
++      { 2, 1, 0, 3, 104, 30, },
++      { 1, 1, 0, 3, 104, 30, },
++      { 0, 1, 0, 3, 108, 30, },
++      { 2, 1, 0, 3, 108, 30, },
++      { 1, 1, 0, 3, 108, 30, },
++      { 0, 1, 0, 3, 112, 32, },
++      { 2, 1, 0, 3, 112, 30, },
++      { 1, 1, 0, 3, 112, 30, },
++      { 0, 1, 0, 3, 116, 32, },
++      { 2, 1, 0, 3, 116, 30, },
++      { 1, 1, 0, 3, 116, 30, },
++      { 0, 1, 0, 3, 120, 34, },
++      { 2, 1, 0, 3, 120, 30, },
++      { 1, 1, 0, 3, 120, 30, },
++      { 0, 1, 0, 3, 124, 32, },
++      { 2, 1, 0, 3, 124, 30, },
++      { 1, 1, 0, 3, 124, 30, },
++      { 0, 1, 0, 3, 128, 30, },
++      { 2, 1, 0, 3, 128, 30, },
++      { 1, 1, 0, 3, 128, 30, },
++      { 0, 1, 0, 3, 132, 28, },
++      { 2, 1, 0, 3, 132, 30, },
++      { 1, 1, 0, 3, 132, 30, },
++      { 0, 1, 0, 3, 136, 28, },
++      { 2, 1, 0, 3, 136, 30, },
++      { 1, 1, 0, 3, 136, 30, },
++      { 0, 1, 0, 3, 140, 26, },
++      { 2, 1, 0, 3, 140, 30, },
++      { 1, 1, 0, 3, 140, 30, },
++      { 0, 1, 0, 3, 149, 34, },
++      { 2, 1, 0, 3, 149, 30, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 34, },
++      { 2, 1, 0, 3, 153, 30, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 34, },
++      { 2, 1, 0, 3, 157, 30, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 34, },
++      { 2, 1, 0, 3, 161, 30, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 34, },
++      { 2, 1, 0, 3, 165, 30, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 26, },
++      { 2, 1, 0, 6, 36, 28, },
++      { 1, 1, 0, 6, 36, 28, },
++      { 0, 1, 0, 6, 40, 26, },
++      { 2, 1, 0, 6, 40, 28, },
++      { 1, 1, 0, 6, 40, 28, },
++      { 0, 1, 0, 6, 44, 26, },
++      { 2, 1, 0, 6, 44, 28, },
++      { 1, 1, 0, 6, 44, 28, },
++      { 0, 1, 0, 6, 48, 26, },
++      { 2, 1, 0, 6, 48, 28, },
++      { 1, 1, 0, 6, 48, 28, },
++      { 0, 1, 0, 6, 52, 32, },
++      { 2, 1, 0, 6, 52, 28, },
++      { 1, 1, 0, 6, 52, 28, },
++      { 0, 1, 0, 6, 56, 30, },
++      { 2, 1, 0, 6, 56, 28, },
++      { 1, 1, 0, 6, 56, 28, },
++      { 0, 1, 0, 6, 60, 28, },
++      { 2, 1, 0, 6, 60, 28, },
++      { 1, 1, 0, 6, 60, 28, },
++      { 0, 1, 0, 6, 64, 24, },
++      { 2, 1, 0, 6, 64, 28, },
++      { 1, 1, 0, 6, 64, 28, },
++      { 0, 1, 0, 6, 100, 26, },
++      { 2, 1, 0, 6, 100, 28, },
++      { 1, 1, 0, 6, 100, 28, },
++      { 0, 1, 0, 6, 104, 26, },
++      { 2, 1, 0, 6, 104, 28, },
++      { 1, 1, 0, 6, 104, 28, },
++      { 0, 1, 0, 6, 108, 28, },
++      { 2, 1, 0, 6, 108, 28, },
++      { 1, 1, 0, 6, 108, 28, },
++      { 0, 1, 0, 6, 112, 30, },
++      { 2, 1, 0, 6, 112, 28, },
++      { 1, 1, 0, 6, 112, 28, },
++      { 0, 1, 0, 6, 116, 30, },
++      { 2, 1, 0, 6, 116, 28, },
++      { 1, 1, 0, 6, 116, 28, },
++      { 0, 1, 0, 6, 120, 32, },
++      { 2, 1, 0, 6, 120, 28, },
++      { 1, 1, 0, 6, 120, 28, },
++      { 0, 1, 0, 6, 124, 30, },
++      { 2, 1, 0, 6, 124, 28, },
++      { 1, 1, 0, 6, 124, 28, },
++      { 0, 1, 0, 6, 128, 28, },
++      { 2, 1, 0, 6, 128, 28, },
++      { 1, 1, 0, 6, 128, 28, },
++      { 0, 1, 0, 6, 132, 26, },
++      { 2, 1, 0, 6, 132, 28, },
++      { 1, 1, 0, 6, 132, 28, },
++      { 0, 1, 0, 6, 136, 26, },
++      { 2, 1, 0, 6, 136, 28, },
++      { 1, 1, 0, 6, 136, 28, },
++      { 0, 1, 0, 6, 140, 24, },
++      { 2, 1, 0, 6, 140, 28, },
++      { 1, 1, 0, 6, 140, 28, },
++      { 0, 1, 0, 6, 149, 32, },
++      { 2, 1, 0, 6, 149, 28, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 32, },
++      { 2, 1, 0, 6, 153, 28, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 32, },
++      { 2, 1, 0, 6, 157, 28, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 32, },
++      { 2, 1, 0, 6, 161, 28, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 32, },
++      { 2, 1, 0, 6, 165, 28, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 24, },
++      { 2, 1, 0, 7, 36, 26, },
++      { 1, 1, 0, 7, 36, 26, },
++      { 0, 1, 0, 7, 40, 24, },
++      { 2, 1, 0, 7, 40, 26, },
++      { 1, 1, 0, 7, 40, 26, },
++      { 0, 1, 0, 7, 44, 24, },
++      { 2, 1, 0, 7, 44, 26, },
++      { 1, 1, 0, 7, 44, 26, },
++      { 0, 1, 0, 7, 48, 24, },
++      { 2, 1, 0, 7, 48, 26, },
++      { 1, 1, 0, 7, 48, 26, },
++      { 0, 1, 0, 7, 52, 30, },
++      { 2, 1, 0, 7, 52, 26, },
++      { 1, 1, 0, 7, 52, 26, },
++      { 0, 1, 0, 7, 56, 28, },
++      { 2, 1, 0, 7, 56, 26, },
++      { 1, 1, 0, 7, 56, 26, },
++      { 0, 1, 0, 7, 60, 26, },
++      { 2, 1, 0, 7, 60, 26, },
++      { 1, 1, 0, 7, 60, 26, },
++      { 0, 1, 0, 7, 64, 22, },
++      { 2, 1, 0, 7, 64, 26, },
++      { 1, 1, 0, 7, 64, 26, },
++      { 0, 1, 0, 7, 100, 24, },
++      { 2, 1, 0, 7, 100, 26, },
++      { 1, 1, 0, 7, 100, 26, },
++      { 0, 1, 0, 7, 104, 24, },
++      { 2, 1, 0, 7, 104, 26, },
++      { 1, 1, 0, 7, 104, 26, },
++      { 0, 1, 0, 7, 108, 26, },
++      { 2, 1, 0, 7, 108, 26, },
++      { 1, 1, 0, 7, 108, 26, },
++      { 0, 1, 0, 7, 112, 28, },
++      { 2, 1, 0, 7, 112, 26, },
++      { 1, 1, 0, 7, 112, 26, },
++      { 0, 1, 0, 7, 116, 28, },
++      { 2, 1, 0, 7, 116, 26, },
++      { 1, 1, 0, 7, 116, 26, },
++      { 0, 1, 0, 7, 120, 30, },
++      { 2, 1, 0, 7, 120, 26, },
++      { 1, 1, 0, 7, 120, 26, },
++      { 0, 1, 0, 7, 124, 28, },
++      { 2, 1, 0, 7, 124, 26, },
++      { 1, 1, 0, 7, 124, 26, },
++      { 0, 1, 0, 7, 128, 26, },
++      { 2, 1, 0, 7, 128, 26, },
++      { 1, 1, 0, 7, 128, 26, },
++      { 0, 1, 0, 7, 132, 24, },
++      { 2, 1, 0, 7, 132, 26, },
++      { 1, 1, 0, 7, 132, 26, },
++      { 0, 1, 0, 7, 136, 24, },
++      { 2, 1, 0, 7, 136, 26, },
++      { 1, 1, 0, 7, 136, 26, },
++      { 0, 1, 0, 7, 140, 22, },
++      { 2, 1, 0, 7, 140, 26, },
++      { 1, 1, 0, 7, 140, 26, },
++      { 0, 1, 0, 7, 149, 30, },
++      { 2, 1, 0, 7, 149, 26, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 30, },
++      { 2, 1, 0, 7, 153, 26, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 30, },
++      { 2, 1, 0, 7, 157, 26, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 30, },
++      { 2, 1, 0, 7, 161, 26, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 30, },
++      { 2, 1, 0, 7, 165, 26, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 30, },
++      { 2, 1, 1, 2, 38, 32, },
++      { 1, 1, 1, 2, 38, 32, },
++      { 0, 1, 1, 2, 46, 30, },
++      { 2, 1, 1, 2, 46, 32, },
++      { 1, 1, 1, 2, 46, 32, },
++      { 0, 1, 1, 2, 54, 32, },
++      { 2, 1, 1, 2, 54, 32, },
++      { 1, 1, 1, 2, 54, 32, },
++      { 0, 1, 1, 2, 62, 32, },
++      { 2, 1, 1, 2, 62, 32, },
++      { 1, 1, 1, 2, 62, 32, },
++      { 0, 1, 1, 2, 102, 28, },
++      { 2, 1, 1, 2, 102, 32, },
++      { 1, 1, 1, 2, 102, 32, },
++      { 0, 1, 1, 2, 110, 32, },
++      { 2, 1, 1, 2, 110, 32, },
++      { 1, 1, 1, 2, 110, 32, },
++      { 0, 1, 1, 2, 118, 36, },
++      { 2, 1, 1, 2, 118, 32, },
++      { 1, 1, 1, 2, 118, 32, },
++      { 0, 1, 1, 2, 126, 34, },
++      { 2, 1, 1, 2, 126, 32, },
++      { 1, 1, 1, 2, 126, 32, },
++      { 0, 1, 1, 2, 134, 32, },
++      { 2, 1, 1, 2, 134, 32, },
++      { 1, 1, 1, 2, 134, 32, },
++      { 0, 1, 1, 2, 151, 36, },
++      { 2, 1, 1, 2, 151, 32, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 36, },
++      { 2, 1, 1, 2, 159, 32, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 28, },
++      { 2, 1, 1, 3, 38, 30, },
++      { 1, 1, 1, 3, 38, 30, },
++      { 0, 1, 1, 3, 46, 28, },
++      { 2, 1, 1, 3, 46, 30, },
++      { 1, 1, 1, 3, 46, 30, },
++      { 0, 1, 1, 3, 54, 30, },
++      { 2, 1, 1, 3, 54, 30, },
++      { 1, 1, 1, 3, 54, 30, },
++      { 0, 1, 1, 3, 62, 30, },
++      { 2, 1, 1, 3, 62, 30, },
++      { 1, 1, 1, 3, 62, 30, },
++      { 0, 1, 1, 3, 102, 26, },
++      { 2, 1, 1, 3, 102, 30, },
++      { 1, 1, 1, 3, 102, 30, },
++      { 0, 1, 1, 3, 110, 30, },
++      { 2, 1, 1, 3, 110, 30, },
++      { 1, 1, 1, 3, 110, 30, },
++      { 0, 1, 1, 3, 118, 34, },
++      { 2, 1, 1, 3, 118, 30, },
++      { 1, 1, 1, 3, 118, 30, },
++      { 0, 1, 1, 3, 126, 32, },
++      { 2, 1, 1, 3, 126, 30, },
++      { 1, 1, 1, 3, 126, 30, },
++      { 0, 1, 1, 3, 134, 30, },
++      { 2, 1, 1, 3, 134, 30, },
++      { 1, 1, 1, 3, 134, 30, },
++      { 0, 1, 1, 3, 151, 34, },
++      { 2, 1, 1, 3, 151, 30, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 34, },
++      { 2, 1, 1, 3, 159, 30, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 26, },
++      { 2, 1, 1, 6, 38, 28, },
++      { 1, 1, 1, 6, 38, 28, },
++      { 0, 1, 1, 6, 46, 26, },
++      { 2, 1, 1, 6, 46, 28, },
++      { 1, 1, 1, 6, 46, 28, },
++      { 0, 1, 1, 6, 54, 28, },
++      { 2, 1, 1, 6, 54, 28, },
++      { 1, 1, 1, 6, 54, 28, },
++      { 0, 1, 1, 6, 62, 28, },
++      { 2, 1, 1, 6, 62, 28, },
++      { 1, 1, 1, 6, 62, 28, },
++      { 0, 1, 1, 6, 102, 24, },
++      { 2, 1, 1, 6, 102, 28, },
++      { 1, 1, 1, 6, 102, 28, },
++      { 0, 1, 1, 6, 110, 28, },
++      { 2, 1, 1, 6, 110, 28, },
++      { 1, 1, 1, 6, 110, 28, },
++      { 0, 1, 1, 6, 118, 32, },
++      { 2, 1, 1, 6, 118, 28, },
++      { 1, 1, 1, 6, 118, 28, },
++      { 0, 1, 1, 6, 126, 30, },
++      { 2, 1, 1, 6, 126, 28, },
++      { 1, 1, 1, 6, 126, 28, },
++      { 0, 1, 1, 6, 134, 28, },
++      { 2, 1, 1, 6, 134, 28, },
++      { 1, 1, 1, 6, 134, 28, },
++      { 0, 1, 1, 6, 151, 32, },
++      { 2, 1, 1, 6, 151, 28, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 32, },
++      { 2, 1, 1, 6, 159, 28, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 24, },
++      { 2, 1, 1, 7, 38, 26, },
++      { 1, 1, 1, 7, 38, 26, },
++      { 0, 1, 1, 7, 46, 24, },
++      { 2, 1, 1, 7, 46, 26, },
++      { 1, 1, 1, 7, 46, 26, },
++      { 0, 1, 1, 7, 54, 26, },
++      { 2, 1, 1, 7, 54, 26, },
++      { 1, 1, 1, 7, 54, 26, },
++      { 0, 1, 1, 7, 62, 26, },
++      { 2, 1, 1, 7, 62, 26, },
++      { 1, 1, 1, 7, 62, 26, },
++      { 0, 1, 1, 7, 102, 22, },
++      { 2, 1, 1, 7, 102, 26, },
++      { 1, 1, 1, 7, 102, 26, },
++      { 0, 1, 1, 7, 110, 26, },
++      { 2, 1, 1, 7, 110, 26, },
++      { 1, 1, 1, 7, 110, 26, },
++      { 0, 1, 1, 7, 118, 30, },
++      { 2, 1, 1, 7, 118, 26, },
++      { 1, 1, 1, 7, 118, 26, },
++      { 0, 1, 1, 7, 126, 28, },
++      { 2, 1, 1, 7, 126, 26, },
++      { 1, 1, 1, 7, 126, 26, },
++      { 0, 1, 1, 7, 134, 26, },
++      { 2, 1, 1, 7, 134, 26, },
++      { 1, 1, 1, 7, 134, 26, },
++      { 0, 1, 1, 7, 151, 30, },
++      { 2, 1, 1, 7, 151, 26, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 30, },
++      { 2, 1, 1, 7, 159, 26, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 30, },
++      { 2, 1, 2, 4, 42, 32, },
++      { 1, 1, 2, 4, 42, 32, },
++      { 0, 1, 2, 4, 58, 28, },
++      { 2, 1, 2, 4, 58, 32, },
++      { 1, 1, 2, 4, 58, 32, },
++      { 0, 1, 2, 4, 106, 30, },
++      { 2, 1, 2, 4, 106, 32, },
++      { 1, 1, 2, 4, 106, 32, },
++      { 0, 1, 2, 4, 122, 34, },
++      { 2, 1, 2, 4, 122, 32, },
++      { 1, 1, 2, 4, 122, 32, },
++      { 0, 1, 2, 4, 155, 36, },
++      { 2, 1, 2, 4, 155, 32, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 28, },
++      { 2, 1, 2, 5, 42, 30, },
++      { 1, 1, 2, 5, 42, 30, },
++      { 0, 1, 2, 5, 58, 26, },
++      { 2, 1, 2, 5, 58, 30, },
++      { 1, 1, 2, 5, 58, 30, },
++      { 0, 1, 2, 5, 106, 28, },
++      { 2, 1, 2, 5, 106, 30, },
++      { 1, 1, 2, 5, 106, 30, },
++      { 0, 1, 2, 5, 122, 32, },
++      { 2, 1, 2, 5, 122, 30, },
++      { 1, 1, 2, 5, 122, 30, },
++      { 0, 1, 2, 5, 155, 34, },
++      { 2, 1, 2, 5, 155, 30, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 26, },
++      { 2, 1, 2, 8, 42, 28, },
++      { 1, 1, 2, 8, 42, 28, },
++      { 0, 1, 2, 8, 58, 24, },
++      { 2, 1, 2, 8, 58, 28, },
++      { 1, 1, 2, 8, 58, 28, },
++      { 0, 1, 2, 8, 106, 26, },
++      { 2, 1, 2, 8, 106, 28, },
++      { 1, 1, 2, 8, 106, 28, },
++      { 0, 1, 2, 8, 122, 30, },
++      { 2, 1, 2, 8, 122, 28, },
++      { 1, 1, 2, 8, 122, 28, },
++      { 0, 1, 2, 8, 155, 32, },
++      { 2, 1, 2, 8, 155, 28, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 24, },
++      { 2, 1, 2, 9, 42, 26, },
++      { 1, 1, 2, 9, 42, 26, },
++      { 0, 1, 2, 9, 58, 22, },
++      { 2, 1, 2, 9, 58, 26, },
++      { 1, 1, 2, 9, 58, 26, },
++      { 0, 1, 2, 9, 106, 24, },
++      { 2, 1, 2, 9, 106, 26, },
++      { 1, 1, 2, 9, 106, 26, },
++      { 0, 1, 2, 9, 122, 28, },
++      { 2, 1, 2, 9, 122, 26, },
++      { 1, 1, 2, 9, 122, 26, },
++      { 0, 1, 2, 9, 155, 30, },
++      { 2, 1, 2, 9, 155, 26, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type0[] = {
++      { 0, 0, 0, 0, 1, 32, },
++      { 2, 0, 0, 0, 1, 32, },
++      { 1, 0, 0, 0, 1, 32, },
++      { 0, 0, 0, 0, 2, 32, },
++      { 2, 0, 0, 0, 2, 32, },
++      { 1, 0, 0, 0, 2, 32, },
++      { 0, 0, 0, 0, 3, 32, },
++      { 2, 0, 0, 0, 3, 32, },
++      { 1, 0, 0, 0, 3, 32, },
++      { 0, 0, 0, 0, 4, 32, },
++      { 2, 0, 0, 0, 4, 32, },
++      { 1, 0, 0, 0, 4, 32, },
++      { 0, 0, 0, 0, 5, 32, },
++      { 2, 0, 0, 0, 5, 32, },
++      { 1, 0, 0, 0, 5, 32, },
++      { 0, 0, 0, 0, 6, 32, },
++      { 2, 0, 0, 0, 6, 32, },
++      { 1, 0, 0, 0, 6, 32, },
++      { 0, 0, 0, 0, 7, 32, },
++      { 2, 0, 0, 0, 7, 32, },
++      { 1, 0, 0, 0, 7, 32, },
++      { 0, 0, 0, 0, 8, 32, },
++      { 2, 0, 0, 0, 8, 32, },
++      { 1, 0, 0, 0, 8, 32, },
++      { 0, 0, 0, 0, 9, 32, },
++      { 2, 0, 0, 0, 9, 32, },
++      { 1, 0, 0, 0, 9, 32, },
++      { 0, 0, 0, 0, 10, 32, },
++      { 2, 0, 0, 0, 10, 32, },
++      { 1, 0, 0, 0, 10, 32, },
++      { 0, 0, 0, 0, 11, 32, },
++      { 2, 0, 0, 0, 11, 32, },
++      { 1, 0, 0, 0, 11, 32, },
++      { 0, 0, 0, 0, 12, 24, },
++      { 2, 0, 0, 0, 12, 32, },
++      { 1, 0, 0, 0, 12, 32, },
++      { 0, 0, 0, 0, 13, 16, },
++      { 2, 0, 0, 0, 13, 32, },
++      { 1, 0, 0, 0, 13, 32, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 32, },
++      { 0, 0, 0, 1, 1, 28, },
++      { 2, 0, 0, 1, 1, 32, },
++      { 1, 0, 0, 1, 1, 32, },
++      { 0, 0, 0, 1, 2, 32, },
++      { 2, 0, 0, 1, 2, 32, },
++      { 1, 0, 0, 1, 2, 32, },
++      { 0, 0, 0, 1, 3, 32, },
++      { 2, 0, 0, 1, 3, 32, },
++      { 1, 0, 0, 1, 3, 32, },
++      { 0, 0, 0, 1, 4, 32, },
++      { 2, 0, 0, 1, 4, 32, },
++      { 1, 0, 0, 1, 4, 32, },
++      { 0, 0, 0, 1, 5, 32, },
++      { 2, 0, 0, 1, 5, 32, },
++      { 1, 0, 0, 1, 5, 32, },
++      { 0, 0, 0, 1, 6, 32, },
++      { 2, 0, 0, 1, 6, 32, },
++      { 1, 0, 0, 1, 6, 32, },
++      { 0, 0, 0, 1, 7, 32, },
++      { 2, 0, 0, 1, 7, 32, },
++      { 1, 0, 0, 1, 7, 32, },
++      { 0, 0, 0, 1, 8, 32, },
++      { 2, 0, 0, 1, 8, 32, },
++      { 1, 0, 0, 1, 8, 32, },
++      { 0, 0, 0, 1, 9, 32, },
++      { 2, 0, 0, 1, 9, 32, },
++      { 1, 0, 0, 1, 9, 32, },
++      { 0, 0, 0, 1, 10, 32, },
++      { 2, 0, 0, 1, 10, 32, },
++      { 1, 0, 0, 1, 10, 32, },
++      { 0, 0, 0, 1, 11, 28, },
++      { 2, 0, 0, 1, 11, 32, },
++      { 1, 0, 0, 1, 11, 32, },
++      { 0, 0, 0, 1, 12, 18, },
++      { 2, 0, 0, 1, 12, 32, },
++      { 1, 0, 0, 1, 12, 32, },
++      { 0, 0, 0, 1, 13, 8, },
++      { 2, 0, 0, 1, 13, 32, },
++      { 1, 0, 0, 1, 13, 32, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 26, },
++      { 2, 0, 0, 2, 1, 32, },
++      { 1, 0, 0, 2, 1, 32, },
++      { 0, 0, 0, 2, 2, 32, },
++      { 2, 0, 0, 2, 2, 32, },
++      { 1, 0, 0, 2, 2, 32, },
++      { 0, 0, 0, 2, 3, 32, },
++      { 2, 0, 0, 2, 3, 32, },
++      { 1, 0, 0, 2, 3, 32, },
++      { 0, 0, 0, 2, 4, 32, },
++      { 2, 0, 0, 2, 4, 32, },
++      { 1, 0, 0, 2, 4, 32, },
++      { 0, 0, 0, 2, 5, 32, },
++      { 2, 0, 0, 2, 5, 32, },
++      { 1, 0, 0, 2, 5, 32, },
++      { 0, 0, 0, 2, 6, 32, },
++      { 2, 0, 0, 2, 6, 32, },
++      { 1, 0, 0, 2, 6, 32, },
++      { 0, 0, 0, 2, 7, 32, },
++      { 2, 0, 0, 2, 7, 32, },
++      { 1, 0, 0, 2, 7, 32, },
++      { 0, 0, 0, 2, 8, 32, },
++      { 2, 0, 0, 2, 8, 32, },
++      { 1, 0, 0, 2, 8, 32, },
++      { 0, 0, 0, 2, 9, 32, },
++      { 2, 0, 0, 2, 9, 32, },
++      { 1, 0, 0, 2, 9, 32, },
++      { 0, 0, 0, 2, 10, 32, },
++      { 2, 0, 0, 2, 10, 32, },
++      { 1, 0, 0, 2, 10, 32, },
++      { 0, 0, 0, 2, 11, 26, },
++      { 2, 0, 0, 2, 11, 32, },
++      { 1, 0, 0, 2, 11, 32, },
++      { 0, 0, 0, 2, 12, 16, },
++      { 2, 0, 0, 2, 12, 32, },
++      { 1, 0, 0, 2, 12, 32, },
++      { 0, 0, 0, 2, 13, 6, },
++      { 2, 0, 0, 2, 13, 32, },
++      { 1, 0, 0, 2, 13, 32, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 24, },
++      { 2, 0, 0, 3, 1, 30, },
++      { 1, 0, 0, 3, 1, 30, },
++      { 0, 0, 0, 3, 2, 30, },
++      { 2, 0, 0, 3, 2, 30, },
++      { 1, 0, 0, 3, 2, 30, },
++      { 0, 0, 0, 3, 3, 30, },
++      { 2, 0, 0, 3, 3, 30, },
++      { 1, 0, 0, 3, 3, 30, },
++      { 0, 0, 0, 3, 4, 30, },
++      { 2, 0, 0, 3, 4, 30, },
++      { 1, 0, 0, 3, 4, 30, },
++      { 0, 0, 0, 3, 5, 30, },
++      { 2, 0, 0, 3, 5, 30, },
++      { 1, 0, 0, 3, 5, 30, },
++      { 0, 0, 0, 3, 6, 30, },
++      { 2, 0, 0, 3, 6, 30, },
++      { 1, 0, 0, 3, 6, 30, },
++      { 0, 0, 0, 3, 7, 30, },
++      { 2, 0, 0, 3, 7, 30, },
++      { 1, 0, 0, 3, 7, 30, },
++      { 0, 0, 0, 3, 8, 30, },
++      { 2, 0, 0, 3, 8, 30, },
++      { 1, 0, 0, 3, 8, 30, },
++      { 0, 0, 0, 3, 9, 30, },
++      { 2, 0, 0, 3, 9, 30, },
++      { 1, 0, 0, 3, 9, 30, },
++      { 0, 0, 0, 3, 10, 30, },
++      { 2, 0, 0, 3, 10, 30, },
++      { 1, 0, 0, 3, 10, 30, },
++      { 0, 0, 0, 3, 11, 24, },
++      { 2, 0, 0, 3, 11, 30, },
++      { 1, 0, 0, 3, 11, 30, },
++      { 0, 0, 0, 3, 12, 14, },
++      { 2, 0, 0, 3, 12, 30, },
++      { 1, 0, 0, 3, 12, 30, },
++      { 0, 0, 0, 3, 13, 4, },
++      { 2, 0, 0, 3, 13, 30, },
++      { 1, 0, 0, 3, 13, 30, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 22, },
++      { 2, 0, 0, 6, 1, 28, },
++      { 1, 0, 0, 6, 1, 28, },
++      { 0, 0, 0, 6, 2, 28, },
++      { 2, 0, 0, 6, 2, 28, },
++      { 1, 0, 0, 6, 2, 28, },
++      { 0, 0, 0, 6, 3, 28, },
++      { 2, 0, 0, 6, 3, 28, },
++      { 1, 0, 0, 6, 3, 28, },
++      { 0, 0, 0, 6, 4, 28, },
++      { 2, 0, 0, 6, 4, 28, },
++      { 1, 0, 0, 6, 4, 28, },
++      { 0, 0, 0, 6, 5, 28, },
++      { 2, 0, 0, 6, 5, 28, },
++      { 1, 0, 0, 6, 5, 28, },
++      { 0, 0, 0, 6, 6, 28, },
++      { 2, 0, 0, 6, 6, 28, },
++      { 1, 0, 0, 6, 6, 28, },
++      { 0, 0, 0, 6, 7, 28, },
++      { 2, 0, 0, 6, 7, 28, },
++      { 1, 0, 0, 6, 7, 28, },
++      { 0, 0, 0, 6, 8, 28, },
++      { 2, 0, 0, 6, 8, 28, },
++      { 1, 0, 0, 6, 8, 28, },
++      { 0, 0, 0, 6, 9, 28, },
++      { 2, 0, 0, 6, 9, 28, },
++      { 1, 0, 0, 6, 9, 28, },
++      { 0, 0, 0, 6, 10, 28, },
++      { 2, 0, 0, 6, 10, 28, },
++      { 1, 0, 0, 6, 10, 28, },
++      { 0, 0, 0, 6, 11, 22, },
++      { 2, 0, 0, 6, 11, 28, },
++      { 1, 0, 0, 6, 11, 28, },
++      { 0, 0, 0, 6, 12, 14, },
++      { 2, 0, 0, 6, 12, 28, },
++      { 1, 0, 0, 6, 12, 28, },
++      { 0, 0, 0, 6, 13, 4, },
++      { 2, 0, 0, 6, 13, 28, },
++      { 1, 0, 0, 6, 13, 28, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 20, },
++      { 2, 0, 0, 7, 1, 26, },
++      { 1, 0, 0, 7, 1, 26, },
++      { 0, 0, 0, 7, 2, 26, },
++      { 2, 0, 0, 7, 2, 26, },
++      { 1, 0, 0, 7, 2, 26, },
++      { 0, 0, 0, 7, 3, 26, },
++      { 2, 0, 0, 7, 3, 26, },
++      { 1, 0, 0, 7, 3, 26, },
++      { 0, 0, 0, 7, 4, 26, },
++      { 2, 0, 0, 7, 4, 26, },
++      { 1, 0, 0, 7, 4, 26, },
++      { 0, 0, 0, 7, 5, 26, },
++      { 2, 0, 0, 7, 5, 26, },
++      { 1, 0, 0, 7, 5, 26, },
++      { 0, 0, 0, 7, 6, 26, },
++      { 2, 0, 0, 7, 6, 26, },
++      { 1, 0, 0, 7, 6, 26, },
++      { 0, 0, 0, 7, 7, 26, },
++      { 2, 0, 0, 7, 7, 26, },
++      { 1, 0, 0, 7, 7, 26, },
++      { 0, 0, 0, 7, 8, 26, },
++      { 2, 0, 0, 7, 8, 26, },
++      { 1, 0, 0, 7, 8, 26, },
++      { 0, 0, 0, 7, 9, 26, },
++      { 2, 0, 0, 7, 9, 26, },
++      { 1, 0, 0, 7, 9, 26, },
++      { 0, 0, 0, 7, 10, 26, },
++      { 2, 0, 0, 7, 10, 26, },
++      { 1, 0, 0, 7, 10, 26, },
++      { 0, 0, 0, 7, 11, 20, },
++      { 2, 0, 0, 7, 11, 26, },
++      { 1, 0, 0, 7, 11, 26, },
++      { 0, 0, 0, 7, 12, 14, },
++      { 2, 0, 0, 7, 12, 26, },
++      { 1, 0, 0, 7, 12, 26, },
++      { 0, 0, 0, 7, 13, 4, },
++      { 2, 0, 0, 7, 13, 26, },
++      { 1, 0, 0, 7, 13, 26, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 26, },
++      { 2, 0, 1, 2, 3, 32, },
++      { 1, 0, 1, 2, 3, 32, },
++      { 0, 0, 1, 2, 4, 32, },
++      { 2, 0, 1, 2, 4, 32, },
++      { 1, 0, 1, 2, 4, 32, },
++      { 0, 0, 1, 2, 5, 32, },
++      { 2, 0, 1, 2, 5, 32, },
++      { 1, 0, 1, 2, 5, 32, },
++      { 0, 0, 1, 2, 6, 32, },
++      { 2, 0, 1, 2, 6, 32, },
++      { 1, 0, 1, 2, 6, 32, },
++      { 0, 0, 1, 2, 7, 32, },
++      { 2, 0, 1, 2, 7, 32, },
++      { 1, 0, 1, 2, 7, 32, },
++      { 0, 0, 1, 2, 8, 32, },
++      { 2, 0, 1, 2, 8, 32, },
++      { 1, 0, 1, 2, 8, 32, },
++      { 0, 0, 1, 2, 9, 32, },
++      { 2, 0, 1, 2, 9, 32, },
++      { 1, 0, 1, 2, 9, 32, },
++      { 0, 0, 1, 2, 10, 32, },
++      { 2, 0, 1, 2, 10, 32, },
++      { 1, 0, 1, 2, 10, 32, },
++      { 0, 0, 1, 2, 11, 26, },
++      { 2, 0, 1, 2, 11, 32, },
++      { 1, 0, 1, 2, 11, 32, },
++      { 0, 0, 1, 2, 12, 16, },
++      { 2, 0, 1, 2, 12, 32, },
++      { 1, 0, 1, 2, 12, 32, },
++      { 0, 0, 1, 2, 13, 10, },
++      { 2, 0, 1, 2, 13, 32, },
++      { 1, 0, 1, 2, 13, 32, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 24, },
++      { 2, 0, 1, 3, 3, 30, },
++      { 1, 0, 1, 3, 3, 30, },
++      { 0, 0, 1, 3, 4, 30, },
++      { 2, 0, 1, 3, 4, 30, },
++      { 1, 0, 1, 3, 4, 30, },
++      { 0, 0, 1, 3, 5, 30, },
++      { 2, 0, 1, 3, 5, 30, },
++      { 1, 0, 1, 3, 5, 30, },
++      { 0, 0, 1, 3, 6, 30, },
++      { 2, 0, 1, 3, 6, 30, },
++      { 1, 0, 1, 3, 6, 30, },
++      { 0, 0, 1, 3, 7, 30, },
++      { 2, 0, 1, 3, 7, 30, },
++      { 1, 0, 1, 3, 7, 30, },
++      { 0, 0, 1, 3, 8, 30, },
++      { 2, 0, 1, 3, 8, 30, },
++      { 1, 0, 1, 3, 8, 30, },
++      { 0, 0, 1, 3, 9, 30, },
++      { 2, 0, 1, 3, 9, 30, },
++      { 1, 0, 1, 3, 9, 30, },
++      { 0, 0, 1, 3, 10, 30, },
++      { 2, 0, 1, 3, 10, 30, },
++      { 1, 0, 1, 3, 10, 30, },
++      { 0, 0, 1, 3, 11, 24, },
++      { 2, 0, 1, 3, 11, 30, },
++      { 1, 0, 1, 3, 11, 30, },
++      { 0, 0, 1, 3, 12, 14, },
++      { 2, 0, 1, 3, 12, 30, },
++      { 1, 0, 1, 3, 12, 30, },
++      { 0, 0, 1, 3, 13, 8, },
++      { 2, 0, 1, 3, 13, 30, },
++      { 1, 0, 1, 3, 13, 30, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 22, },
++      { 2, 0, 1, 6, 3, 28, },
++      { 1, 0, 1, 6, 3, 28, },
++      { 0, 0, 1, 6, 4, 28, },
++      { 2, 0, 1, 6, 4, 28, },
++      { 1, 0, 1, 6, 4, 28, },
++      { 0, 0, 1, 6, 5, 28, },
++      { 2, 0, 1, 6, 5, 28, },
++      { 1, 0, 1, 6, 5, 28, },
++      { 0, 0, 1, 6, 6, 28, },
++      { 2, 0, 1, 6, 6, 28, },
++      { 1, 0, 1, 6, 6, 28, },
++      { 0, 0, 1, 6, 7, 28, },
++      { 2, 0, 1, 6, 7, 28, },
++      { 1, 0, 1, 6, 7, 28, },
++      { 0, 0, 1, 6, 8, 28, },
++      { 2, 0, 1, 6, 8, 28, },
++      { 1, 0, 1, 6, 8, 28, },
++      { 0, 0, 1, 6, 9, 28, },
++      { 2, 0, 1, 6, 9, 28, },
++      { 1, 0, 1, 6, 9, 28, },
++      { 0, 0, 1, 6, 10, 28, },
++      { 2, 0, 1, 6, 10, 28, },
++      { 1, 0, 1, 6, 10, 28, },
++      { 0, 0, 1, 6, 11, 22, },
++      { 2, 0, 1, 6, 11, 28, },
++      { 1, 0, 1, 6, 11, 28, },
++      { 0, 0, 1, 6, 12, 14, },
++      { 2, 0, 1, 6, 12, 28, },
++      { 1, 0, 1, 6, 12, 28, },
++      { 0, 0, 1, 6, 13, 8, },
++      { 2, 0, 1, 6, 13, 28, },
++      { 1, 0, 1, 6, 13, 28, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 20, },
++      { 2, 0, 1, 7, 3, 26, },
++      { 1, 0, 1, 7, 3, 26, },
++      { 0, 0, 1, 7, 4, 26, },
++      { 2, 0, 1, 7, 4, 26, },
++      { 1, 0, 1, 7, 4, 26, },
++      { 0, 0, 1, 7, 5, 26, },
++      { 2, 0, 1, 7, 5, 26, },
++      { 1, 0, 1, 7, 5, 26, },
++      { 0, 0, 1, 7, 6, 26, },
++      { 2, 0, 1, 7, 6, 26, },
++      { 1, 0, 1, 7, 6, 26, },
++      { 0, 0, 1, 7, 7, 26, },
++      { 2, 0, 1, 7, 7, 26, },
++      { 1, 0, 1, 7, 7, 26, },
++      { 0, 0, 1, 7, 8, 26, },
++      { 2, 0, 1, 7, 8, 26, },
++      { 1, 0, 1, 7, 8, 26, },
++      { 0, 0, 1, 7, 9, 26, },
++      { 2, 0, 1, 7, 9, 26, },
++      { 1, 0, 1, 7, 9, 26, },
++      { 0, 0, 1, 7, 10, 26, },
++      { 2, 0, 1, 7, 10, 26, },
++      { 1, 0, 1, 7, 10, 26, },
++      { 0, 0, 1, 7, 11, 20, },
++      { 2, 0, 1, 7, 11, 26, },
++      { 1, 0, 1, 7, 11, 26, },
++      { 0, 0, 1, 7, 12, 14, },
++      { 2, 0, 1, 7, 12, 26, },
++      { 1, 0, 1, 7, 12, 26, },
++      { 0, 0, 1, 7, 13, 8, },
++      { 2, 0, 1, 7, 13, 26, },
++      { 1, 0, 1, 7, 13, 26, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 28, },
++      { 2, 1, 0, 1, 36, 32, },
++      { 1, 1, 0, 1, 36, 32, },
++      { 0, 1, 0, 1, 40, 32, },
++      { 2, 1, 0, 1, 40, 32, },
++      { 1, 1, 0, 1, 40, 32, },
++      { 0, 1, 0, 1, 44, 32, },
++      { 2, 1, 0, 1, 44, 32, },
++      { 1, 1, 0, 1, 44, 32, },
++      { 0, 1, 0, 1, 48, 32, },
++      { 2, 1, 0, 1, 48, 32, },
++      { 1, 1, 0, 1, 48, 32, },
++      { 0, 1, 0, 1, 52, 32, },
++      { 2, 1, 0, 1, 52, 32, },
++      { 1, 1, 0, 1, 52, 32, },
++      { 0, 1, 0, 1, 56, 32, },
++      { 2, 1, 0, 1, 56, 32, },
++      { 1, 1, 0, 1, 56, 32, },
++      { 0, 1, 0, 1, 60, 32, },
++      { 2, 1, 0, 1, 60, 32, },
++      { 1, 1, 0, 1, 60, 32, },
++      { 0, 1, 0, 1, 64, 28, },
++      { 2, 1, 0, 1, 64, 32, },
++      { 1, 1, 0, 1, 64, 32, },
++      { 0, 1, 0, 1, 100, 28, },
++      { 2, 1, 0, 1, 100, 32, },
++      { 1, 1, 0, 1, 100, 32, },
++      { 0, 1, 0, 1, 104, 32, },
++      { 2, 1, 0, 1, 104, 32, },
++      { 1, 1, 0, 1, 104, 32, },
++      { 0, 1, 0, 1, 108, 32, },
++      { 2, 1, 0, 1, 108, 32, },
++      { 1, 1, 0, 1, 108, 32, },
++      { 0, 1, 0, 1, 112, 32, },
++      { 2, 1, 0, 1, 112, 32, },
++      { 1, 1, 0, 1, 112, 32, },
++      { 0, 1, 0, 1, 116, 32, },
++      { 2, 1, 0, 1, 116, 32, },
++      { 1, 1, 0, 1, 116, 32, },
++      { 0, 1, 0, 1, 120, 32, },
++      { 2, 1, 0, 1, 120, 32, },
++      { 1, 1, 0, 1, 120, 32, },
++      { 0, 1, 0, 1, 124, 32, },
++      { 2, 1, 0, 1, 124, 32, },
++      { 1, 1, 0, 1, 124, 32, },
++      { 0, 1, 0, 1, 128, 32, },
++      { 2, 1, 0, 1, 128, 32, },
++      { 1, 1, 0, 1, 128, 32, },
++      { 0, 1, 0, 1, 132, 32, },
++      { 2, 1, 0, 1, 132, 32, },
++      { 1, 1, 0, 1, 132, 32, },
++      { 0, 1, 0, 1, 136, 32, },
++      { 2, 1, 0, 1, 136, 32, },
++      { 1, 1, 0, 1, 136, 32, },
++      { 0, 1, 0, 1, 140, 28, },
++      { 2, 1, 0, 1, 140, 32, },
++      { 1, 1, 0, 1, 140, 32, },
++      { 0, 1, 0, 1, 149, 28, },
++      { 2, 1, 0, 1, 149, 32, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 32, },
++      { 2, 1, 0, 1, 153, 32, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 32, },
++      { 2, 1, 0, 1, 157, 32, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 32, },
++      { 2, 1, 0, 1, 161, 32, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 32, },
++      { 2, 1, 0, 1, 165, 32, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 26, },
++      { 2, 1, 0, 2, 36, 32, },
++      { 1, 1, 0, 2, 36, 32, },
++      { 0, 1, 0, 2, 40, 32, },
++      { 2, 1, 0, 2, 40, 32, },
++      { 1, 1, 0, 2, 40, 32, },
++      { 0, 1, 0, 2, 44, 32, },
++      { 2, 1, 0, 2, 44, 32, },
++      { 1, 1, 0, 2, 44, 32, },
++      { 0, 1, 0, 2, 48, 32, },
++      { 2, 1, 0, 2, 48, 32, },
++      { 1, 1, 0, 2, 48, 32, },
++      { 0, 1, 0, 2, 52, 32, },
++      { 2, 1, 0, 2, 52, 32, },
++      { 1, 1, 0, 2, 52, 32, },
++      { 0, 1, 0, 2, 56, 32, },
++      { 2, 1, 0, 2, 56, 32, },
++      { 1, 1, 0, 2, 56, 32, },
++      { 0, 1, 0, 2, 60, 32, },
++      { 2, 1, 0, 2, 60, 32, },
++      { 1, 1, 0, 2, 60, 32, },
++      { 0, 1, 0, 2, 64, 26, },
++      { 2, 1, 0, 2, 64, 32, },
++      { 1, 1, 0, 2, 64, 32, },
++      { 0, 1, 0, 2, 100, 26, },
++      { 2, 1, 0, 2, 100, 32, },
++      { 1, 1, 0, 2, 100, 32, },
++      { 0, 1, 0, 2, 104, 32, },
++      { 2, 1, 0, 2, 104, 32, },
++      { 1, 1, 0, 2, 104, 32, },
++      { 0, 1, 0, 2, 108, 32, },
++      { 2, 1, 0, 2, 108, 32, },
++      { 1, 1, 0, 2, 108, 32, },
++      { 0, 1, 0, 2, 112, 32, },
++      { 2, 1, 0, 2, 112, 32, },
++      { 1, 1, 0, 2, 112, 32, },
++      { 0, 1, 0, 2, 116, 32, },
++      { 2, 1, 0, 2, 116, 32, },
++      { 1, 1, 0, 2, 116, 32, },
++      { 0, 1, 0, 2, 120, 32, },
++      { 2, 1, 0, 2, 120, 32, },
++      { 1, 1, 0, 2, 120, 32, },
++      { 0, 1, 0, 2, 124, 32, },
++      { 2, 1, 0, 2, 124, 32, },
++      { 1, 1, 0, 2, 124, 32, },
++      { 0, 1, 0, 2, 128, 32, },
++      { 2, 1, 0, 2, 128, 32, },
++      { 1, 1, 0, 2, 128, 32, },
++      { 0, 1, 0, 2, 132, 32, },
++      { 2, 1, 0, 2, 132, 32, },
++      { 1, 1, 0, 2, 132, 32, },
++      { 0, 1, 0, 2, 136, 32, },
++      { 2, 1, 0, 2, 136, 32, },
++      { 1, 1, 0, 2, 136, 32, },
++      { 0, 1, 0, 2, 140, 26, },
++      { 2, 1, 0, 2, 140, 32, },
++      { 1, 1, 0, 2, 140, 32, },
++      { 0, 1, 0, 2, 149, 26, },
++      { 2, 1, 0, 2, 149, 32, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 32, },
++      { 2, 1, 0, 2, 153, 32, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 32, },
++      { 2, 1, 0, 2, 157, 32, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 32, },
++      { 2, 1, 0, 2, 161, 32, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 32, },
++      { 2, 1, 0, 2, 165, 32, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 24, },
++      { 2, 1, 0, 3, 36, 28, },
++      { 1, 1, 0, 3, 36, 28, },
++      { 0, 1, 0, 3, 40, 28, },
++      { 2, 1, 0, 3, 40, 28, },
++      { 1, 1, 0, 3, 40, 28, },
++      { 0, 1, 0, 3, 44, 28, },
++      { 2, 1, 0, 3, 44, 28, },
++      { 1, 1, 0, 3, 44, 28, },
++      { 0, 1, 0, 3, 48, 28, },
++      { 2, 1, 0, 3, 48, 28, },
++      { 1, 1, 0, 3, 48, 28, },
++      { 0, 1, 0, 3, 52, 28, },
++      { 2, 1, 0, 3, 52, 28, },
++      { 1, 1, 0, 3, 52, 28, },
++      { 0, 1, 0, 3, 56, 28, },
++      { 2, 1, 0, 3, 56, 28, },
++      { 1, 1, 0, 3, 56, 28, },
++      { 0, 1, 0, 3, 60, 28, },
++      { 2, 1, 0, 3, 60, 28, },
++      { 1, 1, 0, 3, 60, 28, },
++      { 0, 1, 0, 3, 64, 24, },
++      { 2, 1, 0, 3, 64, 28, },
++      { 1, 1, 0, 3, 64, 28, },
++      { 0, 1, 0, 3, 100, 24, },
++      { 2, 1, 0, 3, 100, 28, },
++      { 1, 1, 0, 3, 100, 28, },
++      { 0, 1, 0, 3, 104, 28, },
++      { 2, 1, 0, 3, 104, 28, },
++      { 1, 1, 0, 3, 104, 28, },
++      { 0, 1, 0, 3, 108, 28, },
++      { 2, 1, 0, 3, 108, 28, },
++      { 1, 1, 0, 3, 108, 28, },
++      { 0, 1, 0, 3, 112, 28, },
++      { 2, 1, 0, 3, 112, 28, },
++      { 1, 1, 0, 3, 112, 28, },
++      { 0, 1, 0, 3, 116, 28, },
++      { 2, 1, 0, 3, 116, 28, },
++      { 1, 1, 0, 3, 116, 28, },
++      { 0, 1, 0, 3, 120, 28, },
++      { 2, 1, 0, 3, 120, 28, },
++      { 1, 1, 0, 3, 120, 28, },
++      { 0, 1, 0, 3, 124, 28, },
++      { 2, 1, 0, 3, 124, 28, },
++      { 1, 1, 0, 3, 124, 28, },
++      { 0, 1, 0, 3, 128, 28, },
++      { 2, 1, 0, 3, 128, 28, },
++      { 1, 1, 0, 3, 128, 28, },
++      { 0, 1, 0, 3, 132, 28, },
++      { 2, 1, 0, 3, 132, 28, },
++      { 1, 1, 0, 3, 132, 28, },
++      { 0, 1, 0, 3, 136, 28, },
++      { 2, 1, 0, 3, 136, 28, },
++      { 1, 1, 0, 3, 136, 28, },
++      { 0, 1, 0, 3, 140, 24, },
++      { 2, 1, 0, 3, 140, 28, },
++      { 1, 1, 0, 3, 140, 28, },
++      { 0, 1, 0, 3, 149, 24, },
++      { 2, 1, 0, 3, 149, 28, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 28, },
++      { 2, 1, 0, 3, 153, 28, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 28, },
++      { 2, 1, 0, 3, 157, 28, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 28, },
++      { 2, 1, 0, 3, 161, 28, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 28, },
++      { 2, 1, 0, 3, 165, 28, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 22, },
++      { 2, 1, 0, 6, 36, 26, },
++      { 1, 1, 0, 6, 36, 26, },
++      { 0, 1, 0, 6, 40, 26, },
++      { 2, 1, 0, 6, 40, 26, },
++      { 1, 1, 0, 6, 40, 26, },
++      { 0, 1, 0, 6, 44, 26, },
++      { 2, 1, 0, 6, 44, 26, },
++      { 1, 1, 0, 6, 44, 26, },
++      { 0, 1, 0, 6, 48, 26, },
++      { 2, 1, 0, 6, 48, 26, },
++      { 1, 1, 0, 6, 48, 26, },
++      { 0, 1, 0, 6, 52, 26, },
++      { 2, 1, 0, 6, 52, 26, },
++      { 1, 1, 0, 6, 52, 26, },
++      { 0, 1, 0, 6, 56, 26, },
++      { 2, 1, 0, 6, 56, 26, },
++      { 1, 1, 0, 6, 56, 26, },
++      { 0, 1, 0, 6, 60, 26, },
++      { 2, 1, 0, 6, 60, 26, },
++      { 1, 1, 0, 6, 60, 26, },
++      { 0, 1, 0, 6, 64, 22, },
++      { 2, 1, 0, 6, 64, 26, },
++      { 1, 1, 0, 6, 64, 26, },
++      { 0, 1, 0, 6, 100, 22, },
++      { 2, 1, 0, 6, 100, 26, },
++      { 1, 1, 0, 6, 100, 26, },
++      { 0, 1, 0, 6, 104, 26, },
++      { 2, 1, 0, 6, 104, 26, },
++      { 1, 1, 0, 6, 104, 26, },
++      { 0, 1, 0, 6, 108, 26, },
++      { 2, 1, 0, 6, 108, 26, },
++      { 1, 1, 0, 6, 108, 26, },
++      { 0, 1, 0, 6, 112, 26, },
++      { 2, 1, 0, 6, 112, 26, },
++      { 1, 1, 0, 6, 112, 26, },
++      { 0, 1, 0, 6, 116, 26, },
++      { 2, 1, 0, 6, 116, 26, },
++      { 1, 1, 0, 6, 116, 26, },
++      { 0, 1, 0, 6, 120, 26, },
++      { 2, 1, 0, 6, 120, 26, },
++      { 1, 1, 0, 6, 120, 26, },
++      { 0, 1, 0, 6, 124, 26, },
++      { 2, 1, 0, 6, 124, 26, },
++      { 1, 1, 0, 6, 124, 26, },
++      { 0, 1, 0, 6, 128, 26, },
++      { 2, 1, 0, 6, 128, 26, },
++      { 1, 1, 0, 6, 128, 26, },
++      { 0, 1, 0, 6, 132, 26, },
++      { 2, 1, 0, 6, 132, 26, },
++      { 1, 1, 0, 6, 132, 26, },
++      { 0, 1, 0, 6, 136, 26, },
++      { 2, 1, 0, 6, 136, 26, },
++      { 1, 1, 0, 6, 136, 26, },
++      { 0, 1, 0, 6, 140, 22, },
++      { 2, 1, 0, 6, 140, 26, },
++      { 1, 1, 0, 6, 140, 26, },
++      { 0, 1, 0, 6, 149, 22, },
++      { 2, 1, 0, 6, 149, 26, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 26, },
++      { 2, 1, 0, 6, 153, 26, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 26, },
++      { 2, 1, 0, 6, 157, 26, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 26, },
++      { 2, 1, 0, 6, 161, 26, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 26, },
++      { 2, 1, 0, 6, 165, 26, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 20, },
++      { 2, 1, 0, 7, 36, 24, },
++      { 1, 1, 0, 7, 36, 24, },
++      { 0, 1, 0, 7, 40, 24, },
++      { 2, 1, 0, 7, 40, 24, },
++      { 1, 1, 0, 7, 40, 24, },
++      { 0, 1, 0, 7, 44, 24, },
++      { 2, 1, 0, 7, 44, 24, },
++      { 1, 1, 0, 7, 44, 24, },
++      { 0, 1, 0, 7, 48, 24, },
++      { 2, 1, 0, 7, 48, 24, },
++      { 1, 1, 0, 7, 48, 24, },
++      { 0, 1, 0, 7, 52, 24, },
++      { 2, 1, 0, 7, 52, 24, },
++      { 1, 1, 0, 7, 52, 24, },
++      { 0, 1, 0, 7, 56, 24, },
++      { 2, 1, 0, 7, 56, 24, },
++      { 1, 1, 0, 7, 56, 24, },
++      { 0, 1, 0, 7, 60, 24, },
++      { 2, 1, 0, 7, 60, 24, },
++      { 1, 1, 0, 7, 60, 24, },
++      { 0, 1, 0, 7, 64, 20, },
++      { 2, 1, 0, 7, 64, 24, },
++      { 1, 1, 0, 7, 64, 24, },
++      { 0, 1, 0, 7, 100, 20, },
++      { 2, 1, 0, 7, 100, 24, },
++      { 1, 1, 0, 7, 100, 24, },
++      { 0, 1, 0, 7, 104, 24, },
++      { 2, 1, 0, 7, 104, 24, },
++      { 1, 1, 0, 7, 104, 24, },
++      { 0, 1, 0, 7, 108, 24, },
++      { 2, 1, 0, 7, 108, 24, },
++      { 1, 1, 0, 7, 108, 24, },
++      { 0, 1, 0, 7, 112, 24, },
++      { 2, 1, 0, 7, 112, 24, },
++      { 1, 1, 0, 7, 112, 24, },
++      { 0, 1, 0, 7, 116, 24, },
++      { 2, 1, 0, 7, 116, 24, },
++      { 1, 1, 0, 7, 116, 24, },
++      { 0, 1, 0, 7, 120, 24, },
++      { 2, 1, 0, 7, 120, 24, },
++      { 1, 1, 0, 7, 120, 24, },
++      { 0, 1, 0, 7, 124, 24, },
++      { 2, 1, 0, 7, 124, 24, },
++      { 1, 1, 0, 7, 124, 24, },
++      { 0, 1, 0, 7, 128, 24, },
++      { 2, 1, 0, 7, 128, 24, },
++      { 1, 1, 0, 7, 128, 24, },
++      { 0, 1, 0, 7, 132, 24, },
++      { 2, 1, 0, 7, 132, 24, },
++      { 1, 1, 0, 7, 132, 24, },
++      { 0, 1, 0, 7, 136, 24, },
++      { 2, 1, 0, 7, 136, 24, },
++      { 1, 1, 0, 7, 136, 24, },
++      { 0, 1, 0, 7, 140, 20, },
++      { 2, 1, 0, 7, 140, 24, },
++      { 1, 1, 0, 7, 140, 24, },
++      { 0, 1, 0, 7, 149, 20, },
++      { 2, 1, 0, 7, 149, 24, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 24, },
++      { 2, 1, 0, 7, 153, 24, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 24, },
++      { 2, 1, 0, 7, 157, 24, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 24, },
++      { 2, 1, 0, 7, 161, 24, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 24, },
++      { 2, 1, 0, 7, 165, 24, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 26, },
++      { 2, 1, 1, 2, 38, 32, },
++      { 1, 1, 1, 2, 38, 32, },
++      { 0, 1, 1, 2, 46, 32, },
++      { 2, 1, 1, 2, 46, 32, },
++      { 1, 1, 1, 2, 46, 32, },
++      { 0, 1, 1, 2, 54, 32, },
++      { 2, 1, 1, 2, 54, 32, },
++      { 1, 1, 1, 2, 54, 32, },
++      { 0, 1, 1, 2, 62, 26, },
++      { 2, 1, 1, 2, 62, 32, },
++      { 1, 1, 1, 2, 62, 32, },
++      { 0, 1, 1, 2, 102, 26, },
++      { 2, 1, 1, 2, 102, 32, },
++      { 1, 1, 1, 2, 102, 32, },
++      { 0, 1, 1, 2, 110, 32, },
++      { 2, 1, 1, 2, 110, 32, },
++      { 1, 1, 1, 2, 110, 32, },
++      { 0, 1, 1, 2, 118, 32, },
++      { 2, 1, 1, 2, 118, 32, },
++      { 1, 1, 1, 2, 118, 32, },
++      { 0, 1, 1, 2, 126, 32, },
++      { 2, 1, 1, 2, 126, 32, },
++      { 1, 1, 1, 2, 126, 32, },
++      { 0, 1, 1, 2, 134, 32, },
++      { 2, 1, 1, 2, 134, 32, },
++      { 1, 1, 1, 2, 134, 32, },
++      { 0, 1, 1, 2, 151, 26, },
++      { 2, 1, 1, 2, 151, 32, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 32, },
++      { 2, 1, 1, 2, 159, 32, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 24, },
++      { 2, 1, 1, 3, 38, 28, },
++      { 1, 1, 1, 3, 38, 28, },
++      { 0, 1, 1, 3, 46, 28, },
++      { 2, 1, 1, 3, 46, 28, },
++      { 1, 1, 1, 3, 46, 28, },
++      { 0, 1, 1, 3, 54, 28, },
++      { 2, 1, 1, 3, 54, 28, },
++      { 1, 1, 1, 3, 54, 28, },
++      { 0, 1, 1, 3, 62, 24, },
++      { 2, 1, 1, 3, 62, 28, },
++      { 1, 1, 1, 3, 62, 28, },
++      { 0, 1, 1, 3, 102, 24, },
++      { 2, 1, 1, 3, 102, 28, },
++      { 1, 1, 1, 3, 102, 28, },
++      { 0, 1, 1, 3, 110, 28, },
++      { 2, 1, 1, 3, 110, 28, },
++      { 1, 1, 1, 3, 110, 28, },
++      { 0, 1, 1, 3, 118, 28, },
++      { 2, 1, 1, 3, 118, 28, },
++      { 1, 1, 1, 3, 118, 28, },
++      { 0, 1, 1, 3, 126, 28, },
++      { 2, 1, 1, 3, 126, 28, },
++      { 1, 1, 1, 3, 126, 28, },
++      { 0, 1, 1, 3, 134, 28, },
++      { 2, 1, 1, 3, 134, 28, },
++      { 1, 1, 1, 3, 134, 28, },
++      { 0, 1, 1, 3, 151, 24, },
++      { 2, 1, 1, 3, 151, 28, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 28, },
++      { 2, 1, 1, 3, 159, 28, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 20, },
++      { 2, 1, 1, 6, 38, 26, },
++      { 1, 1, 1, 6, 38, 26, },
++      { 0, 1, 1, 6, 46, 26, },
++      { 2, 1, 1, 6, 46, 26, },
++      { 1, 1, 1, 6, 46, 26, },
++      { 0, 1, 1, 6, 54, 26, },
++      { 2, 1, 1, 6, 54, 26, },
++      { 1, 1, 1, 6, 54, 26, },
++      { 0, 1, 1, 6, 62, 20, },
++      { 2, 1, 1, 6, 62, 26, },
++      { 1, 1, 1, 6, 62, 26, },
++      { 0, 1, 1, 6, 102, 20, },
++      { 2, 1, 1, 6, 102, 26, },
++      { 1, 1, 1, 6, 102, 26, },
++      { 0, 1, 1, 6, 110, 26, },
++      { 2, 1, 1, 6, 110, 26, },
++      { 1, 1, 1, 6, 110, 26, },
++      { 0, 1, 1, 6, 118, 26, },
++      { 2, 1, 1, 6, 118, 26, },
++      { 1, 1, 1, 6, 118, 26, },
++      { 0, 1, 1, 6, 126, 26, },
++      { 2, 1, 1, 6, 126, 26, },
++      { 1, 1, 1, 6, 126, 26, },
++      { 0, 1, 1, 6, 134, 26, },
++      { 2, 1, 1, 6, 134, 26, },
++      { 1, 1, 1, 6, 134, 26, },
++      { 0, 1, 1, 6, 151, 20, },
++      { 2, 1, 1, 6, 151, 26, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 26, },
++      { 2, 1, 1, 6, 159, 26, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 18, },
++      { 2, 1, 1, 7, 38, 24, },
++      { 1, 1, 1, 7, 38, 24, },
++      { 0, 1, 1, 7, 46, 24, },
++      { 2, 1, 1, 7, 46, 24, },
++      { 1, 1, 1, 7, 46, 24, },
++      { 0, 1, 1, 7, 54, 24, },
++      { 2, 1, 1, 7, 54, 24, },
++      { 1, 1, 1, 7, 54, 24, },
++      { 0, 1, 1, 7, 62, 18, },
++      { 2, 1, 1, 7, 62, 24, },
++      { 1, 1, 1, 7, 62, 24, },
++      { 0, 1, 1, 7, 102, 18, },
++      { 2, 1, 1, 7, 102, 24, },
++      { 1, 1, 1, 7, 102, 24, },
++      { 0, 1, 1, 7, 110, 24, },
++      { 2, 1, 1, 7, 110, 24, },
++      { 1, 1, 1, 7, 110, 24, },
++      { 0, 1, 1, 7, 118, 24, },
++      { 2, 1, 1, 7, 118, 24, },
++      { 1, 1, 1, 7, 118, 24, },
++      { 0, 1, 1, 7, 126, 24, },
++      { 2, 1, 1, 7, 126, 24, },
++      { 1, 1, 1, 7, 126, 24, },
++      { 0, 1, 1, 7, 134, 24, },
++      { 2, 1, 1, 7, 134, 24, },
++      { 1, 1, 1, 7, 134, 24, },
++      { 0, 1, 1, 7, 151, 18, },
++      { 2, 1, 1, 7, 151, 24, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 24, },
++      { 2, 1, 1, 7, 159, 24, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 22, },
++      { 2, 1, 2, 4, 42, 30, },
++      { 1, 1, 2, 4, 42, 30, },
++      { 0, 1, 2, 4, 58, 22, },
++      { 2, 1, 2, 4, 58, 30, },
++      { 1, 1, 2, 4, 58, 30, },
++      { 0, 1, 2, 4, 106, 22, },
++      { 2, 1, 2, 4, 106, 30, },
++      { 1, 1, 2, 4, 106, 30, },
++      { 0, 1, 2, 4, 122, 30, },
++      { 2, 1, 2, 4, 122, 30, },
++      { 1, 1, 2, 4, 122, 30, },
++      { 0, 1, 2, 4, 155, 22, },
++      { 2, 1, 2, 4, 155, 30, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 20, },
++      { 2, 1, 2, 5, 42, 28, },
++      { 1, 1, 2, 5, 42, 28, },
++      { 0, 1, 2, 5, 58, 20, },
++      { 2, 1, 2, 5, 58, 28, },
++      { 1, 1, 2, 5, 58, 28, },
++      { 0, 1, 2, 5, 106, 20, },
++      { 2, 1, 2, 5, 106, 28, },
++      { 1, 1, 2, 5, 106, 28, },
++      { 0, 1, 2, 5, 122, 28, },
++      { 2, 1, 2, 5, 122, 28, },
++      { 1, 1, 2, 5, 122, 28, },
++      { 0, 1, 2, 5, 155, 20, },
++      { 2, 1, 2, 5, 155, 28, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 18, },
++      { 2, 1, 2, 8, 42, 26, },
++      { 1, 1, 2, 8, 42, 26, },
++      { 0, 1, 2, 8, 58, 18, },
++      { 2, 1, 2, 8, 58, 26, },
++      { 1, 1, 2, 8, 58, 26, },
++      { 0, 1, 2, 8, 106, 18, },
++      { 2, 1, 2, 8, 106, 26, },
++      { 1, 1, 2, 8, 106, 26, },
++      { 0, 1, 2, 8, 122, 26, },
++      { 2, 1, 2, 8, 122, 26, },
++      { 1, 1, 2, 8, 122, 26, },
++      { 0, 1, 2, 8, 155, 18, },
++      { 2, 1, 2, 8, 155, 26, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 16, },
++      { 2, 1, 2, 9, 42, 24, },
++      { 1, 1, 2, 9, 42, 24, },
++      { 0, 1, 2, 9, 58, 16, },
++      { 2, 1, 2, 9, 58, 24, },
++      { 1, 1, 2, 9, 58, 24, },
++      { 0, 1, 2, 9, 106, 16, },
++      { 2, 1, 2, 9, 106, 24, },
++      { 1, 1, 2, 9, 106, 24, },
++      { 0, 1, 2, 9, 122, 24, },
++      { 2, 1, 2, 9, 122, 24, },
++      { 1, 1, 2, 9, 122, 24, },
++      { 0, 1, 2, 9, 155, 16, },
++      { 2, 1, 2, 9, 155, 24, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type0);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type1[] = {
++              { 0, 0, 0, 0, 1, 34, },
++      { 2, 0, 0, 0, 1, 32, },
++      { 1, 0, 0, 0, 1, 32, },
++      { 0, 0, 0, 0, 2, 34, },
++      { 2, 0, 0, 0, 2, 32, },
++      { 1, 0, 0, 0, 2, 32, },
++      { 0, 0, 0, 0, 3, 34, },
++      { 2, 0, 0, 0, 3, 32, },
++      { 1, 0, 0, 0, 3, 32, },
++      { 0, 0, 0, 0, 4, 34, },
++      { 2, 0, 0, 0, 4, 32, },
++      { 1, 0, 0, 0, 4, 32, },
++      { 0, 0, 0, 0, 5, 34, },
++      { 2, 0, 0, 0, 5, 32, },
++      { 1, 0, 0, 0, 5, 32, },
++      { 0, 0, 0, 0, 6, 34, },
++      { 2, 0, 0, 0, 6, 32, },
++      { 1, 0, 0, 0, 6, 32, },
++      { 0, 0, 0, 0, 7, 34, },
++      { 2, 0, 0, 0, 7, 32, },
++      { 1, 0, 0, 0, 7, 32, },
++      { 0, 0, 0, 0, 8, 34, },
++      { 2, 0, 0, 0, 8, 32, },
++      { 1, 0, 0, 0, 8, 32, },
++      { 0, 0, 0, 0, 9, 34, },
++      { 2, 0, 0, 0, 9, 32, },
++      { 1, 0, 0, 0, 9, 32, },
++      { 0, 0, 0, 0, 10, 34, },
++      { 2, 0, 0, 0, 10, 32, },
++      { 1, 0, 0, 0, 10, 32, },
++      { 0, 0, 0, 0, 11, 34, },
++      { 2, 0, 0, 0, 11, 32, },
++      { 1, 0, 0, 0, 11, 32, },
++      { 0, 0, 0, 0, 12, 24, },
++      { 2, 0, 0, 0, 12, 32, },
++      { 1, 0, 0, 0, 12, 32, },
++      { 0, 0, 0, 0, 13, 16, },
++      { 2, 0, 0, 0, 13, 32, },
++      { 1, 0, 0, 0, 13, 32, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 32, },
++      { 0, 0, 0, 1, 1, 30, },
++      { 2, 0, 0, 1, 1, 32, },
++      { 1, 0, 0, 1, 1, 32, },
++      { 0, 0, 0, 1, 2, 32, },
++      { 2, 0, 0, 1, 2, 32, },
++      { 1, 0, 0, 1, 2, 32, },
++      { 0, 0, 0, 1, 3, 32, },
++      { 2, 0, 0, 1, 3, 32, },
++      { 1, 0, 0, 1, 3, 32, },
++      { 0, 0, 0, 1, 4, 32, },
++      { 2, 0, 0, 1, 4, 32, },
++      { 1, 0, 0, 1, 4, 32, },
++      { 0, 0, 0, 1, 5, 32, },
++      { 2, 0, 0, 1, 5, 32, },
++      { 1, 0, 0, 1, 5, 32, },
++      { 0, 0, 0, 1, 6, 32, },
++      { 2, 0, 0, 1, 6, 32, },
++      { 1, 0, 0, 1, 6, 32, },
++      { 0, 0, 0, 1, 7, 32, },
++      { 2, 0, 0, 1, 7, 32, },
++      { 1, 0, 0, 1, 7, 32, },
++      { 0, 0, 0, 1, 8, 32, },
++      { 2, 0, 0, 1, 8, 32, },
++      { 1, 0, 0, 1, 8, 32, },
++      { 0, 0, 0, 1, 9, 32, },
++      { 2, 0, 0, 1, 9, 32, },
++      { 1, 0, 0, 1, 9, 32, },
++      { 0, 0, 0, 1, 10, 32, },
++      { 2, 0, 0, 1, 10, 32, },
++      { 1, 0, 0, 1, 10, 32, },
++      { 0, 0, 0, 1, 11, 30, },
++      { 2, 0, 0, 1, 11, 32, },
++      { 1, 0, 0, 1, 11, 32, },
++      { 0, 0, 0, 1, 12, 18, },
++      { 2, 0, 0, 1, 12, 32, },
++      { 1, 0, 0, 1, 12, 32, },
++      { 0, 0, 0, 1, 13, 8, },
++      { 2, 0, 0, 1, 13, 32, },
++      { 1, 0, 0, 1, 13, 32, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 28, },
++      { 2, 0, 0, 2, 1, 32, },
++      { 1, 0, 0, 2, 1, 32, },
++      { 0, 0, 0, 2, 2, 32, },
++      { 2, 0, 0, 2, 2, 32, },
++      { 1, 0, 0, 2, 2, 32, },
++      { 0, 0, 0, 2, 3, 32, },
++      { 2, 0, 0, 2, 3, 32, },
++      { 1, 0, 0, 2, 3, 32, },
++      { 0, 0, 0, 2, 4, 32, },
++      { 2, 0, 0, 2, 4, 32, },
++      { 1, 0, 0, 2, 4, 32, },
++      { 0, 0, 0, 2, 5, 32, },
++      { 2, 0, 0, 2, 5, 32, },
++      { 1, 0, 0, 2, 5, 32, },
++      { 0, 0, 0, 2, 6, 32, },
++      { 2, 0, 0, 2, 6, 32, },
++      { 1, 0, 0, 2, 6, 32, },
++      { 0, 0, 0, 2, 7, 32, },
++      { 2, 0, 0, 2, 7, 32, },
++      { 1, 0, 0, 2, 7, 32, },
++      { 0, 0, 0, 2, 8, 32, },
++      { 2, 0, 0, 2, 8, 32, },
++      { 1, 0, 0, 2, 8, 32, },
++      { 0, 0, 0, 2, 9, 32, },
++      { 2, 0, 0, 2, 9, 32, },
++      { 1, 0, 0, 2, 9, 32, },
++      { 0, 0, 0, 2, 10, 32, },
++      { 2, 0, 0, 2, 10, 32, },
++      { 1, 0, 0, 2, 10, 32, },
++      { 0, 0, 0, 2, 11, 28, },
++      { 2, 0, 0, 2, 11, 32, },
++      { 1, 0, 0, 2, 11, 32, },
++      { 0, 0, 0, 2, 12, 16, },
++      { 2, 0, 0, 2, 12, 32, },
++      { 1, 0, 0, 2, 12, 32, },
++      { 0, 0, 0, 2, 13, 6, },
++      { 2, 0, 0, 2, 13, 32, },
++      { 1, 0, 0, 2, 13, 32, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 26, },
++      { 2, 0, 0, 3, 1, 30, },
++      { 1, 0, 0, 3, 1, 30, },
++      { 0, 0, 0, 3, 2, 30, },
++      { 2, 0, 0, 3, 2, 30, },
++      { 1, 0, 0, 3, 2, 30, },
++      { 0, 0, 0, 3, 3, 30, },
++      { 2, 0, 0, 3, 3, 30, },
++      { 1, 0, 0, 3, 3, 30, },
++      { 0, 0, 0, 3, 4, 30, },
++      { 2, 0, 0, 3, 4, 30, },
++      { 1, 0, 0, 3, 4, 30, },
++      { 0, 0, 0, 3, 5, 30, },
++      { 2, 0, 0, 3, 5, 30, },
++      { 1, 0, 0, 3, 5, 30, },
++      { 0, 0, 0, 3, 6, 30, },
++      { 2, 0, 0, 3, 6, 30, },
++      { 1, 0, 0, 3, 6, 30, },
++      { 0, 0, 0, 3, 7, 30, },
++      { 2, 0, 0, 3, 7, 30, },
++      { 1, 0, 0, 3, 7, 30, },
++      { 0, 0, 0, 3, 8, 30, },
++      { 2, 0, 0, 3, 8, 30, },
++      { 1, 0, 0, 3, 8, 30, },
++      { 0, 0, 0, 3, 9, 30, },
++      { 2, 0, 0, 3, 9, 30, },
++      { 1, 0, 0, 3, 9, 30, },
++      { 0, 0, 0, 3, 10, 30, },
++      { 2, 0, 0, 3, 10, 30, },
++      { 1, 0, 0, 3, 10, 30, },
++      { 0, 0, 0, 3, 11, 26, },
++      { 2, 0, 0, 3, 11, 30, },
++      { 1, 0, 0, 3, 11, 30, },
++      { 0, 0, 0, 3, 12, 14, },
++      { 2, 0, 0, 3, 12, 30, },
++      { 1, 0, 0, 3, 12, 30, },
++      { 0, 0, 0, 3, 13, 4, },
++      { 2, 0, 0, 3, 13, 30, },
++      { 1, 0, 0, 3, 13, 30, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 24, },
++      { 2, 0, 0, 6, 1, 28, },
++      { 1, 0, 0, 6, 1, 28, },
++      { 0, 0, 0, 6, 2, 28, },
++      { 2, 0, 0, 6, 2, 28, },
++      { 1, 0, 0, 6, 2, 28, },
++      { 0, 0, 0, 6, 3, 28, },
++      { 2, 0, 0, 6, 3, 28, },
++      { 1, 0, 0, 6, 3, 28, },
++      { 0, 0, 0, 6, 4, 28, },
++      { 2, 0, 0, 6, 4, 28, },
++      { 1, 0, 0, 6, 4, 28, },
++      { 0, 0, 0, 6, 5, 28, },
++      { 2, 0, 0, 6, 5, 28, },
++      { 1, 0, 0, 6, 5, 28, },
++      { 0, 0, 0, 6, 6, 28, },
++      { 2, 0, 0, 6, 6, 28, },
++      { 1, 0, 0, 6, 6, 28, },
++      { 0, 0, 0, 6, 7, 28, },
++      { 2, 0, 0, 6, 7, 28, },
++      { 1, 0, 0, 6, 7, 28, },
++      { 0, 0, 0, 6, 8, 28, },
++      { 2, 0, 0, 6, 8, 28, },
++      { 1, 0, 0, 6, 8, 28, },
++      { 0, 0, 0, 6, 9, 28, },
++      { 2, 0, 0, 6, 9, 28, },
++      { 1, 0, 0, 6, 9, 28, },
++      { 0, 0, 0, 6, 10, 28, },
++      { 2, 0, 0, 6, 10, 28, },
++      { 1, 0, 0, 6, 10, 28, },
++      { 0, 0, 0, 6, 11, 24, },
++      { 2, 0, 0, 6, 11, 28, },
++      { 1, 0, 0, 6, 11, 28, },
++      { 0, 0, 0, 6, 12, 14, },
++      { 2, 0, 0, 6, 12, 28, },
++      { 1, 0, 0, 6, 12, 28, },
++      { 0, 0, 0, 6, 13, 4, },
++      { 2, 0, 0, 6, 13, 28, },
++      { 1, 0, 0, 6, 13, 28, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 22, },
++      { 2, 0, 0, 7, 1, 26, },
++      { 1, 0, 0, 7, 1, 26, },
++      { 0, 0, 0, 7, 2, 26, },
++      { 2, 0, 0, 7, 2, 26, },
++      { 1, 0, 0, 7, 2, 26, },
++      { 0, 0, 0, 7, 3, 26, },
++      { 2, 0, 0, 7, 3, 26, },
++      { 1, 0, 0, 7, 3, 26, },
++      { 0, 0, 0, 7, 4, 26, },
++      { 2, 0, 0, 7, 4, 26, },
++      { 1, 0, 0, 7, 4, 26, },
++      { 0, 0, 0, 7, 5, 26, },
++      { 2, 0, 0, 7, 5, 26, },
++      { 1, 0, 0, 7, 5, 26, },
++      { 0, 0, 0, 7, 6, 26, },
++      { 2, 0, 0, 7, 6, 26, },
++      { 1, 0, 0, 7, 6, 26, },
++      { 0, 0, 0, 7, 7, 26, },
++      { 2, 0, 0, 7, 7, 26, },
++      { 1, 0, 0, 7, 7, 26, },
++      { 0, 0, 0, 7, 8, 26, },
++      { 2, 0, 0, 7, 8, 26, },
++      { 1, 0, 0, 7, 8, 26, },
++      { 0, 0, 0, 7, 9, 26, },
++      { 2, 0, 0, 7, 9, 26, },
++      { 1, 0, 0, 7, 9, 26, },
++      { 0, 0, 0, 7, 10, 26, },
++      { 2, 0, 0, 7, 10, 26, },
++      { 1, 0, 0, 7, 10, 26, },
++      { 0, 0, 0, 7, 11, 22, },
++      { 2, 0, 0, 7, 11, 26, },
++      { 1, 0, 0, 7, 11, 26, },
++      { 0, 0, 0, 7, 12, 14, },
++      { 2, 0, 0, 7, 12, 26, },
++      { 1, 0, 0, 7, 12, 26, },
++      { 0, 0, 0, 7, 13, 4, },
++      { 2, 0, 0, 7, 13, 26, },
++      { 1, 0, 0, 7, 13, 26, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 28, },
++      { 2, 0, 1, 2, 3, 32, },
++      { 1, 0, 1, 2, 3, 32, },
++      { 0, 0, 1, 2, 4, 32, },
++      { 2, 0, 1, 2, 4, 32, },
++      { 1, 0, 1, 2, 4, 32, },
++      { 0, 0, 1, 2, 5, 32, },
++      { 2, 0, 1, 2, 5, 32, },
++      { 1, 0, 1, 2, 5, 32, },
++      { 0, 0, 1, 2, 6, 32, },
++      { 2, 0, 1, 2, 6, 32, },
++      { 1, 0, 1, 2, 6, 32, },
++      { 0, 0, 1, 2, 7, 32, },
++      { 2, 0, 1, 2, 7, 32, },
++      { 1, 0, 1, 2, 7, 32, },
++      { 0, 0, 1, 2, 8, 32, },
++      { 2, 0, 1, 2, 8, 32, },
++      { 1, 0, 1, 2, 8, 32, },
++      { 0, 0, 1, 2, 9, 32, },
++      { 2, 0, 1, 2, 9, 32, },
++      { 1, 0, 1, 2, 9, 32, },
++      { 0, 0, 1, 2, 10, 32, },
++      { 2, 0, 1, 2, 10, 32, },
++      { 1, 0, 1, 2, 10, 32, },
++      { 0, 0, 1, 2, 11, 28, },
++      { 2, 0, 1, 2, 11, 32, },
++      { 1, 0, 1, 2, 11, 32, },
++      { 0, 0, 1, 2, 12, 16, },
++      { 2, 0, 1, 2, 12, 32, },
++      { 1, 0, 1, 2, 12, 32, },
++      { 0, 0, 1, 2, 13, 10, },
++      { 2, 0, 1, 2, 13, 32, },
++      { 1, 0, 1, 2, 13, 32, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 26, },
++      { 2, 0, 1, 3, 3, 30, },
++      { 1, 0, 1, 3, 3, 30, },
++      { 0, 0, 1, 3, 4, 30, },
++      { 2, 0, 1, 3, 4, 30, },
++      { 1, 0, 1, 3, 4, 30, },
++      { 0, 0, 1, 3, 5, 30, },
++      { 2, 0, 1, 3, 5, 30, },
++      { 1, 0, 1, 3, 5, 30, },
++      { 0, 0, 1, 3, 6, 30, },
++      { 2, 0, 1, 3, 6, 30, },
++      { 1, 0, 1, 3, 6, 30, },
++      { 0, 0, 1, 3, 7, 30, },
++      { 2, 0, 1, 3, 7, 30, },
++      { 1, 0, 1, 3, 7, 30, },
++      { 0, 0, 1, 3, 8, 30, },
++      { 2, 0, 1, 3, 8, 30, },
++      { 1, 0, 1, 3, 8, 30, },
++      { 0, 0, 1, 3, 9, 30, },
++      { 2, 0, 1, 3, 9, 30, },
++      { 1, 0, 1, 3, 9, 30, },
++      { 0, 0, 1, 3, 10, 30, },
++      { 2, 0, 1, 3, 10, 30, },
++      { 1, 0, 1, 3, 10, 30, },
++      { 0, 0, 1, 3, 11, 26, },
++      { 2, 0, 1, 3, 11, 30, },
++      { 1, 0, 1, 3, 11, 30, },
++      { 0, 0, 1, 3, 12, 14, },
++      { 2, 0, 1, 3, 12, 30, },
++      { 1, 0, 1, 3, 12, 30, },
++      { 0, 0, 1, 3, 13, 8, },
++      { 2, 0, 1, 3, 13, 30, },
++      { 1, 0, 1, 3, 13, 30, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 24, },
++      { 2, 0, 1, 6, 3, 28, },
++      { 1, 0, 1, 6, 3, 28, },
++      { 0, 0, 1, 6, 4, 28, },
++      { 2, 0, 1, 6, 4, 28, },
++      { 1, 0, 1, 6, 4, 28, },
++      { 0, 0, 1, 6, 5, 28, },
++      { 2, 0, 1, 6, 5, 28, },
++      { 1, 0, 1, 6, 5, 28, },
++      { 0, 0, 1, 6, 6, 28, },
++      { 2, 0, 1, 6, 6, 28, },
++      { 1, 0, 1, 6, 6, 28, },
++      { 0, 0, 1, 6, 7, 28, },
++      { 2, 0, 1, 6, 7, 28, },
++      { 1, 0, 1, 6, 7, 28, },
++      { 0, 0, 1, 6, 8, 28, },
++      { 2, 0, 1, 6, 8, 28, },
++      { 1, 0, 1, 6, 8, 28, },
++      { 0, 0, 1, 6, 9, 28, },
++      { 2, 0, 1, 6, 9, 28, },
++      { 1, 0, 1, 6, 9, 28, },
++      { 0, 0, 1, 6, 10, 28, },
++      { 2, 0, 1, 6, 10, 28, },
++      { 1, 0, 1, 6, 10, 28, },
++      { 0, 0, 1, 6, 11, 24, },
++      { 2, 0, 1, 6, 11, 28, },
++      { 1, 0, 1, 6, 11, 28, },
++      { 0, 0, 1, 6, 12, 14, },
++      { 2, 0, 1, 6, 12, 28, },
++      { 1, 0, 1, 6, 12, 28, },
++      { 0, 0, 1, 6, 13, 8, },
++      { 2, 0, 1, 6, 13, 28, },
++      { 1, 0, 1, 6, 13, 28, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 22, },
++      { 2, 0, 1, 7, 3, 26, },
++      { 1, 0, 1, 7, 3, 26, },
++      { 0, 0, 1, 7, 4, 26, },
++      { 2, 0, 1, 7, 4, 26, },
++      { 1, 0, 1, 7, 4, 26, },
++      { 0, 0, 1, 7, 5, 26, },
++      { 2, 0, 1, 7, 5, 26, },
++      { 1, 0, 1, 7, 5, 26, },
++      { 0, 0, 1, 7, 6, 26, },
++      { 2, 0, 1, 7, 6, 26, },
++      { 1, 0, 1, 7, 6, 26, },
++      { 0, 0, 1, 7, 7, 26, },
++      { 2, 0, 1, 7, 7, 26, },
++      { 1, 0, 1, 7, 7, 26, },
++      { 0, 0, 1, 7, 8, 26, },
++      { 2, 0, 1, 7, 8, 26, },
++      { 1, 0, 1, 7, 8, 26, },
++      { 0, 0, 1, 7, 9, 26, },
++      { 2, 0, 1, 7, 9, 26, },
++      { 1, 0, 1, 7, 9, 26, },
++      { 0, 0, 1, 7, 10, 26, },
++      { 2, 0, 1, 7, 10, 26, },
++      { 1, 0, 1, 7, 10, 26, },
++      { 0, 0, 1, 7, 11, 22, },
++      { 2, 0, 1, 7, 11, 26, },
++      { 1, 0, 1, 7, 11, 26, },
++      { 0, 0, 1, 7, 12, 14, },
++      { 2, 0, 1, 7, 12, 26, },
++      { 1, 0, 1, 7, 12, 26, },
++      { 0, 0, 1, 7, 13, 8, },
++      { 2, 0, 1, 7, 13, 26, },
++      { 1, 0, 1, 7, 13, 26, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 28, },
++      { 2, 1, 0, 1, 36, 32, },
++      { 1, 1, 0, 1, 36, 32, },
++      { 0, 1, 0, 1, 40, 32, },
++      { 2, 1, 0, 1, 40, 32, },
++      { 1, 1, 0, 1, 40, 32, },
++      { 0, 1, 0, 1, 44, 32, },
++      { 2, 1, 0, 1, 44, 32, },
++      { 1, 1, 0, 1, 44, 32, },
++      { 0, 1, 0, 1, 48, 32, },
++      { 2, 1, 0, 1, 48, 32, },
++      { 1, 1, 0, 1, 48, 32, },
++      { 0, 1, 0, 1, 52, 32, },
++      { 2, 1, 0, 1, 52, 32, },
++      { 1, 1, 0, 1, 52, 32, },
++      { 0, 1, 0, 1, 56, 32, },
++      { 2, 1, 0, 1, 56, 32, },
++      { 1, 1, 0, 1, 56, 32, },
++      { 0, 1, 0, 1, 60, 32, },
++      { 2, 1, 0, 1, 60, 32, },
++      { 1, 1, 0, 1, 60, 32, },
++      { 0, 1, 0, 1, 64, 30, },
++      { 2, 1, 0, 1, 64, 32, },
++      { 1, 1, 0, 1, 64, 32, },
++      { 0, 1, 0, 1, 100, 28, },
++      { 2, 1, 0, 1, 100, 32, },
++      { 1, 1, 0, 1, 100, 32, },
++      { 0, 1, 0, 1, 104, 32, },
++      { 2, 1, 0, 1, 104, 32, },
++      { 1, 1, 0, 1, 104, 32, },
++      { 0, 1, 0, 1, 108, 32, },
++      { 2, 1, 0, 1, 108, 32, },
++      { 1, 1, 0, 1, 108, 32, },
++      { 0, 1, 0, 1, 112, 32, },
++      { 2, 1, 0, 1, 112, 32, },
++      { 1, 1, 0, 1, 112, 32, },
++      { 0, 1, 0, 1, 116, 32, },
++      { 2, 1, 0, 1, 116, 32, },
++      { 1, 1, 0, 1, 116, 32, },
++      { 0, 1, 0, 1, 120, 32, },
++      { 2, 1, 0, 1, 120, 32, },
++      { 1, 1, 0, 1, 120, 32, },
++      { 0, 1, 0, 1, 124, 32, },
++      { 2, 1, 0, 1, 124, 32, },
++      { 1, 1, 0, 1, 124, 32, },
++      { 0, 1, 0, 1, 128, 32, },
++      { 2, 1, 0, 1, 128, 32, },
++      { 1, 1, 0, 1, 128, 32, },
++      { 0, 1, 0, 1, 132, 32, },
++      { 2, 1, 0, 1, 132, 32, },
++      { 1, 1, 0, 1, 132, 32, },
++      { 0, 1, 0, 1, 136, 32, },
++      { 2, 1, 0, 1, 136, 32, },
++      { 1, 1, 0, 1, 136, 32, },
++      { 0, 1, 0, 1, 140, 28, },
++      { 2, 1, 0, 1, 140, 32, },
++      { 1, 1, 0, 1, 140, 32, },
++      { 0, 1, 0, 1, 149, 28, },
++      { 2, 1, 0, 1, 149, 32, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 32, },
++      { 2, 1, 0, 1, 153, 32, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 32, },
++      { 2, 1, 0, 1, 157, 32, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 32, },
++      { 2, 1, 0, 1, 161, 32, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 32, },
++      { 2, 1, 0, 1, 165, 32, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 28, },
++      { 2, 1, 0, 2, 36, 32, },
++      { 1, 1, 0, 2, 36, 32, },
++      { 0, 1, 0, 2, 40, 32, },
++      { 2, 1, 0, 2, 40, 32, },
++      { 1, 1, 0, 2, 40, 32, },
++      { 0, 1, 0, 2, 44, 32, },
++      { 2, 1, 0, 2, 44, 32, },
++      { 1, 1, 0, 2, 44, 32, },
++      { 0, 1, 0, 2, 48, 32, },
++      { 2, 1, 0, 2, 48, 32, },
++      { 1, 1, 0, 2, 48, 32, },
++      { 0, 1, 0, 2, 52, 32, },
++      { 2, 1, 0, 2, 52, 32, },
++      { 1, 1, 0, 2, 52, 32, },
++      { 0, 1, 0, 2, 56, 32, },
++      { 2, 1, 0, 2, 56, 32, },
++      { 1, 1, 0, 2, 56, 32, },
++      { 0, 1, 0, 2, 60, 32, },
++      { 2, 1, 0, 2, 60, 32, },
++      { 1, 1, 0, 2, 60, 32, },
++      { 0, 1, 0, 2, 64, 30, },
++      { 2, 1, 0, 2, 64, 32, },
++      { 1, 1, 0, 2, 64, 32, },
++      { 0, 1, 0, 2, 100, 28, },
++      { 2, 1, 0, 2, 100, 32, },
++      { 1, 1, 0, 2, 100, 32, },
++      { 0, 1, 0, 2, 104, 32, },
++      { 2, 1, 0, 2, 104, 32, },
++      { 1, 1, 0, 2, 104, 32, },
++      { 0, 1, 0, 2, 108, 32, },
++      { 2, 1, 0, 2, 108, 32, },
++      { 1, 1, 0, 2, 108, 32, },
++      { 0, 1, 0, 2, 112, 32, },
++      { 2, 1, 0, 2, 112, 32, },
++      { 1, 1, 0, 2, 112, 32, },
++      { 0, 1, 0, 2, 116, 32, },
++      { 2, 1, 0, 2, 116, 32, },
++      { 1, 1, 0, 2, 116, 32, },
++      { 0, 1, 0, 2, 120, 32, },
++      { 2, 1, 0, 2, 120, 32, },
++      { 1, 1, 0, 2, 120, 32, },
++      { 0, 1, 0, 2, 124, 32, },
++      { 2, 1, 0, 2, 124, 32, },
++      { 1, 1, 0, 2, 124, 32, },
++      { 0, 1, 0, 2, 128, 32, },
++      { 2, 1, 0, 2, 128, 32, },
++      { 1, 1, 0, 2, 128, 32, },
++      { 0, 1, 0, 2, 132, 32, },
++      { 2, 1, 0, 2, 132, 32, },
++      { 1, 1, 0, 2, 132, 32, },
++      { 0, 1, 0, 2, 136, 32, },
++      { 2, 1, 0, 2, 136, 32, },
++      { 1, 1, 0, 2, 136, 32, },
++      { 0, 1, 0, 2, 140, 28, },
++      { 2, 1, 0, 2, 140, 32, },
++      { 1, 1, 0, 2, 140, 32, },
++      { 0, 1, 0, 2, 149, 28, },
++      { 2, 1, 0, 2, 149, 32, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 32, },
++      { 2, 1, 0, 2, 153, 32, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 32, },
++      { 2, 1, 0, 2, 157, 32, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 32, },
++      { 2, 1, 0, 2, 161, 32, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 32, },
++      { 2, 1, 0, 2, 165, 32, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 26, },
++      { 2, 1, 0, 3, 36, 30, },
++      { 1, 1, 0, 3, 36, 30, },
++      { 0, 1, 0, 3, 40, 30, },
++      { 2, 1, 0, 3, 40, 30, },
++      { 1, 1, 0, 3, 40, 30, },
++      { 0, 1, 0, 3, 44, 30, },
++      { 2, 1, 0, 3, 44, 30, },
++      { 1, 1, 0, 3, 44, 30, },
++      { 0, 1, 0, 3, 48, 30, },
++      { 2, 1, 0, 3, 48, 30, },
++      { 1, 1, 0, 3, 48, 30, },
++      { 0, 1, 0, 3, 52, 30, },
++      { 2, 1, 0, 3, 52, 30, },
++      { 1, 1, 0, 3, 52, 30, },
++      { 0, 1, 0, 3, 56, 30, },
++      { 2, 1, 0, 3, 56, 30, },
++      { 1, 1, 0, 3, 56, 30, },
++      { 0, 1, 0, 3, 60, 30, },
++      { 2, 1, 0, 3, 60, 30, },
++      { 1, 1, 0, 3, 60, 30, },
++      { 0, 1, 0, 3, 64, 28, },
++      { 2, 1, 0, 3, 64, 30, },
++      { 1, 1, 0, 3, 64, 30, },
++      { 0, 1, 0, 3, 100, 28, },
++      { 2, 1, 0, 3, 100, 30, },
++      { 1, 1, 0, 3, 100, 30, },
++      { 0, 1, 0, 3, 104, 30, },
++      { 2, 1, 0, 3, 104, 30, },
++      { 1, 1, 0, 3, 104, 30, },
++      { 0, 1, 0, 3, 108, 30, },
++      { 2, 1, 0, 3, 108, 30, },
++      { 1, 1, 0, 3, 108, 30, },
++      { 0, 1, 0, 3, 112, 30, },
++      { 2, 1, 0, 3, 112, 30, },
++      { 1, 1, 0, 3, 112, 30, },
++      { 0, 1, 0, 3, 116, 30, },
++      { 2, 1, 0, 3, 116, 30, },
++      { 1, 1, 0, 3, 116, 30, },
++      { 0, 1, 0, 3, 120, 30, },
++      { 2, 1, 0, 3, 120, 30, },
++      { 1, 1, 0, 3, 120, 30, },
++      { 0, 1, 0, 3, 124, 30, },
++      { 2, 1, 0, 3, 124, 30, },
++      { 1, 1, 0, 3, 124, 30, },
++      { 0, 1, 0, 3, 128, 30, },
++      { 2, 1, 0, 3, 128, 30, },
++      { 1, 1, 0, 3, 128, 30, },
++      { 0, 1, 0, 3, 132, 30, },
++      { 2, 1, 0, 3, 132, 30, },
++      { 1, 1, 0, 3, 132, 30, },
++      { 0, 1, 0, 3, 136, 30, },
++      { 2, 1, 0, 3, 136, 30, },
++      { 1, 1, 0, 3, 136, 30, },
++      { 0, 1, 0, 3, 140, 26, },
++      { 2, 1, 0, 3, 140, 30, },
++      { 1, 1, 0, 3, 140, 30, },
++      { 0, 1, 0, 3, 149, 26, },
++      { 2, 1, 0, 3, 149, 30, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 30, },
++      { 2, 1, 0, 3, 153, 30, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 30, },
++      { 2, 1, 0, 3, 157, 30, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 30, },
++      { 2, 1, 0, 3, 161, 30, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 30, },
++      { 2, 1, 0, 3, 165, 30, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 24, },
++      { 2, 1, 0, 6, 36, 28, },
++      { 1, 1, 0, 6, 36, 28, },
++      { 0, 1, 0, 6, 40, 28, },
++      { 2, 1, 0, 6, 40, 28, },
++      { 1, 1, 0, 6, 40, 28, },
++      { 0, 1, 0, 6, 44, 28, },
++      { 2, 1, 0, 6, 44, 28, },
++      { 1, 1, 0, 6, 44, 28, },
++      { 0, 1, 0, 6, 48, 28, },
++      { 2, 1, 0, 6, 48, 28, },
++      { 1, 1, 0, 6, 48, 28, },
++      { 0, 1, 0, 6, 52, 28, },
++      { 2, 1, 0, 6, 52, 28, },
++      { 1, 1, 0, 6, 52, 28, },
++      { 0, 1, 0, 6, 56, 28, },
++      { 2, 1, 0, 6, 56, 28, },
++      { 1, 1, 0, 6, 56, 28, },
++      { 0, 1, 0, 6, 60, 28, },
++      { 2, 1, 0, 6, 60, 28, },
++      { 1, 1, 0, 6, 60, 28, },
++      { 0, 1, 0, 6, 64, 26, },
++      { 2, 1, 0, 6, 64, 28, },
++      { 1, 1, 0, 6, 64, 28, },
++      { 0, 1, 0, 6, 100, 24, },
++      { 2, 1, 0, 6, 100, 28, },
++      { 1, 1, 0, 6, 100, 28, },
++      { 0, 1, 0, 6, 104, 28, },
++      { 2, 1, 0, 6, 104, 28, },
++      { 1, 1, 0, 6, 104, 28, },
++      { 0, 1, 0, 6, 108, 28, },
++      { 2, 1, 0, 6, 108, 28, },
++      { 1, 1, 0, 6, 108, 28, },
++      { 0, 1, 0, 6, 112, 28, },
++      { 2, 1, 0, 6, 112, 28, },
++      { 1, 1, 0, 6, 112, 28, },
++      { 0, 1, 0, 6, 116, 28, },
++      { 2, 1, 0, 6, 116, 28, },
++      { 1, 1, 0, 6, 116, 28, },
++      { 0, 1, 0, 6, 120, 28, },
++      { 2, 1, 0, 6, 120, 28, },
++      { 1, 1, 0, 6, 120, 28, },
++      { 0, 1, 0, 6, 124, 28, },
++      { 2, 1, 0, 6, 124, 28, },
++      { 1, 1, 0, 6, 124, 28, },
++      { 0, 1, 0, 6, 128, 28, },
++      { 2, 1, 0, 6, 128, 28, },
++      { 1, 1, 0, 6, 128, 28, },
++      { 0, 1, 0, 6, 132, 28, },
++      { 2, 1, 0, 6, 132, 28, },
++      { 1, 1, 0, 6, 132, 28, },
++      { 0, 1, 0, 6, 136, 28, },
++      { 2, 1, 0, 6, 136, 28, },
++      { 1, 1, 0, 6, 136, 28, },
++      { 0, 1, 0, 6, 140, 24, },
++      { 2, 1, 0, 6, 140, 28, },
++      { 1, 1, 0, 6, 140, 28, },
++      { 0, 1, 0, 6, 149, 24, },
++      { 2, 1, 0, 6, 149, 28, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 28, },
++      { 2, 1, 0, 6, 153, 28, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 28, },
++      { 2, 1, 0, 6, 157, 28, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 28, },
++      { 2, 1, 0, 6, 161, 28, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 28, },
++      { 2, 1, 0, 6, 165, 28, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 22, },
++      { 2, 1, 0, 7, 36, 26, },
++      { 1, 1, 0, 7, 36, 26, },
++      { 0, 1, 0, 7, 40, 26, },
++      { 2, 1, 0, 7, 40, 26, },
++      { 1, 1, 0, 7, 40, 26, },
++      { 0, 1, 0, 7, 44, 26, },
++      { 2, 1, 0, 7, 44, 26, },
++      { 1, 1, 0, 7, 44, 26, },
++      { 0, 1, 0, 7, 48, 26, },
++      { 2, 1, 0, 7, 48, 26, },
++      { 1, 1, 0, 7, 48, 26, },
++      { 0, 1, 0, 7, 52, 26, },
++      { 2, 1, 0, 7, 52, 26, },
++      { 1, 1, 0, 7, 52, 26, },
++      { 0, 1, 0, 7, 56, 26, },
++      { 2, 1, 0, 7, 56, 26, },
++      { 1, 1, 0, 7, 56, 26, },
++      { 0, 1, 0, 7, 60, 26, },
++      { 2, 1, 0, 7, 60, 26, },
++      { 1, 1, 0, 7, 60, 26, },
++      { 0, 1, 0, 7, 64, 24, },
++      { 2, 1, 0, 7, 64, 26, },
++      { 1, 1, 0, 7, 64, 26, },
++      { 0, 1, 0, 7, 100, 22, },
++      { 2, 1, 0, 7, 100, 26, },
++      { 1, 1, 0, 7, 100, 26, },
++      { 0, 1, 0, 7, 104, 26, },
++      { 2, 1, 0, 7, 104, 26, },
++      { 1, 1, 0, 7, 104, 26, },
++      { 0, 1, 0, 7, 108, 26, },
++      { 2, 1, 0, 7, 108, 26, },
++      { 1, 1, 0, 7, 108, 26, },
++      { 0, 1, 0, 7, 112, 26, },
++      { 2, 1, 0, 7, 112, 26, },
++      { 1, 1, 0, 7, 112, 26, },
++      { 0, 1, 0, 7, 116, 26, },
++      { 2, 1, 0, 7, 116, 26, },
++      { 1, 1, 0, 7, 116, 26, },
++      { 0, 1, 0, 7, 120, 26, },
++      { 2, 1, 0, 7, 120, 26, },
++      { 1, 1, 0, 7, 120, 26, },
++      { 0, 1, 0, 7, 124, 26, },
++      { 2, 1, 0, 7, 124, 26, },
++      { 1, 1, 0, 7, 124, 26, },
++      { 0, 1, 0, 7, 128, 26, },
++      { 2, 1, 0, 7, 128, 26, },
++      { 1, 1, 0, 7, 128, 26, },
++      { 0, 1, 0, 7, 132, 26, },
++      { 2, 1, 0, 7, 132, 26, },
++      { 1, 1, 0, 7, 132, 26, },
++      { 0, 1, 0, 7, 136, 26, },
++      { 2, 1, 0, 7, 136, 26, },
++      { 1, 1, 0, 7, 136, 26, },
++      { 0, 1, 0, 7, 140, 22, },
++      { 2, 1, 0, 7, 140, 26, },
++      { 1, 1, 0, 7, 140, 26, },
++      { 0, 1, 0, 7, 149, 22, },
++      { 2, 1, 0, 7, 149, 26, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 26, },
++      { 2, 1, 0, 7, 153, 26, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 26, },
++      { 2, 1, 0, 7, 157, 26, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 26, },
++      { 2, 1, 0, 7, 161, 26, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 26, },
++      { 2, 1, 0, 7, 165, 26, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 28, },
++      { 2, 1, 1, 2, 38, 32, },
++      { 1, 1, 1, 2, 38, 32, },
++      { 0, 1, 1, 2, 46, 32, },
++      { 2, 1, 1, 2, 46, 32, },
++      { 1, 1, 1, 2, 46, 32, },
++      { 0, 1, 1, 2, 54, 32, },
++      { 2, 1, 1, 2, 54, 32, },
++      { 1, 1, 1, 2, 54, 32, },
++      { 0, 1, 1, 2, 62, 28, },
++      { 2, 1, 1, 2, 62, 32, },
++      { 1, 1, 1, 2, 62, 32, },
++      { 0, 1, 1, 2, 102, 28, },
++      { 2, 1, 1, 2, 102, 32, },
++      { 1, 1, 1, 2, 102, 32, },
++      { 0, 1, 1, 2, 110, 32, },
++      { 2, 1, 1, 2, 110, 32, },
++      { 1, 1, 1, 2, 110, 32, },
++      { 0, 1, 1, 2, 118, 32, },
++      { 2, 1, 1, 2, 118, 32, },
++      { 1, 1, 1, 2, 118, 32, },
++      { 0, 1, 1, 2, 126, 32, },
++      { 2, 1, 1, 2, 126, 32, },
++      { 1, 1, 1, 2, 126, 32, },
++      { 0, 1, 1, 2, 134, 30, },
++      { 2, 1, 1, 2, 134, 32, },
++      { 1, 1, 1, 2, 134, 32, },
++      { 0, 1, 1, 2, 151, 28, },
++      { 2, 1, 1, 2, 151, 32, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 32, },
++      { 2, 1, 1, 2, 159, 32, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 26, },
++      { 2, 1, 1, 3, 38, 30, },
++      { 1, 1, 1, 3, 38, 30, },
++      { 0, 1, 1, 3, 46, 30, },
++      { 2, 1, 1, 3, 46, 30, },
++      { 1, 1, 1, 3, 46, 30, },
++      { 0, 1, 1, 3, 54, 30, },
++      { 2, 1, 1, 3, 54, 30, },
++      { 1, 1, 1, 3, 54, 30, },
++      { 0, 1, 1, 3, 62, 26, },
++      { 2, 1, 1, 3, 62, 30, },
++      { 1, 1, 1, 3, 62, 30, },
++      { 0, 1, 1, 3, 102, 26, },
++      { 2, 1, 1, 3, 102, 30, },
++      { 1, 1, 1, 3, 102, 30, },
++      { 0, 1, 1, 3, 110, 30, },
++      { 2, 1, 1, 3, 110, 30, },
++      { 1, 1, 1, 3, 110, 30, },
++      { 0, 1, 1, 3, 118, 30, },
++      { 2, 1, 1, 3, 118, 30, },
++      { 1, 1, 1, 3, 118, 30, },
++      { 0, 1, 1, 3, 126, 30, },
++      { 2, 1, 1, 3, 126, 30, },
++      { 1, 1, 1, 3, 126, 30, },
++      { 0, 1, 1, 3, 134, 28, },
++      { 2, 1, 1, 3, 134, 30, },
++      { 1, 1, 1, 3, 134, 30, },
++      { 0, 1, 1, 3, 151, 26, },
++      { 2, 1, 1, 3, 151, 30, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 30, },
++      { 2, 1, 1, 3, 159, 30, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 20, },
++      { 2, 1, 1, 6, 38, 28, },
++      { 1, 1, 1, 6, 38, 28, },
++      { 0, 1, 1, 6, 46, 28, },
++      { 2, 1, 1, 6, 46, 28, },
++      { 1, 1, 1, 6, 46, 28, },
++      { 0, 1, 1, 6, 54, 28, },
++      { 2, 1, 1, 6, 54, 28, },
++      { 1, 1, 1, 6, 54, 28, },
++      { 0, 1, 1, 6, 62, 20, },
++      { 2, 1, 1, 6, 62, 28, },
++      { 1, 1, 1, 6, 62, 28, },
++      { 0, 1, 1, 6, 102, 22, },
++      { 2, 1, 1, 6, 102, 28, },
++      { 1, 1, 1, 6, 102, 28, },
++      { 0, 1, 1, 6, 110, 28, },
++      { 2, 1, 1, 6, 110, 28, },
++      { 1, 1, 1, 6, 110, 28, },
++      { 0, 1, 1, 6, 118, 28, },
++      { 2, 1, 1, 6, 118, 28, },
++      { 1, 1, 1, 6, 118, 28, },
++      { 0, 1, 1, 6, 126, 28, },
++      { 2, 1, 1, 6, 126, 28, },
++      { 1, 1, 1, 6, 126, 28, },
++      { 0, 1, 1, 6, 134, 26, },
++      { 2, 1, 1, 6, 134, 28, },
++      { 1, 1, 1, 6, 134, 28, },
++      { 0, 1, 1, 6, 151, 22, },
++      { 2, 1, 1, 6, 151, 28, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 28, },
++      { 2, 1, 1, 6, 159, 28, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 18, },
++      { 2, 1, 1, 7, 38, 26, },
++      { 1, 1, 1, 7, 38, 26, },
++      { 0, 1, 1, 7, 46, 26, },
++      { 2, 1, 1, 7, 46, 26, },
++      { 1, 1, 1, 7, 46, 26, },
++      { 0, 1, 1, 7, 54, 26, },
++      { 2, 1, 1, 7, 54, 26, },
++      { 1, 1, 1, 7, 54, 26, },
++      { 0, 1, 1, 7, 62, 18, },
++      { 2, 1, 1, 7, 62, 26, },
++      { 1, 1, 1, 7, 62, 26, },
++      { 0, 1, 1, 7, 102, 20, },
++      { 2, 1, 1, 7, 102, 26, },
++      { 1, 1, 1, 7, 102, 26, },
++      { 0, 1, 1, 7, 110, 26, },
++      { 2, 1, 1, 7, 110, 26, },
++      { 1, 1, 1, 7, 110, 26, },
++      { 0, 1, 1, 7, 118, 26, },
++      { 2, 1, 1, 7, 118, 26, },
++      { 1, 1, 1, 7, 118, 26, },
++      { 0, 1, 1, 7, 126, 26, },
++      { 2, 1, 1, 7, 126, 26, },
++      { 1, 1, 1, 7, 126, 26, },
++      { 0, 1, 1, 7, 134, 24, },
++      { 2, 1, 1, 7, 134, 26, },
++      { 1, 1, 1, 7, 134, 26, },
++      { 0, 1, 1, 7, 151, 20, },
++      { 2, 1, 1, 7, 151, 26, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 26, },
++      { 2, 1, 1, 7, 159, 26, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 24, },
++      { 2, 1, 2, 4, 42, 32, },
++      { 1, 1, 2, 4, 42, 32, },
++      { 0, 1, 2, 4, 58, 24, },
++      { 2, 1, 2, 4, 58, 32, },
++      { 1, 1, 2, 4, 58, 32, },
++      { 0, 1, 2, 4, 106, 24, },
++      { 2, 1, 2, 4, 106, 32, },
++      { 1, 1, 2, 4, 106, 32, },
++      { 0, 1, 2, 4, 122, 32, },
++      { 2, 1, 2, 4, 122, 32, },
++      { 1, 1, 2, 4, 122, 32, },
++      { 0, 1, 2, 4, 155, 26, },
++      { 2, 1, 2, 4, 155, 32, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 22, },
++      { 2, 1, 2, 5, 42, 30, },
++      { 1, 1, 2, 5, 42, 30, },
++      { 0, 1, 2, 5, 58, 22, },
++      { 2, 1, 2, 5, 58, 30, },
++      { 1, 1, 2, 5, 58, 30, },
++      { 0, 1, 2, 5, 106, 22, },
++      { 2, 1, 2, 5, 106, 30, },
++      { 1, 1, 2, 5, 106, 30, },
++      { 0, 1, 2, 5, 122, 30, },
++      { 2, 1, 2, 5, 122, 30, },
++      { 1, 1, 2, 5, 122, 30, },
++      { 0, 1, 2, 5, 155, 24, },
++      { 2, 1, 2, 5, 155, 30, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 20, },
++      { 2, 1, 2, 8, 42, 28, },
++      { 1, 1, 2, 8, 42, 28, },
++      { 0, 1, 2, 8, 58, 20, },
++      { 2, 1, 2, 8, 58, 28, },
++      { 1, 1, 2, 8, 58, 28, },
++      { 0, 1, 2, 8, 106, 20, },
++      { 2, 1, 2, 8, 106, 28, },
++      { 1, 1, 2, 8, 106, 28, },
++      { 0, 1, 2, 8, 122, 28, },
++      { 2, 1, 2, 8, 122, 28, },
++      { 1, 1, 2, 8, 122, 28, },
++      { 0, 1, 2, 8, 155, 20, },
++      { 2, 1, 2, 8, 155, 28, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 18, },
++      { 2, 1, 2, 9, 42, 26, },
++      { 1, 1, 2, 9, 42, 26, },
++      { 0, 1, 2, 9, 58, 18, },
++      { 2, 1, 2, 9, 58, 26, },
++      { 1, 1, 2, 9, 58, 26, },
++      { 0, 1, 2, 9, 106, 18, },
++      { 2, 1, 2, 9, 106, 26, },
++      { 1, 1, 2, 9, 106, 26, },
++      { 0, 1, 2, 9, 122, 26, },
++      { 2, 1, 2, 9, 122, 26, },
++      { 1, 1, 2, 9, 122, 26, },
++      { 0, 1, 2, 9, 155, 18, },
++      { 2, 1, 2, 9, 155, 26, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type1);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type2[] = {
++      { 0, 0, 0, 0, 1, 42, },
++      { 2, 0, 0, 0, 1, 42, },
++      { 1, 0, 0, 0, 1, 42, },
++      { 0, 0, 0, 0, 2, 50, },
++      { 2, 0, 0, 0, 2, 42, },
++      { 1, 0, 0, 0, 2, 42, },
++      { 0, 0, 0, 0, 3, 50, },
++      { 2, 0, 0, 0, 3, 42, },
++      { 1, 0, 0, 0, 3, 42, },
++      { 0, 0, 0, 0, 4, 50, },
++      { 2, 0, 0, 0, 4, 42, },
++      { 1, 0, 0, 0, 4, 42, },
++      { 0, 0, 0, 0, 5, 50, },
++      { 2, 0, 0, 0, 5, 42, },
++      { 1, 0, 0, 0, 5, 42, },
++      { 0, 0, 0, 0, 6, 50, },
++      { 2, 0, 0, 0, 6, 42, },
++      { 1, 0, 0, 0, 6, 42, },
++      { 0, 0, 0, 0, 7, 50, },
++      { 2, 0, 0, 0, 7, 42, },
++      { 1, 0, 0, 0, 7, 42, },
++      { 0, 0, 0, 0, 8, 50, },
++      { 2, 0, 0, 0, 8, 42, },
++      { 1, 0, 0, 0, 8, 42, },
++      { 0, 0, 0, 0, 9, 50, },
++      { 2, 0, 0, 0, 9, 42, },
++      { 1, 0, 0, 0, 9, 42, },
++      { 0, 0, 0, 0, 10, 50, },
++      { 2, 0, 0, 0, 10, 42, },
++      { 1, 0, 0, 0, 10, 42, },
++      { 0, 0, 0, 0, 11, 44, },
++      { 2, 0, 0, 0, 11, 42, },
++      { 1, 0, 0, 0, 11, 42, },
++      { 0, 0, 0, 0, 12, 63, },
++      { 2, 0, 0, 0, 12, 42, },
++      { 1, 0, 0, 0, 12, 42, },
++      { 0, 0, 0, 0, 13, 63, },
++      { 2, 0, 0, 0, 13, 42, },
++      { 1, 0, 0, 0, 13, 42, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 42, },
++      { 0, 0, 0, 1, 1, 32, },
++      { 2, 0, 0, 1, 1, 42, },
++      { 1, 0, 0, 1, 1, 42, },
++      { 0, 0, 0, 1, 2, 42, },
++      { 2, 0, 0, 1, 2, 42, },
++      { 1, 0, 0, 1, 2, 42, },
++      { 0, 0, 0, 1, 3, 42, },
++      { 2, 0, 0, 1, 3, 42, },
++      { 1, 0, 0, 1, 3, 42, },
++      { 0, 0, 0, 1, 4, 42, },
++      { 2, 0, 0, 1, 4, 42, },
++      { 1, 0, 0, 1, 4, 42, },
++      { 0, 0, 0, 1, 5, 42, },
++      { 2, 0, 0, 1, 5, 42, },
++      { 1, 0, 0, 1, 5, 42, },
++      { 0, 0, 0, 1, 6, 42, },
++      { 2, 0, 0, 1, 6, 42, },
++      { 1, 0, 0, 1, 6, 42, },
++      { 0, 0, 0, 1, 7, 42, },
++      { 2, 0, 0, 1, 7, 42, },
++      { 1, 0, 0, 1, 7, 42, },
++      { 0, 0, 0, 1, 8, 42, },
++      { 2, 0, 0, 1, 8, 42, },
++      { 1, 0, 0, 1, 8, 42, },
++      { 0, 0, 0, 1, 9, 42, },
++      { 2, 0, 0, 1, 9, 42, },
++      { 1, 0, 0, 1, 9, 42, },
++      { 0, 0, 0, 1, 10, 42, },
++      { 2, 0, 0, 1, 10, 42, },
++      { 1, 0, 0, 1, 10, 42, },
++      { 0, 0, 0, 1, 11, 32, },
++      { 2, 0, 0, 1, 11, 42, },
++      { 1, 0, 0, 1, 11, 42, },
++      { 0, 0, 0, 1, 12, 63, },
++      { 2, 0, 0, 1, 12, 42, },
++      { 1, 0, 0, 1, 12, 42, },
++      { 0, 0, 0, 1, 13, 63, },
++      { 2, 0, 0, 1, 13, 42, },
++      { 1, 0, 0, 1, 13, 42, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 32, },
++      { 2, 0, 0, 2, 1, 42, },
++      { 1, 0, 0, 2, 1, 42, },
++      { 0, 0, 0, 2, 2, 40, },
++      { 2, 0, 0, 2, 2, 42, },
++      { 1, 0, 0, 2, 2, 42, },
++      { 0, 0, 0, 2, 3, 40, },
++      { 2, 0, 0, 2, 3, 42, },
++      { 1, 0, 0, 2, 3, 42, },
++      { 0, 0, 0, 2, 4, 40, },
++      { 2, 0, 0, 2, 4, 42, },
++      { 1, 0, 0, 2, 4, 42, },
++      { 0, 0, 0, 2, 5, 40, },
++      { 2, 0, 0, 2, 5, 42, },
++      { 1, 0, 0, 2, 5, 42, },
++      { 0, 0, 0, 2, 6, 40, },
++      { 2, 0, 0, 2, 6, 42, },
++      { 1, 0, 0, 2, 6, 42, },
++      { 0, 0, 0, 2, 7, 40, },
++      { 2, 0, 0, 2, 7, 42, },
++      { 1, 0, 0, 2, 7, 42, },
++      { 0, 0, 0, 2, 8, 40, },
++      { 2, 0, 0, 2, 8, 42, },
++      { 1, 0, 0, 2, 8, 42, },
++      { 0, 0, 0, 2, 9, 40, },
++      { 2, 0, 0, 2, 9, 42, },
++      { 1, 0, 0, 2, 9, 42, },
++      { 0, 0, 0, 2, 10, 40, },
++      { 2, 0, 0, 2, 10, 42, },
++      { 1, 0, 0, 2, 10, 42, },
++      { 0, 0, 0, 2, 11, 28, },
++      { 2, 0, 0, 2, 11, 42, },
++      { 1, 0, 0, 2, 11, 42, },
++      { 0, 0, 0, 2, 12, 63, },
++      { 2, 0, 0, 2, 12, 42, },
++      { 1, 0, 0, 2, 12, 42, },
++      { 0, 0, 0, 2, 13, 63, },
++      { 2, 0, 0, 2, 13, 42, },
++      { 1, 0, 0, 2, 13, 42, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 32, },
++      { 2, 0, 0, 3, 1, 40, },
++      { 1, 0, 0, 3, 1, 40, },
++      { 0, 0, 0, 3, 2, 40, },
++      { 2, 0, 0, 3, 2, 40, },
++      { 1, 0, 0, 3, 2, 40, },
++      { 0, 0, 0, 3, 3, 40, },
++      { 2, 0, 0, 3, 3, 40, },
++      { 1, 0, 0, 3, 3, 40, },
++      { 0, 0, 0, 3, 4, 40, },
++      { 2, 0, 0, 3, 4, 40, },
++      { 1, 0, 0, 3, 4, 40, },
++      { 0, 0, 0, 3, 5, 40, },
++      { 2, 0, 0, 3, 5, 40, },
++      { 1, 0, 0, 3, 5, 40, },
++      { 0, 0, 0, 3, 6, 40, },
++      { 2, 0, 0, 3, 6, 40, },
++      { 1, 0, 0, 3, 6, 40, },
++      { 0, 0, 0, 3, 7, 40, },
++      { 2, 0, 0, 3, 7, 40, },
++      { 1, 0, 0, 3, 7, 40, },
++      { 0, 0, 0, 3, 8, 40, },
++      { 2, 0, 0, 3, 8, 40, },
++      { 1, 0, 0, 3, 8, 40, },
++      { 0, 0, 0, 3, 9, 40, },
++      { 2, 0, 0, 3, 9, 40, },
++      { 1, 0, 0, 3, 9, 40, },
++      { 0, 0, 0, 3, 10, 40, },
++      { 2, 0, 0, 3, 10, 40, },
++      { 1, 0, 0, 3, 10, 40, },
++      { 0, 0, 0, 3, 11, 28, },
++      { 2, 0, 0, 3, 11, 40, },
++      { 1, 0, 0, 3, 11, 40, },
++      { 0, 0, 0, 3, 12, 63, },
++      { 2, 0, 0, 3, 12, 40, },
++      { 1, 0, 0, 3, 12, 40, },
++      { 0, 0, 0, 3, 13, 63, },
++      { 2, 0, 0, 3, 13, 40, },
++      { 1, 0, 0, 3, 13, 40, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 32, },
++      { 2, 0, 0, 6, 1, 40, },
++      { 1, 0, 0, 6, 1, 40, },
++      { 0, 0, 0, 6, 2, 40, },
++      { 2, 0, 0, 6, 2, 40, },
++      { 1, 0, 0, 6, 2, 40, },
++      { 0, 0, 0, 6, 3, 40, },
++      { 2, 0, 0, 6, 3, 40, },
++      { 1, 0, 0, 6, 3, 40, },
++      { 0, 0, 0, 6, 4, 40, },
++      { 2, 0, 0, 6, 4, 40, },
++      { 1, 0, 0, 6, 4, 40, },
++      { 0, 0, 0, 6, 5, 40, },
++      { 2, 0, 0, 6, 5, 40, },
++      { 1, 0, 0, 6, 5, 40, },
++      { 0, 0, 0, 6, 6, 40, },
++      { 2, 0, 0, 6, 6, 40, },
++      { 1, 0, 0, 6, 6, 40, },
++      { 0, 0, 0, 6, 7, 40, },
++      { 2, 0, 0, 6, 7, 40, },
++      { 1, 0, 0, 6, 7, 40, },
++      { 0, 0, 0, 6, 8, 40, },
++      { 2, 0, 0, 6, 8, 40, },
++      { 1, 0, 0, 6, 8, 40, },
++      { 0, 0, 0, 6, 9, 40, },
++      { 2, 0, 0, 6, 9, 40, },
++      { 1, 0, 0, 6, 9, 40, },
++      { 0, 0, 0, 6, 10, 40, },
++      { 2, 0, 0, 6, 10, 40, },
++      { 1, 0, 0, 6, 10, 40, },
++      { 0, 0, 0, 6, 11, 28, },
++      { 2, 0, 0, 6, 11, 40, },
++      { 1, 0, 0, 6, 11, 40, },
++      { 0, 0, 0, 6, 12, 63, },
++      { 2, 0, 0, 6, 12, 40, },
++      { 1, 0, 0, 6, 12, 40, },
++      { 0, 0, 0, 6, 13, 63, },
++      { 2, 0, 0, 6, 13, 40, },
++      { 1, 0, 0, 6, 13, 40, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 32, },
++      { 2, 0, 0, 7, 1, 40, },
++      { 1, 0, 0, 7, 1, 40, },
++      { 0, 0, 0, 7, 2, 40, },
++      { 2, 0, 0, 7, 2, 40, },
++      { 1, 0, 0, 7, 2, 40, },
++      { 0, 0, 0, 7, 3, 40, },
++      { 2, 0, 0, 7, 3, 40, },
++      { 1, 0, 0, 7, 3, 40, },
++      { 0, 0, 0, 7, 4, 40, },
++      { 2, 0, 0, 7, 4, 40, },
++      { 1, 0, 0, 7, 4, 40, },
++      { 0, 0, 0, 7, 5, 40, },
++      { 2, 0, 0, 7, 5, 40, },
++      { 1, 0, 0, 7, 5, 40, },
++      { 0, 0, 0, 7, 6, 40, },
++      { 2, 0, 0, 7, 6, 40, },
++      { 1, 0, 0, 7, 6, 40, },
++      { 0, 0, 0, 7, 7, 40, },
++      { 2, 0, 0, 7, 7, 40, },
++      { 1, 0, 0, 7, 7, 40, },
++      { 0, 0, 0, 7, 8, 40, },
++      { 2, 0, 0, 7, 8, 40, },
++      { 1, 0, 0, 7, 8, 40, },
++      { 0, 0, 0, 7, 9, 40, },
++      { 2, 0, 0, 7, 9, 40, },
++      { 1, 0, 0, 7, 9, 40, },
++      { 0, 0, 0, 7, 10, 40, },
++      { 2, 0, 0, 7, 10, 40, },
++      { 1, 0, 0, 7, 10, 40, },
++      { 0, 0, 0, 7, 11, 28, },
++      { 2, 0, 0, 7, 11, 40, },
++      { 1, 0, 0, 7, 11, 40, },
++      { 0, 0, 0, 7, 12, 63, },
++      { 2, 0, 0, 7, 12, 40, },
++      { 1, 0, 0, 7, 12, 40, },
++      { 0, 0, 0, 7, 13, 63, },
++      { 2, 0, 0, 7, 13, 40, },
++      { 1, 0, 0, 7, 13, 40, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 30, },
++      { 2, 0, 1, 2, 3, 34, },
++      { 1, 0, 1, 2, 3, 34, },
++      { 0, 0, 1, 2, 4, 34, },
++      { 2, 0, 1, 2, 4, 34, },
++      { 1, 0, 1, 2, 4, 34, },
++      { 0, 0, 1, 2, 5, 34, },
++      { 2, 0, 1, 2, 5, 34, },
++      { 1, 0, 1, 2, 5, 34, },
++      { 0, 0, 1, 2, 6, 34, },
++      { 2, 0, 1, 2, 6, 34, },
++      { 1, 0, 1, 2, 6, 34, },
++      { 0, 0, 1, 2, 7, 34, },
++      { 2, 0, 1, 2, 7, 34, },
++      { 1, 0, 1, 2, 7, 34, },
++      { 0, 0, 1, 2, 8, 34, },
++      { 2, 0, 1, 2, 8, 34, },
++      { 1, 0, 1, 2, 8, 34, },
++      { 0, 0, 1, 2, 9, 34, },
++      { 2, 0, 1, 2, 9, 34, },
++      { 1, 0, 1, 2, 9, 34, },
++      { 0, 0, 1, 2, 10, 34, },
++      { 2, 0, 1, 2, 10, 34, },
++      { 1, 0, 1, 2, 10, 34, },
++      { 0, 0, 1, 2, 11, 28, },
++      { 2, 0, 1, 2, 11, 34, },
++      { 1, 0, 1, 2, 11, 34, },
++      { 0, 0, 1, 2, 12, 63, },
++      { 2, 0, 1, 2, 12, 34, },
++      { 1, 0, 1, 2, 12, 34, },
++      { 0, 0, 1, 2, 13, 63, },
++      { 2, 0, 1, 2, 13, 34, },
++      { 1, 0, 1, 2, 13, 34, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 30, },
++      { 2, 0, 1, 3, 3, 34, },
++      { 1, 0, 1, 3, 3, 34, },
++      { 0, 0, 1, 3, 4, 34, },
++      { 2, 0, 1, 3, 4, 34, },
++      { 1, 0, 1, 3, 4, 34, },
++      { 0, 0, 1, 3, 5, 34, },
++      { 2, 0, 1, 3, 5, 34, },
++      { 1, 0, 1, 3, 5, 34, },
++      { 0, 0, 1, 3, 6, 34, },
++      { 2, 0, 1, 3, 6, 34, },
++      { 1, 0, 1, 3, 6, 34, },
++      { 0, 0, 1, 3, 7, 34, },
++      { 2, 0, 1, 3, 7, 34, },
++      { 1, 0, 1, 3, 7, 34, },
++      { 0, 0, 1, 3, 8, 34, },
++      { 2, 0, 1, 3, 8, 34, },
++      { 1, 0, 1, 3, 8, 34, },
++      { 0, 0, 1, 3, 9, 34, },
++      { 2, 0, 1, 3, 9, 34, },
++      { 1, 0, 1, 3, 9, 34, },
++      { 0, 0, 1, 3, 10, 34, },
++      { 2, 0, 1, 3, 10, 34, },
++      { 1, 0, 1, 3, 10, 34, },
++      { 0, 0, 1, 3, 11, 28, },
++      { 2, 0, 1, 3, 11, 34, },
++      { 1, 0, 1, 3, 11, 34, },
++      { 0, 0, 1, 3, 12, 63, },
++      { 2, 0, 1, 3, 12, 34, },
++      { 1, 0, 1, 3, 12, 34, },
++      { 0, 0, 1, 3, 13, 63, },
++      { 2, 0, 1, 3, 13, 34, },
++      { 1, 0, 1, 3, 13, 34, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 30, },
++      { 2, 0, 1, 6, 3, 34, },
++      { 1, 0, 1, 6, 3, 34, },
++      { 0, 0, 1, 6, 4, 34, },
++      { 2, 0, 1, 6, 4, 34, },
++      { 1, 0, 1, 6, 4, 34, },
++      { 0, 0, 1, 6, 5, 34, },
++      { 2, 0, 1, 6, 5, 34, },
++      { 1, 0, 1, 6, 5, 34, },
++      { 0, 0, 1, 6, 6, 34, },
++      { 2, 0, 1, 6, 6, 34, },
++      { 1, 0, 1, 6, 6, 34, },
++      { 0, 0, 1, 6, 7, 34, },
++      { 2, 0, 1, 6, 7, 34, },
++      { 1, 0, 1, 6, 7, 34, },
++      { 0, 0, 1, 6, 8, 34, },
++      { 2, 0, 1, 6, 8, 34, },
++      { 1, 0, 1, 6, 8, 34, },
++      { 0, 0, 1, 6, 9, 34, },
++      { 2, 0, 1, 6, 9, 34, },
++      { 1, 0, 1, 6, 9, 34, },
++      { 0, 0, 1, 6, 10, 34, },
++      { 2, 0, 1, 6, 10, 34, },
++      { 1, 0, 1, 6, 10, 34, },
++      { 0, 0, 1, 6, 11, 28, },
++      { 2, 0, 1, 6, 11, 34, },
++      { 1, 0, 1, 6, 11, 34, },
++      { 0, 0, 1, 6, 12, 63, },
++      { 2, 0, 1, 6, 12, 34, },
++      { 1, 0, 1, 6, 12, 34, },
++      { 0, 0, 1, 6, 13, 63, },
++      { 2, 0, 1, 6, 13, 34, },
++      { 1, 0, 1, 6, 13, 34, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 30, },
++      { 2, 0, 1, 7, 3, 34, },
++      { 1, 0, 1, 7, 3, 34, },
++      { 0, 0, 1, 7, 4, 34, },
++      { 2, 0, 1, 7, 4, 34, },
++      { 1, 0, 1, 7, 4, 34, },
++      { 0, 0, 1, 7, 5, 34, },
++      { 2, 0, 1, 7, 5, 34, },
++      { 1, 0, 1, 7, 5, 34, },
++      { 0, 0, 1, 7, 6, 34, },
++      { 2, 0, 1, 7, 6, 34, },
++      { 1, 0, 1, 7, 6, 34, },
++      { 0, 0, 1, 7, 7, 34, },
++      { 2, 0, 1, 7, 7, 34, },
++      { 1, 0, 1, 7, 7, 34, },
++      { 0, 0, 1, 7, 8, 34, },
++      { 2, 0, 1, 7, 8, 34, },
++      { 1, 0, 1, 7, 8, 34, },
++      { 0, 0, 1, 7, 9, 34, },
++      { 2, 0, 1, 7, 9, 34, },
++      { 1, 0, 1, 7, 9, 34, },
++      { 0, 0, 1, 7, 10, 34, },
++      { 2, 0, 1, 7, 10, 34, },
++      { 1, 0, 1, 7, 10, 34, },
++      { 0, 0, 1, 7, 11, 28, },
++      { 2, 0, 1, 7, 11, 34, },
++      { 1, 0, 1, 7, 11, 34, },
++      { 0, 0, 1, 7, 12, 63, },
++      { 2, 0, 1, 7, 12, 34, },
++      { 1, 0, 1, 7, 12, 34, },
++      { 0, 0, 1, 7, 13, 63, },
++      { 2, 0, 1, 7, 13, 34, },
++      { 1, 0, 1, 7, 13, 34, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 42, },
++      { 2, 1, 0, 1, 36, 42, },
++      { 1, 1, 0, 1, 36, 42, },
++      { 0, 1, 0, 1, 40, 42, },
++      { 2, 1, 0, 1, 40, 42, },
++      { 1, 1, 0, 1, 40, 42, },
++      { 0, 1, 0, 1, 44, 42, },
++      { 2, 1, 0, 1, 44, 42, },
++      { 1, 1, 0, 1, 44, 42, },
++      { 0, 1, 0, 1, 48, 42, },
++      { 2, 1, 0, 1, 48, 42, },
++      { 1, 1, 0, 1, 48, 42, },
++      { 0, 1, 0, 1, 52, 42, },
++      { 2, 1, 0, 1, 52, 42, },
++      { 1, 1, 0, 1, 52, 42, },
++      { 0, 1, 0, 1, 56, 42, },
++      { 2, 1, 0, 1, 56, 42, },
++      { 1, 1, 0, 1, 56, 42, },
++      { 0, 1, 0, 1, 60, 42, },
++      { 2, 1, 0, 1, 60, 42, },
++      { 1, 1, 0, 1, 60, 42, },
++      { 0, 1, 0, 1, 64, 42, },
++      { 2, 1, 0, 1, 64, 42, },
++      { 1, 1, 0, 1, 64, 42, },
++      { 0, 1, 0, 1, 100, 42, },
++      { 2, 1, 0, 1, 100, 42, },
++      { 1, 1, 0, 1, 100, 42, },
++      { 0, 1, 0, 1, 104, 42, },
++      { 2, 1, 0, 1, 104, 42, },
++      { 1, 1, 0, 1, 104, 42, },
++      { 0, 1, 0, 1, 108, 42, },
++      { 2, 1, 0, 1, 108, 42, },
++      { 1, 1, 0, 1, 108, 42, },
++      { 0, 1, 0, 1, 112, 42, },
++      { 2, 1, 0, 1, 112, 42, },
++      { 1, 1, 0, 1, 112, 42, },
++      { 0, 1, 0, 1, 116, 42, },
++      { 2, 1, 0, 1, 116, 42, },
++      { 1, 1, 0, 1, 116, 42, },
++      { 0, 1, 0, 1, 120, 42, },
++      { 2, 1, 0, 1, 120, 42, },
++      { 1, 1, 0, 1, 120, 42, },
++      { 0, 1, 0, 1, 124, 42, },
++      { 2, 1, 0, 1, 124, 42, },
++      { 1, 1, 0, 1, 124, 42, },
++      { 0, 1, 0, 1, 128, 42, },
++      { 2, 1, 0, 1, 128, 42, },
++      { 1, 1, 0, 1, 128, 42, },
++      { 0, 1, 0, 1, 132, 42, },
++      { 2, 1, 0, 1, 132, 42, },
++      { 1, 1, 0, 1, 132, 42, },
++      { 0, 1, 0, 1, 136, 42, },
++      { 2, 1, 0, 1, 136, 42, },
++      { 1, 1, 0, 1, 136, 42, },
++      { 0, 1, 0, 1, 140, 40, },
++      { 2, 1, 0, 1, 140, 40, },
++      { 1, 1, 0, 1, 140, 40, },
++      { 0, 1, 0, 1, 149, 44, },
++      { 2, 1, 0, 1, 149, 44, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 44, },
++      { 2, 1, 0, 1, 153, 44, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 44, },
++      { 2, 1, 0, 1, 157, 44, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 44, },
++      { 2, 1, 0, 1, 161, 44, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 44, },
++      { 2, 1, 0, 1, 165, 44, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 32, },
++      { 2, 1, 0, 2, 36, 32, },
++      { 1, 1, 0, 2, 36, 32, },
++      { 0, 1, 0, 2, 40, 32, },
++      { 2, 1, 0, 2, 40, 32, },
++      { 1, 1, 0, 2, 40, 32, },
++      { 0, 1, 0, 2, 44, 32, },
++      { 2, 1, 0, 2, 44, 32, },
++      { 1, 1, 0, 2, 44, 32, },
++      { 0, 1, 0, 2, 48, 36, },
++      { 2, 1, 0, 2, 48, 36, },
++      { 1, 1, 0, 2, 48, 36, },
++      { 0, 1, 0, 2, 52, 36, },
++      { 2, 1, 0, 2, 52, 36, },
++      { 1, 1, 0, 2, 52, 36, },
++      { 0, 1, 0, 2, 56, 32, },
++      { 2, 1, 0, 2, 56, 32, },
++      { 1, 1, 0, 2, 56, 32, },
++      { 0, 1, 0, 2, 60, 32, },
++      { 2, 1, 0, 2, 60, 32, },
++      { 1, 1, 0, 2, 60, 32, },
++      { 0, 1, 0, 2, 64, 32, },
++      { 2, 1, 0, 2, 64, 32, },
++      { 1, 1, 0, 2, 64, 32, },
++      { 0, 1, 0, 2, 100, 32, },
++      { 2, 1, 0, 2, 100, 32, },
++      { 1, 1, 0, 2, 100, 32, },
++      { 0, 1, 0, 2, 104, 32, },
++      { 2, 1, 0, 2, 104, 32, },
++      { 1, 1, 0, 2, 104, 32, },
++      { 0, 1, 0, 2, 108, 32, },
++      { 2, 1, 0, 2, 108, 32, },
++      { 1, 1, 0, 2, 108, 32, },
++      { 0, 1, 0, 2, 112, 32, },
++      { 2, 1, 0, 2, 112, 32, },
++      { 1, 1, 0, 2, 112, 32, },
++      { 0, 1, 0, 2, 116, 32, },
++      { 2, 1, 0, 2, 116, 32, },
++      { 1, 1, 0, 2, 116, 32, },
++      { 0, 1, 0, 2, 120, 32, },
++      { 2, 1, 0, 2, 120, 32, },
++      { 1, 1, 0, 2, 120, 32, },
++      { 0, 1, 0, 2, 124, 32, },
++      { 2, 1, 0, 2, 124, 32, },
++      { 1, 1, 0, 2, 124, 32, },
++      { 0, 1, 0, 2, 128, 32, },
++      { 2, 1, 0, 2, 128, 32, },
++      { 1, 1, 0, 2, 128, 32, },
++      { 0, 1, 0, 2, 132, 32, },
++      { 2, 1, 0, 2, 132, 32, },
++      { 1, 1, 0, 2, 132, 32, },
++      { 0, 1, 0, 2, 136, 32, },
++      { 2, 1, 0, 2, 136, 32, },
++      { 1, 1, 0, 2, 136, 32, },
++      { 0, 1, 0, 2, 140, 30, },
++      { 2, 1, 0, 2, 140, 30, },
++      { 1, 1, 0, 2, 140, 30, },
++      { 0, 1, 0, 2, 149, 40, },
++      { 2, 1, 0, 2, 149, 40, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 40, },
++      { 2, 1, 0, 2, 153, 40, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 40, },
++      { 2, 1, 0, 2, 157, 40, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 40, },
++      { 2, 1, 0, 2, 161, 40, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 42, },
++      { 2, 1, 0, 2, 165, 42, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 32, },
++      { 2, 1, 0, 3, 36, 32, },
++      { 1, 1, 0, 3, 36, 32, },
++      { 0, 1, 0, 3, 40, 32, },
++      { 2, 1, 0, 3, 40, 32, },
++      { 1, 1, 0, 3, 40, 32, },
++      { 0, 1, 0, 3, 44, 32, },
++      { 2, 1, 0, 3, 44, 32, },
++      { 1, 1, 0, 3, 44, 32, },
++      { 0, 1, 0, 3, 48, 36, },
++      { 2, 1, 0, 3, 48, 36, },
++      { 1, 1, 0, 3, 48, 36, },
++      { 0, 1, 0, 3, 52, 36, },
++      { 2, 1, 0, 3, 52, 36, },
++      { 1, 1, 0, 3, 52, 36, },
++      { 0, 1, 0, 3, 56, 32, },
++      { 2, 1, 0, 3, 56, 32, },
++      { 1, 1, 0, 3, 56, 32, },
++      { 0, 1, 0, 3, 60, 32, },
++      { 2, 1, 0, 3, 60, 32, },
++      { 1, 1, 0, 3, 60, 32, },
++      { 0, 1, 0, 3, 64, 32, },
++      { 2, 1, 0, 3, 64, 32, },
++      { 1, 1, 0, 3, 64, 32, },
++      { 0, 1, 0, 3, 100, 32, },
++      { 2, 1, 0, 3, 100, 32, },
++      { 1, 1, 0, 3, 100, 32, },
++      { 0, 1, 0, 3, 104, 32, },
++      { 2, 1, 0, 3, 104, 32, },
++      { 1, 1, 0, 3, 104, 32, },
++      { 0, 1, 0, 3, 108, 32, },
++      { 2, 1, 0, 3, 108, 32, },
++      { 1, 1, 0, 3, 108, 32, },
++      { 0, 1, 0, 3, 112, 32, },
++      { 2, 1, 0, 3, 112, 32, },
++      { 1, 1, 0, 3, 112, 32, },
++      { 0, 1, 0, 3, 116, 32, },
++      { 2, 1, 0, 3, 116, 32, },
++      { 1, 1, 0, 3, 116, 32, },
++      { 0, 1, 0, 3, 120, 32, },
++      { 2, 1, 0, 3, 120, 32, },
++      { 1, 1, 0, 3, 120, 32, },
++      { 0, 1, 0, 3, 124, 32, },
++      { 2, 1, 0, 3, 124, 32, },
++      { 1, 1, 0, 3, 124, 32, },
++      { 0, 1, 0, 3, 128, 32, },
++      { 2, 1, 0, 3, 128, 32, },
++      { 1, 1, 0, 3, 128, 32, },
++      { 0, 1, 0, 3, 132, 32, },
++      { 2, 1, 0, 3, 132, 32, },
++      { 1, 1, 0, 3, 132, 32, },
++      { 0, 1, 0, 3, 136, 32, },
++      { 2, 1, 0, 3, 136, 32, },
++      { 1, 1, 0, 3, 136, 32, },
++      { 0, 1, 0, 3, 140, 30, },
++      { 2, 1, 0, 3, 140, 30, },
++      { 1, 1, 0, 3, 140, 30, },
++      { 0, 1, 0, 3, 149, 40, },
++      { 2, 1, 0, 3, 149, 40, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 40, },
++      { 2, 1, 0, 3, 153, 40, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 40, },
++      { 2, 1, 0, 3, 157, 40, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 40, },
++      { 2, 1, 0, 3, 161, 40, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 42, },
++      { 2, 1, 0, 3, 165, 42, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 32, },
++      { 2, 1, 0, 6, 36, 32, },
++      { 1, 1, 0, 6, 36, 32, },
++      { 0, 1, 0, 6, 40, 32, },
++      { 2, 1, 0, 6, 40, 32, },
++      { 1, 1, 0, 6, 40, 32, },
++      { 0, 1, 0, 6, 44, 32, },
++      { 2, 1, 0, 6, 44, 32, },
++      { 1, 1, 0, 6, 44, 32, },
++      { 0, 1, 0, 6, 48, 36, },
++      { 2, 1, 0, 6, 48, 36, },
++      { 1, 1, 0, 6, 48, 36, },
++      { 0, 1, 0, 6, 52, 36, },
++      { 2, 1, 0, 6, 52, 36, },
++      { 1, 1, 0, 6, 52, 36, },
++      { 0, 1, 0, 6, 56, 32, },
++      { 2, 1, 0, 6, 56, 32, },
++      { 1, 1, 0, 6, 56, 32, },
++      { 0, 1, 0, 6, 60, 32, },
++      { 2, 1, 0, 6, 60, 32, },
++      { 1, 1, 0, 6, 60, 32, },
++      { 0, 1, 0, 6, 64, 32, },
++      { 2, 1, 0, 6, 64, 32, },
++      { 1, 1, 0, 6, 64, 32, },
++      { 0, 1, 0, 6, 100, 32, },
++      { 2, 1, 0, 6, 100, 32, },
++      { 1, 1, 0, 6, 100, 32, },
++      { 0, 1, 0, 6, 104, 32, },
++      { 2, 1, 0, 6, 104, 32, },
++      { 1, 1, 0, 6, 104, 32, },
++      { 0, 1, 0, 6, 108, 32, },
++      { 2, 1, 0, 6, 108, 32, },
++      { 1, 1, 0, 6, 108, 32, },
++      { 0, 1, 0, 6, 112, 32, },
++      { 2, 1, 0, 6, 112, 32, },
++      { 1, 1, 0, 6, 112, 32, },
++      { 0, 1, 0, 6, 116, 32, },
++      { 2, 1, 0, 6, 116, 32, },
++      { 1, 1, 0, 6, 116, 32, },
++      { 0, 1, 0, 6, 120, 32, },
++      { 2, 1, 0, 6, 120, 32, },
++      { 1, 1, 0, 6, 120, 32, },
++      { 0, 1, 0, 6, 124, 32, },
++      { 2, 1, 0, 6, 124, 32, },
++      { 1, 1, 0, 6, 124, 32, },
++      { 0, 1, 0, 6, 128, 32, },
++      { 2, 1, 0, 6, 128, 32, },
++      { 1, 1, 0, 6, 128, 32, },
++      { 0, 1, 0, 6, 132, 32, },
++      { 2, 1, 0, 6, 132, 32, },
++      { 1, 1, 0, 6, 132, 32, },
++      { 0, 1, 0, 6, 136, 32, },
++      { 2, 1, 0, 6, 136, 32, },
++      { 1, 1, 0, 6, 136, 32, },
++      { 0, 1, 0, 6, 140, 30, },
++      { 2, 1, 0, 6, 140, 30, },
++      { 1, 1, 0, 6, 140, 30, },
++      { 0, 1, 0, 6, 149, 40, },
++      { 2, 1, 0, 6, 149, 40, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 40, },
++      { 2, 1, 0, 6, 153, 40, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 40, },
++      { 2, 1, 0, 6, 157, 40, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 40, },
++      { 2, 1, 0, 6, 161, 40, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 42, },
++      { 2, 1, 0, 6, 165, 42, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 32, },
++      { 2, 1, 0, 7, 36, 32, },
++      { 1, 1, 0, 7, 36, 32, },
++      { 0, 1, 0, 7, 40, 32, },
++      { 2, 1, 0, 7, 40, 32, },
++      { 1, 1, 0, 7, 40, 32, },
++      { 0, 1, 0, 7, 44, 32, },
++      { 2, 1, 0, 7, 44, 32, },
++      { 1, 1, 0, 7, 44, 32, },
++      { 0, 1, 0, 7, 48, 36, },
++      { 2, 1, 0, 7, 48, 36, },
++      { 1, 1, 0, 7, 48, 36, },
++      { 0, 1, 0, 7, 52, 36, },
++      { 2, 1, 0, 7, 52, 36, },
++      { 1, 1, 0, 7, 52, 36, },
++      { 0, 1, 0, 7, 56, 32, },
++      { 2, 1, 0, 7, 56, 32, },
++      { 1, 1, 0, 7, 56, 32, },
++      { 0, 1, 0, 7, 60, 32, },
++      { 2, 1, 0, 7, 60, 32, },
++      { 1, 1, 0, 7, 60, 32, },
++      { 0, 1, 0, 7, 64, 32, },
++      { 2, 1, 0, 7, 64, 32, },
++      { 1, 1, 0, 7, 64, 32, },
++      { 0, 1, 0, 7, 100, 32, },
++      { 2, 1, 0, 7, 100, 32, },
++      { 1, 1, 0, 7, 100, 32, },
++      { 0, 1, 0, 7, 104, 32, },
++      { 2, 1, 0, 7, 104, 32, },
++      { 1, 1, 0, 7, 104, 32, },
++      { 0, 1, 0, 7, 108, 32, },
++      { 2, 1, 0, 7, 108, 32, },
++      { 1, 1, 0, 7, 108, 32, },
++      { 0, 1, 0, 7, 112, 32, },
++      { 2, 1, 0, 7, 112, 32, },
++      { 1, 1, 0, 7, 112, 32, },
++      { 0, 1, 0, 7, 116, 32, },
++      { 2, 1, 0, 7, 116, 32, },
++      { 1, 1, 0, 7, 116, 32, },
++      { 0, 1, 0, 7, 120, 32, },
++      { 2, 1, 0, 7, 120, 32, },
++      { 1, 1, 0, 7, 120, 32, },
++      { 0, 1, 0, 7, 124, 32, },
++      { 2, 1, 0, 7, 124, 32, },
++      { 1, 1, 0, 7, 124, 32, },
++      { 0, 1, 0, 7, 128, 32, },
++      { 2, 1, 0, 7, 128, 32, },
++      { 1, 1, 0, 7, 128, 32, },
++      { 0, 1, 0, 7, 132, 32, },
++      { 2, 1, 0, 7, 132, 32, },
++      { 1, 1, 0, 7, 132, 32, },
++      { 0, 1, 0, 7, 136, 32, },
++      { 2, 1, 0, 7, 136, 32, },
++      { 1, 1, 0, 7, 136, 32, },
++      { 0, 1, 0, 7, 140, 30, },
++      { 2, 1, 0, 7, 140, 30, },
++      { 1, 1, 0, 7, 140, 30, },
++      { 0, 1, 0, 7, 149, 40, },
++      { 2, 1, 0, 7, 149, 40, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 40, },
++      { 2, 1, 0, 7, 153, 40, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 40, },
++      { 2, 1, 0, 7, 157, 40, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 40, },
++      { 2, 1, 0, 7, 161, 40, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 42, },
++      { 2, 1, 0, 7, 165, 42, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 32, },
++      { 2, 1, 1, 2, 38, 32, },
++      { 1, 1, 1, 2, 38, 32, },
++      { 0, 1, 1, 2, 46, 36, },
++      { 2, 1, 1, 2, 46, 36, },
++      { 1, 1, 1, 2, 46, 36, },
++      { 0, 1, 1, 2, 54, 36, },
++      { 2, 1, 1, 2, 54, 36, },
++      { 1, 1, 1, 2, 54, 36, },
++      { 0, 1, 1, 2, 62, 32, },
++      { 2, 1, 1, 2, 62, 32, },
++      { 1, 1, 1, 2, 62, 32, },
++      { 0, 1, 1, 2, 102, 30, },
++      { 2, 1, 1, 2, 102, 30, },
++      { 1, 1, 1, 2, 102, 30, },
++      { 0, 1, 1, 2, 110, 32, },
++      { 2, 1, 1, 2, 110, 32, },
++      { 1, 1, 1, 2, 110, 32, },
++      { 0, 1, 1, 2, 118, 32, },
++      { 2, 1, 1, 2, 118, 32, },
++      { 1, 1, 1, 2, 118, 32, },
++      { 0, 1, 1, 2, 126, 32, },
++      { 2, 1, 1, 2, 126, 32, },
++      { 1, 1, 1, 2, 126, 32, },
++      { 0, 1, 1, 2, 134, 36, },
++      { 2, 1, 1, 2, 134, 36, },
++      { 1, 1, 1, 2, 134, 36, },
++      { 0, 1, 1, 2, 151, 36, },
++      { 2, 1, 1, 2, 151, 36, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 40, },
++      { 2, 1, 1, 2, 159, 40, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 32, },
++      { 2, 1, 1, 3, 38, 32, },
++      { 1, 1, 1, 3, 38, 32, },
++      { 0, 1, 1, 3, 46, 36, },
++      { 2, 1, 1, 3, 46, 36, },
++      { 1, 1, 1, 3, 46, 36, },
++      { 0, 1, 1, 3, 54, 36, },
++      { 2, 1, 1, 3, 54, 36, },
++      { 1, 1, 1, 3, 54, 36, },
++      { 0, 1, 1, 3, 62, 32, },
++      { 2, 1, 1, 3, 62, 32, },
++      { 1, 1, 1, 3, 62, 32, },
++      { 0, 1, 1, 3, 102, 30, },
++      { 2, 1, 1, 3, 102, 30, },
++      { 1, 1, 1, 3, 102, 30, },
++      { 0, 1, 1, 3, 110, 32, },
++      { 2, 1, 1, 3, 110, 32, },
++      { 1, 1, 1, 3, 110, 32, },
++      { 0, 1, 1, 3, 118, 32, },
++      { 2, 1, 1, 3, 118, 32, },
++      { 1, 1, 1, 3, 118, 32, },
++      { 0, 1, 1, 3, 126, 32, },
++      { 2, 1, 1, 3, 126, 32, },
++      { 1, 1, 1, 3, 126, 32, },
++      { 0, 1, 1, 3, 134, 36, },
++      { 2, 1, 1, 3, 134, 36, },
++      { 1, 1, 1, 3, 134, 36, },
++      { 0, 1, 1, 3, 151, 36, },
++      { 2, 1, 1, 3, 151, 36, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 40, },
++      { 2, 1, 1, 3, 159, 40, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 32, },
++      { 2, 1, 1, 6, 38, 32, },
++      { 1, 1, 1, 6, 38, 32, },
++      { 0, 1, 1, 6, 46, 36, },
++      { 2, 1, 1, 6, 46, 36, },
++      { 1, 1, 1, 6, 46, 36, },
++      { 0, 1, 1, 6, 54, 36, },
++      { 2, 1, 1, 6, 54, 36, },
++      { 1, 1, 1, 6, 54, 36, },
++      { 0, 1, 1, 6, 62, 32, },
++      { 2, 1, 1, 6, 62, 32, },
++      { 1, 1, 1, 6, 62, 32, },
++      { 0, 1, 1, 6, 102, 30, },
++      { 2, 1, 1, 6, 102, 30, },
++      { 1, 1, 1, 6, 102, 30, },
++      { 0, 1, 1, 6, 110, 32, },
++      { 2, 1, 1, 6, 110, 32, },
++      { 1, 1, 1, 6, 110, 32, },
++      { 0, 1, 1, 6, 118, 32, },
++      { 2, 1, 1, 6, 118, 32, },
++      { 1, 1, 1, 6, 118, 32, },
++      { 0, 1, 1, 6, 126, 32, },
++      { 2, 1, 1, 6, 126, 32, },
++      { 1, 1, 1, 6, 126, 32, },
++      { 0, 1, 1, 6, 134, 36, },
++      { 2, 1, 1, 6, 134, 36, },
++      { 1, 1, 1, 6, 134, 36, },
++      { 0, 1, 1, 6, 151, 36, },
++      { 2, 1, 1, 6, 151, 36, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 40, },
++      { 2, 1, 1, 6, 159, 40, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 32, },
++      { 2, 1, 1, 7, 38, 32, },
++      { 1, 1, 1, 7, 38, 32, },
++      { 0, 1, 1, 7, 46, 36, },
++      { 2, 1, 1, 7, 46, 36, },
++      { 1, 1, 1, 7, 46, 36, },
++      { 0, 1, 1, 7, 54, 36, },
++      { 2, 1, 1, 7, 54, 36, },
++      { 1, 1, 1, 7, 54, 36, },
++      { 0, 1, 1, 7, 62, 32, },
++      { 2, 1, 1, 7, 62, 32, },
++      { 1, 1, 1, 7, 62, 32, },
++      { 0, 1, 1, 7, 102, 30, },
++      { 2, 1, 1, 7, 102, 30, },
++      { 1, 1, 1, 7, 102, 30, },
++      { 0, 1, 1, 7, 110, 32, },
++      { 2, 1, 1, 7, 110, 32, },
++      { 1, 1, 1, 7, 110, 32, },
++      { 0, 1, 1, 7, 118, 32, },
++      { 2, 1, 1, 7, 118, 32, },
++      { 1, 1, 1, 7, 118, 32, },
++      { 0, 1, 1, 7, 126, 32, },
++      { 2, 1, 1, 7, 126, 32, },
++      { 1, 1, 1, 7, 126, 32, },
++      { 0, 1, 1, 7, 134, 36, },
++      { 2, 1, 1, 7, 134, 36, },
++      { 1, 1, 1, 7, 134, 36, },
++      { 0, 1, 1, 7, 151, 36, },
++      { 2, 1, 1, 7, 151, 36, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 40, },
++      { 2, 1, 1, 7, 159, 40, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 34, },
++      { 2, 1, 2, 4, 42, 34, },
++      { 1, 1, 2, 4, 42, 34, },
++      { 0, 1, 2, 4, 58, 34, },
++      { 2, 1, 2, 4, 58, 34, },
++      { 1, 1, 2, 4, 58, 34, },
++      { 0, 1, 2, 4, 106, 32, },
++      { 2, 1, 2, 4, 106, 32, },
++      { 1, 1, 2, 4, 106, 32, },
++      { 0, 1, 2, 4, 122, 34, },
++      { 2, 1, 2, 4, 122, 34, },
++      { 1, 1, 2, 4, 122, 34, },
++      { 0, 1, 2, 4, 155, 34, },
++      { 2, 1, 2, 4, 155, 34, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 34, },
++      { 2, 1, 2, 5, 42, 34, },
++      { 1, 1, 2, 5, 42, 34, },
++      { 0, 1, 2, 5, 58, 34, },
++      { 2, 1, 2, 5, 58, 34, },
++      { 1, 1, 2, 5, 58, 34, },
++      { 0, 1, 2, 5, 106, 32, },
++      { 2, 1, 2, 5, 106, 32, },
++      { 1, 1, 2, 5, 106, 32, },
++      { 0, 1, 2, 5, 122, 34, },
++      { 2, 1, 2, 5, 122, 34, },
++      { 1, 1, 2, 5, 122, 34, },
++      { 0, 1, 2, 5, 155, 34, },
++      { 2, 1, 2, 5, 155, 34, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 34, },
++      { 2, 1, 2, 8, 42, 34, },
++      { 1, 1, 2, 8, 42, 34, },
++      { 0, 1, 2, 8, 58, 34, },
++      { 2, 1, 2, 8, 58, 34, },
++      { 1, 1, 2, 8, 58, 34, },
++      { 0, 1, 2, 8, 106, 32, },
++      { 2, 1, 2, 8, 106, 32, },
++      { 1, 1, 2, 8, 106, 32, },
++      { 0, 1, 2, 8, 122, 34, },
++      { 2, 1, 2, 8, 122, 34, },
++      { 1, 1, 2, 8, 122, 34, },
++      { 0, 1, 2, 8, 155, 34, },
++      { 2, 1, 2, 8, 155, 34, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 34, },
++      { 2, 1, 2, 9, 42, 34, },
++      { 1, 1, 2, 9, 42, 34, },
++      { 0, 1, 2, 9, 58, 34, },
++      { 2, 1, 2, 9, 58, 34, },
++      { 1, 1, 2, 9, 58, 34, },
++      { 0, 1, 2, 9, 106, 32, },
++      { 2, 1, 2, 9, 106, 32, },
++      { 1, 1, 2, 9, 106, 32, },
++      { 0, 1, 2, 9, 122, 34, },
++      { 2, 1, 2, 9, 122, 34, },
++      { 1, 1, 2, 9, 122, 34, },
++      { 0, 1, 2, 9, 155, 34, },
++      { 2, 1, 2, 9, 155, 34, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type2);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type3[] = {
++      { 0, 0, 0, 0, 1, 46, },
++      { 2, 0, 0, 0, 1, 40, },
++      { 1, 0, 0, 0, 1, 40, },
++      { 0, 0, 0, 0, 2, 46, },
++      { 2, 0, 0, 0, 2, 40, },
++      { 1, 0, 0, 0, 2, 40, },
++      { 0, 0, 0, 0, 3, 46, },
++      { 2, 0, 0, 0, 3, 40, },
++      { 1, 0, 0, 0, 3, 40, },
++      { 0, 0, 0, 0, 4, 46, },
++      { 2, 0, 0, 0, 4, 40, },
++      { 1, 0, 0, 0, 4, 40, },
++      { 0, 0, 0, 0, 5, 46, },
++      { 2, 0, 0, 0, 5, 40, },
++      { 1, 0, 0, 0, 5, 40, },
++      { 0, 0, 0, 0, 6, 46, },
++      { 2, 0, 0, 0, 6, 40, },
++      { 1, 0, 0, 0, 6, 40, },
++      { 0, 0, 0, 0, 7, 46, },
++      { 2, 0, 0, 0, 7, 40, },
++      { 1, 0, 0, 0, 7, 40, },
++      { 0, 0, 0, 0, 8, 46, },
++      { 2, 0, 0, 0, 8, 40, },
++      { 1, 0, 0, 0, 8, 40, },
++      { 0, 0, 0, 0, 9, 46, },
++      { 2, 0, 0, 0, 9, 40, },
++      { 1, 0, 0, 0, 9, 40, },
++      { 0, 0, 0, 0, 10, 46, },
++      { 2, 0, 0, 0, 10, 40, },
++      { 1, 0, 0, 0, 10, 40, },
++      { 0, 0, 0, 0, 11, 46, },
++      { 2, 0, 0, 0, 11, 40, },
++      { 1, 0, 0, 0, 11, 40, },
++      { 0, 0, 0, 0, 12, 63, },
++      { 2, 0, 0, 0, 12, 40, },
++      { 1, 0, 0, 0, 12, 40, },
++      { 0, 0, 0, 0, 13, 63, },
++      { 2, 0, 0, 0, 13, 40, },
++      { 1, 0, 0, 0, 13, 40, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 40, },
++      { 0, 0, 0, 1, 1, 46, },
++      { 2, 0, 0, 1, 1, 40, },
++      { 1, 0, 0, 1, 1, 40, },
++      { 0, 0, 0, 1, 2, 46, },
++      { 2, 0, 0, 1, 2, 40, },
++      { 1, 0, 0, 1, 2, 40, },
++      { 0, 0, 0, 1, 3, 46, },
++      { 2, 0, 0, 1, 3, 40, },
++      { 1, 0, 0, 1, 3, 40, },
++      { 0, 0, 0, 1, 4, 46, },
++      { 2, 0, 0, 1, 4, 40, },
++      { 1, 0, 0, 1, 4, 40, },
++      { 0, 0, 0, 1, 5, 46, },
++      { 2, 0, 0, 1, 5, 40, },
++      { 1, 0, 0, 1, 5, 40, },
++      { 0, 0, 0, 1, 6, 46, },
++      { 2, 0, 0, 1, 6, 40, },
++      { 1, 0, 0, 1, 6, 40, },
++      { 0, 0, 0, 1, 7, 46, },
++      { 2, 0, 0, 1, 7, 40, },
++      { 1, 0, 0, 1, 7, 40, },
++      { 0, 0, 0, 1, 8, 46, },
++      { 2, 0, 0, 1, 8, 40, },
++      { 1, 0, 0, 1, 8, 40, },
++      { 0, 0, 0, 1, 9, 46, },
++      { 2, 0, 0, 1, 9, 40, },
++      { 1, 0, 0, 1, 9, 40, },
++      { 0, 0, 0, 1, 10, 46, },
++      { 2, 0, 0, 1, 10, 40, },
++      { 1, 0, 0, 1, 10, 40, },
++      { 0, 0, 0, 1, 11, 46, },
++      { 2, 0, 0, 1, 11, 40, },
++      { 1, 0, 0, 1, 11, 40, },
++      { 0, 0, 0, 1, 12, 63, },
++      { 2, 0, 0, 1, 12, 40, },
++      { 1, 0, 0, 1, 12, 40, },
++      { 0, 0, 0, 1, 13, 63, },
++      { 2, 0, 0, 1, 13, 40, },
++      { 1, 0, 0, 1, 13, 40, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 46, },
++      { 2, 0, 0, 2, 1, 40, },
++      { 1, 0, 0, 2, 1, 40, },
++      { 0, 0, 0, 2, 2, 46, },
++      { 2, 0, 0, 2, 2, 40, },
++      { 1, 0, 0, 2, 2, 40, },
++      { 0, 0, 0, 2, 3, 46, },
++      { 2, 0, 0, 2, 3, 40, },
++      { 1, 0, 0, 2, 3, 40, },
++      { 0, 0, 0, 2, 4, 46, },
++      { 2, 0, 0, 2, 4, 40, },
++      { 1, 0, 0, 2, 4, 40, },
++      { 0, 0, 0, 2, 5, 46, },
++      { 2, 0, 0, 2, 5, 40, },
++      { 1, 0, 0, 2, 5, 40, },
++      { 0, 0, 0, 2, 6, 46, },
++      { 2, 0, 0, 2, 6, 40, },
++      { 1, 0, 0, 2, 6, 40, },
++      { 0, 0, 0, 2, 7, 46, },
++      { 2, 0, 0, 2, 7, 40, },
++      { 1, 0, 0, 2, 7, 40, },
++      { 0, 0, 0, 2, 8, 46, },
++      { 2, 0, 0, 2, 8, 40, },
++      { 1, 0, 0, 2, 8, 40, },
++      { 0, 0, 0, 2, 9, 46, },
++      { 2, 0, 0, 2, 9, 40, },
++      { 1, 0, 0, 2, 9, 40, },
++      { 0, 0, 0, 2, 10, 46, },
++      { 2, 0, 0, 2, 10, 40, },
++      { 1, 0, 0, 2, 10, 40, },
++      { 0, 0, 0, 2, 11, 46, },
++      { 2, 0, 0, 2, 11, 40, },
++      { 1, 0, 0, 2, 11, 40, },
++      { 0, 0, 0, 2, 12, 63, },
++      { 2, 0, 0, 2, 12, 40, },
++      { 1, 0, 0, 2, 12, 40, },
++      { 0, 0, 0, 2, 13, 63, },
++      { 2, 0, 0, 2, 13, 40, },
++      { 1, 0, 0, 2, 13, 40, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 46, },
++      { 2, 0, 0, 3, 1, 40, },
++      { 1, 0, 0, 3, 1, 40, },
++      { 0, 0, 0, 3, 2, 46, },
++      { 2, 0, 0, 3, 2, 40, },
++      { 1, 0, 0, 3, 2, 40, },
++      { 0, 0, 0, 3, 3, 46, },
++      { 2, 0, 0, 3, 3, 40, },
++      { 1, 0, 0, 3, 3, 40, },
++      { 0, 0, 0, 3, 4, 46, },
++      { 2, 0, 0, 3, 4, 40, },
++      { 1, 0, 0, 3, 4, 40, },
++      { 0, 0, 0, 3, 5, 46, },
++      { 2, 0, 0, 3, 5, 40, },
++      { 1, 0, 0, 3, 5, 40, },
++      { 0, 0, 0, 3, 6, 46, },
++      { 2, 0, 0, 3, 6, 40, },
++      { 1, 0, 0, 3, 6, 40, },
++      { 0, 0, 0, 3, 7, 46, },
++      { 2, 0, 0, 3, 7, 40, },
++      { 1, 0, 0, 3, 7, 40, },
++      { 0, 0, 0, 3, 8, 46, },
++      { 2, 0, 0, 3, 8, 40, },
++      { 1, 0, 0, 3, 8, 40, },
++      { 0, 0, 0, 3, 9, 46, },
++      { 2, 0, 0, 3, 9, 40, },
++      { 1, 0, 0, 3, 9, 40, },
++      { 0, 0, 0, 3, 10, 46, },
++      { 2, 0, 0, 3, 10, 40, },
++      { 1, 0, 0, 3, 10, 40, },
++      { 0, 0, 0, 3, 11, 46, },
++      { 2, 0, 0, 3, 11, 40, },
++      { 1, 0, 0, 3, 11, 40, },
++      { 0, 0, 0, 3, 12, 63, },
++      { 2, 0, 0, 3, 12, 40, },
++      { 1, 0, 0, 3, 12, 40, },
++      { 0, 0, 0, 3, 13, 63, },
++      { 2, 0, 0, 3, 13, 40, },
++      { 1, 0, 0, 3, 13, 40, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 46, },
++      { 2, 0, 0, 6, 1, 40, },
++      { 1, 0, 0, 6, 1, 40, },
++      { 0, 0, 0, 6, 2, 46, },
++      { 2, 0, 0, 6, 2, 40, },
++      { 1, 0, 0, 6, 2, 40, },
++      { 0, 0, 0, 6, 3, 46, },
++      { 2, 0, 0, 6, 3, 40, },
++      { 1, 0, 0, 6, 3, 40, },
++      { 0, 0, 0, 6, 4, 46, },
++      { 2, 0, 0, 6, 4, 40, },
++      { 1, 0, 0, 6, 4, 40, },
++      { 0, 0, 0, 6, 5, 46, },
++      { 2, 0, 0, 6, 5, 40, },
++      { 1, 0, 0, 6, 5, 40, },
++      { 0, 0, 0, 6, 6, 46, },
++      { 2, 0, 0, 6, 6, 40, },
++      { 1, 0, 0, 6, 6, 40, },
++      { 0, 0, 0, 6, 7, 46, },
++      { 2, 0, 0, 6, 7, 40, },
++      { 1, 0, 0, 6, 7, 40, },
++      { 0, 0, 0, 6, 8, 46, },
++      { 2, 0, 0, 6, 8, 40, },
++      { 1, 0, 0, 6, 8, 40, },
++      { 0, 0, 0, 6, 9, 46, },
++      { 2, 0, 0, 6, 9, 40, },
++      { 1, 0, 0, 6, 9, 40, },
++      { 0, 0, 0, 6, 10, 46, },
++      { 2, 0, 0, 6, 10, 40, },
++      { 1, 0, 0, 6, 10, 40, },
++      { 0, 0, 0, 6, 11, 46, },
++      { 2, 0, 0, 6, 11, 40, },
++      { 1, 0, 0, 6, 11, 40, },
++      { 0, 0, 0, 6, 12, 63, },
++      { 2, 0, 0, 6, 12, 40, },
++      { 1, 0, 0, 6, 12, 40, },
++      { 0, 0, 0, 6, 13, 63, },
++      { 2, 0, 0, 6, 13, 40, },
++      { 1, 0, 0, 6, 13, 40, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 46, },
++      { 2, 0, 0, 7, 1, 40, },
++      { 1, 0, 0, 7, 1, 40, },
++      { 0, 0, 0, 7, 2, 46, },
++      { 2, 0, 0, 7, 2, 40, },
++      { 1, 0, 0, 7, 2, 40, },
++      { 0, 0, 0, 7, 3, 46, },
++      { 2, 0, 0, 7, 3, 40, },
++      { 1, 0, 0, 7, 3, 40, },
++      { 0, 0, 0, 7, 4, 46, },
++      { 2, 0, 0, 7, 4, 40, },
++      { 1, 0, 0, 7, 4, 40, },
++      { 0, 0, 0, 7, 5, 46, },
++      { 2, 0, 0, 7, 5, 40, },
++      { 1, 0, 0, 7, 5, 40, },
++      { 0, 0, 0, 7, 6, 46, },
++      { 2, 0, 0, 7, 6, 40, },
++      { 1, 0, 0, 7, 6, 40, },
++      { 0, 0, 0, 7, 7, 46, },
++      { 2, 0, 0, 7, 7, 40, },
++      { 1, 0, 0, 7, 7, 40, },
++      { 0, 0, 0, 7, 8, 46, },
++      { 2, 0, 0, 7, 8, 40, },
++      { 1, 0, 0, 7, 8, 40, },
++      { 0, 0, 0, 7, 9, 46, },
++      { 2, 0, 0, 7, 9, 40, },
++      { 1, 0, 0, 7, 9, 40, },
++      { 0, 0, 0, 7, 10, 46, },
++      { 2, 0, 0, 7, 10, 40, },
++      { 1, 0, 0, 7, 10, 40, },
++      { 0, 0, 0, 7, 11, 46, },
++      { 2, 0, 0, 7, 11, 40, },
++      { 1, 0, 0, 7, 11, 40, },
++      { 0, 0, 0, 7, 12, 63, },
++      { 2, 0, 0, 7, 12, 40, },
++      { 1, 0, 0, 7, 12, 40, },
++      { 0, 0, 0, 7, 13, 63, },
++      { 2, 0, 0, 7, 13, 40, },
++      { 1, 0, 0, 7, 13, 40, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 46, },
++      { 2, 0, 1, 2, 3, 40, },
++      { 1, 0, 1, 2, 3, 40, },
++      { 0, 0, 1, 2, 4, 46, },
++      { 2, 0, 1, 2, 4, 40, },
++      { 1, 0, 1, 2, 4, 40, },
++      { 0, 0, 1, 2, 5, 46, },
++      { 2, 0, 1, 2, 5, 40, },
++      { 1, 0, 1, 2, 5, 40, },
++      { 0, 0, 1, 2, 6, 46, },
++      { 2, 0, 1, 2, 6, 40, },
++      { 1, 0, 1, 2, 6, 40, },
++      { 0, 0, 1, 2, 7, 46, },
++      { 2, 0, 1, 2, 7, 40, },
++      { 1, 0, 1, 2, 7, 40, },
++      { 0, 0, 1, 2, 8, 46, },
++      { 2, 0, 1, 2, 8, 40, },
++      { 1, 0, 1, 2, 8, 40, },
++      { 0, 0, 1, 2, 9, 46, },
++      { 2, 0, 1, 2, 9, 40, },
++      { 1, 0, 1, 2, 9, 40, },
++      { 0, 0, 1, 2, 10, 46, },
++      { 2, 0, 1, 2, 10, 40, },
++      { 1, 0, 1, 2, 10, 40, },
++      { 0, 0, 1, 2, 11, 46, },
++      { 2, 0, 1, 2, 11, 40, },
++      { 1, 0, 1, 2, 11, 40, },
++      { 0, 0, 1, 2, 12, 63, },
++      { 2, 0, 1, 2, 12, 40, },
++      { 1, 0, 1, 2, 12, 40, },
++      { 0, 0, 1, 2, 13, 63, },
++      { 2, 0, 1, 2, 13, 40, },
++      { 1, 0, 1, 2, 13, 40, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 46, },
++      { 2, 0, 1, 3, 3, 40, },
++      { 1, 0, 1, 3, 3, 40, },
++      { 0, 0, 1, 3, 4, 46, },
++      { 2, 0, 1, 3, 4, 40, },
++      { 1, 0, 1, 3, 4, 40, },
++      { 0, 0, 1, 3, 5, 46, },
++      { 2, 0, 1, 3, 5, 40, },
++      { 1, 0, 1, 3, 5, 40, },
++      { 0, 0, 1, 3, 6, 46, },
++      { 2, 0, 1, 3, 6, 40, },
++      { 1, 0, 1, 3, 6, 40, },
++      { 0, 0, 1, 3, 7, 46, },
++      { 2, 0, 1, 3, 7, 40, },
++      { 1, 0, 1, 3, 7, 40, },
++      { 0, 0, 1, 3, 8, 46, },
++      { 2, 0, 1, 3, 8, 40, },
++      { 1, 0, 1, 3, 8, 40, },
++      { 0, 0, 1, 3, 9, 46, },
++      { 2, 0, 1, 3, 9, 40, },
++      { 1, 0, 1, 3, 9, 40, },
++      { 0, 0, 1, 3, 10, 46, },
++      { 2, 0, 1, 3, 10, 40, },
++      { 1, 0, 1, 3, 10, 40, },
++      { 0, 0, 1, 3, 11, 46, },
++      { 2, 0, 1, 3, 11, 40, },
++      { 1, 0, 1, 3, 11, 40, },
++      { 0, 0, 1, 3, 12, 63, },
++      { 2, 0, 1, 3, 12, 40, },
++      { 1, 0, 1, 3, 12, 40, },
++      { 0, 0, 1, 3, 13, 63, },
++      { 2, 0, 1, 3, 13, 40, },
++      { 1, 0, 1, 3, 13, 40, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 46, },
++      { 2, 0, 1, 6, 3, 40, },
++      { 1, 0, 1, 6, 3, 40, },
++      { 0, 0, 1, 6, 4, 46, },
++      { 2, 0, 1, 6, 4, 40, },
++      { 1, 0, 1, 6, 4, 40, },
++      { 0, 0, 1, 6, 5, 46, },
++      { 2, 0, 1, 6, 5, 40, },
++      { 1, 0, 1, 6, 5, 40, },
++      { 0, 0, 1, 6, 6, 46, },
++      { 2, 0, 1, 6, 6, 40, },
++      { 1, 0, 1, 6, 6, 40, },
++      { 0, 0, 1, 6, 7, 46, },
++      { 2, 0, 1, 6, 7, 40, },
++      { 1, 0, 1, 6, 7, 40, },
++      { 0, 0, 1, 6, 8, 46, },
++      { 2, 0, 1, 6, 8, 40, },
++      { 1, 0, 1, 6, 8, 40, },
++      { 0, 0, 1, 6, 9, 46, },
++      { 2, 0, 1, 6, 9, 40, },
++      { 1, 0, 1, 6, 9, 40, },
++      { 0, 0, 1, 6, 10, 46, },
++      { 2, 0, 1, 6, 10, 40, },
++      { 1, 0, 1, 6, 10, 40, },
++      { 0, 0, 1, 6, 11, 46, },
++      { 2, 0, 1, 6, 11, 40, },
++      { 1, 0, 1, 6, 11, 40, },
++      { 0, 0, 1, 6, 12, 63, },
++      { 2, 0, 1, 6, 12, 40, },
++      { 1, 0, 1, 6, 12, 40, },
++      { 0, 0, 1, 6, 13, 63, },
++      { 2, 0, 1, 6, 13, 40, },
++      { 1, 0, 1, 6, 13, 40, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 46, },
++      { 2, 0, 1, 7, 3, 40, },
++      { 1, 0, 1, 7, 3, 40, },
++      { 0, 0, 1, 7, 4, 46, },
++      { 2, 0, 1, 7, 4, 40, },
++      { 1, 0, 1, 7, 4, 40, },
++      { 0, 0, 1, 7, 5, 46, },
++      { 2, 0, 1, 7, 5, 40, },
++      { 1, 0, 1, 7, 5, 40, },
++      { 0, 0, 1, 7, 6, 46, },
++      { 2, 0, 1, 7, 6, 40, },
++      { 1, 0, 1, 7, 6, 40, },
++      { 0, 0, 1, 7, 7, 46, },
++      { 2, 0, 1, 7, 7, 40, },
++      { 1, 0, 1, 7, 7, 40, },
++      { 0, 0, 1, 7, 8, 46, },
++      { 2, 0, 1, 7, 8, 40, },
++      { 1, 0, 1, 7, 8, 40, },
++      { 0, 0, 1, 7, 9, 46, },
++      { 2, 0, 1, 7, 9, 40, },
++      { 1, 0, 1, 7, 9, 40, },
++      { 0, 0, 1, 7, 10, 46, },
++      { 2, 0, 1, 7, 10, 40, },
++      { 1, 0, 1, 7, 10, 40, },
++      { 0, 0, 1, 7, 11, 46, },
++      { 2, 0, 1, 7, 11, 40, },
++      { 1, 0, 1, 7, 11, 40, },
++      { 0, 0, 1, 7, 12, 63, },
++      { 2, 0, 1, 7, 12, 40, },
++      { 1, 0, 1, 7, 12, 40, },
++      { 0, 0, 1, 7, 13, 63, },
++      { 2, 0, 1, 7, 13, 40, },
++      { 1, 0, 1, 7, 13, 40, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 46, },
++      { 2, 1, 0, 1, 36, 40, },
++      { 1, 1, 0, 1, 36, 40, },
++      { 0, 1, 0, 1, 40, 46, },
++      { 2, 1, 0, 1, 40, 40, },
++      { 1, 1, 0, 1, 40, 40, },
++      { 0, 1, 0, 1, 44, 46, },
++      { 2, 1, 0, 1, 44, 40, },
++      { 1, 1, 0, 1, 44, 40, },
++      { 0, 1, 0, 1, 48, 46, },
++      { 2, 1, 0, 1, 48, 40, },
++      { 1, 1, 0, 1, 48, 40, },
++      { 0, 1, 0, 1, 52, 46, },
++      { 2, 1, 0, 1, 52, 40, },
++      { 1, 1, 0, 1, 52, 40, },
++      { 0, 1, 0, 1, 56, 46, },
++      { 2, 1, 0, 1, 56, 40, },
++      { 1, 1, 0, 1, 56, 40, },
++      { 0, 1, 0, 1, 60, 46, },
++      { 2, 1, 0, 1, 60, 40, },
++      { 1, 1, 0, 1, 60, 40, },
++      { 0, 1, 0, 1, 64, 46, },
++      { 2, 1, 0, 1, 64, 40, },
++      { 1, 1, 0, 1, 64, 40, },
++      { 0, 1, 0, 1, 100, 46, },
++      { 2, 1, 0, 1, 100, 40, },
++      { 1, 1, 0, 1, 100, 40, },
++      { 0, 1, 0, 1, 104, 46, },
++      { 2, 1, 0, 1, 104, 40, },
++      { 1, 1, 0, 1, 104, 40, },
++      { 0, 1, 0, 1, 108, 46, },
++      { 2, 1, 0, 1, 108, 40, },
++      { 1, 1, 0, 1, 108, 40, },
++      { 0, 1, 0, 1, 112, 46, },
++      { 2, 1, 0, 1, 112, 40, },
++      { 1, 1, 0, 1, 112, 40, },
++      { 0, 1, 0, 1, 116, 46, },
++      { 2, 1, 0, 1, 116, 40, },
++      { 1, 1, 0, 1, 116, 40, },
++      { 0, 1, 0, 1, 120, 46, },
++      { 2, 1, 0, 1, 120, 40, },
++      { 1, 1, 0, 1, 120, 40, },
++      { 0, 1, 0, 1, 124, 46, },
++      { 2, 1, 0, 1, 124, 40, },
++      { 1, 1, 0, 1, 124, 40, },
++      { 0, 1, 0, 1, 128, 46, },
++      { 2, 1, 0, 1, 128, 40, },
++      { 1, 1, 0, 1, 128, 40, },
++      { 0, 1, 0, 1, 132, 46, },
++      { 2, 1, 0, 1, 132, 40, },
++      { 1, 1, 0, 1, 132, 40, },
++      { 0, 1, 0, 1, 136, 46, },
++      { 2, 1, 0, 1, 136, 40, },
++      { 1, 1, 0, 1, 136, 40, },
++      { 0, 1, 0, 1, 140, 46, },
++      { 2, 1, 0, 1, 140, 40, },
++      { 1, 1, 0, 1, 140, 40, },
++      { 0, 1, 0, 1, 149, 46, },
++      { 2, 1, 0, 1, 149, 40, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 46, },
++      { 2, 1, 0, 1, 153, 40, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 46, },
++      { 2, 1, 0, 1, 157, 40, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 46, },
++      { 2, 1, 0, 1, 161, 40, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 46, },
++      { 2, 1, 0, 1, 165, 40, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 46, },
++      { 2, 1, 0, 2, 36, 40, },
++      { 1, 1, 0, 2, 36, 40, },
++      { 0, 1, 0, 2, 40, 46, },
++      { 2, 1, 0, 2, 40, 40, },
++      { 1, 1, 0, 2, 40, 40, },
++      { 0, 1, 0, 2, 44, 46, },
++      { 2, 1, 0, 2, 44, 40, },
++      { 1, 1, 0, 2, 44, 40, },
++      { 0, 1, 0, 2, 48, 46, },
++      { 2, 1, 0, 2, 48, 40, },
++      { 1, 1, 0, 2, 48, 40, },
++      { 0, 1, 0, 2, 52, 46, },
++      { 2, 1, 0, 2, 52, 40, },
++      { 1, 1, 0, 2, 52, 40, },
++      { 0, 1, 0, 2, 56, 46, },
++      { 2, 1, 0, 2, 56, 40, },
++      { 1, 1, 0, 2, 56, 40, },
++      { 0, 1, 0, 2, 60, 46, },
++      { 2, 1, 0, 2, 60, 40, },
++      { 1, 1, 0, 2, 60, 40, },
++      { 0, 1, 0, 2, 64, 46, },
++      { 2, 1, 0, 2, 64, 40, },
++      { 1, 1, 0, 2, 64, 40, },
++      { 0, 1, 0, 2, 100, 46, },
++      { 2, 1, 0, 2, 100, 40, },
++      { 1, 1, 0, 2, 100, 40, },
++      { 0, 1, 0, 2, 104, 46, },
++      { 2, 1, 0, 2, 104, 40, },
++      { 1, 1, 0, 2, 104, 40, },
++      { 0, 1, 0, 2, 108, 46, },
++      { 2, 1, 0, 2, 108, 40, },
++      { 1, 1, 0, 2, 108, 40, },
++      { 0, 1, 0, 2, 112, 46, },
++      { 2, 1, 0, 2, 112, 40, },
++      { 1, 1, 0, 2, 112, 40, },
++      { 0, 1, 0, 2, 116, 46, },
++      { 2, 1, 0, 2, 116, 40, },
++      { 1, 1, 0, 2, 116, 40, },
++      { 0, 1, 0, 2, 120, 46, },
++      { 2, 1, 0, 2, 120, 40, },
++      { 1, 1, 0, 2, 120, 40, },
++      { 0, 1, 0, 2, 124, 46, },
++      { 2, 1, 0, 2, 124, 40, },
++      { 1, 1, 0, 2, 124, 40, },
++      { 0, 1, 0, 2, 128, 46, },
++      { 2, 1, 0, 2, 128, 40, },
++      { 1, 1, 0, 2, 128, 40, },
++      { 0, 1, 0, 2, 132, 46, },
++      { 2, 1, 0, 2, 132, 40, },
++      { 1, 1, 0, 2, 132, 40, },
++      { 0, 1, 0, 2, 136, 46, },
++      { 2, 1, 0, 2, 136, 40, },
++      { 1, 1, 0, 2, 136, 40, },
++      { 0, 1, 0, 2, 140, 46, },
++      { 2, 1, 0, 2, 140, 40, },
++      { 1, 1, 0, 2, 140, 40, },
++      { 0, 1, 0, 2, 149, 46, },
++      { 2, 1, 0, 2, 149, 40, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 46, },
++      { 2, 1, 0, 2, 153, 40, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 46, },
++      { 2, 1, 0, 2, 157, 40, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 46, },
++      { 2, 1, 0, 2, 161, 40, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 46, },
++      { 2, 1, 0, 2, 165, 40, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 46, },
++      { 2, 1, 0, 3, 36, 40, },
++      { 1, 1, 0, 3, 36, 40, },
++      { 0, 1, 0, 3, 40, 46, },
++      { 2, 1, 0, 3, 40, 40, },
++      { 1, 1, 0, 3, 40, 40, },
++      { 0, 1, 0, 3, 44, 46, },
++      { 2, 1, 0, 3, 44, 40, },
++      { 1, 1, 0, 3, 44, 40, },
++      { 0, 1, 0, 3, 48, 46, },
++      { 2, 1, 0, 3, 48, 40, },
++      { 1, 1, 0, 3, 48, 40, },
++      { 0, 1, 0, 3, 52, 46, },
++      { 2, 1, 0, 3, 52, 40, },
++      { 1, 1, 0, 3, 52, 40, },
++      { 0, 1, 0, 3, 56, 46, },
++      { 2, 1, 0, 3, 56, 40, },
++      { 1, 1, 0, 3, 56, 40, },
++      { 0, 1, 0, 3, 60, 46, },
++      { 2, 1, 0, 3, 60, 40, },
++      { 1, 1, 0, 3, 60, 40, },
++      { 0, 1, 0, 3, 64, 46, },
++      { 2, 1, 0, 3, 64, 40, },
++      { 1, 1, 0, 3, 64, 40, },
++      { 0, 1, 0, 3, 100, 46, },
++      { 2, 1, 0, 3, 100, 40, },
++      { 1, 1, 0, 3, 100, 40, },
++      { 0, 1, 0, 3, 104, 46, },
++      { 2, 1, 0, 3, 104, 40, },
++      { 1, 1, 0, 3, 104, 40, },
++      { 0, 1, 0, 3, 108, 46, },
++      { 2, 1, 0, 3, 108, 40, },
++      { 1, 1, 0, 3, 108, 40, },
++      { 0, 1, 0, 3, 112, 46, },
++      { 2, 1, 0, 3, 112, 40, },
++      { 1, 1, 0, 3, 112, 40, },
++      { 0, 1, 0, 3, 116, 46, },
++      { 2, 1, 0, 3, 116, 40, },
++      { 1, 1, 0, 3, 116, 40, },
++      { 0, 1, 0, 3, 120, 46, },
++      { 2, 1, 0, 3, 120, 40, },
++      { 1, 1, 0, 3, 120, 40, },
++      { 0, 1, 0, 3, 124, 46, },
++      { 2, 1, 0, 3, 124, 40, },
++      { 1, 1, 0, 3, 124, 40, },
++      { 0, 1, 0, 3, 128, 46, },
++      { 2, 1, 0, 3, 128, 40, },
++      { 1, 1, 0, 3, 128, 40, },
++      { 0, 1, 0, 3, 132, 46, },
++      { 2, 1, 0, 3, 132, 40, },
++      { 1, 1, 0, 3, 132, 40, },
++      { 0, 1, 0, 3, 136, 46, },
++      { 2, 1, 0, 3, 136, 40, },
++      { 1, 1, 0, 3, 136, 40, },
++      { 0, 1, 0, 3, 140, 46, },
++      { 2, 1, 0, 3, 140, 40, },
++      { 1, 1, 0, 3, 140, 40, },
++      { 0, 1, 0, 3, 149, 46, },
++      { 2, 1, 0, 3, 149, 40, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 46, },
++      { 2, 1, 0, 3, 153, 40, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 46, },
++      { 2, 1, 0, 3, 157, 40, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 46, },
++      { 2, 1, 0, 3, 161, 40, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 46, },
++      { 2, 1, 0, 3, 165, 40, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 46, },
++      { 2, 1, 0, 6, 36, 40, },
++      { 1, 1, 0, 6, 36, 40, },
++      { 0, 1, 0, 6, 40, 46, },
++      { 2, 1, 0, 6, 40, 40, },
++      { 1, 1, 0, 6, 40, 40, },
++      { 0, 1, 0, 6, 44, 46, },
++      { 2, 1, 0, 6, 44, 40, },
++      { 1, 1, 0, 6, 44, 40, },
++      { 0, 1, 0, 6, 48, 46, },
++      { 2, 1, 0, 6, 48, 40, },
++      { 1, 1, 0, 6, 48, 40, },
++      { 0, 1, 0, 6, 52, 46, },
++      { 2, 1, 0, 6, 52, 40, },
++      { 1, 1, 0, 6, 52, 40, },
++      { 0, 1, 0, 6, 56, 46, },
++      { 2, 1, 0, 6, 56, 40, },
++      { 1, 1, 0, 6, 56, 40, },
++      { 0, 1, 0, 6, 60, 46, },
++      { 2, 1, 0, 6, 60, 40, },
++      { 1, 1, 0, 6, 60, 40, },
++      { 0, 1, 0, 6, 64, 46, },
++      { 2, 1, 0, 6, 64, 40, },
++      { 1, 1, 0, 6, 64, 40, },
++      { 0, 1, 0, 6, 100, 46, },
++      { 2, 1, 0, 6, 100, 40, },
++      { 1, 1, 0, 6, 100, 40, },
++      { 0, 1, 0, 6, 104, 46, },
++      { 2, 1, 0, 6, 104, 40, },
++      { 1, 1, 0, 6, 104, 40, },
++      { 0, 1, 0, 6, 108, 46, },
++      { 2, 1, 0, 6, 108, 40, },
++      { 1, 1, 0, 6, 108, 40, },
++      { 0, 1, 0, 6, 112, 46, },
++      { 2, 1, 0, 6, 112, 40, },
++      { 1, 1, 0, 6, 112, 40, },
++      { 0, 1, 0, 6, 116, 46, },
++      { 2, 1, 0, 6, 116, 40, },
++      { 1, 1, 0, 6, 116, 40, },
++      { 0, 1, 0, 6, 120, 46, },
++      { 2, 1, 0, 6, 120, 40, },
++      { 1, 1, 0, 6, 120, 40, },
++      { 0, 1, 0, 6, 124, 46, },
++      { 2, 1, 0, 6, 124, 40, },
++      { 1, 1, 0, 6, 124, 40, },
++      { 0, 1, 0, 6, 128, 46, },
++      { 2, 1, 0, 6, 128, 40, },
++      { 1, 1, 0, 6, 128, 40, },
++      { 0, 1, 0, 6, 132, 46, },
++      { 2, 1, 0, 6, 132, 40, },
++      { 1, 1, 0, 6, 132, 40, },
++      { 0, 1, 0, 6, 136, 46, },
++      { 2, 1, 0, 6, 136, 40, },
++      { 1, 1, 0, 6, 136, 40, },
++      { 0, 1, 0, 6, 140, 46, },
++      { 2, 1, 0, 6, 140, 40, },
++      { 1, 1, 0, 6, 140, 40, },
++      { 0, 1, 0, 6, 149, 46, },
++      { 2, 1, 0, 6, 149, 40, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 46, },
++      { 2, 1, 0, 6, 153, 40, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 46, },
++      { 2, 1, 0, 6, 157, 40, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 46, },
++      { 2, 1, 0, 6, 161, 40, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 46, },
++      { 2, 1, 0, 6, 165, 40, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 46, },
++      { 2, 1, 0, 7, 36, 40, },
++      { 1, 1, 0, 7, 36, 40, },
++      { 0, 1, 0, 7, 40, 46, },
++      { 2, 1, 0, 7, 40, 40, },
++      { 1, 1, 0, 7, 40, 40, },
++      { 0, 1, 0, 7, 44, 46, },
++      { 2, 1, 0, 7, 44, 40, },
++      { 1, 1, 0, 7, 44, 40, },
++      { 0, 1, 0, 7, 48, 46, },
++      { 2, 1, 0, 7, 48, 40, },
++      { 1, 1, 0, 7, 48, 40, },
++      { 0, 1, 0, 7, 52, 46, },
++      { 2, 1, 0, 7, 52, 40, },
++      { 1, 1, 0, 7, 52, 40, },
++      { 0, 1, 0, 7, 56, 46, },
++      { 2, 1, 0, 7, 56, 40, },
++      { 1, 1, 0, 7, 56, 40, },
++      { 0, 1, 0, 7, 60, 46, },
++      { 2, 1, 0, 7, 60, 40, },
++      { 1, 1, 0, 7, 60, 40, },
++      { 0, 1, 0, 7, 64, 46, },
++      { 2, 1, 0, 7, 64, 40, },
++      { 1, 1, 0, 7, 64, 40, },
++      { 0, 1, 0, 7, 100, 46, },
++      { 2, 1, 0, 7, 100, 40, },
++      { 1, 1, 0, 7, 100, 40, },
++      { 0, 1, 0, 7, 104, 46, },
++      { 2, 1, 0, 7, 104, 40, },
++      { 1, 1, 0, 7, 104, 40, },
++      { 0, 1, 0, 7, 108, 46, },
++      { 2, 1, 0, 7, 108, 40, },
++      { 1, 1, 0, 7, 108, 40, },
++      { 0, 1, 0, 7, 112, 46, },
++      { 2, 1, 0, 7, 112, 40, },
++      { 1, 1, 0, 7, 112, 40, },
++      { 0, 1, 0, 7, 116, 46, },
++      { 2, 1, 0, 7, 116, 40, },
++      { 1, 1, 0, 7, 116, 40, },
++      { 0, 1, 0, 7, 120, 46, },
++      { 2, 1, 0, 7, 120, 40, },
++      { 1, 1, 0, 7, 120, 40, },
++      { 0, 1, 0, 7, 124, 46, },
++      { 2, 1, 0, 7, 124, 40, },
++      { 1, 1, 0, 7, 124, 40, },
++      { 0, 1, 0, 7, 128, 46, },
++      { 2, 1, 0, 7, 128, 40, },
++      { 1, 1, 0, 7, 128, 40, },
++      { 0, 1, 0, 7, 132, 46, },
++      { 2, 1, 0, 7, 132, 40, },
++      { 1, 1, 0, 7, 132, 40, },
++      { 0, 1, 0, 7, 136, 46, },
++      { 2, 1, 0, 7, 136, 40, },
++      { 1, 1, 0, 7, 136, 40, },
++      { 0, 1, 0, 7, 140, 46, },
++      { 2, 1, 0, 7, 140, 40, },
++      { 1, 1, 0, 7, 140, 40, },
++      { 0, 1, 0, 7, 149, 46, },
++      { 2, 1, 0, 7, 149, 40, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 46, },
++      { 2, 1, 0, 7, 153, 40, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 46, },
++      { 2, 1, 0, 7, 157, 40, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 46, },
++      { 2, 1, 0, 7, 161, 40, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 46, },
++      { 2, 1, 0, 7, 165, 40, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 46, },
++      { 2, 1, 1, 2, 38, 40, },
++      { 1, 1, 1, 2, 38, 40, },
++      { 0, 1, 1, 2, 46, 46, },
++      { 2, 1, 1, 2, 46, 40, },
++      { 1, 1, 1, 2, 46, 40, },
++      { 0, 1, 1, 2, 54, 46, },
++      { 2, 1, 1, 2, 54, 40, },
++      { 1, 1, 1, 2, 54, 40, },
++      { 0, 1, 1, 2, 62, 46, },
++      { 2, 1, 1, 2, 62, 40, },
++      { 1, 1, 1, 2, 62, 40, },
++      { 0, 1, 1, 2, 102, 46, },
++      { 2, 1, 1, 2, 102, 40, },
++      { 1, 1, 1, 2, 102, 40, },
++      { 0, 1, 1, 2, 110, 46, },
++      { 2, 1, 1, 2, 110, 40, },
++      { 1, 1, 1, 2, 110, 40, },
++      { 0, 1, 1, 2, 118, 46, },
++      { 2, 1, 1, 2, 118, 40, },
++      { 1, 1, 1, 2, 118, 40, },
++      { 0, 1, 1, 2, 126, 46, },
++      { 2, 1, 1, 2, 126, 40, },
++      { 1, 1, 1, 2, 126, 40, },
++      { 0, 1, 1, 2, 134, 46, },
++      { 2, 1, 1, 2, 134, 40, },
++      { 1, 1, 1, 2, 134, 40, },
++      { 0, 1, 1, 2, 151, 46, },
++      { 2, 1, 1, 2, 151, 40, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 46, },
++      { 2, 1, 1, 2, 159, 40, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 46, },
++      { 2, 1, 1, 3, 38, 40, },
++      { 1, 1, 1, 3, 38, 40, },
++      { 0, 1, 1, 3, 46, 46, },
++      { 2, 1, 1, 3, 46, 40, },
++      { 1, 1, 1, 3, 46, 40, },
++      { 0, 1, 1, 3, 54, 46, },
++      { 2, 1, 1, 3, 54, 40, },
++      { 1, 1, 1, 3, 54, 40, },
++      { 0, 1, 1, 3, 62, 46, },
++      { 2, 1, 1, 3, 62, 40, },
++      { 1, 1, 1, 3, 62, 40, },
++      { 0, 1, 1, 3, 102, 46, },
++      { 2, 1, 1, 3, 102, 40, },
++      { 1, 1, 1, 3, 102, 40, },
++      { 0, 1, 1, 3, 110, 46, },
++      { 2, 1, 1, 3, 110, 40, },
++      { 1, 1, 1, 3, 110, 40, },
++      { 0, 1, 1, 3, 118, 46, },
++      { 2, 1, 1, 3, 118, 40, },
++      { 1, 1, 1, 3, 118, 40, },
++      { 0, 1, 1, 3, 126, 46, },
++      { 2, 1, 1, 3, 126, 40, },
++      { 1, 1, 1, 3, 126, 40, },
++      { 0, 1, 1, 3, 134, 46, },
++      { 2, 1, 1, 3, 134, 40, },
++      { 1, 1, 1, 3, 134, 40, },
++      { 0, 1, 1, 3, 151, 46, },
++      { 2, 1, 1, 3, 151, 40, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 46, },
++      { 2, 1, 1, 3, 159, 40, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 46, },
++      { 2, 1, 1, 6, 38, 40, },
++      { 1, 1, 1, 6, 38, 40, },
++      { 0, 1, 1, 6, 46, 46, },
++      { 2, 1, 1, 6, 46, 40, },
++      { 1, 1, 1, 6, 46, 40, },
++      { 0, 1, 1, 6, 54, 46, },
++      { 2, 1, 1, 6, 54, 40, },
++      { 1, 1, 1, 6, 54, 40, },
++      { 0, 1, 1, 6, 62, 46, },
++      { 2, 1, 1, 6, 62, 40, },
++      { 1, 1, 1, 6, 62, 40, },
++      { 0, 1, 1, 6, 102, 46, },
++      { 2, 1, 1, 6, 102, 40, },
++      { 1, 1, 1, 6, 102, 40, },
++      { 0, 1, 1, 6, 110, 46, },
++      { 2, 1, 1, 6, 110, 40, },
++      { 1, 1, 1, 6, 110, 40, },
++      { 0, 1, 1, 6, 118, 46, },
++      { 2, 1, 1, 6, 118, 40, },
++      { 1, 1, 1, 6, 118, 40, },
++      { 0, 1, 1, 6, 126, 46, },
++      { 2, 1, 1, 6, 126, 40, },
++      { 1, 1, 1, 6, 126, 40, },
++      { 0, 1, 1, 6, 134, 46, },
++      { 2, 1, 1, 6, 134, 40, },
++      { 1, 1, 1, 6, 134, 40, },
++      { 0, 1, 1, 6, 151, 46, },
++      { 2, 1, 1, 6, 151, 40, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 46, },
++      { 2, 1, 1, 6, 159, 40, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 46, },
++      { 2, 1, 1, 7, 38, 40, },
++      { 1, 1, 1, 7, 38, 40, },
++      { 0, 1, 1, 7, 46, 46, },
++      { 2, 1, 1, 7, 46, 40, },
++      { 1, 1, 1, 7, 46, 40, },
++      { 0, 1, 1, 7, 54, 46, },
++      { 2, 1, 1, 7, 54, 40, },
++      { 1, 1, 1, 7, 54, 40, },
++      { 0, 1, 1, 7, 62, 46, },
++      { 2, 1, 1, 7, 62, 40, },
++      { 1, 1, 1, 7, 62, 40, },
++      { 0, 1, 1, 7, 102, 46, },
++      { 2, 1, 1, 7, 102, 40, },
++      { 1, 1, 1, 7, 102, 40, },
++      { 0, 1, 1, 7, 110, 46, },
++      { 2, 1, 1, 7, 110, 40, },
++      { 1, 1, 1, 7, 110, 40, },
++      { 0, 1, 1, 7, 118, 46, },
++      { 2, 1, 1, 7, 118, 40, },
++      { 1, 1, 1, 7, 118, 40, },
++      { 0, 1, 1, 7, 126, 46, },
++      { 2, 1, 1, 7, 126, 40, },
++      { 1, 1, 1, 7, 126, 40, },
++      { 0, 1, 1, 7, 134, 46, },
++      { 2, 1, 1, 7, 134, 40, },
++      { 1, 1, 1, 7, 134, 40, },
++      { 0, 1, 1, 7, 151, 46, },
++      { 2, 1, 1, 7, 151, 40, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 46, },
++      { 2, 1, 1, 7, 159, 40, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 46, },
++      { 2, 1, 2, 4, 42, 40, },
++      { 1, 1, 2, 4, 42, 40, },
++      { 0, 1, 2, 4, 58, 46, },
++      { 2, 1, 2, 4, 58, 40, },
++      { 1, 1, 2, 4, 58, 40, },
++      { 0, 1, 2, 4, 106, 46, },
++      { 2, 1, 2, 4, 106, 40, },
++      { 1, 1, 2, 4, 106, 40, },
++      { 0, 1, 2, 4, 122, 46, },
++      { 2, 1, 2, 4, 122, 40, },
++      { 1, 1, 2, 4, 122, 40, },
++      { 0, 1, 2, 4, 155, 46, },
++      { 2, 1, 2, 4, 155, 40, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 46, },
++      { 2, 1, 2, 5, 42, 40, },
++      { 1, 1, 2, 5, 42, 40, },
++      { 0, 1, 2, 5, 58, 46, },
++      { 2, 1, 2, 5, 58, 40, },
++      { 1, 1, 2, 5, 58, 40, },
++      { 0, 1, 2, 5, 106, 46, },
++      { 2, 1, 2, 5, 106, 40, },
++      { 1, 1, 2, 5, 106, 40, },
++      { 0, 1, 2, 5, 122, 46, },
++      { 2, 1, 2, 5, 122, 40, },
++      { 1, 1, 2, 5, 122, 40, },
++      { 0, 1, 2, 5, 155, 46, },
++      { 2, 1, 2, 5, 155, 40, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 46, },
++      { 2, 1, 2, 8, 42, 40, },
++      { 1, 1, 2, 8, 42, 40, },
++      { 0, 1, 2, 8, 58, 46, },
++      { 2, 1, 2, 8, 58, 40, },
++      { 1, 1, 2, 8, 58, 40, },
++      { 0, 1, 2, 8, 106, 46, },
++      { 2, 1, 2, 8, 106, 40, },
++      { 1, 1, 2, 8, 106, 40, },
++      { 0, 1, 2, 8, 122, 46, },
++      { 2, 1, 2, 8, 122, 40, },
++      { 1, 1, 2, 8, 122, 40, },
++      { 0, 1, 2, 8, 155, 46, },
++      { 2, 1, 2, 8, 155, 40, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 46, },
++      { 2, 1, 2, 9, 42, 40, },
++      { 1, 1, 2, 9, 42, 40, },
++      { 0, 1, 2, 9, 58, 46, },
++      { 2, 1, 2, 9, 58, 40, },
++      { 1, 1, 2, 9, 58, 40, },
++      { 0, 1, 2, 9, 106, 46, },
++      { 2, 1, 2, 9, 106, 40, },
++      { 1, 1, 2, 9, 106, 40, },
++      { 0, 1, 2, 9, 122, 46, },
++      { 2, 1, 2, 9, 122, 40, },
++      { 1, 1, 2, 9, 122, 40, },
++      { 0, 1, 2, 9, 155, 46, },
++      { 2, 1, 2, 9, 155, 40, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type3);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type5[] = {
++      { 0, 0, 0, 0, 1, 46, },
++      { 2, 0, 0, 0, 1, 40, },
++      { 1, 0, 0, 0, 1, 40, },
++      { 0, 0, 0, 0, 2, 46, },
++      { 2, 0, 0, 0, 2, 40, },
++      { 1, 0, 0, 0, 2, 40, },
++      { 0, 0, 0, 0, 3, 46, },
++      { 2, 0, 0, 0, 3, 40, },
++      { 1, 0, 0, 0, 3, 40, },
++      { 0, 0, 0, 0, 4, 46, },
++      { 2, 0, 0, 0, 4, 40, },
++      { 1, 0, 0, 0, 4, 40, },
++      { 0, 0, 0, 0, 5, 46, },
++      { 2, 0, 0, 0, 5, 40, },
++      { 1, 0, 0, 0, 5, 40, },
++      { 0, 0, 0, 0, 6, 46, },
++      { 2, 0, 0, 0, 6, 40, },
++      { 1, 0, 0, 0, 6, 40, },
++      { 0, 0, 0, 0, 7, 46, },
++      { 2, 0, 0, 0, 7, 40, },
++      { 1, 0, 0, 0, 7, 40, },
++      { 0, 0, 0, 0, 8, 46, },
++      { 2, 0, 0, 0, 8, 40, },
++      { 1, 0, 0, 0, 8, 40, },
++      { 0, 0, 0, 0, 9, 46, },
++      { 2, 0, 0, 0, 9, 40, },
++      { 1, 0, 0, 0, 9, 40, },
++      { 0, 0, 0, 0, 10, 46, },
++      { 2, 0, 0, 0, 10, 40, },
++      { 1, 0, 0, 0, 10, 40, },
++      { 0, 0, 0, 0, 11, 46, },
++      { 2, 0, 0, 0, 11, 40, },
++      { 1, 0, 0, 0, 11, 40, },
++      { 0, 0, 0, 0, 12, 63, },
++      { 2, 0, 0, 0, 12, 40, },
++      { 1, 0, 0, 0, 12, 40, },
++      { 0, 0, 0, 0, 13, 63, },
++      { 2, 0, 0, 0, 13, 40, },
++      { 1, 0, 0, 0, 13, 40, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 40, },
++      { 0, 0, 0, 1, 1, 46, },
++      { 2, 0, 0, 1, 1, 40, },
++      { 1, 0, 0, 1, 1, 40, },
++      { 0, 0, 0, 1, 2, 46, },
++      { 2, 0, 0, 1, 2, 40, },
++      { 1, 0, 0, 1, 2, 40, },
++      { 0, 0, 0, 1, 3, 46, },
++      { 2, 0, 0, 1, 3, 40, },
++      { 1, 0, 0, 1, 3, 40, },
++      { 0, 0, 0, 1, 4, 46, },
++      { 2, 0, 0, 1, 4, 40, },
++      { 1, 0, 0, 1, 4, 40, },
++      { 0, 0, 0, 1, 5, 46, },
++      { 2, 0, 0, 1, 5, 40, },
++      { 1, 0, 0, 1, 5, 40, },
++      { 0, 0, 0, 1, 6, 46, },
++      { 2, 0, 0, 1, 6, 40, },
++      { 1, 0, 0, 1, 6, 40, },
++      { 0, 0, 0, 1, 7, 46, },
++      { 2, 0, 0, 1, 7, 40, },
++      { 1, 0, 0, 1, 7, 40, },
++      { 0, 0, 0, 1, 8, 46, },
++      { 2, 0, 0, 1, 8, 40, },
++      { 1, 0, 0, 1, 8, 40, },
++      { 0, 0, 0, 1, 9, 46, },
++      { 2, 0, 0, 1, 9, 40, },
++      { 1, 0, 0, 1, 9, 40, },
++      { 0, 0, 0, 1, 10, 46, },
++      { 2, 0, 0, 1, 10, 40, },
++      { 1, 0, 0, 1, 10, 40, },
++      { 0, 0, 0, 1, 11, 46, },
++      { 2, 0, 0, 1, 11, 40, },
++      { 1, 0, 0, 1, 11, 40, },
++      { 0, 0, 0, 1, 12, 63, },
++      { 2, 0, 0, 1, 12, 40, },
++      { 1, 0, 0, 1, 12, 40, },
++      { 0, 0, 0, 1, 13, 63, },
++      { 2, 0, 0, 1, 13, 40, },
++      { 1, 0, 0, 1, 13, 40, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 46, },
++      { 2, 0, 0, 2, 1, 40, },
++      { 1, 0, 0, 2, 1, 40, },
++      { 0, 0, 0, 2, 2, 46, },
++      { 2, 0, 0, 2, 2, 40, },
++      { 1, 0, 0, 2, 2, 40, },
++      { 0, 0, 0, 2, 3, 46, },
++      { 2, 0, 0, 2, 3, 40, },
++      { 1, 0, 0, 2, 3, 40, },
++      { 0, 0, 0, 2, 4, 46, },
++      { 2, 0, 0, 2, 4, 40, },
++      { 1, 0, 0, 2, 4, 40, },
++      { 0, 0, 0, 2, 5, 46, },
++      { 2, 0, 0, 2, 5, 40, },
++      { 1, 0, 0, 2, 5, 40, },
++      { 0, 0, 0, 2, 6, 46, },
++      { 2, 0, 0, 2, 6, 40, },
++      { 1, 0, 0, 2, 6, 40, },
++      { 0, 0, 0, 2, 7, 46, },
++      { 2, 0, 0, 2, 7, 40, },
++      { 1, 0, 0, 2, 7, 40, },
++      { 0, 0, 0, 2, 8, 46, },
++      { 2, 0, 0, 2, 8, 40, },
++      { 1, 0, 0, 2, 8, 40, },
++      { 0, 0, 0, 2, 9, 46, },
++      { 2, 0, 0, 2, 9, 40, },
++      { 1, 0, 0, 2, 9, 40, },
++      { 0, 0, 0, 2, 10, 46, },
++      { 2, 0, 0, 2, 10, 40, },
++      { 1, 0, 0, 2, 10, 40, },
++      { 0, 0, 0, 2, 11, 46, },
++      { 2, 0, 0, 2, 11, 40, },
++      { 1, 0, 0, 2, 11, 40, },
++      { 0, 0, 0, 2, 12, 63, },
++      { 2, 0, 0, 2, 12, 40, },
++      { 1, 0, 0, 2, 12, 40, },
++      { 0, 0, 0, 2, 13, 63, },
++      { 2, 0, 0, 2, 13, 40, },
++      { 1, 0, 0, 2, 13, 40, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 46, },
++      { 2, 0, 0, 3, 1, 40, },
++      { 1, 0, 0, 3, 1, 40, },
++      { 0, 0, 0, 3, 2, 46, },
++      { 2, 0, 0, 3, 2, 40, },
++      { 1, 0, 0, 3, 2, 40, },
++      { 0, 0, 0, 3, 3, 46, },
++      { 2, 0, 0, 3, 3, 40, },
++      { 1, 0, 0, 3, 3, 40, },
++      { 0, 0, 0, 3, 4, 46, },
++      { 2, 0, 0, 3, 4, 40, },
++      { 1, 0, 0, 3, 4, 40, },
++      { 0, 0, 0, 3, 5, 46, },
++      { 2, 0, 0, 3, 5, 40, },
++      { 1, 0, 0, 3, 5, 40, },
++      { 0, 0, 0, 3, 6, 46, },
++      { 2, 0, 0, 3, 6, 40, },
++      { 1, 0, 0, 3, 6, 40, },
++      { 0, 0, 0, 3, 7, 46, },
++      { 2, 0, 0, 3, 7, 40, },
++      { 1, 0, 0, 3, 7, 40, },
++      { 0, 0, 0, 3, 8, 46, },
++      { 2, 0, 0, 3, 8, 40, },
++      { 1, 0, 0, 3, 8, 40, },
++      { 0, 0, 0, 3, 9, 46, },
++      { 2, 0, 0, 3, 9, 40, },
++      { 1, 0, 0, 3, 9, 40, },
++      { 0, 0, 0, 3, 10, 46, },
++      { 2, 0, 0, 3, 10, 40, },
++      { 1, 0, 0, 3, 10, 40, },
++      { 0, 0, 0, 3, 11, 46, },
++      { 2, 0, 0, 3, 11, 40, },
++      { 1, 0, 0, 3, 11, 40, },
++      { 0, 0, 0, 3, 12, 63, },
++      { 2, 0, 0, 3, 12, 40, },
++      { 1, 0, 0, 3, 12, 40, },
++      { 0, 0, 0, 3, 13, 63, },
++      { 2, 0, 0, 3, 13, 40, },
++      { 1, 0, 0, 3, 13, 40, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 46, },
++      { 2, 0, 0, 6, 1, 40, },
++      { 1, 0, 0, 6, 1, 40, },
++      { 0, 0, 0, 6, 2, 46, },
++      { 2, 0, 0, 6, 2, 40, },
++      { 1, 0, 0, 6, 2, 40, },
++      { 0, 0, 0, 6, 3, 46, },
++      { 2, 0, 0, 6, 3, 40, },
++      { 1, 0, 0, 6, 3, 40, },
++      { 0, 0, 0, 6, 4, 46, },
++      { 2, 0, 0, 6, 4, 40, },
++      { 1, 0, 0, 6, 4, 40, },
++      { 0, 0, 0, 6, 5, 46, },
++      { 2, 0, 0, 6, 5, 40, },
++      { 1, 0, 0, 6, 5, 40, },
++      { 0, 0, 0, 6, 6, 46, },
++      { 2, 0, 0, 6, 6, 40, },
++      { 1, 0, 0, 6, 6, 40, },
++      { 0, 0, 0, 6, 7, 46, },
++      { 2, 0, 0, 6, 7, 40, },
++      { 1, 0, 0, 6, 7, 40, },
++      { 0, 0, 0, 6, 8, 46, },
++      { 2, 0, 0, 6, 8, 40, },
++      { 1, 0, 0, 6, 8, 40, },
++      { 0, 0, 0, 6, 9, 46, },
++      { 2, 0, 0, 6, 9, 40, },
++      { 1, 0, 0, 6, 9, 40, },
++      { 0, 0, 0, 6, 10, 46, },
++      { 2, 0, 0, 6, 10, 40, },
++      { 1, 0, 0, 6, 10, 40, },
++      { 0, 0, 0, 6, 11, 46, },
++      { 2, 0, 0, 6, 11, 40, },
++      { 1, 0, 0, 6, 11, 40, },
++      { 0, 0, 0, 6, 12, 63, },
++      { 2, 0, 0, 6, 12, 40, },
++      { 1, 0, 0, 6, 12, 40, },
++      { 0, 0, 0, 6, 13, 63, },
++      { 2, 0, 0, 6, 13, 40, },
++      { 1, 0, 0, 6, 13, 40, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 46, },
++      { 2, 0, 0, 7, 1, 40, },
++      { 1, 0, 0, 7, 1, 40, },
++      { 0, 0, 0, 7, 2, 46, },
++      { 2, 0, 0, 7, 2, 40, },
++      { 1, 0, 0, 7, 2, 40, },
++      { 0, 0, 0, 7, 3, 46, },
++      { 2, 0, 0, 7, 3, 40, },
++      { 1, 0, 0, 7, 3, 40, },
++      { 0, 0, 0, 7, 4, 46, },
++      { 2, 0, 0, 7, 4, 40, },
++      { 1, 0, 0, 7, 4, 40, },
++      { 0, 0, 0, 7, 5, 46, },
++      { 2, 0, 0, 7, 5, 40, },
++      { 1, 0, 0, 7, 5, 40, },
++      { 0, 0, 0, 7, 6, 46, },
++      { 2, 0, 0, 7, 6, 40, },
++      { 1, 0, 0, 7, 6, 40, },
++      { 0, 0, 0, 7, 7, 46, },
++      { 2, 0, 0, 7, 7, 40, },
++      { 1, 0, 0, 7, 7, 40, },
++      { 0, 0, 0, 7, 8, 46, },
++      { 2, 0, 0, 7, 8, 40, },
++      { 1, 0, 0, 7, 8, 40, },
++      { 0, 0, 0, 7, 9, 46, },
++      { 2, 0, 0, 7, 9, 40, },
++      { 1, 0, 0, 7, 9, 40, },
++      { 0, 0, 0, 7, 10, 46, },
++      { 2, 0, 0, 7, 10, 40, },
++      { 1, 0, 0, 7, 10, 40, },
++      { 0, 0, 0, 7, 11, 46, },
++      { 2, 0, 0, 7, 11, 40, },
++      { 1, 0, 0, 7, 11, 40, },
++      { 0, 0, 0, 7, 12, 63, },
++      { 2, 0, 0, 7, 12, 40, },
++      { 1, 0, 0, 7, 12, 40, },
++      { 0, 0, 0, 7, 13, 63, },
++      { 2, 0, 0, 7, 13, 40, },
++      { 1, 0, 0, 7, 13, 40, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 46, },
++      { 2, 0, 1, 2, 3, 40, },
++      { 1, 0, 1, 2, 3, 40, },
++      { 0, 0, 1, 2, 4, 46, },
++      { 2, 0, 1, 2, 4, 40, },
++      { 1, 0, 1, 2, 4, 40, },
++      { 0, 0, 1, 2, 5, 46, },
++      { 2, 0, 1, 2, 5, 40, },
++      { 1, 0, 1, 2, 5, 40, },
++      { 0, 0, 1, 2, 6, 46, },
++      { 2, 0, 1, 2, 6, 40, },
++      { 1, 0, 1, 2, 6, 40, },
++      { 0, 0, 1, 2, 7, 46, },
++      { 2, 0, 1, 2, 7, 40, },
++      { 1, 0, 1, 2, 7, 40, },
++      { 0, 0, 1, 2, 8, 46, },
++      { 2, 0, 1, 2, 8, 40, },
++      { 1, 0, 1, 2, 8, 40, },
++      { 0, 0, 1, 2, 9, 46, },
++      { 2, 0, 1, 2, 9, 40, },
++      { 1, 0, 1, 2, 9, 40, },
++      { 0, 0, 1, 2, 10, 46, },
++      { 2, 0, 1, 2, 10, 40, },
++      { 1, 0, 1, 2, 10, 40, },
++      { 0, 0, 1, 2, 11, 46, },
++      { 2, 0, 1, 2, 11, 40, },
++      { 1, 0, 1, 2, 11, 40, },
++      { 0, 0, 1, 2, 12, 63, },
++      { 2, 0, 1, 2, 12, 40, },
++      { 1, 0, 1, 2, 12, 40, },
++      { 0, 0, 1, 2, 13, 63, },
++      { 2, 0, 1, 2, 13, 40, },
++      { 1, 0, 1, 2, 13, 40, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 46, },
++      { 2, 0, 1, 3, 3, 40, },
++      { 1, 0, 1, 3, 3, 40, },
++      { 0, 0, 1, 3, 4, 46, },
++      { 2, 0, 1, 3, 4, 40, },
++      { 1, 0, 1, 3, 4, 40, },
++      { 0, 0, 1, 3, 5, 46, },
++      { 2, 0, 1, 3, 5, 40, },
++      { 1, 0, 1, 3, 5, 40, },
++      { 0, 0, 1, 3, 6, 46, },
++      { 2, 0, 1, 3, 6, 40, },
++      { 1, 0, 1, 3, 6, 40, },
++      { 0, 0, 1, 3, 7, 46, },
++      { 2, 0, 1, 3, 7, 40, },
++      { 1, 0, 1, 3, 7, 40, },
++      { 0, 0, 1, 3, 8, 46, },
++      { 2, 0, 1, 3, 8, 40, },
++      { 1, 0, 1, 3, 8, 40, },
++      { 0, 0, 1, 3, 9, 46, },
++      { 2, 0, 1, 3, 9, 40, },
++      { 1, 0, 1, 3, 9, 40, },
++      { 0, 0, 1, 3, 10, 46, },
++      { 2, 0, 1, 3, 10, 40, },
++      { 1, 0, 1, 3, 10, 40, },
++      { 0, 0, 1, 3, 11, 46, },
++      { 2, 0, 1, 3, 11, 40, },
++      { 1, 0, 1, 3, 11, 40, },
++      { 0, 0, 1, 3, 12, 63, },
++      { 2, 0, 1, 3, 12, 40, },
++      { 1, 0, 1, 3, 12, 40, },
++      { 0, 0, 1, 3, 13, 63, },
++      { 2, 0, 1, 3, 13, 40, },
++      { 1, 0, 1, 3, 13, 40, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 46, },
++      { 2, 0, 1, 6, 3, 40, },
++      { 1, 0, 1, 6, 3, 40, },
++      { 0, 0, 1, 6, 4, 46, },
++      { 2, 0, 1, 6, 4, 40, },
++      { 1, 0, 1, 6, 4, 40, },
++      { 0, 0, 1, 6, 5, 46, },
++      { 2, 0, 1, 6, 5, 40, },
++      { 1, 0, 1, 6, 5, 40, },
++      { 0, 0, 1, 6, 6, 46, },
++      { 2, 0, 1, 6, 6, 40, },
++      { 1, 0, 1, 6, 6, 40, },
++      { 0, 0, 1, 6, 7, 46, },
++      { 2, 0, 1, 6, 7, 40, },
++      { 1, 0, 1, 6, 7, 40, },
++      { 0, 0, 1, 6, 8, 46, },
++      { 2, 0, 1, 6, 8, 40, },
++      { 1, 0, 1, 6, 8, 40, },
++      { 0, 0, 1, 6, 9, 46, },
++      { 2, 0, 1, 6, 9, 40, },
++      { 1, 0, 1, 6, 9, 40, },
++      { 0, 0, 1, 6, 10, 46, },
++      { 2, 0, 1, 6, 10, 40, },
++      { 1, 0, 1, 6, 10, 40, },
++      { 0, 0, 1, 6, 11, 46, },
++      { 2, 0, 1, 6, 11, 40, },
++      { 1, 0, 1, 6, 11, 40, },
++      { 0, 0, 1, 6, 12, 63, },
++      { 2, 0, 1, 6, 12, 40, },
++      { 1, 0, 1, 6, 12, 40, },
++      { 0, 0, 1, 6, 13, 63, },
++      { 2, 0, 1, 6, 13, 40, },
++      { 1, 0, 1, 6, 13, 40, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 46, },
++      { 2, 0, 1, 7, 3, 40, },
++      { 1, 0, 1, 7, 3, 40, },
++      { 0, 0, 1, 7, 4, 46, },
++      { 2, 0, 1, 7, 4, 40, },
++      { 1, 0, 1, 7, 4, 40, },
++      { 0, 0, 1, 7, 5, 46, },
++      { 2, 0, 1, 7, 5, 40, },
++      { 1, 0, 1, 7, 5, 40, },
++      { 0, 0, 1, 7, 6, 46, },
++      { 2, 0, 1, 7, 6, 40, },
++      { 1, 0, 1, 7, 6, 40, },
++      { 0, 0, 1, 7, 7, 46, },
++      { 2, 0, 1, 7, 7, 40, },
++      { 1, 0, 1, 7, 7, 40, },
++      { 0, 0, 1, 7, 8, 46, },
++      { 2, 0, 1, 7, 8, 40, },
++      { 1, 0, 1, 7, 8, 40, },
++      { 0, 0, 1, 7, 9, 46, },
++      { 2, 0, 1, 7, 9, 40, },
++      { 1, 0, 1, 7, 9, 40, },
++      { 0, 0, 1, 7, 10, 46, },
++      { 2, 0, 1, 7, 10, 40, },
++      { 1, 0, 1, 7, 10, 40, },
++      { 0, 0, 1, 7, 11, 46, },
++      { 2, 0, 1, 7, 11, 40, },
++      { 1, 0, 1, 7, 11, 40, },
++      { 0, 0, 1, 7, 12, 63, },
++      { 2, 0, 1, 7, 12, 40, },
++      { 1, 0, 1, 7, 12, 40, },
++      { 0, 0, 1, 7, 13, 63, },
++      { 2, 0, 1, 7, 13, 40, },
++      { 1, 0, 1, 7, 13, 40, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 46, },
++      { 2, 1, 0, 1, 36, 40, },
++      { 1, 1, 0, 1, 36, 40, },
++      { 0, 1, 0, 1, 40, 46, },
++      { 2, 1, 0, 1, 40, 40, },
++      { 1, 1, 0, 1, 40, 40, },
++      { 0, 1, 0, 1, 44, 46, },
++      { 2, 1, 0, 1, 44, 40, },
++      { 1, 1, 0, 1, 44, 40, },
++      { 0, 1, 0, 1, 48, 46, },
++      { 2, 1, 0, 1, 48, 40, },
++      { 1, 1, 0, 1, 48, 40, },
++      { 0, 1, 0, 1, 52, 46, },
++      { 2, 1, 0, 1, 52, 40, },
++      { 1, 1, 0, 1, 52, 40, },
++      { 0, 1, 0, 1, 56, 46, },
++      { 2, 1, 0, 1, 56, 40, },
++      { 1, 1, 0, 1, 56, 40, },
++      { 0, 1, 0, 1, 60, 46, },
++      { 2, 1, 0, 1, 60, 40, },
++      { 1, 1, 0, 1, 60, 40, },
++      { 0, 1, 0, 1, 64, 46, },
++      { 2, 1, 0, 1, 64, 40, },
++      { 1, 1, 0, 1, 64, 40, },
++      { 0, 1, 0, 1, 100, 46, },
++      { 2, 1, 0, 1, 100, 40, },
++      { 1, 1, 0, 1, 100, 40, },
++      { 0, 1, 0, 1, 104, 46, },
++      { 2, 1, 0, 1, 104, 40, },
++      { 1, 1, 0, 1, 104, 40, },
++      { 0, 1, 0, 1, 108, 46, },
++      { 2, 1, 0, 1, 108, 40, },
++      { 1, 1, 0, 1, 108, 40, },
++      { 0, 1, 0, 1, 112, 46, },
++      { 2, 1, 0, 1, 112, 40, },
++      { 1, 1, 0, 1, 112, 40, },
++      { 0, 1, 0, 1, 116, 46, },
++      { 2, 1, 0, 1, 116, 40, },
++      { 1, 1, 0, 1, 116, 40, },
++      { 0, 1, 0, 1, 120, 46, },
++      { 2, 1, 0, 1, 120, 40, },
++      { 1, 1, 0, 1, 120, 40, },
++      { 0, 1, 0, 1, 124, 46, },
++      { 2, 1, 0, 1, 124, 40, },
++      { 1, 1, 0, 1, 124, 40, },
++      { 0, 1, 0, 1, 128, 46, },
++      { 2, 1, 0, 1, 128, 40, },
++      { 1, 1, 0, 1, 128, 40, },
++      { 0, 1, 0, 1, 132, 46, },
++      { 2, 1, 0, 1, 132, 40, },
++      { 1, 1, 0, 1, 132, 40, },
++      { 0, 1, 0, 1, 136, 46, },
++      { 2, 1, 0, 1, 136, 40, },
++      { 1, 1, 0, 1, 136, 40, },
++      { 0, 1, 0, 1, 140, 46, },
++      { 2, 1, 0, 1, 140, 40, },
++      { 1, 1, 0, 1, 140, 40, },
++      { 0, 1, 0, 1, 149, 46, },
++      { 2, 1, 0, 1, 149, 40, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 46, },
++      { 2, 1, 0, 1, 153, 40, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 46, },
++      { 2, 1, 0, 1, 157, 40, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 46, },
++      { 2, 1, 0, 1, 161, 40, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 46, },
++      { 2, 1, 0, 1, 165, 40, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 46, },
++      { 2, 1, 0, 2, 36, 40, },
++      { 1, 1, 0, 2, 36, 40, },
++      { 0, 1, 0, 2, 40, 46, },
++      { 2, 1, 0, 2, 40, 40, },
++      { 1, 1, 0, 2, 40, 40, },
++      { 0, 1, 0, 2, 44, 46, },
++      { 2, 1, 0, 2, 44, 40, },
++      { 1, 1, 0, 2, 44, 40, },
++      { 0, 1, 0, 2, 48, 46, },
++      { 2, 1, 0, 2, 48, 40, },
++      { 1, 1, 0, 2, 48, 40, },
++      { 0, 1, 0, 2, 52, 46, },
++      { 2, 1, 0, 2, 52, 40, },
++      { 1, 1, 0, 2, 52, 40, },
++      { 0, 1, 0, 2, 56, 46, },
++      { 2, 1, 0, 2, 56, 40, },
++      { 1, 1, 0, 2, 56, 40, },
++      { 0, 1, 0, 2, 60, 46, },
++      { 2, 1, 0, 2, 60, 40, },
++      { 1, 1, 0, 2, 60, 40, },
++      { 0, 1, 0, 2, 64, 46, },
++      { 2, 1, 0, 2, 64, 40, },
++      { 1, 1, 0, 2, 64, 40, },
++      { 0, 1, 0, 2, 100, 46, },
++      { 2, 1, 0, 2, 100, 40, },
++      { 1, 1, 0, 2, 100, 40, },
++      { 0, 1, 0, 2, 104, 46, },
++      { 2, 1, 0, 2, 104, 40, },
++      { 1, 1, 0, 2, 104, 40, },
++      { 0, 1, 0, 2, 108, 46, },
++      { 2, 1, 0, 2, 108, 40, },
++      { 1, 1, 0, 2, 108, 40, },
++      { 0, 1, 0, 2, 112, 46, },
++      { 2, 1, 0, 2, 112, 40, },
++      { 1, 1, 0, 2, 112, 40, },
++      { 0, 1, 0, 2, 116, 46, },
++      { 2, 1, 0, 2, 116, 40, },
++      { 1, 1, 0, 2, 116, 40, },
++      { 0, 1, 0, 2, 120, 46, },
++      { 2, 1, 0, 2, 120, 40, },
++      { 1, 1, 0, 2, 120, 40, },
++      { 0, 1, 0, 2, 124, 46, },
++      { 2, 1, 0, 2, 124, 40, },
++      { 1, 1, 0, 2, 124, 40, },
++      { 0, 1, 0, 2, 128, 46, },
++      { 2, 1, 0, 2, 128, 40, },
++      { 1, 1, 0, 2, 128, 40, },
++      { 0, 1, 0, 2, 132, 46, },
++      { 2, 1, 0, 2, 132, 40, },
++      { 1, 1, 0, 2, 132, 40, },
++      { 0, 1, 0, 2, 136, 46, },
++      { 2, 1, 0, 2, 136, 40, },
++      { 1, 1, 0, 2, 136, 40, },
++      { 0, 1, 0, 2, 140, 46, },
++      { 2, 1, 0, 2, 140, 40, },
++      { 1, 1, 0, 2, 140, 40, },
++      { 0, 1, 0, 2, 149, 46, },
++      { 2, 1, 0, 2, 149, 40, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 46, },
++      { 2, 1, 0, 2, 153, 40, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 46, },
++      { 2, 1, 0, 2, 157, 40, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 46, },
++      { 2, 1, 0, 2, 161, 40, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 46, },
++      { 2, 1, 0, 2, 165, 40, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 46, },
++      { 2, 1, 0, 3, 36, 40, },
++      { 1, 1, 0, 3, 36, 40, },
++      { 0, 1, 0, 3, 40, 46, },
++      { 2, 1, 0, 3, 40, 40, },
++      { 1, 1, 0, 3, 40, 40, },
++      { 0, 1, 0, 3, 44, 46, },
++      { 2, 1, 0, 3, 44, 40, },
++      { 1, 1, 0, 3, 44, 40, },
++      { 0, 1, 0, 3, 48, 46, },
++      { 2, 1, 0, 3, 48, 40, },
++      { 1, 1, 0, 3, 48, 40, },
++      { 0, 1, 0, 3, 52, 46, },
++      { 2, 1, 0, 3, 52, 40, },
++      { 1, 1, 0, 3, 52, 40, },
++      { 0, 1, 0, 3, 56, 46, },
++      { 2, 1, 0, 3, 56, 40, },
++      { 1, 1, 0, 3, 56, 40, },
++      { 0, 1, 0, 3, 60, 46, },
++      { 2, 1, 0, 3, 60, 40, },
++      { 1, 1, 0, 3, 60, 40, },
++      { 0, 1, 0, 3, 64, 46, },
++      { 2, 1, 0, 3, 64, 40, },
++      { 1, 1, 0, 3, 64, 40, },
++      { 0, 1, 0, 3, 100, 46, },
++      { 2, 1, 0, 3, 100, 40, },
++      { 1, 1, 0, 3, 100, 40, },
++      { 0, 1, 0, 3, 104, 46, },
++      { 2, 1, 0, 3, 104, 40, },
++      { 1, 1, 0, 3, 104, 40, },
++      { 0, 1, 0, 3, 108, 46, },
++      { 2, 1, 0, 3, 108, 40, },
++      { 1, 1, 0, 3, 108, 40, },
++      { 0, 1, 0, 3, 112, 46, },
++      { 2, 1, 0, 3, 112, 40, },
++      { 1, 1, 0, 3, 112, 40, },
++      { 0, 1, 0, 3, 116, 46, },
++      { 2, 1, 0, 3, 116, 40, },
++      { 1, 1, 0, 3, 116, 40, },
++      { 0, 1, 0, 3, 120, 46, },
++      { 2, 1, 0, 3, 120, 40, },
++      { 1, 1, 0, 3, 120, 40, },
++      { 0, 1, 0, 3, 124, 46, },
++      { 2, 1, 0, 3, 124, 40, },
++      { 1, 1, 0, 3, 124, 40, },
++      { 0, 1, 0, 3, 128, 46, },
++      { 2, 1, 0, 3, 128, 40, },
++      { 1, 1, 0, 3, 128, 40, },
++      { 0, 1, 0, 3, 132, 46, },
++      { 2, 1, 0, 3, 132, 40, },
++      { 1, 1, 0, 3, 132, 40, },
++      { 0, 1, 0, 3, 136, 46, },
++      { 2, 1, 0, 3, 136, 40, },
++      { 1, 1, 0, 3, 136, 40, },
++      { 0, 1, 0, 3, 140, 46, },
++      { 2, 1, 0, 3, 140, 40, },
++      { 1, 1, 0, 3, 140, 40, },
++      { 0, 1, 0, 3, 149, 46, },
++      { 2, 1, 0, 3, 149, 40, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 46, },
++      { 2, 1, 0, 3, 153, 40, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 46, },
++      { 2, 1, 0, 3, 157, 40, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 46, },
++      { 2, 1, 0, 3, 161, 40, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 46, },
++      { 2, 1, 0, 3, 165, 40, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 46, },
++      { 2, 1, 0, 6, 36, 40, },
++      { 1, 1, 0, 6, 36, 40, },
++      { 0, 1, 0, 6, 40, 46, },
++      { 2, 1, 0, 6, 40, 40, },
++      { 1, 1, 0, 6, 40, 40, },
++      { 0, 1, 0, 6, 44, 46, },
++      { 2, 1, 0, 6, 44, 40, },
++      { 1, 1, 0, 6, 44, 40, },
++      { 0, 1, 0, 6, 48, 46, },
++      { 2, 1, 0, 6, 48, 40, },
++      { 1, 1, 0, 6, 48, 40, },
++      { 0, 1, 0, 6, 52, 46, },
++      { 2, 1, 0, 6, 52, 40, },
++      { 1, 1, 0, 6, 52, 40, },
++      { 0, 1, 0, 6, 56, 46, },
++      { 2, 1, 0, 6, 56, 40, },
++      { 1, 1, 0, 6, 56, 40, },
++      { 0, 1, 0, 6, 60, 46, },
++      { 2, 1, 0, 6, 60, 40, },
++      { 1, 1, 0, 6, 60, 40, },
++      { 0, 1, 0, 6, 64, 46, },
++      { 2, 1, 0, 6, 64, 40, },
++      { 1, 1, 0, 6, 64, 40, },
++      { 0, 1, 0, 6, 100, 46, },
++      { 2, 1, 0, 6, 100, 40, },
++      { 1, 1, 0, 6, 100, 40, },
++      { 0, 1, 0, 6, 104, 46, },
++      { 2, 1, 0, 6, 104, 40, },
++      { 1, 1, 0, 6, 104, 40, },
++      { 0, 1, 0, 6, 108, 46, },
++      { 2, 1, 0, 6, 108, 40, },
++      { 1, 1, 0, 6, 108, 40, },
++      { 0, 1, 0, 6, 112, 46, },
++      { 2, 1, 0, 6, 112, 40, },
++      { 1, 1, 0, 6, 112, 40, },
++      { 0, 1, 0, 6, 116, 46, },
++      { 2, 1, 0, 6, 116, 40, },
++      { 1, 1, 0, 6, 116, 40, },
++      { 0, 1, 0, 6, 120, 46, },
++      { 2, 1, 0, 6, 120, 40, },
++      { 1, 1, 0, 6, 120, 40, },
++      { 0, 1, 0, 6, 124, 46, },
++      { 2, 1, 0, 6, 124, 40, },
++      { 1, 1, 0, 6, 124, 40, },
++      { 0, 1, 0, 6, 128, 46, },
++      { 2, 1, 0, 6, 128, 40, },
++      { 1, 1, 0, 6, 128, 40, },
++      { 0, 1, 0, 6, 132, 46, },
++      { 2, 1, 0, 6, 132, 40, },
++      { 1, 1, 0, 6, 132, 40, },
++      { 0, 1, 0, 6, 136, 46, },
++      { 2, 1, 0, 6, 136, 40, },
++      { 1, 1, 0, 6, 136, 40, },
++      { 0, 1, 0, 6, 140, 46, },
++      { 2, 1, 0, 6, 140, 40, },
++      { 1, 1, 0, 6, 140, 40, },
++      { 0, 1, 0, 6, 149, 46, },
++      { 2, 1, 0, 6, 149, 40, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 46, },
++      { 2, 1, 0, 6, 153, 40, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 46, },
++      { 2, 1, 0, 6, 157, 40, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 46, },
++      { 2, 1, 0, 6, 161, 40, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 46, },
++      { 2, 1, 0, 6, 165, 40, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 46, },
++      { 2, 1, 0, 7, 36, 40, },
++      { 1, 1, 0, 7, 36, 40, },
++      { 0, 1, 0, 7, 40, 46, },
++      { 2, 1, 0, 7, 40, 40, },
++      { 1, 1, 0, 7, 40, 40, },
++      { 0, 1, 0, 7, 44, 46, },
++      { 2, 1, 0, 7, 44, 40, },
++      { 1, 1, 0, 7, 44, 40, },
++      { 0, 1, 0, 7, 48, 46, },
++      { 2, 1, 0, 7, 48, 40, },
++      { 1, 1, 0, 7, 48, 40, },
++      { 0, 1, 0, 7, 52, 46, },
++      { 2, 1, 0, 7, 52, 40, },
++      { 1, 1, 0, 7, 52, 40, },
++      { 0, 1, 0, 7, 56, 46, },
++      { 2, 1, 0, 7, 56, 40, },
++      { 1, 1, 0, 7, 56, 40, },
++      { 0, 1, 0, 7, 60, 46, },
++      { 2, 1, 0, 7, 60, 40, },
++      { 1, 1, 0, 7, 60, 40, },
++      { 0, 1, 0, 7, 64, 46, },
++      { 2, 1, 0, 7, 64, 40, },
++      { 1, 1, 0, 7, 64, 40, },
++      { 0, 1, 0, 7, 100, 46, },
++      { 2, 1, 0, 7, 100, 40, },
++      { 1, 1, 0, 7, 100, 40, },
++      { 0, 1, 0, 7, 104, 46, },
++      { 2, 1, 0, 7, 104, 40, },
++      { 1, 1, 0, 7, 104, 40, },
++      { 0, 1, 0, 7, 108, 46, },
++      { 2, 1, 0, 7, 108, 40, },
++      { 1, 1, 0, 7, 108, 40, },
++      { 0, 1, 0, 7, 112, 46, },
++      { 2, 1, 0, 7, 112, 40, },
++      { 1, 1, 0, 7, 112, 40, },
++      { 0, 1, 0, 7, 116, 46, },
++      { 2, 1, 0, 7, 116, 40, },
++      { 1, 1, 0, 7, 116, 40, },
++      { 0, 1, 0, 7, 120, 46, },
++      { 2, 1, 0, 7, 120, 40, },
++      { 1, 1, 0, 7, 120, 40, },
++      { 0, 1, 0, 7, 124, 46, },
++      { 2, 1, 0, 7, 124, 40, },
++      { 1, 1, 0, 7, 124, 40, },
++      { 0, 1, 0, 7, 128, 46, },
++      { 2, 1, 0, 7, 128, 40, },
++      { 1, 1, 0, 7, 128, 40, },
++      { 0, 1, 0, 7, 132, 46, },
++      { 2, 1, 0, 7, 132, 40, },
++      { 1, 1, 0, 7, 132, 40, },
++      { 0, 1, 0, 7, 136, 46, },
++      { 2, 1, 0, 7, 136, 40, },
++      { 1, 1, 0, 7, 136, 40, },
++      { 0, 1, 0, 7, 140, 46, },
++      { 2, 1, 0, 7, 140, 40, },
++      { 1, 1, 0, 7, 140, 40, },
++      { 0, 1, 0, 7, 149, 46, },
++      { 2, 1, 0, 7, 149, 40, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 46, },
++      { 2, 1, 0, 7, 153, 40, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 46, },
++      { 2, 1, 0, 7, 157, 40, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 46, },
++      { 2, 1, 0, 7, 161, 40, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 46, },
++      { 2, 1, 0, 7, 165, 40, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 46, },
++      { 2, 1, 1, 2, 38, 40, },
++      { 1, 1, 1, 2, 38, 40, },
++      { 0, 1, 1, 2, 46, 46, },
++      { 2, 1, 1, 2, 46, 40, },
++      { 1, 1, 1, 2, 46, 40, },
++      { 0, 1, 1, 2, 54, 46, },
++      { 2, 1, 1, 2, 54, 40, },
++      { 1, 1, 1, 2, 54, 40, },
++      { 0, 1, 1, 2, 62, 46, },
++      { 2, 1, 1, 2, 62, 40, },
++      { 1, 1, 1, 2, 62, 40, },
++      { 0, 1, 1, 2, 102, 46, },
++      { 2, 1, 1, 2, 102, 40, },
++      { 1, 1, 1, 2, 102, 40, },
++      { 0, 1, 1, 2, 110, 46, },
++      { 2, 1, 1, 2, 110, 40, },
++      { 1, 1, 1, 2, 110, 40, },
++      { 0, 1, 1, 2, 118, 46, },
++      { 2, 1, 1, 2, 118, 40, },
++      { 1, 1, 1, 2, 118, 40, },
++      { 0, 1, 1, 2, 126, 46, },
++      { 2, 1, 1, 2, 126, 40, },
++      { 1, 1, 1, 2, 126, 40, },
++      { 0, 1, 1, 2, 134, 46, },
++      { 2, 1, 1, 2, 134, 40, },
++      { 1, 1, 1, 2, 134, 40, },
++      { 0, 1, 1, 2, 151, 46, },
++      { 2, 1, 1, 2, 151, 40, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 46, },
++      { 2, 1, 1, 2, 159, 40, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 46, },
++      { 2, 1, 1, 3, 38, 40, },
++      { 1, 1, 1, 3, 38, 40, },
++      { 0, 1, 1, 3, 46, 46, },
++      { 2, 1, 1, 3, 46, 40, },
++      { 1, 1, 1, 3, 46, 40, },
++      { 0, 1, 1, 3, 54, 46, },
++      { 2, 1, 1, 3, 54, 40, },
++      { 1, 1, 1, 3, 54, 40, },
++      { 0, 1, 1, 3, 62, 46, },
++      { 2, 1, 1, 3, 62, 40, },
++      { 1, 1, 1, 3, 62, 40, },
++      { 0, 1, 1, 3, 102, 46, },
++      { 2, 1, 1, 3, 102, 40, },
++      { 1, 1, 1, 3, 102, 40, },
++      { 0, 1, 1, 3, 110, 46, },
++      { 2, 1, 1, 3, 110, 40, },
++      { 1, 1, 1, 3, 110, 40, },
++      { 0, 1, 1, 3, 118, 46, },
++      { 2, 1, 1, 3, 118, 40, },
++      { 1, 1, 1, 3, 118, 40, },
++      { 0, 1, 1, 3, 126, 46, },
++      { 2, 1, 1, 3, 126, 40, },
++      { 1, 1, 1, 3, 126, 40, },
++      { 0, 1, 1, 3, 134, 46, },
++      { 2, 1, 1, 3, 134, 40, },
++      { 1, 1, 1, 3, 134, 40, },
++      { 0, 1, 1, 3, 151, 46, },
++      { 2, 1, 1, 3, 151, 40, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 46, },
++      { 2, 1, 1, 3, 159, 40, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 46, },
++      { 2, 1, 1, 6, 38, 40, },
++      { 1, 1, 1, 6, 38, 40, },
++      { 0, 1, 1, 6, 46, 46, },
++      { 2, 1, 1, 6, 46, 40, },
++      { 1, 1, 1, 6, 46, 40, },
++      { 0, 1, 1, 6, 54, 46, },
++      { 2, 1, 1, 6, 54, 40, },
++      { 1, 1, 1, 6, 54, 40, },
++      { 0, 1, 1, 6, 62, 46, },
++      { 2, 1, 1, 6, 62, 40, },
++      { 1, 1, 1, 6, 62, 40, },
++      { 0, 1, 1, 6, 102, 46, },
++      { 2, 1, 1, 6, 102, 40, },
++      { 1, 1, 1, 6, 102, 40, },
++      { 0, 1, 1, 6, 110, 46, },
++      { 2, 1, 1, 6, 110, 40, },
++      { 1, 1, 1, 6, 110, 40, },
++      { 0, 1, 1, 6, 118, 46, },
++      { 2, 1, 1, 6, 118, 40, },
++      { 1, 1, 1, 6, 118, 40, },
++      { 0, 1, 1, 6, 126, 46, },
++      { 2, 1, 1, 6, 126, 40, },
++      { 1, 1, 1, 6, 126, 40, },
++      { 0, 1, 1, 6, 134, 46, },
++      { 2, 1, 1, 6, 134, 40, },
++      { 1, 1, 1, 6, 134, 40, },
++      { 0, 1, 1, 6, 151, 46, },
++      { 2, 1, 1, 6, 151, 40, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 46, },
++      { 2, 1, 1, 6, 159, 40, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 46, },
++      { 2, 1, 1, 7, 38, 40, },
++      { 1, 1, 1, 7, 38, 40, },
++      { 0, 1, 1, 7, 46, 46, },
++      { 2, 1, 1, 7, 46, 40, },
++      { 1, 1, 1, 7, 46, 40, },
++      { 0, 1, 1, 7, 54, 46, },
++      { 2, 1, 1, 7, 54, 40, },
++      { 1, 1, 1, 7, 54, 40, },
++      { 0, 1, 1, 7, 62, 46, },
++      { 2, 1, 1, 7, 62, 40, },
++      { 1, 1, 1, 7, 62, 40, },
++      { 0, 1, 1, 7, 102, 46, },
++      { 2, 1, 1, 7, 102, 40, },
++      { 1, 1, 1, 7, 102, 40, },
++      { 0, 1, 1, 7, 110, 46, },
++      { 2, 1, 1, 7, 110, 40, },
++      { 1, 1, 1, 7, 110, 40, },
++      { 0, 1, 1, 7, 118, 46, },
++      { 2, 1, 1, 7, 118, 40, },
++      { 1, 1, 1, 7, 118, 40, },
++      { 0, 1, 1, 7, 126, 46, },
++      { 2, 1, 1, 7, 126, 40, },
++      { 1, 1, 1, 7, 126, 40, },
++      { 0, 1, 1, 7, 134, 46, },
++      { 2, 1, 1, 7, 134, 40, },
++      { 1, 1, 1, 7, 134, 40, },
++      { 0, 1, 1, 7, 151, 46, },
++      { 2, 1, 1, 7, 151, 40, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 46, },
++      { 2, 1, 1, 7, 159, 40, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 46, },
++      { 2, 1, 2, 4, 42, 40, },
++      { 1, 1, 2, 4, 42, 40, },
++      { 0, 1, 2, 4, 58, 46, },
++      { 2, 1, 2, 4, 58, 40, },
++      { 1, 1, 2, 4, 58, 40, },
++      { 0, 1, 2, 4, 106, 46, },
++      { 2, 1, 2, 4, 106, 40, },
++      { 1, 1, 2, 4, 106, 40, },
++      { 0, 1, 2, 4, 122, 46, },
++      { 2, 1, 2, 4, 122, 40, },
++      { 1, 1, 2, 4, 122, 40, },
++      { 0, 1, 2, 4, 155, 46, },
++      { 2, 1, 2, 4, 155, 40, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 46, },
++      { 2, 1, 2, 5, 42, 40, },
++      { 1, 1, 2, 5, 42, 40, },
++      { 0, 1, 2, 5, 58, 46, },
++      { 2, 1, 2, 5, 58, 40, },
++      { 1, 1, 2, 5, 58, 40, },
++      { 0, 1, 2, 5, 106, 46, },
++      { 2, 1, 2, 5, 106, 40, },
++      { 1, 1, 2, 5, 106, 40, },
++      { 0, 1, 2, 5, 122, 46, },
++      { 2, 1, 2, 5, 122, 40, },
++      { 1, 1, 2, 5, 122, 40, },
++      { 0, 1, 2, 5, 155, 46, },
++      { 2, 1, 2, 5, 155, 40, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 46, },
++      { 2, 1, 2, 8, 42, 40, },
++      { 1, 1, 2, 8, 42, 40, },
++      { 0, 1, 2, 8, 58, 46, },
++      { 2, 1, 2, 8, 58, 40, },
++      { 1, 1, 2, 8, 58, 40, },
++      { 0, 1, 2, 8, 106, 46, },
++      { 2, 1, 2, 8, 106, 40, },
++      { 1, 1, 2, 8, 106, 40, },
++      { 0, 1, 2, 8, 122, 46, },
++      { 2, 1, 2, 8, 122, 40, },
++      { 1, 1, 2, 8, 122, 40, },
++      { 0, 1, 2, 8, 155, 46, },
++      { 2, 1, 2, 8, 155, 40, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 46, },
++      { 2, 1, 2, 9, 42, 40, },
++      { 1, 1, 2, 9, 42, 40, },
++      { 0, 1, 2, 9, 58, 46, },
++      { 2, 1, 2, 9, 58, 40, },
++      { 1, 1, 2, 9, 58, 40, },
++      { 0, 1, 2, 9, 106, 46, },
++      { 2, 1, 2, 9, 106, 40, },
++      { 1, 1, 2, 9, 106, 40, },
++      { 0, 1, 2, 9, 122, 46, },
++      { 2, 1, 2, 9, 122, 40, },
++      { 1, 1, 2, 9, 122, 40, },
++      { 0, 1, 2, 9, 155, 46, },
++      { 2, 1, 2, 9, 155, 40, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type5);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type7[] = {
++      { 0, 0, 0, 0, 1, 44, },
++      { 2, 0, 0, 0, 1, 32, },
++      { 1, 0, 0, 0, 1, 32, },
++      { 0, 0, 0, 0, 2, 52, },
++      { 2, 0, 0, 0, 2, 32, },
++      { 1, 0, 0, 0, 2, 32, },
++      { 0, 0, 0, 0, 3, 52, },
++      { 2, 0, 0, 0, 3, 32, },
++      { 1, 0, 0, 0, 3, 32, },
++      { 0, 0, 0, 0, 4, 52, },
++      { 2, 0, 0, 0, 4, 32, },
++      { 1, 0, 0, 0, 4, 32, },
++      { 0, 0, 0, 0, 5, 52, },
++      { 2, 0, 0, 0, 5, 32, },
++      { 1, 0, 0, 0, 5, 32, },
++      { 0, 0, 0, 0, 6, 52, },
++      { 2, 0, 0, 0, 6, 32, },
++      { 1, 0, 0, 0, 6, 32, },
++      { 0, 0, 0, 0, 7, 52, },
++      { 2, 0, 0, 0, 7, 32, },
++      { 1, 0, 0, 0, 7, 32, },
++      { 0, 0, 0, 0, 8, 52, },
++      { 2, 0, 0, 0, 8, 32, },
++      { 1, 0, 0, 0, 8, 32, },
++      { 0, 0, 0, 0, 9, 52, },
++      { 2, 0, 0, 0, 9, 32, },
++      { 1, 0, 0, 0, 9, 32, },
++      { 0, 0, 0, 0, 10, 52, },
++      { 2, 0, 0, 0, 10, 32, },
++      { 1, 0, 0, 0, 10, 32, },
++      { 0, 0, 0, 0, 11, 44, },
++      { 2, 0, 0, 0, 11, 32, },
++      { 1, 0, 0, 0, 11, 32, },
++      { 0, 0, 0, 0, 12, 63, },
++      { 2, 0, 0, 0, 12, 32, },
++      { 1, 0, 0, 0, 12, 32, },
++      { 0, 0, 0, 0, 13, 63, },
++      { 2, 0, 0, 0, 13, 32, },
++      { 1, 0, 0, 0, 13, 32, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 32, },
++      { 0, 0, 0, 1, 1, 38, },
++      { 2, 0, 0, 1, 1, 32, },
++      { 1, 0, 0, 1, 1, 32, },
++      { 0, 0, 0, 1, 2, 46, },
++      { 2, 0, 0, 1, 2, 32, },
++      { 1, 0, 0, 1, 2, 32, },
++      { 0, 0, 0, 1, 3, 46, },
++      { 2, 0, 0, 1, 3, 32, },
++      { 1, 0, 0, 1, 3, 32, },
++      { 0, 0, 0, 1, 4, 46, },
++      { 2, 0, 0, 1, 4, 32, },
++      { 1, 0, 0, 1, 4, 32, },
++      { 0, 0, 0, 1, 5, 46, },
++      { 2, 0, 0, 1, 5, 32, },
++      { 1, 0, 0, 1, 5, 32, },
++      { 0, 0, 0, 1, 6, 46, },
++      { 2, 0, 0, 1, 6, 32, },
++      { 1, 0, 0, 1, 6, 32, },
++      { 0, 0, 0, 1, 7, 46, },
++      { 2, 0, 0, 1, 7, 32, },
++      { 1, 0, 0, 1, 7, 32, },
++      { 0, 0, 0, 1, 8, 46, },
++      { 2, 0, 0, 1, 8, 32, },
++      { 1, 0, 0, 1, 8, 32, },
++      { 0, 0, 0, 1, 9, 46, },
++      { 2, 0, 0, 1, 9, 32, },
++      { 1, 0, 0, 1, 9, 32, },
++      { 0, 0, 0, 1, 10, 46, },
++      { 2, 0, 0, 1, 10, 32, },
++      { 1, 0, 0, 1, 10, 32, },
++      { 0, 0, 0, 1, 11, 38, },
++      { 2, 0, 0, 1, 11, 32, },
++      { 1, 0, 0, 1, 11, 32, },
++      { 0, 0, 0, 1, 12, 63, },
++      { 2, 0, 0, 1, 12, 32, },
++      { 1, 0, 0, 1, 12, 32, },
++      { 0, 0, 0, 1, 13, 63, },
++      { 2, 0, 0, 1, 13, 32, },
++      { 1, 0, 0, 1, 13, 32, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 63, },
++      { 0, 0, 0, 2, 1, 34, },
++      { 2, 0, 0, 2, 1, 32, },
++      { 1, 0, 0, 2, 1, 32, },
++      { 0, 0, 0, 2, 2, 46, },
++      { 2, 0, 0, 2, 2, 32, },
++      { 1, 0, 0, 2, 2, 32, },
++      { 0, 0, 0, 2, 3, 46, },
++      { 2, 0, 0, 2, 3, 32, },
++      { 1, 0, 0, 2, 3, 32, },
++      { 0, 0, 0, 2, 4, 46, },
++      { 2, 0, 0, 2, 4, 32, },
++      { 1, 0, 0, 2, 4, 32, },
++      { 0, 0, 0, 2, 5, 46, },
++      { 2, 0, 0, 2, 5, 32, },
++      { 1, 0, 0, 2, 5, 32, },
++      { 0, 0, 0, 2, 6, 46, },
++      { 2, 0, 0, 2, 6, 32, },
++      { 1, 0, 0, 2, 6, 32, },
++      { 0, 0, 0, 2, 7, 46, },
++      { 2, 0, 0, 2, 7, 32, },
++      { 1, 0, 0, 2, 7, 32, },
++      { 0, 0, 0, 2, 8, 46, },
++      { 2, 0, 0, 2, 8, 32, },
++      { 1, 0, 0, 2, 8, 32, },
++      { 0, 0, 0, 2, 9, 46, },
++      { 2, 0, 0, 2, 9, 32, },
++      { 1, 0, 0, 2, 9, 32, },
++      { 0, 0, 0, 2, 10, 46, },
++      { 2, 0, 0, 2, 10, 32, },
++      { 1, 0, 0, 2, 10, 32, },
++      { 0, 0, 0, 2, 11, 34, },
++      { 2, 0, 0, 2, 11, 32, },
++      { 1, 0, 0, 2, 11, 32, },
++      { 0, 0, 0, 2, 12, 63, },
++      { 2, 0, 0, 2, 12, 32, },
++      { 1, 0, 0, 2, 12, 32, },
++      { 0, 0, 0, 2, 13, 63, },
++      { 2, 0, 0, 2, 13, 32, },
++      { 1, 0, 0, 2, 13, 32, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 63, },
++      { 0, 0, 0, 3, 1, 32, },
++      { 2, 0, 0, 3, 1, 30, },
++      { 1, 0, 0, 3, 1, 30, },
++      { 0, 0, 0, 3, 2, 44, },
++      { 2, 0, 0, 3, 2, 30, },
++      { 1, 0, 0, 3, 2, 30, },
++      { 0, 0, 0, 3, 3, 44, },
++      { 2, 0, 0, 3, 3, 30, },
++      { 1, 0, 0, 3, 3, 30, },
++      { 0, 0, 0, 3, 4, 44, },
++      { 2, 0, 0, 3, 4, 30, },
++      { 1, 0, 0, 3, 4, 30, },
++      { 0, 0, 0, 3, 5, 44, },
++      { 2, 0, 0, 3, 5, 30, },
++      { 1, 0, 0, 3, 5, 30, },
++      { 0, 0, 0, 3, 6, 44, },
++      { 2, 0, 0, 3, 6, 30, },
++      { 1, 0, 0, 3, 6, 30, },
++      { 0, 0, 0, 3, 7, 44, },
++      { 2, 0, 0, 3, 7, 30, },
++      { 1, 0, 0, 3, 7, 30, },
++      { 0, 0, 0, 3, 8, 44, },
++      { 2, 0, 0, 3, 8, 30, },
++      { 1, 0, 0, 3, 8, 30, },
++      { 0, 0, 0, 3, 9, 44, },
++      { 2, 0, 0, 3, 9, 30, },
++      { 1, 0, 0, 3, 9, 30, },
++      { 0, 0, 0, 3, 10, 44, },
++      { 2, 0, 0, 3, 10, 30, },
++      { 1, 0, 0, 3, 10, 30, },
++      { 0, 0, 0, 3, 11, 32, },
++      { 2, 0, 0, 3, 11, 30, },
++      { 1, 0, 0, 3, 11, 30, },
++      { 0, 0, 0, 3, 12, 63, },
++      { 2, 0, 0, 3, 12, 30, },
++      { 1, 0, 0, 3, 12, 30, },
++      { 0, 0, 0, 3, 13, 63, },
++      { 2, 0, 0, 3, 13, 30, },
++      { 1, 0, 0, 3, 13, 30, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 63, },
++      { 0, 0, 0, 6, 1, 30, },
++      { 2, 0, 0, 6, 1, 28, },
++      { 1, 0, 0, 6, 1, 28, },
++      { 0, 0, 0, 6, 2, 42, },
++      { 2, 0, 0, 6, 2, 28, },
++      { 1, 0, 0, 6, 2, 28, },
++      { 0, 0, 0, 6, 3, 42, },
++      { 2, 0, 0, 6, 3, 28, },
++      { 1, 0, 0, 6, 3, 28, },
++      { 0, 0, 0, 6, 4, 42, },
++      { 2, 0, 0, 6, 4, 28, },
++      { 1, 0, 0, 6, 4, 28, },
++      { 0, 0, 0, 6, 5, 42, },
++      { 2, 0, 0, 6, 5, 28, },
++      { 1, 0, 0, 6, 5, 28, },
++      { 0, 0, 0, 6, 6, 42, },
++      { 2, 0, 0, 6, 6, 28, },
++      { 1, 0, 0, 6, 6, 28, },
++      { 0, 0, 0, 6, 7, 42, },
++      { 2, 0, 0, 6, 7, 28, },
++      { 1, 0, 0, 6, 7, 28, },
++      { 0, 0, 0, 6, 8, 42, },
++      { 2, 0, 0, 6, 8, 28, },
++      { 1, 0, 0, 6, 8, 28, },
++      { 0, 0, 0, 6, 9, 42, },
++      { 2, 0, 0, 6, 9, 28, },
++      { 1, 0, 0, 6, 9, 28, },
++      { 0, 0, 0, 6, 10, 42, },
++      { 2, 0, 0, 6, 10, 28, },
++      { 1, 0, 0, 6, 10, 28, },
++      { 0, 0, 0, 6, 11, 30, },
++      { 2, 0, 0, 6, 11, 28, },
++      { 1, 0, 0, 6, 11, 28, },
++      { 0, 0, 0, 6, 12, 63, },
++      { 2, 0, 0, 6, 12, 28, },
++      { 1, 0, 0, 6, 12, 28, },
++      { 0, 0, 0, 6, 13, 63, },
++      { 2, 0, 0, 6, 13, 28, },
++      { 1, 0, 0, 6, 13, 28, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 63, },
++      { 0, 0, 0, 7, 1, 28, },
++      { 2, 0, 0, 7, 1, 26, },
++      { 1, 0, 0, 7, 1, 26, },
++      { 0, 0, 0, 7, 2, 40, },
++      { 2, 0, 0, 7, 2, 26, },
++      { 1, 0, 0, 7, 2, 26, },
++      { 0, 0, 0, 7, 3, 40, },
++      { 2, 0, 0, 7, 3, 26, },
++      { 1, 0, 0, 7, 3, 26, },
++      { 0, 0, 0, 7, 4, 40, },
++      { 2, 0, 0, 7, 4, 26, },
++      { 1, 0, 0, 7, 4, 26, },
++      { 0, 0, 0, 7, 5, 40, },
++      { 2, 0, 0, 7, 5, 26, },
++      { 1, 0, 0, 7, 5, 26, },
++      { 0, 0, 0, 7, 6, 40, },
++      { 2, 0, 0, 7, 6, 26, },
++      { 1, 0, 0, 7, 6, 26, },
++      { 0, 0, 0, 7, 7, 40, },
++      { 2, 0, 0, 7, 7, 26, },
++      { 1, 0, 0, 7, 7, 26, },
++      { 0, 0, 0, 7, 8, 40, },
++      { 2, 0, 0, 7, 8, 26, },
++      { 1, 0, 0, 7, 8, 26, },
++      { 0, 0, 0, 7, 9, 40, },
++      { 2, 0, 0, 7, 9, 26, },
++      { 1, 0, 0, 7, 9, 26, },
++      { 0, 0, 0, 7, 10, 40, },
++      { 2, 0, 0, 7, 10, 26, },
++      { 1, 0, 0, 7, 10, 26, },
++      { 0, 0, 0, 7, 11, 28, },
++      { 2, 0, 0, 7, 11, 26, },
++      { 1, 0, 0, 7, 11, 26, },
++      { 0, 0, 0, 7, 12, 63, },
++      { 2, 0, 0, 7, 12, 26, },
++      { 1, 0, 0, 7, 12, 26, },
++      { 0, 0, 0, 7, 13, 63, },
++      { 2, 0, 0, 7, 13, 26, },
++      { 1, 0, 0, 7, 13, 26, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 63, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 36, },
++      { 2, 0, 1, 2, 3, 32, },
++      { 1, 0, 1, 2, 3, 32, },
++      { 0, 0, 1, 2, 4, 40, },
++      { 2, 0, 1, 2, 4, 32, },
++      { 1, 0, 1, 2, 4, 32, },
++      { 0, 0, 1, 2, 5, 40, },
++      { 2, 0, 1, 2, 5, 32, },
++      { 1, 0, 1, 2, 5, 32, },
++      { 0, 0, 1, 2, 6, 40, },
++      { 2, 0, 1, 2, 6, 32, },
++      { 1, 0, 1, 2, 6, 32, },
++      { 0, 0, 1, 2, 7, 40, },
++      { 2, 0, 1, 2, 7, 32, },
++      { 1, 0, 1, 2, 7, 32, },
++      { 0, 0, 1, 2, 8, 40, },
++      { 2, 0, 1, 2, 8, 32, },
++      { 1, 0, 1, 2, 8, 32, },
++      { 0, 0, 1, 2, 9, 40, },
++      { 2, 0, 1, 2, 9, 32, },
++      { 1, 0, 1, 2, 9, 32, },
++      { 0, 0, 1, 2, 10, 40, },
++      { 2, 0, 1, 2, 10, 32, },
++      { 1, 0, 1, 2, 10, 32, },
++      { 0, 0, 1, 2, 11, 34, },
++      { 2, 0, 1, 2, 11, 32, },
++      { 1, 0, 1, 2, 11, 32, },
++      { 0, 0, 1, 2, 12, 63, },
++      { 2, 0, 1, 2, 12, 32, },
++      { 1, 0, 1, 2, 12, 32, },
++      { 0, 0, 1, 2, 13, 63, },
++      { 2, 0, 1, 2, 13, 32, },
++      { 1, 0, 1, 2, 13, 32, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 34, },
++      { 2, 0, 1, 3, 3, 30, },
++      { 1, 0, 1, 3, 3, 30, },
++      { 0, 0, 1, 3, 4, 38, },
++      { 2, 0, 1, 3, 4, 30, },
++      { 1, 0, 1, 3, 4, 30, },
++      { 0, 0, 1, 3, 5, 38, },
++      { 2, 0, 1, 3, 5, 30, },
++      { 1, 0, 1, 3, 5, 30, },
++      { 0, 0, 1, 3, 6, 38, },
++      { 2, 0, 1, 3, 6, 30, },
++      { 1, 0, 1, 3, 6, 30, },
++      { 0, 0, 1, 3, 7, 38, },
++      { 2, 0, 1, 3, 7, 30, },
++      { 1, 0, 1, 3, 7, 30, },
++      { 0, 0, 1, 3, 8, 38, },
++      { 2, 0, 1, 3, 8, 30, },
++      { 1, 0, 1, 3, 8, 30, },
++      { 0, 0, 1, 3, 9, 38, },
++      { 2, 0, 1, 3, 9, 30, },
++      { 1, 0, 1, 3, 9, 30, },
++      { 0, 0, 1, 3, 10, 38, },
++      { 2, 0, 1, 3, 10, 30, },
++      { 1, 0, 1, 3, 10, 30, },
++      { 0, 0, 1, 3, 11, 32, },
++      { 2, 0, 1, 3, 11, 30, },
++      { 1, 0, 1, 3, 11, 30, },
++      { 0, 0, 1, 3, 12, 63, },
++      { 2, 0, 1, 3, 12, 30, },
++      { 1, 0, 1, 3, 12, 30, },
++      { 0, 0, 1, 3, 13, 63, },
++      { 2, 0, 1, 3, 13, 30, },
++      { 1, 0, 1, 3, 13, 30, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 32, },
++      { 2, 0, 1, 6, 3, 28, },
++      { 1, 0, 1, 6, 3, 28, },
++      { 0, 0, 1, 6, 4, 36, },
++      { 2, 0, 1, 6, 4, 28, },
++      { 1, 0, 1, 6, 4, 28, },
++      { 0, 0, 1, 6, 5, 36, },
++      { 2, 0, 1, 6, 5, 28, },
++      { 1, 0, 1, 6, 5, 28, },
++      { 0, 0, 1, 6, 6, 36, },
++      { 2, 0, 1, 6, 6, 28, },
++      { 1, 0, 1, 6, 6, 28, },
++      { 0, 0, 1, 6, 7, 36, },
++      { 2, 0, 1, 6, 7, 28, },
++      { 1, 0, 1, 6, 7, 28, },
++      { 0, 0, 1, 6, 8, 36, },
++      { 2, 0, 1, 6, 8, 28, },
++      { 1, 0, 1, 6, 8, 28, },
++      { 0, 0, 1, 6, 9, 36, },
++      { 2, 0, 1, 6, 9, 28, },
++      { 1, 0, 1, 6, 9, 28, },
++      { 0, 0, 1, 6, 10, 36, },
++      { 2, 0, 1, 6, 10, 28, },
++      { 1, 0, 1, 6, 10, 28, },
++      { 0, 0, 1, 6, 11, 30, },
++      { 2, 0, 1, 6, 11, 28, },
++      { 1, 0, 1, 6, 11, 28, },
++      { 0, 0, 1, 6, 12, 63, },
++      { 2, 0, 1, 6, 12, 28, },
++      { 1, 0, 1, 6, 12, 28, },
++      { 0, 0, 1, 6, 13, 63, },
++      { 2, 0, 1, 6, 13, 28, },
++      { 1, 0, 1, 6, 13, 28, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 32, },
++      { 2, 0, 1, 7, 3, 26, },
++      { 1, 0, 1, 7, 3, 26, },
++      { 0, 0, 1, 7, 4, 36, },
++      { 2, 0, 1, 7, 4, 26, },
++      { 1, 0, 1, 7, 4, 26, },
++      { 0, 0, 1, 7, 5, 36, },
++      { 2, 0, 1, 7, 5, 26, },
++      { 1, 0, 1, 7, 5, 26, },
++      { 0, 0, 1, 7, 6, 36, },
++      { 2, 0, 1, 7, 6, 26, },
++      { 1, 0, 1, 7, 6, 26, },
++      { 0, 0, 1, 7, 7, 36, },
++      { 2, 0, 1, 7, 7, 26, },
++      { 1, 0, 1, 7, 7, 26, },
++      { 0, 0, 1, 7, 8, 36, },
++      { 2, 0, 1, 7, 8, 26, },
++      { 1, 0, 1, 7, 8, 26, },
++      { 0, 0, 1, 7, 9, 36, },
++      { 2, 0, 1, 7, 9, 26, },
++      { 1, 0, 1, 7, 9, 26, },
++      { 0, 0, 1, 7, 10, 36, },
++      { 2, 0, 1, 7, 10, 26, },
++      { 1, 0, 1, 7, 10, 26, },
++      { 0, 0, 1, 7, 11, 30, },
++      { 2, 0, 1, 7, 11, 26, },
++      { 1, 0, 1, 7, 11, 26, },
++      { 0, 0, 1, 7, 12, 63, },
++      { 2, 0, 1, 7, 12, 26, },
++      { 1, 0, 1, 7, 12, 26, },
++      { 0, 0, 1, 7, 13, 63, },
++      { 2, 0, 1, 7, 13, 26, },
++      { 1, 0, 1, 7, 13, 26, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 38, },
++      { 2, 1, 0, 1, 36, 32, },
++      { 1, 1, 0, 1, 36, 32, },
++      { 0, 1, 0, 1, 40, 38, },
++      { 2, 1, 0, 1, 40, 32, },
++      { 1, 1, 0, 1, 40, 32, },
++      { 0, 1, 0, 1, 44, 38, },
++      { 2, 1, 0, 1, 44, 32, },
++      { 1, 1, 0, 1, 44, 32, },
++      { 0, 1, 0, 1, 48, 38, },
++      { 2, 1, 0, 1, 48, 32, },
++      { 1, 1, 0, 1, 48, 32, },
++      { 0, 1, 0, 1, 52, 38, },
++      { 2, 1, 0, 1, 52, 32, },
++      { 1, 1, 0, 1, 52, 32, },
++      { 0, 1, 0, 1, 56, 38, },
++      { 2, 1, 0, 1, 56, 32, },
++      { 1, 1, 0, 1, 56, 32, },
++      { 0, 1, 0, 1, 60, 38, },
++      { 2, 1, 0, 1, 60, 32, },
++      { 1, 1, 0, 1, 60, 32, },
++      { 0, 1, 0, 1, 64, 38, },
++      { 2, 1, 0, 1, 64, 32, },
++      { 1, 1, 0, 1, 64, 32, },
++      { 0, 1, 0, 1, 100, 36, },
++      { 2, 1, 0, 1, 100, 32, },
++      { 1, 1, 0, 1, 100, 32, },
++      { 0, 1, 0, 1, 104, 36, },
++      { 2, 1, 0, 1, 104, 32, },
++      { 1, 1, 0, 1, 104, 32, },
++      { 0, 1, 0, 1, 108, 36, },
++      { 2, 1, 0, 1, 108, 32, },
++      { 1, 1, 0, 1, 108, 32, },
++      { 0, 1, 0, 1, 112, 36, },
++      { 2, 1, 0, 1, 112, 32, },
++      { 1, 1, 0, 1, 112, 32, },
++      { 0, 1, 0, 1, 116, 36, },
++      { 2, 1, 0, 1, 116, 32, },
++      { 1, 1, 0, 1, 116, 32, },
++      { 0, 1, 0, 1, 120, 36, },
++      { 2, 1, 0, 1, 120, 32, },
++      { 1, 1, 0, 1, 120, 32, },
++      { 0, 1, 0, 1, 124, 36, },
++      { 2, 1, 0, 1, 124, 32, },
++      { 1, 1, 0, 1, 124, 32, },
++      { 0, 1, 0, 1, 128, 36, },
++      { 2, 1, 0, 1, 128, 32, },
++      { 1, 1, 0, 1, 128, 32, },
++      { 0, 1, 0, 1, 132, 36, },
++      { 2, 1, 0, 1, 132, 32, },
++      { 1, 1, 0, 1, 132, 32, },
++      { 0, 1, 0, 1, 136, 36, },
++      { 2, 1, 0, 1, 136, 32, },
++      { 1, 1, 0, 1, 136, 32, },
++      { 0, 1, 0, 1, 140, 36, },
++      { 2, 1, 0, 1, 140, 32, },
++      { 1, 1, 0, 1, 140, 32, },
++      { 0, 1, 0, 1, 149, 36, },
++      { 2, 1, 0, 1, 149, 32, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 36, },
++      { 2, 1, 0, 1, 153, 32, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 36, },
++      { 2, 1, 0, 1, 157, 32, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 36, },
++      { 2, 1, 0, 1, 161, 32, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 36, },
++      { 2, 1, 0, 1, 165, 32, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 36, },
++      { 2, 1, 0, 2, 36, 32, },
++      { 1, 1, 0, 2, 36, 32, },
++      { 0, 1, 0, 2, 40, 36, },
++      { 2, 1, 0, 2, 40, 32, },
++      { 1, 1, 0, 2, 40, 32, },
++      { 0, 1, 0, 2, 44, 36, },
++      { 2, 1, 0, 2, 44, 32, },
++      { 1, 1, 0, 2, 44, 32, },
++      { 0, 1, 0, 2, 48, 36, },
++      { 2, 1, 0, 2, 48, 32, },
++      { 1, 1, 0, 2, 48, 32, },
++      { 0, 1, 0, 2, 52, 36, },
++      { 2, 1, 0, 2, 52, 32, },
++      { 1, 1, 0, 2, 52, 32, },
++      { 0, 1, 0, 2, 56, 36, },
++      { 2, 1, 0, 2, 56, 32, },
++      { 1, 1, 0, 2, 56, 32, },
++      { 0, 1, 0, 2, 60, 36, },
++      { 2, 1, 0, 2, 60, 32, },
++      { 1, 1, 0, 2, 60, 32, },
++      { 0, 1, 0, 2, 64, 36, },
++      { 2, 1, 0, 2, 64, 32, },
++      { 1, 1, 0, 2, 64, 32, },
++      { 0, 1, 0, 2, 100, 36, },
++      { 2, 1, 0, 2, 100, 32, },
++      { 1, 1, 0, 2, 100, 32, },
++      { 0, 1, 0, 2, 104, 36, },
++      { 2, 1, 0, 2, 104, 32, },
++      { 1, 1, 0, 2, 104, 32, },
++      { 0, 1, 0, 2, 108, 36, },
++      { 2, 1, 0, 2, 108, 32, },
++      { 1, 1, 0, 2, 108, 32, },
++      { 0, 1, 0, 2, 112, 36, },
++      { 2, 1, 0, 2, 112, 32, },
++      { 1, 1, 0, 2, 112, 32, },
++      { 0, 1, 0, 2, 116, 36, },
++      { 2, 1, 0, 2, 116, 32, },
++      { 1, 1, 0, 2, 116, 32, },
++      { 0, 1, 0, 2, 120, 36, },
++      { 2, 1, 0, 2, 120, 32, },
++      { 1, 1, 0, 2, 120, 32, },
++      { 0, 1, 0, 2, 124, 36, },
++      { 2, 1, 0, 2, 124, 32, },
++      { 1, 1, 0, 2, 124, 32, },
++      { 0, 1, 0, 2, 128, 36, },
++      { 2, 1, 0, 2, 128, 32, },
++      { 1, 1, 0, 2, 128, 32, },
++      { 0, 1, 0, 2, 132, 36, },
++      { 2, 1, 0, 2, 132, 32, },
++      { 1, 1, 0, 2, 132, 32, },
++      { 0, 1, 0, 2, 136, 36, },
++      { 2, 1, 0, 2, 136, 32, },
++      { 1, 1, 0, 2, 136, 32, },
++      { 0, 1, 0, 2, 140, 34, },
++      { 2, 1, 0, 2, 140, 32, },
++      { 1, 1, 0, 2, 140, 32, },
++      { 0, 1, 0, 2, 149, 32, },
++      { 2, 1, 0, 2, 149, 32, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 38, },
++      { 2, 1, 0, 2, 153, 32, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 38, },
++      { 2, 1, 0, 2, 157, 32, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 38, },
++      { 2, 1, 0, 2, 161, 32, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 38, },
++      { 2, 1, 0, 2, 165, 32, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 34, },
++      { 2, 1, 0, 3, 36, 30, },
++      { 1, 1, 0, 3, 36, 30, },
++      { 0, 1, 0, 3, 40, 34, },
++      { 2, 1, 0, 3, 40, 30, },
++      { 1, 1, 0, 3, 40, 30, },
++      { 0, 1, 0, 3, 44, 34, },
++      { 2, 1, 0, 3, 44, 30, },
++      { 1, 1, 0, 3, 44, 30, },
++      { 0, 1, 0, 3, 48, 34, },
++      { 2, 1, 0, 3, 48, 30, },
++      { 1, 1, 0, 3, 48, 30, },
++      { 0, 1, 0, 3, 52, 34, },
++      { 2, 1, 0, 3, 52, 30, },
++      { 1, 1, 0, 3, 52, 30, },
++      { 0, 1, 0, 3, 56, 34, },
++      { 2, 1, 0, 3, 56, 30, },
++      { 1, 1, 0, 3, 56, 30, },
++      { 0, 1, 0, 3, 60, 34, },
++      { 2, 1, 0, 3, 60, 30, },
++      { 1, 1, 0, 3, 60, 30, },
++      { 0, 1, 0, 3, 64, 34, },
++      { 2, 1, 0, 3, 64, 30, },
++      { 1, 1, 0, 3, 64, 30, },
++      { 0, 1, 0, 3, 100, 34, },
++      { 2, 1, 0, 3, 100, 30, },
++      { 1, 1, 0, 3, 100, 30, },
++      { 0, 1, 0, 3, 104, 34, },
++      { 2, 1, 0, 3, 104, 30, },
++      { 1, 1, 0, 3, 104, 30, },
++      { 0, 1, 0, 3, 108, 34, },
++      { 2, 1, 0, 3, 108, 30, },
++      { 1, 1, 0, 3, 108, 30, },
++      { 0, 1, 0, 3, 112, 34, },
++      { 2, 1, 0, 3, 112, 30, },
++      { 1, 1, 0, 3, 112, 30, },
++      { 0, 1, 0, 3, 116, 34, },
++      { 2, 1, 0, 3, 116, 30, },
++      { 1, 1, 0, 3, 116, 30, },
++      { 0, 1, 0, 3, 120, 34, },
++      { 2, 1, 0, 3, 120, 30, },
++      { 1, 1, 0, 3, 120, 30, },
++      { 0, 1, 0, 3, 124, 34, },
++      { 2, 1, 0, 3, 124, 30, },
++      { 1, 1, 0, 3, 124, 30, },
++      { 0, 1, 0, 3, 128, 34, },
++      { 2, 1, 0, 3, 128, 30, },
++      { 1, 1, 0, 3, 128, 30, },
++      { 0, 1, 0, 3, 132, 34, },
++      { 2, 1, 0, 3, 132, 30, },
++      { 1, 1, 0, 3, 132, 30, },
++      { 0, 1, 0, 3, 136, 34, },
++      { 2, 1, 0, 3, 136, 30, },
++      { 1, 1, 0, 3, 136, 30, },
++      { 0, 1, 0, 3, 140, 32, },
++      { 2, 1, 0, 3, 140, 30, },
++      { 1, 1, 0, 3, 140, 30, },
++      { 0, 1, 0, 3, 149, 30, },
++      { 2, 1, 0, 3, 149, 30, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 36, },
++      { 2, 1, 0, 3, 153, 30, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 36, },
++      { 2, 1, 0, 3, 157, 30, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 36, },
++      { 2, 1, 0, 3, 161, 30, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 36, },
++      { 2, 1, 0, 3, 165, 30, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 32, },
++      { 2, 1, 0, 6, 36, 28, },
++      { 1, 1, 0, 6, 36, 28, },
++      { 0, 1, 0, 6, 40, 32, },
++      { 2, 1, 0, 6, 40, 28, },
++      { 1, 1, 0, 6, 40, 28, },
++      { 0, 1, 0, 6, 44, 32, },
++      { 2, 1, 0, 6, 44, 28, },
++      { 1, 1, 0, 6, 44, 28, },
++      { 0, 1, 0, 6, 48, 32, },
++      { 2, 1, 0, 6, 48, 28, },
++      { 1, 1, 0, 6, 48, 28, },
++      { 0, 1, 0, 6, 52, 32, },
++      { 2, 1, 0, 6, 52, 28, },
++      { 1, 1, 0, 6, 52, 28, },
++      { 0, 1, 0, 6, 56, 32, },
++      { 2, 1, 0, 6, 56, 28, },
++      { 1, 1, 0, 6, 56, 28, },
++      { 0, 1, 0, 6, 60, 32, },
++      { 2, 1, 0, 6, 60, 28, },
++      { 1, 1, 0, 6, 60, 28, },
++      { 0, 1, 0, 6, 64, 32, },
++      { 2, 1, 0, 6, 64, 28, },
++      { 1, 1, 0, 6, 64, 28, },
++      { 0, 1, 0, 6, 100, 32, },
++      { 2, 1, 0, 6, 100, 28, },
++      { 1, 1, 0, 6, 100, 28, },
++      { 0, 1, 0, 6, 104, 32, },
++      { 2, 1, 0, 6, 104, 28, },
++      { 1, 1, 0, 6, 104, 28, },
++      { 0, 1, 0, 6, 108, 32, },
++      { 2, 1, 0, 6, 108, 28, },
++      { 1, 1, 0, 6, 108, 28, },
++      { 0, 1, 0, 6, 112, 32, },
++      { 2, 1, 0, 6, 112, 28, },
++      { 1, 1, 0, 6, 112, 28, },
++      { 0, 1, 0, 6, 116, 32, },
++      { 2, 1, 0, 6, 116, 28, },
++      { 1, 1, 0, 6, 116, 28, },
++      { 0, 1, 0, 6, 120, 32, },
++      { 2, 1, 0, 6, 120, 28, },
++      { 1, 1, 0, 6, 120, 28, },
++      { 0, 1, 0, 6, 124, 32, },
++      { 2, 1, 0, 6, 124, 28, },
++      { 1, 1, 0, 6, 124, 28, },
++      { 0, 1, 0, 6, 128, 32, },
++      { 2, 1, 0, 6, 128, 28, },
++      { 1, 1, 0, 6, 128, 28, },
++      { 0, 1, 0, 6, 132, 32, },
++      { 2, 1, 0, 6, 132, 28, },
++      { 1, 1, 0, 6, 132, 28, },
++      { 0, 1, 0, 6, 136, 32, },
++      { 2, 1, 0, 6, 136, 28, },
++      { 1, 1, 0, 6, 136, 28, },
++      { 0, 1, 0, 6, 140, 30, },
++      { 2, 1, 0, 6, 140, 28, },
++      { 1, 1, 0, 6, 140, 28, },
++      { 0, 1, 0, 6, 149, 28, },
++      { 2, 1, 0, 6, 149, 28, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 34, },
++      { 2, 1, 0, 6, 153, 28, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 34, },
++      { 2, 1, 0, 6, 157, 28, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 34, },
++      { 2, 1, 0, 6, 161, 28, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 34, },
++      { 2, 1, 0, 6, 165, 28, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 30, },
++      { 2, 1, 0, 7, 36, 26, },
++      { 1, 1, 0, 7, 36, 26, },
++      { 0, 1, 0, 7, 40, 30, },
++      { 2, 1, 0, 7, 40, 26, },
++      { 1, 1, 0, 7, 40, 26, },
++      { 0, 1, 0, 7, 44, 30, },
++      { 2, 1, 0, 7, 44, 26, },
++      { 1, 1, 0, 7, 44, 26, },
++      { 0, 1, 0, 7, 48, 30, },
++      { 2, 1, 0, 7, 48, 26, },
++      { 1, 1, 0, 7, 48, 26, },
++      { 0, 1, 0, 7, 52, 30, },
++      { 2, 1, 0, 7, 52, 26, },
++      { 1, 1, 0, 7, 52, 26, },
++      { 0, 1, 0, 7, 56, 30, },
++      { 2, 1, 0, 7, 56, 26, },
++      { 1, 1, 0, 7, 56, 26, },
++      { 0, 1, 0, 7, 60, 30, },
++      { 2, 1, 0, 7, 60, 26, },
++      { 1, 1, 0, 7, 60, 26, },
++      { 0, 1, 0, 7, 64, 30, },
++      { 2, 1, 0, 7, 64, 26, },
++      { 1, 1, 0, 7, 64, 26, },
++      { 0, 1, 0, 7, 100, 30, },
++      { 2, 1, 0, 7, 100, 26, },
++      { 1, 1, 0, 7, 100, 26, },
++      { 0, 1, 0, 7, 104, 30, },
++      { 2, 1, 0, 7, 104, 26, },
++      { 1, 1, 0, 7, 104, 26, },
++      { 0, 1, 0, 7, 108, 30, },
++      { 2, 1, 0, 7, 108, 26, },
++      { 1, 1, 0, 7, 108, 26, },
++      { 0, 1, 0, 7, 112, 30, },
++      { 2, 1, 0, 7, 112, 26, },
++      { 1, 1, 0, 7, 112, 26, },
++      { 0, 1, 0, 7, 116, 30, },
++      { 2, 1, 0, 7, 116, 26, },
++      { 1, 1, 0, 7, 116, 26, },
++      { 0, 1, 0, 7, 120, 30, },
++      { 2, 1, 0, 7, 120, 26, },
++      { 1, 1, 0, 7, 120, 26, },
++      { 0, 1, 0, 7, 124, 30, },
++      { 2, 1, 0, 7, 124, 26, },
++      { 1, 1, 0, 7, 124, 26, },
++      { 0, 1, 0, 7, 128, 30, },
++      { 2, 1, 0, 7, 128, 26, },
++      { 1, 1, 0, 7, 128, 26, },
++      { 0, 1, 0, 7, 132, 30, },
++      { 2, 1, 0, 7, 132, 26, },
++      { 1, 1, 0, 7, 132, 26, },
++      { 0, 1, 0, 7, 136, 30, },
++      { 2, 1, 0, 7, 136, 26, },
++      { 1, 1, 0, 7, 136, 26, },
++      { 0, 1, 0, 7, 140, 28, },
++      { 2, 1, 0, 7, 140, 26, },
++      { 1, 1, 0, 7, 140, 26, },
++      { 0, 1, 0, 7, 149, 26, },
++      { 2, 1, 0, 7, 149, 26, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 32, },
++      { 2, 1, 0, 7, 153, 26, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 32, },
++      { 2, 1, 0, 7, 157, 26, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 32, },
++      { 2, 1, 0, 7, 161, 26, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 32, },
++      { 2, 1, 0, 7, 165, 26, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 32, },
++      { 2, 1, 1, 2, 38, 32, },
++      { 1, 1, 1, 2, 38, 32, },
++      { 0, 1, 1, 2, 46, 32, },
++      { 2, 1, 1, 2, 46, 32, },
++      { 1, 1, 1, 2, 46, 32, },
++      { 0, 1, 1, 2, 54, 32, },
++      { 2, 1, 1, 2, 54, 32, },
++      { 1, 1, 1, 2, 54, 32, },
++      { 0, 1, 1, 2, 62, 30, },
++      { 2, 1, 1, 2, 62, 32, },
++      { 1, 1, 1, 2, 62, 32, },
++      { 0, 1, 1, 2, 102, 30, },
++      { 2, 1, 1, 2, 102, 32, },
++      { 1, 1, 1, 2, 102, 32, },
++      { 0, 1, 1, 2, 110, 38, },
++      { 2, 1, 1, 2, 110, 32, },
++      { 1, 1, 1, 2, 110, 32, },
++      { 0, 1, 1, 2, 118, 38, },
++      { 2, 1, 1, 2, 118, 32, },
++      { 1, 1, 1, 2, 118, 32, },
++      { 0, 1, 1, 2, 126, 38, },
++      { 2, 1, 1, 2, 126, 32, },
++      { 1, 1, 1, 2, 126, 32, },
++      { 0, 1, 1, 2, 134, 38, },
++      { 2, 1, 1, 2, 134, 32, },
++      { 1, 1, 1, 2, 134, 32, },
++      { 0, 1, 1, 2, 151, 32, },
++      { 2, 1, 1, 2, 151, 32, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 32, },
++      { 2, 1, 1, 2, 159, 32, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 30, },
++      { 2, 1, 1, 3, 38, 30, },
++      { 1, 1, 1, 3, 38, 30, },
++      { 0, 1, 1, 3, 46, 30, },
++      { 2, 1, 1, 3, 46, 30, },
++      { 1, 1, 1, 3, 46, 30, },
++      { 0, 1, 1, 3, 54, 30, },
++      { 2, 1, 1, 3, 54, 30, },
++      { 1, 1, 1, 3, 54, 30, },
++      { 0, 1, 1, 3, 62, 28, },
++      { 2, 1, 1, 3, 62, 30, },
++      { 1, 1, 1, 3, 62, 30, },
++      { 0, 1, 1, 3, 102, 28, },
++      { 2, 1, 1, 3, 102, 30, },
++      { 1, 1, 1, 3, 102, 30, },
++      { 0, 1, 1, 3, 110, 36, },
++      { 2, 1, 1, 3, 110, 30, },
++      { 1, 1, 1, 3, 110, 30, },
++      { 0, 1, 1, 3, 118, 36, },
++      { 2, 1, 1, 3, 118, 30, },
++      { 1, 1, 1, 3, 118, 30, },
++      { 0, 1, 1, 3, 126, 36, },
++      { 2, 1, 1, 3, 126, 30, },
++      { 1, 1, 1, 3, 126, 30, },
++      { 0, 1, 1, 3, 134, 36, },
++      { 2, 1, 1, 3, 134, 30, },
++      { 1, 1, 1, 3, 134, 30, },
++      { 0, 1, 1, 3, 151, 30, },
++      { 2, 1, 1, 3, 151, 30, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 30, },
++      { 2, 1, 1, 3, 159, 30, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 28, },
++      { 2, 1, 1, 6, 38, 28, },
++      { 1, 1, 1, 6, 38, 28, },
++      { 0, 1, 1, 6, 46, 28, },
++      { 2, 1, 1, 6, 46, 28, },
++      { 1, 1, 1, 6, 46, 28, },
++      { 0, 1, 1, 6, 54, 28, },
++      { 2, 1, 1, 6, 54, 28, },
++      { 1, 1, 1, 6, 54, 28, },
++      { 0, 1, 1, 6, 62, 26, },
++      { 2, 1, 1, 6, 62, 28, },
++      { 1, 1, 1, 6, 62, 28, },
++      { 0, 1, 1, 6, 102, 26, },
++      { 2, 1, 1, 6, 102, 28, },
++      { 1, 1, 1, 6, 102, 28, },
++      { 0, 1, 1, 6, 110, 34, },
++      { 2, 1, 1, 6, 110, 28, },
++      { 1, 1, 1, 6, 110, 28, },
++      { 0, 1, 1, 6, 118, 34, },
++      { 2, 1, 1, 6, 118, 28, },
++      { 1, 1, 1, 6, 118, 28, },
++      { 0, 1, 1, 6, 126, 34, },
++      { 2, 1, 1, 6, 126, 28, },
++      { 1, 1, 1, 6, 126, 28, },
++      { 0, 1, 1, 6, 134, 34, },
++      { 2, 1, 1, 6, 134, 28, },
++      { 1, 1, 1, 6, 134, 28, },
++      { 0, 1, 1, 6, 151, 28, },
++      { 2, 1, 1, 6, 151, 28, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 28, },
++      { 2, 1, 1, 6, 159, 28, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 26, },
++      { 2, 1, 1, 7, 38, 26, },
++      { 1, 1, 1, 7, 38, 26, },
++      { 0, 1, 1, 7, 46, 26, },
++      { 2, 1, 1, 7, 46, 26, },
++      { 1, 1, 1, 7, 46, 26, },
++      { 0, 1, 1, 7, 54, 26, },
++      { 2, 1, 1, 7, 54, 26, },
++      { 1, 1, 1, 7, 54, 26, },
++      { 0, 1, 1, 7, 62, 24, },
++      { 2, 1, 1, 7, 62, 26, },
++      { 1, 1, 1, 7, 62, 26, },
++      { 0, 1, 1, 7, 102, 24, },
++      { 2, 1, 1, 7, 102, 26, },
++      { 1, 1, 1, 7, 102, 26, },
++      { 0, 1, 1, 7, 110, 32, },
++      { 2, 1, 1, 7, 110, 26, },
++      { 1, 1, 1, 7, 110, 26, },
++      { 0, 1, 1, 7, 118, 32, },
++      { 2, 1, 1, 7, 118, 26, },
++      { 1, 1, 1, 7, 118, 26, },
++      { 0, 1, 1, 7, 126, 32, },
++      { 2, 1, 1, 7, 126, 26, },
++      { 1, 1, 1, 7, 126, 26, },
++      { 0, 1, 1, 7, 134, 32, },
++      { 2, 1, 1, 7, 134, 26, },
++      { 1, 1, 1, 7, 134, 26, },
++      { 0, 1, 1, 7, 151, 26, },
++      { 2, 1, 1, 7, 151, 26, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 26, },
++      { 2, 1, 1, 7, 159, 26, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 26, },
++      { 2, 1, 2, 4, 42, 32, },
++      { 1, 1, 2, 4, 42, 32, },
++      { 0, 1, 2, 4, 58, 26, },
++      { 2, 1, 2, 4, 58, 32, },
++      { 1, 1, 2, 4, 58, 32, },
++      { 0, 1, 2, 4, 106, 28, },
++      { 2, 1, 2, 4, 106, 32, },
++      { 1, 1, 2, 4, 106, 32, },
++      { 0, 1, 2, 4, 122, 28, },
++      { 2, 1, 2, 4, 122, 32, },
++      { 1, 1, 2, 4, 122, 32, },
++      { 0, 1, 2, 4, 155, 28, },
++      { 2, 1, 2, 4, 155, 32, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 24, },
++      { 2, 1, 2, 5, 42, 30, },
++      { 1, 1, 2, 5, 42, 30, },
++      { 0, 1, 2, 5, 58, 24, },
++      { 2, 1, 2, 5, 58, 30, },
++      { 1, 1, 2, 5, 58, 30, },
++      { 0, 1, 2, 5, 106, 26, },
++      { 2, 1, 2, 5, 106, 30, },
++      { 1, 1, 2, 5, 106, 30, },
++      { 0, 1, 2, 5, 122, 26, },
++      { 2, 1, 2, 5, 122, 30, },
++      { 1, 1, 2, 5, 122, 30, },
++      { 0, 1, 2, 5, 155, 26, },
++      { 2, 1, 2, 5, 155, 30, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 22, },
++      { 2, 1, 2, 8, 42, 28, },
++      { 1, 1, 2, 8, 42, 28, },
++      { 0, 1, 2, 8, 58, 22, },
++      { 2, 1, 2, 8, 58, 28, },
++      { 1, 1, 2, 8, 58, 28, },
++      { 0, 1, 2, 8, 106, 24, },
++      { 2, 1, 2, 8, 106, 28, },
++      { 1, 1, 2, 8, 106, 28, },
++      { 0, 1, 2, 8, 122, 24, },
++      { 2, 1, 2, 8, 122, 28, },
++      { 1, 1, 2, 8, 122, 28, },
++      { 0, 1, 2, 8, 155, 24, },
++      { 2, 1, 2, 8, 155, 28, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 20, },
++      { 2, 1, 2, 9, 42, 26, },
++      { 1, 1, 2, 9, 42, 26, },
++      { 0, 1, 2, 9, 58, 20, },
++      { 2, 1, 2, 9, 58, 26, },
++      { 1, 1, 2, 9, 58, 26, },
++      { 0, 1, 2, 9, 106, 22, },
++      { 2, 1, 2, 9, 106, 26, },
++      { 1, 1, 2, 9, 106, 26, },
++      { 0, 1, 2, 9, 122, 22, },
++      { 2, 1, 2, 9, 122, 26, },
++      { 1, 1, 2, 9, 122, 26, },
++      { 0, 1, 2, 9, 155, 22, },
++      { 2, 1, 2, 9, 155, 26, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type7);
++
++static const struct rtw_txpwr_lmt_cfg_pair rtw8814a_txpwr_lmt_type8[] = {
++      { 0, 0, 0, 0, 1, 46, },
++      { 2, 0, 0, 0, 1, 46, },
++      { 1, 0, 0, 0, 1, 46, },
++      { 0, 0, 0, 0, 2, 46, },
++      { 2, 0, 0, 0, 2, 46, },
++      { 1, 0, 0, 0, 2, 46, },
++      { 0, 0, 0, 0, 3, 46, },
++      { 2, 0, 0, 0, 3, 46, },
++      { 1, 0, 0, 0, 3, 46, },
++      { 0, 0, 0, 0, 4, 46, },
++      { 2, 0, 0, 0, 4, 46, },
++      { 1, 0, 0, 0, 4, 46, },
++      { 0, 0, 0, 0, 5, 46, },
++      { 2, 0, 0, 0, 5, 46, },
++      { 1, 0, 0, 0, 5, 46, },
++      { 0, 0, 0, 0, 6, 46, },
++      { 2, 0, 0, 0, 6, 46, },
++      { 1, 0, 0, 0, 6, 46, },
++      { 0, 0, 0, 0, 7, 46, },
++      { 2, 0, 0, 0, 7, 46, },
++      { 1, 0, 0, 0, 7, 46, },
++      { 0, 0, 0, 0, 8, 46, },
++      { 2, 0, 0, 0, 8, 46, },
++      { 1, 0, 0, 0, 8, 46, },
++      { 0, 0, 0, 0, 9, 46, },
++      { 2, 0, 0, 0, 9, 46, },
++      { 1, 0, 0, 0, 9, 46, },
++      { 0, 0, 0, 0, 10, 46, },
++      { 2, 0, 0, 0, 10, 46, },
++      { 1, 0, 0, 0, 10, 46, },
++      { 0, 0, 0, 0, 11, 46, },
++      { 2, 0, 0, 0, 11, 46, },
++      { 1, 0, 0, 0, 11, 46, },
++      { 0, 0, 0, 0, 12, 63, },
++      { 2, 0, 0, 0, 12, 46, },
++      { 1, 0, 0, 0, 12, 46, },
++      { 0, 0, 0, 0, 13, 63, },
++      { 2, 0, 0, 0, 13, 46, },
++      { 1, 0, 0, 0, 13, 46, },
++      { 0, 0, 0, 0, 14, 63, },
++      { 2, 0, 0, 0, 14, 63, },
++      { 1, 0, 0, 0, 14, 46, },
++      { 0, 0, 0, 1, 1, 46, },
++      { 2, 0, 0, 1, 1, 46, },
++      { 1, 0, 0, 1, 1, 46, },
++      { 0, 0, 0, 1, 2, 46, },
++      { 2, 0, 0, 1, 2, 46, },
++      { 1, 0, 0, 1, 2, 46, },
++      { 0, 0, 0, 1, 3, 46, },
++      { 2, 0, 0, 1, 3, 46, },
++      { 1, 0, 0, 1, 3, 46, },
++      { 0, 0, 0, 1, 4, 46, },
++      { 2, 0, 0, 1, 4, 46, },
++      { 1, 0, 0, 1, 4, 46, },
++      { 0, 0, 0, 1, 5, 46, },
++      { 2, 0, 0, 1, 5, 46, },
++      { 1, 0, 0, 1, 5, 46, },
++      { 0, 0, 0, 1, 6, 46, },
++      { 2, 0, 0, 1, 6, 46, },
++      { 1, 0, 0, 1, 6, 46, },
++      { 0, 0, 0, 1, 7, 46, },
++      { 2, 0, 0, 1, 7, 46, },
++      { 1, 0, 0, 1, 7, 46, },
++      { 0, 0, 0, 1, 8, 46, },
++      { 2, 0, 0, 1, 8, 46, },
++      { 1, 0, 0, 1, 8, 46, },
++      { 0, 0, 0, 1, 9, 46, },
++      { 2, 0, 0, 1, 9, 46, },
++      { 1, 0, 0, 1, 9, 46, },
++      { 0, 0, 0, 1, 10, 46, },
++      { 2, 0, 0, 1, 10, 46, },
++      { 1, 0, 0, 1, 10, 46, },
++      { 0, 0, 0, 1, 11, 46, },
++      { 2, 0, 0, 1, 11, 46, },
++      { 1, 0, 0, 1, 11, 46, },
++      { 0, 0, 0, 1, 12, 63, },
++      { 2, 0, 0, 1, 12, 46, },
++      { 1, 0, 0, 1, 12, 46, },
++      { 0, 0, 0, 1, 13, 63, },
++      { 2, 0, 0, 1, 13, 46, },
++      { 1, 0, 0, 1, 13, 46, },
++      { 0, 0, 0, 1, 14, 63, },
++      { 2, 0, 0, 1, 14, 63, },
++      { 1, 0, 0, 1, 14, 46, },
++      { 0, 0, 0, 2, 1, 46, },
++      { 2, 0, 0, 2, 1, 46, },
++      { 1, 0, 0, 2, 1, 46, },
++      { 0, 0, 0, 2, 2, 46, },
++      { 2, 0, 0, 2, 2, 46, },
++      { 1, 0, 0, 2, 2, 46, },
++      { 0, 0, 0, 2, 3, 46, },
++      { 2, 0, 0, 2, 3, 46, },
++      { 1, 0, 0, 2, 3, 46, },
++      { 0, 0, 0, 2, 4, 46, },
++      { 2, 0, 0, 2, 4, 46, },
++      { 1, 0, 0, 2, 4, 46, },
++      { 0, 0, 0, 2, 5, 46, },
++      { 2, 0, 0, 2, 5, 46, },
++      { 1, 0, 0, 2, 5, 46, },
++      { 0, 0, 0, 2, 6, 46, },
++      { 2, 0, 0, 2, 6, 46, },
++      { 1, 0, 0, 2, 6, 46, },
++      { 0, 0, 0, 2, 7, 46, },
++      { 2, 0, 0, 2, 7, 46, },
++      { 1, 0, 0, 2, 7, 46, },
++      { 0, 0, 0, 2, 8, 46, },
++      { 2, 0, 0, 2, 8, 46, },
++      { 1, 0, 0, 2, 8, 46, },
++      { 0, 0, 0, 2, 9, 46, },
++      { 2, 0, 0, 2, 9, 46, },
++      { 1, 0, 0, 2, 9, 46, },
++      { 0, 0, 0, 2, 10, 46, },
++      { 2, 0, 0, 2, 10, 46, },
++      { 1, 0, 0, 2, 10, 46, },
++      { 0, 0, 0, 2, 11, 46, },
++      { 2, 0, 0, 2, 11, 46, },
++      { 1, 0, 0, 2, 11, 46, },
++      { 0, 0, 0, 2, 12, 63, },
++      { 2, 0, 0, 2, 12, 46, },
++      { 1, 0, 0, 2, 12, 46, },
++      { 0, 0, 0, 2, 13, 63, },
++      { 2, 0, 0, 2, 13, 46, },
++      { 1, 0, 0, 2, 13, 46, },
++      { 0, 0, 0, 2, 14, 63, },
++      { 2, 0, 0, 2, 14, 63, },
++      { 1, 0, 0, 2, 14, 46, },
++      { 0, 0, 0, 3, 1, 46, },
++      { 2, 0, 0, 3, 1, 46, },
++      { 1, 0, 0, 3, 1, 46, },
++      { 0, 0, 0, 3, 2, 46, },
++      { 2, 0, 0, 3, 2, 46, },
++      { 1, 0, 0, 3, 2, 46, },
++      { 0, 0, 0, 3, 3, 46, },
++      { 2, 0, 0, 3, 3, 46, },
++      { 1, 0, 0, 3, 3, 46, },
++      { 0, 0, 0, 3, 4, 46, },
++      { 2, 0, 0, 3, 4, 46, },
++      { 1, 0, 0, 3, 4, 46, },
++      { 0, 0, 0, 3, 5, 46, },
++      { 2, 0, 0, 3, 5, 46, },
++      { 1, 0, 0, 3, 5, 46, },
++      { 0, 0, 0, 3, 6, 46, },
++      { 2, 0, 0, 3, 6, 46, },
++      { 1, 0, 0, 3, 6, 46, },
++      { 0, 0, 0, 3, 7, 46, },
++      { 2, 0, 0, 3, 7, 46, },
++      { 1, 0, 0, 3, 7, 46, },
++      { 0, 0, 0, 3, 8, 46, },
++      { 2, 0, 0, 3, 8, 46, },
++      { 1, 0, 0, 3, 8, 46, },
++      { 0, 0, 0, 3, 9, 46, },
++      { 2, 0, 0, 3, 9, 46, },
++      { 1, 0, 0, 3, 9, 46, },
++      { 0, 0, 0, 3, 10, 46, },
++      { 2, 0, 0, 3, 10, 46, },
++      { 1, 0, 0, 3, 10, 46, },
++      { 0, 0, 0, 3, 11, 46, },
++      { 2, 0, 0, 3, 11, 46, },
++      { 1, 0, 0, 3, 11, 46, },
++      { 0, 0, 0, 3, 12, 63, },
++      { 2, 0, 0, 3, 12, 46, },
++      { 1, 0, 0, 3, 12, 46, },
++      { 0, 0, 0, 3, 13, 63, },
++      { 2, 0, 0, 3, 13, 46, },
++      { 1, 0, 0, 3, 13, 46, },
++      { 0, 0, 0, 3, 14, 63, },
++      { 2, 0, 0, 3, 14, 63, },
++      { 1, 0, 0, 3, 14, 46, },
++      { 0, 0, 0, 6, 1, 46, },
++      { 2, 0, 0, 6, 1, 46, },
++      { 1, 0, 0, 6, 1, 46, },
++      { 0, 0, 0, 6, 2, 46, },
++      { 2, 0, 0, 6, 2, 46, },
++      { 1, 0, 0, 6, 2, 46, },
++      { 0, 0, 0, 6, 3, 46, },
++      { 2, 0, 0, 6, 3, 46, },
++      { 1, 0, 0, 6, 3, 46, },
++      { 0, 0, 0, 6, 4, 46, },
++      { 2, 0, 0, 6, 4, 46, },
++      { 1, 0, 0, 6, 4, 46, },
++      { 0, 0, 0, 6, 5, 46, },
++      { 2, 0, 0, 6, 5, 46, },
++      { 1, 0, 0, 6, 5, 46, },
++      { 0, 0, 0, 6, 6, 46, },
++      { 2, 0, 0, 6, 6, 46, },
++      { 1, 0, 0, 6, 6, 46, },
++      { 0, 0, 0, 6, 7, 46, },
++      { 2, 0, 0, 6, 7, 46, },
++      { 1, 0, 0, 6, 7, 46, },
++      { 0, 0, 0, 6, 8, 46, },
++      { 2, 0, 0, 6, 8, 46, },
++      { 1, 0, 0, 6, 8, 46, },
++      { 0, 0, 0, 6, 9, 46, },
++      { 2, 0, 0, 6, 9, 46, },
++      { 1, 0, 0, 6, 9, 46, },
++      { 0, 0, 0, 6, 10, 46, },
++      { 2, 0, 0, 6, 10, 46, },
++      { 1, 0, 0, 6, 10, 46, },
++      { 0, 0, 0, 6, 11, 46, },
++      { 2, 0, 0, 6, 11, 46, },
++      { 1, 0, 0, 6, 11, 46, },
++      { 0, 0, 0, 6, 12, 63, },
++      { 2, 0, 0, 6, 12, 46, },
++      { 1, 0, 0, 6, 12, 46, },
++      { 0, 0, 0, 6, 13, 63, },
++      { 2, 0, 0, 6, 13, 46, },
++      { 1, 0, 0, 6, 13, 46, },
++      { 0, 0, 0, 6, 14, 63, },
++      { 2, 0, 0, 6, 14, 63, },
++      { 1, 0, 0, 6, 14, 46, },
++      { 0, 0, 0, 7, 1, 46, },
++      { 2, 0, 0, 7, 1, 46, },
++      { 1, 0, 0, 7, 1, 46, },
++      { 0, 0, 0, 7, 2, 46, },
++      { 2, 0, 0, 7, 2, 46, },
++      { 1, 0, 0, 7, 2, 46, },
++      { 0, 0, 0, 7, 3, 46, },
++      { 2, 0, 0, 7, 3, 46, },
++      { 1, 0, 0, 7, 3, 46, },
++      { 0, 0, 0, 7, 4, 46, },
++      { 2, 0, 0, 7, 4, 46, },
++      { 1, 0, 0, 7, 4, 46, },
++      { 0, 0, 0, 7, 5, 46, },
++      { 2, 0, 0, 7, 5, 46, },
++      { 1, 0, 0, 7, 5, 46, },
++      { 0, 0, 0, 7, 6, 46, },
++      { 2, 0, 0, 7, 6, 46, },
++      { 1, 0, 0, 7, 6, 46, },
++      { 0, 0, 0, 7, 7, 46, },
++      { 2, 0, 0, 7, 7, 46, },
++      { 1, 0, 0, 7, 7, 46, },
++      { 0, 0, 0, 7, 8, 46, },
++      { 2, 0, 0, 7, 8, 46, },
++      { 1, 0, 0, 7, 8, 46, },
++      { 0, 0, 0, 7, 9, 46, },
++      { 2, 0, 0, 7, 9, 46, },
++      { 1, 0, 0, 7, 9, 46, },
++      { 0, 0, 0, 7, 10, 46, },
++      { 2, 0, 0, 7, 10, 46, },
++      { 1, 0, 0, 7, 10, 46, },
++      { 0, 0, 0, 7, 11, 46, },
++      { 2, 0, 0, 7, 11, 46, },
++      { 1, 0, 0, 7, 11, 46, },
++      { 0, 0, 0, 7, 12, 63, },
++      { 2, 0, 0, 7, 12, 46, },
++      { 1, 0, 0, 7, 12, 46, },
++      { 0, 0, 0, 7, 13, 63, },
++      { 2, 0, 0, 7, 13, 46, },
++      { 1, 0, 0, 7, 13, 46, },
++      { 0, 0, 0, 7, 14, 63, },
++      { 2, 0, 0, 7, 14, 63, },
++      { 1, 0, 0, 7, 14, 46, },
++      { 0, 0, 1, 2, 1, 63, },
++      { 2, 0, 1, 2, 1, 63, },
++      { 1, 0, 1, 2, 1, 63, },
++      { 0, 0, 1, 2, 2, 63, },
++      { 2, 0, 1, 2, 2, 63, },
++      { 1, 0, 1, 2, 2, 63, },
++      { 0, 0, 1, 2, 3, 30, },
++      { 2, 0, 1, 2, 3, 34, },
++      { 1, 0, 1, 2, 3, 34, },
++      { 0, 0, 1, 2, 4, 34, },
++      { 2, 0, 1, 2, 4, 34, },
++      { 1, 0, 1, 2, 4, 34, },
++      { 0, 0, 1, 2, 5, 34, },
++      { 2, 0, 1, 2, 5, 34, },
++      { 1, 0, 1, 2, 5, 34, },
++      { 0, 0, 1, 2, 6, 34, },
++      { 2, 0, 1, 2, 6, 34, },
++      { 1, 0, 1, 2, 6, 34, },
++      { 0, 0, 1, 2, 7, 34, },
++      { 2, 0, 1, 2, 7, 34, },
++      { 1, 0, 1, 2, 7, 34, },
++      { 0, 0, 1, 2, 8, 34, },
++      { 2, 0, 1, 2, 8, 34, },
++      { 1, 0, 1, 2, 8, 34, },
++      { 0, 0, 1, 2, 9, 34, },
++      { 2, 0, 1, 2, 9, 34, },
++      { 1, 0, 1, 2, 9, 34, },
++      { 0, 0, 1, 2, 10, 34, },
++      { 2, 0, 1, 2, 10, 34, },
++      { 1, 0, 1, 2, 10, 34, },
++      { 0, 0, 1, 2, 11, 28, },
++      { 2, 0, 1, 2, 11, 34, },
++      { 1, 0, 1, 2, 11, 34, },
++      { 0, 0, 1, 2, 12, 63, },
++      { 2, 0, 1, 2, 12, 34, },
++      { 1, 0, 1, 2, 12, 34, },
++      { 0, 0, 1, 2, 13, 63, },
++      { 2, 0, 1, 2, 13, 34, },
++      { 1, 0, 1, 2, 13, 34, },
++      { 0, 0, 1, 2, 14, 63, },
++      { 2, 0, 1, 2, 14, 63, },
++      { 1, 0, 1, 2, 14, 63, },
++      { 0, 0, 1, 3, 1, 63, },
++      { 2, 0, 1, 3, 1, 63, },
++      { 1, 0, 1, 3, 1, 63, },
++      { 0, 0, 1, 3, 2, 63, },
++      { 2, 0, 1, 3, 2, 63, },
++      { 1, 0, 1, 3, 2, 63, },
++      { 0, 0, 1, 3, 3, 30, },
++      { 2, 0, 1, 3, 3, 34, },
++      { 1, 0, 1, 3, 3, 34, },
++      { 0, 0, 1, 3, 4, 34, },
++      { 2, 0, 1, 3, 4, 34, },
++      { 1, 0, 1, 3, 4, 34, },
++      { 0, 0, 1, 3, 5, 34, },
++      { 2, 0, 1, 3, 5, 34, },
++      { 1, 0, 1, 3, 5, 34, },
++      { 0, 0, 1, 3, 6, 34, },
++      { 2, 0, 1, 3, 6, 34, },
++      { 1, 0, 1, 3, 6, 34, },
++      { 0, 0, 1, 3, 7, 34, },
++      { 2, 0, 1, 3, 7, 34, },
++      { 1, 0, 1, 3, 7, 34, },
++      { 0, 0, 1, 3, 8, 34, },
++      { 2, 0, 1, 3, 8, 34, },
++      { 1, 0, 1, 3, 8, 34, },
++      { 0, 0, 1, 3, 9, 34, },
++      { 2, 0, 1, 3, 9, 34, },
++      { 1, 0, 1, 3, 9, 34, },
++      { 0, 0, 1, 3, 10, 34, },
++      { 2, 0, 1, 3, 10, 34, },
++      { 1, 0, 1, 3, 10, 34, },
++      { 0, 0, 1, 3, 11, 28, },
++      { 2, 0, 1, 3, 11, 34, },
++      { 1, 0, 1, 3, 11, 34, },
++      { 0, 0, 1, 3, 12, 63, },
++      { 2, 0, 1, 3, 12, 34, },
++      { 1, 0, 1, 3, 12, 34, },
++      { 0, 0, 1, 3, 13, 63, },
++      { 2, 0, 1, 3, 13, 34, },
++      { 1, 0, 1, 3, 13, 34, },
++      { 0, 0, 1, 3, 14, 63, },
++      { 2, 0, 1, 3, 14, 63, },
++      { 1, 0, 1, 3, 14, 63, },
++      { 0, 0, 1, 6, 1, 63, },
++      { 2, 0, 1, 6, 1, 63, },
++      { 1, 0, 1, 6, 1, 63, },
++      { 0, 0, 1, 6, 2, 63, },
++      { 2, 0, 1, 6, 2, 63, },
++      { 1, 0, 1, 6, 2, 63, },
++      { 0, 0, 1, 6, 3, 30, },
++      { 2, 0, 1, 6, 3, 34, },
++      { 1, 0, 1, 6, 3, 34, },
++      { 0, 0, 1, 6, 4, 34, },
++      { 2, 0, 1, 6, 4, 34, },
++      { 1, 0, 1, 6, 4, 34, },
++      { 0, 0, 1, 6, 5, 34, },
++      { 2, 0, 1, 6, 5, 34, },
++      { 1, 0, 1, 6, 5, 34, },
++      { 0, 0, 1, 6, 6, 34, },
++      { 2, 0, 1, 6, 6, 34, },
++      { 1, 0, 1, 6, 6, 34, },
++      { 0, 0, 1, 6, 7, 34, },
++      { 2, 0, 1, 6, 7, 34, },
++      { 1, 0, 1, 6, 7, 34, },
++      { 0, 0, 1, 6, 8, 34, },
++      { 2, 0, 1, 6, 8, 34, },
++      { 1, 0, 1, 6, 8, 34, },
++      { 0, 0, 1, 6, 9, 34, },
++      { 2, 0, 1, 6, 9, 34, },
++      { 1, 0, 1, 6, 9, 34, },
++      { 0, 0, 1, 6, 10, 34, },
++      { 2, 0, 1, 6, 10, 34, },
++      { 1, 0, 1, 6, 10, 34, },
++      { 0, 0, 1, 6, 11, 28, },
++      { 2, 0, 1, 6, 11, 34, },
++      { 1, 0, 1, 6, 11, 34, },
++      { 0, 0, 1, 6, 12, 63, },
++      { 2, 0, 1, 6, 12, 34, },
++      { 1, 0, 1, 6, 12, 34, },
++      { 0, 0, 1, 6, 13, 63, },
++      { 2, 0, 1, 6, 13, 34, },
++      { 1, 0, 1, 6, 13, 34, },
++      { 0, 0, 1, 6, 14, 63, },
++      { 2, 0, 1, 6, 14, 63, },
++      { 1, 0, 1, 6, 14, 63, },
++      { 0, 0, 1, 7, 1, 63, },
++      { 2, 0, 1, 7, 1, 63, },
++      { 1, 0, 1, 7, 1, 63, },
++      { 0, 0, 1, 7, 2, 63, },
++      { 2, 0, 1, 7, 2, 63, },
++      { 1, 0, 1, 7, 2, 63, },
++      { 0, 0, 1, 7, 3, 30, },
++      { 2, 0, 1, 7, 3, 34, },
++      { 1, 0, 1, 7, 3, 34, },
++      { 0, 0, 1, 7, 4, 34, },
++      { 2, 0, 1, 7, 4, 34, },
++      { 1, 0, 1, 7, 4, 34, },
++      { 0, 0, 1, 7, 5, 34, },
++      { 2, 0, 1, 7, 5, 34, },
++      { 1, 0, 1, 7, 5, 34, },
++      { 0, 0, 1, 7, 6, 34, },
++      { 2, 0, 1, 7, 6, 34, },
++      { 1, 0, 1, 7, 6, 34, },
++      { 0, 0, 1, 7, 7, 34, },
++      { 2, 0, 1, 7, 7, 34, },
++      { 1, 0, 1, 7, 7, 34, },
++      { 0, 0, 1, 7, 8, 34, },
++      { 2, 0, 1, 7, 8, 34, },
++      { 1, 0, 1, 7, 8, 34, },
++      { 0, 0, 1, 7, 9, 34, },
++      { 2, 0, 1, 7, 9, 34, },
++      { 1, 0, 1, 7, 9, 34, },
++      { 0, 0, 1, 7, 10, 34, },
++      { 2, 0, 1, 7, 10, 34, },
++      { 1, 0, 1, 7, 10, 34, },
++      { 0, 0, 1, 7, 11, 28, },
++      { 2, 0, 1, 7, 11, 34, },
++      { 1, 0, 1, 7, 11, 34, },
++      { 0, 0, 1, 7, 12, 63, },
++      { 2, 0, 1, 7, 12, 34, },
++      { 1, 0, 1, 7, 12, 34, },
++      { 0, 0, 1, 7, 13, 63, },
++      { 2, 0, 1, 7, 13, 34, },
++      { 1, 0, 1, 7, 13, 34, },
++      { 0, 0, 1, 7, 14, 63, },
++      { 2, 0, 1, 7, 14, 63, },
++      { 1, 0, 1, 7, 14, 63, },
++      { 0, 1, 0, 1, 36, 46, },
++      { 2, 1, 0, 1, 36, 46, },
++      { 1, 1, 0, 1, 36, 46, },
++      { 0, 1, 0, 1, 40, 46, },
++      { 2, 1, 0, 1, 40, 46, },
++      { 1, 1, 0, 1, 40, 46, },
++      { 0, 1, 0, 1, 44, 46, },
++      { 2, 1, 0, 1, 44, 46, },
++      { 1, 1, 0, 1, 44, 46, },
++      { 0, 1, 0, 1, 48, 46, },
++      { 2, 1, 0, 1, 48, 46, },
++      { 1, 1, 0, 1, 48, 46, },
++      { 0, 1, 0, 1, 52, 46, },
++      { 2, 1, 0, 1, 52, 46, },
++      { 1, 1, 0, 1, 52, 46, },
++      { 0, 1, 0, 1, 56, 46, },
++      { 2, 1, 0, 1, 56, 46, },
++      { 1, 1, 0, 1, 56, 46, },
++      { 0, 1, 0, 1, 60, 46, },
++      { 2, 1, 0, 1, 60, 46, },
++      { 1, 1, 0, 1, 60, 46, },
++      { 0, 1, 0, 1, 64, 46, },
++      { 2, 1, 0, 1, 64, 46, },
++      { 1, 1, 0, 1, 64, 46, },
++      { 0, 1, 0, 1, 100, 46, },
++      { 2, 1, 0, 1, 100, 46, },
++      { 1, 1, 0, 1, 100, 46, },
++      { 0, 1, 0, 1, 104, 46, },
++      { 2, 1, 0, 1, 104, 46, },
++      { 1, 1, 0, 1, 104, 46, },
++      { 0, 1, 0, 1, 108, 46, },
++      { 2, 1, 0, 1, 108, 46, },
++      { 1, 1, 0, 1, 108, 46, },
++      { 0, 1, 0, 1, 112, 46, },
++      { 2, 1, 0, 1, 112, 46, },
++      { 1, 1, 0, 1, 112, 46, },
++      { 0, 1, 0, 1, 116, 46, },
++      { 2, 1, 0, 1, 116, 46, },
++      { 1, 1, 0, 1, 116, 46, },
++      { 0, 1, 0, 1, 120, 46, },
++      { 2, 1, 0, 1, 120, 46, },
++      { 1, 1, 0, 1, 120, 46, },
++      { 0, 1, 0, 1, 124, 46, },
++      { 2, 1, 0, 1, 124, 46, },
++      { 1, 1, 0, 1, 124, 46, },
++      { 0, 1, 0, 1, 128, 46, },
++      { 2, 1, 0, 1, 128, 46, },
++      { 1, 1, 0, 1, 128, 46, },
++      { 0, 1, 0, 1, 132, 46, },
++      { 2, 1, 0, 1, 132, 46, },
++      { 1, 1, 0, 1, 132, 46, },
++      { 0, 1, 0, 1, 136, 46, },
++      { 2, 1, 0, 1, 136, 46, },
++      { 1, 1, 0, 1, 136, 46, },
++      { 0, 1, 0, 1, 140, 46, },
++      { 2, 1, 0, 1, 140, 46, },
++      { 1, 1, 0, 1, 140, 46, },
++      { 0, 1, 0, 1, 149, 46, },
++      { 2, 1, 0, 1, 149, 46, },
++      { 1, 1, 0, 1, 149, 63, },
++      { 0, 1, 0, 1, 153, 46, },
++      { 2, 1, 0, 1, 153, 46, },
++      { 1, 1, 0, 1, 153, 63, },
++      { 0, 1, 0, 1, 157, 46, },
++      { 2, 1, 0, 1, 157, 46, },
++      { 1, 1, 0, 1, 157, 63, },
++      { 0, 1, 0, 1, 161, 46, },
++      { 2, 1, 0, 1, 161, 46, },
++      { 1, 1, 0, 1, 161, 63, },
++      { 0, 1, 0, 1, 165, 46, },
++      { 2, 1, 0, 1, 165, 46, },
++      { 1, 1, 0, 1, 165, 63, },
++      { 0, 1, 0, 2, 36, 46, },
++      { 2, 1, 0, 2, 36, 46, },
++      { 1, 1, 0, 2, 36, 46, },
++      { 0, 1, 0, 2, 40, 46, },
++      { 2, 1, 0, 2, 40, 46, },
++      { 1, 1, 0, 2, 40, 46, },
++      { 0, 1, 0, 2, 44, 46, },
++      { 2, 1, 0, 2, 44, 46, },
++      { 1, 1, 0, 2, 44, 46, },
++      { 0, 1, 0, 2, 48, 46, },
++      { 2, 1, 0, 2, 48, 46, },
++      { 1, 1, 0, 2, 48, 46, },
++      { 0, 1, 0, 2, 52, 46, },
++      { 2, 1, 0, 2, 52, 46, },
++      { 1, 1, 0, 2, 52, 46, },
++      { 0, 1, 0, 2, 56, 46, },
++      { 2, 1, 0, 2, 56, 46, },
++      { 1, 1, 0, 2, 56, 46, },
++      { 0, 1, 0, 2, 60, 46, },
++      { 2, 1, 0, 2, 60, 46, },
++      { 1, 1, 0, 2, 60, 46, },
++      { 0, 1, 0, 2, 64, 46, },
++      { 2, 1, 0, 2, 64, 46, },
++      { 1, 1, 0, 2, 64, 46, },
++      { 0, 1, 0, 2, 100, 46, },
++      { 2, 1, 0, 2, 100, 46, },
++      { 1, 1, 0, 2, 100, 46, },
++      { 0, 1, 0, 2, 104, 46, },
++      { 2, 1, 0, 2, 104, 46, },
++      { 1, 1, 0, 2, 104, 46, },
++      { 0, 1, 0, 2, 108, 46, },
++      { 2, 1, 0, 2, 108, 46, },
++      { 1, 1, 0, 2, 108, 46, },
++      { 0, 1, 0, 2, 112, 46, },
++      { 2, 1, 0, 2, 112, 46, },
++      { 1, 1, 0, 2, 112, 46, },
++      { 0, 1, 0, 2, 116, 46, },
++      { 2, 1, 0, 2, 116, 46, },
++      { 1, 1, 0, 2, 116, 46, },
++      { 0, 1, 0, 2, 120, 46, },
++      { 2, 1, 0, 2, 120, 46, },
++      { 1, 1, 0, 2, 120, 46, },
++      { 0, 1, 0, 2, 124, 46, },
++      { 2, 1, 0, 2, 124, 46, },
++      { 1, 1, 0, 2, 124, 46, },
++      { 0, 1, 0, 2, 128, 46, },
++      { 2, 1, 0, 2, 128, 46, },
++      { 1, 1, 0, 2, 128, 46, },
++      { 0, 1, 0, 2, 132, 46, },
++      { 2, 1, 0, 2, 132, 46, },
++      { 1, 1, 0, 2, 132, 46, },
++      { 0, 1, 0, 2, 136, 46, },
++      { 2, 1, 0, 2, 136, 46, },
++      { 1, 1, 0, 2, 136, 46, },
++      { 0, 1, 0, 2, 140, 46, },
++      { 2, 1, 0, 2, 140, 46, },
++      { 1, 1, 0, 2, 140, 46, },
++      { 0, 1, 0, 2, 149, 46, },
++      { 2, 1, 0, 2, 149, 46, },
++      { 1, 1, 0, 2, 149, 63, },
++      { 0, 1, 0, 2, 153, 46, },
++      { 2, 1, 0, 2, 153, 46, },
++      { 1, 1, 0, 2, 153, 63, },
++      { 0, 1, 0, 2, 157, 46, },
++      { 2, 1, 0, 2, 157, 46, },
++      { 1, 1, 0, 2, 157, 63, },
++      { 0, 1, 0, 2, 161, 46, },
++      { 2, 1, 0, 2, 161, 46, },
++      { 1, 1, 0, 2, 161, 63, },
++      { 0, 1, 0, 2, 165, 46, },
++      { 2, 1, 0, 2, 165, 46, },
++      { 1, 1, 0, 2, 165, 63, },
++      { 0, 1, 0, 3, 36, 46, },
++      { 2, 1, 0, 3, 36, 46, },
++      { 1, 1, 0, 3, 36, 46, },
++      { 0, 1, 0, 3, 40, 46, },
++      { 2, 1, 0, 3, 40, 46, },
++      { 1, 1, 0, 3, 40, 46, },
++      { 0, 1, 0, 3, 44, 46, },
++      { 2, 1, 0, 3, 44, 46, },
++      { 1, 1, 0, 3, 44, 46, },
++      { 0, 1, 0, 3, 48, 46, },
++      { 2, 1, 0, 3, 48, 46, },
++      { 1, 1, 0, 3, 48, 46, },
++      { 0, 1, 0, 3, 52, 46, },
++      { 2, 1, 0, 3, 52, 46, },
++      { 1, 1, 0, 3, 52, 46, },
++      { 0, 1, 0, 3, 56, 46, },
++      { 2, 1, 0, 3, 56, 46, },
++      { 1, 1, 0, 3, 56, 46, },
++      { 0, 1, 0, 3, 60, 46, },
++      { 2, 1, 0, 3, 60, 46, },
++      { 1, 1, 0, 3, 60, 46, },
++      { 0, 1, 0, 3, 64, 46, },
++      { 2, 1, 0, 3, 64, 46, },
++      { 1, 1, 0, 3, 64, 46, },
++      { 0, 1, 0, 3, 100, 46, },
++      { 2, 1, 0, 3, 100, 46, },
++      { 1, 1, 0, 3, 100, 46, },
++      { 0, 1, 0, 3, 104, 46, },
++      { 2, 1, 0, 3, 104, 46, },
++      { 1, 1, 0, 3, 104, 46, },
++      { 0, 1, 0, 3, 108, 46, },
++      { 2, 1, 0, 3, 108, 46, },
++      { 1, 1, 0, 3, 108, 46, },
++      { 0, 1, 0, 3, 112, 46, },
++      { 2, 1, 0, 3, 112, 46, },
++      { 1, 1, 0, 3, 112, 46, },
++      { 0, 1, 0, 3, 116, 46, },
++      { 2, 1, 0, 3, 116, 46, },
++      { 1, 1, 0, 3, 116, 46, },
++      { 0, 1, 0, 3, 120, 46, },
++      { 2, 1, 0, 3, 120, 46, },
++      { 1, 1, 0, 3, 120, 46, },
++      { 0, 1, 0, 3, 124, 46, },
++      { 2, 1, 0, 3, 124, 46, },
++      { 1, 1, 0, 3, 124, 46, },
++      { 0, 1, 0, 3, 128, 46, },
++      { 2, 1, 0, 3, 128, 46, },
++      { 1, 1, 0, 3, 128, 46, },
++      { 0, 1, 0, 3, 132, 46, },
++      { 2, 1, 0, 3, 132, 46, },
++      { 1, 1, 0, 3, 132, 46, },
++      { 0, 1, 0, 3, 136, 46, },
++      { 2, 1, 0, 3, 136, 46, },
++      { 1, 1, 0, 3, 136, 46, },
++      { 0, 1, 0, 3, 140, 46, },
++      { 2, 1, 0, 3, 140, 46, },
++      { 1, 1, 0, 3, 140, 46, },
++      { 0, 1, 0, 3, 149, 46, },
++      { 2, 1, 0, 3, 149, 46, },
++      { 1, 1, 0, 3, 149, 63, },
++      { 0, 1, 0, 3, 153, 46, },
++      { 2, 1, 0, 3, 153, 46, },
++      { 1, 1, 0, 3, 153, 63, },
++      { 0, 1, 0, 3, 157, 46, },
++      { 2, 1, 0, 3, 157, 46, },
++      { 1, 1, 0, 3, 157, 63, },
++      { 0, 1, 0, 3, 161, 46, },
++      { 2, 1, 0, 3, 161, 46, },
++      { 1, 1, 0, 3, 161, 63, },
++      { 0, 1, 0, 3, 165, 46, },
++      { 2, 1, 0, 3, 165, 46, },
++      { 1, 1, 0, 3, 165, 63, },
++      { 0, 1, 0, 6, 36, 46, },
++      { 2, 1, 0, 6, 36, 46, },
++      { 1, 1, 0, 6, 36, 46, },
++      { 0, 1, 0, 6, 40, 46, },
++      { 2, 1, 0, 6, 40, 46, },
++      { 1, 1, 0, 6, 40, 46, },
++      { 0, 1, 0, 6, 44, 46, },
++      { 2, 1, 0, 6, 44, 46, },
++      { 1, 1, 0, 6, 44, 46, },
++      { 0, 1, 0, 6, 48, 46, },
++      { 2, 1, 0, 6, 48, 46, },
++      { 1, 1, 0, 6, 48, 46, },
++      { 0, 1, 0, 6, 52, 46, },
++      { 2, 1, 0, 6, 52, 46, },
++      { 1, 1, 0, 6, 52, 46, },
++      { 0, 1, 0, 6, 56, 46, },
++      { 2, 1, 0, 6, 56, 46, },
++      { 1, 1, 0, 6, 56, 46, },
++      { 0, 1, 0, 6, 60, 46, },
++      { 2, 1, 0, 6, 60, 46, },
++      { 1, 1, 0, 6, 60, 46, },
++      { 0, 1, 0, 6, 64, 46, },
++      { 2, 1, 0, 6, 64, 46, },
++      { 1, 1, 0, 6, 64, 46, },
++      { 0, 1, 0, 6, 100, 46, },
++      { 2, 1, 0, 6, 100, 46, },
++      { 1, 1, 0, 6, 100, 46, },
++      { 0, 1, 0, 6, 104, 46, },
++      { 2, 1, 0, 6, 104, 46, },
++      { 1, 1, 0, 6, 104, 46, },
++      { 0, 1, 0, 6, 108, 46, },
++      { 2, 1, 0, 6, 108, 46, },
++      { 1, 1, 0, 6, 108, 46, },
++      { 0, 1, 0, 6, 112, 46, },
++      { 2, 1, 0, 6, 112, 46, },
++      { 1, 1, 0, 6, 112, 46, },
++      { 0, 1, 0, 6, 116, 46, },
++      { 2, 1, 0, 6, 116, 46, },
++      { 1, 1, 0, 6, 116, 46, },
++      { 0, 1, 0, 6, 120, 46, },
++      { 2, 1, 0, 6, 120, 46, },
++      { 1, 1, 0, 6, 120, 46, },
++      { 0, 1, 0, 6, 124, 46, },
++      { 2, 1, 0, 6, 124, 46, },
++      { 1, 1, 0, 6, 124, 46, },
++      { 0, 1, 0, 6, 128, 46, },
++      { 2, 1, 0, 6, 128, 46, },
++      { 1, 1, 0, 6, 128, 46, },
++      { 0, 1, 0, 6, 132, 46, },
++      { 2, 1, 0, 6, 132, 46, },
++      { 1, 1, 0, 6, 132, 46, },
++      { 0, 1, 0, 6, 136, 46, },
++      { 2, 1, 0, 6, 136, 46, },
++      { 1, 1, 0, 6, 136, 46, },
++      { 0, 1, 0, 6, 140, 46, },
++      { 2, 1, 0, 6, 140, 46, },
++      { 1, 1, 0, 6, 140, 46, },
++      { 0, 1, 0, 6, 149, 46, },
++      { 2, 1, 0, 6, 149, 46, },
++      { 1, 1, 0, 6, 149, 63, },
++      { 0, 1, 0, 6, 153, 46, },
++      { 2, 1, 0, 6, 153, 46, },
++      { 1, 1, 0, 6, 153, 63, },
++      { 0, 1, 0, 6, 157, 46, },
++      { 2, 1, 0, 6, 157, 46, },
++      { 1, 1, 0, 6, 157, 63, },
++      { 0, 1, 0, 6, 161, 46, },
++      { 2, 1, 0, 6, 161, 46, },
++      { 1, 1, 0, 6, 161, 63, },
++      { 0, 1, 0, 6, 165, 46, },
++      { 2, 1, 0, 6, 165, 46, },
++      { 1, 1, 0, 6, 165, 63, },
++      { 0, 1, 0, 7, 36, 46, },
++      { 2, 1, 0, 7, 36, 46, },
++      { 1, 1, 0, 7, 36, 46, },
++      { 0, 1, 0, 7, 40, 46, },
++      { 2, 1, 0, 7, 40, 46, },
++      { 1, 1, 0, 7, 40, 46, },
++      { 0, 1, 0, 7, 44, 46, },
++      { 2, 1, 0, 7, 44, 46, },
++      { 1, 1, 0, 7, 44, 46, },
++      { 0, 1, 0, 7, 48, 46, },
++      { 2, 1, 0, 7, 48, 46, },
++      { 1, 1, 0, 7, 48, 46, },
++      { 0, 1, 0, 7, 52, 46, },
++      { 2, 1, 0, 7, 52, 46, },
++      { 1, 1, 0, 7, 52, 46, },
++      { 0, 1, 0, 7, 56, 46, },
++      { 2, 1, 0, 7, 56, 46, },
++      { 1, 1, 0, 7, 56, 46, },
++      { 0, 1, 0, 7, 60, 46, },
++      { 2, 1, 0, 7, 60, 46, },
++      { 1, 1, 0, 7, 60, 46, },
++      { 0, 1, 0, 7, 64, 46, },
++      { 2, 1, 0, 7, 64, 46, },
++      { 1, 1, 0, 7, 64, 46, },
++      { 0, 1, 0, 7, 100, 46, },
++      { 2, 1, 0, 7, 100, 46, },
++      { 1, 1, 0, 7, 100, 46, },
++      { 0, 1, 0, 7, 104, 46, },
++      { 2, 1, 0, 7, 104, 46, },
++      { 1, 1, 0, 7, 104, 46, },
++      { 0, 1, 0, 7, 108, 46, },
++      { 2, 1, 0, 7, 108, 46, },
++      { 1, 1, 0, 7, 108, 46, },
++      { 0, 1, 0, 7, 112, 46, },
++      { 2, 1, 0, 7, 112, 46, },
++      { 1, 1, 0, 7, 112, 46, },
++      { 0, 1, 0, 7, 116, 46, },
++      { 2, 1, 0, 7, 116, 46, },
++      { 1, 1, 0, 7, 116, 46, },
++      { 0, 1, 0, 7, 120, 46, },
++      { 2, 1, 0, 7, 120, 46, },
++      { 1, 1, 0, 7, 120, 46, },
++      { 0, 1, 0, 7, 124, 46, },
++      { 2, 1, 0, 7, 124, 46, },
++      { 1, 1, 0, 7, 124, 46, },
++      { 0, 1, 0, 7, 128, 46, },
++      { 2, 1, 0, 7, 128, 46, },
++      { 1, 1, 0, 7, 128, 46, },
++      { 0, 1, 0, 7, 132, 46, },
++      { 2, 1, 0, 7, 132, 46, },
++      { 1, 1, 0, 7, 132, 46, },
++      { 0, 1, 0, 7, 136, 46, },
++      { 2, 1, 0, 7, 136, 46, },
++      { 1, 1, 0, 7, 136, 46, },
++      { 0, 1, 0, 7, 140, 46, },
++      { 2, 1, 0, 7, 140, 46, },
++      { 1, 1, 0, 7, 140, 46, },
++      { 0, 1, 0, 7, 149, 46, },
++      { 2, 1, 0, 7, 149, 46, },
++      { 1, 1, 0, 7, 149, 63, },
++      { 0, 1, 0, 7, 153, 46, },
++      { 2, 1, 0, 7, 153, 46, },
++      { 1, 1, 0, 7, 153, 63, },
++      { 0, 1, 0, 7, 157, 46, },
++      { 2, 1, 0, 7, 157, 46, },
++      { 1, 1, 0, 7, 157, 63, },
++      { 0, 1, 0, 7, 161, 46, },
++      { 2, 1, 0, 7, 161, 46, },
++      { 1, 1, 0, 7, 161, 63, },
++      { 0, 1, 0, 7, 165, 46, },
++      { 2, 1, 0, 7, 165, 46, },
++      { 1, 1, 0, 7, 165, 63, },
++      { 0, 1, 1, 2, 38, 46, },
++      { 2, 1, 1, 2, 38, 46, },
++      { 1, 1, 1, 2, 38, 46, },
++      { 0, 1, 1, 2, 46, 46, },
++      { 2, 1, 1, 2, 46, 46, },
++      { 1, 1, 1, 2, 46, 46, },
++      { 0, 1, 1, 2, 54, 46, },
++      { 2, 1, 1, 2, 54, 46, },
++      { 1, 1, 1, 2, 54, 46, },
++      { 0, 1, 1, 2, 62, 46, },
++      { 2, 1, 1, 2, 62, 46, },
++      { 1, 1, 1, 2, 62, 46, },
++      { 0, 1, 1, 2, 102, 46, },
++      { 2, 1, 1, 2, 102, 46, },
++      { 1, 1, 1, 2, 102, 46, },
++      { 0, 1, 1, 2, 110, 46, },
++      { 2, 1, 1, 2, 110, 46, },
++      { 1, 1, 1, 2, 110, 46, },
++      { 0, 1, 1, 2, 118, 46, },
++      { 2, 1, 1, 2, 118, 46, },
++      { 1, 1, 1, 2, 118, 46, },
++      { 0, 1, 1, 2, 126, 46, },
++      { 2, 1, 1, 2, 126, 46, },
++      { 1, 1, 1, 2, 126, 46, },
++      { 0, 1, 1, 2, 134, 46, },
++      { 2, 1, 1, 2, 134, 46, },
++      { 1, 1, 1, 2, 134, 46, },
++      { 0, 1, 1, 2, 151, 46, },
++      { 2, 1, 1, 2, 151, 46, },
++      { 1, 1, 1, 2, 151, 63, },
++      { 0, 1, 1, 2, 159, 46, },
++      { 2, 1, 1, 2, 159, 46, },
++      { 1, 1, 1, 2, 159, 63, },
++      { 0, 1, 1, 3, 38, 46, },
++      { 2, 1, 1, 3, 38, 46, },
++      { 1, 1, 1, 3, 38, 46, },
++      { 0, 1, 1, 3, 46, 46, },
++      { 2, 1, 1, 3, 46, 46, },
++      { 1, 1, 1, 3, 46, 46, },
++      { 0, 1, 1, 3, 54, 46, },
++      { 2, 1, 1, 3, 54, 46, },
++      { 1, 1, 1, 3, 54, 46, },
++      { 0, 1, 1, 3, 62, 46, },
++      { 2, 1, 1, 3, 62, 46, },
++      { 1, 1, 1, 3, 62, 46, },
++      { 0, 1, 1, 3, 102, 46, },
++      { 2, 1, 1, 3, 102, 46, },
++      { 1, 1, 1, 3, 102, 46, },
++      { 0, 1, 1, 3, 110, 46, },
++      { 2, 1, 1, 3, 110, 46, },
++      { 1, 1, 1, 3, 110, 46, },
++      { 0, 1, 1, 3, 118, 46, },
++      { 2, 1, 1, 3, 118, 46, },
++      { 1, 1, 1, 3, 118, 46, },
++      { 0, 1, 1, 3, 126, 46, },
++      { 2, 1, 1, 3, 126, 46, },
++      { 1, 1, 1, 3, 126, 46, },
++      { 0, 1, 1, 3, 134, 46, },
++      { 2, 1, 1, 3, 134, 46, },
++      { 1, 1, 1, 3, 134, 46, },
++      { 0, 1, 1, 3, 151, 46, },
++      { 2, 1, 1, 3, 151, 46, },
++      { 1, 1, 1, 3, 151, 63, },
++      { 0, 1, 1, 3, 159, 46, },
++      { 2, 1, 1, 3, 159, 46, },
++      { 1, 1, 1, 3, 159, 63, },
++      { 0, 1, 1, 6, 38, 46, },
++      { 2, 1, 1, 6, 38, 46, },
++      { 1, 1, 1, 6, 38, 46, },
++      { 0, 1, 1, 6, 46, 46, },
++      { 2, 1, 1, 6, 46, 46, },
++      { 1, 1, 1, 6, 46, 46, },
++      { 0, 1, 1, 6, 54, 46, },
++      { 2, 1, 1, 6, 54, 46, },
++      { 1, 1, 1, 6, 54, 46, },
++      { 0, 1, 1, 6, 62, 46, },
++      { 2, 1, 1, 6, 62, 46, },
++      { 1, 1, 1, 6, 62, 46, },
++      { 0, 1, 1, 6, 102, 46, },
++      { 2, 1, 1, 6, 102, 46, },
++      { 1, 1, 1, 6, 102, 46, },
++      { 0, 1, 1, 6, 110, 46, },
++      { 2, 1, 1, 6, 110, 46, },
++      { 1, 1, 1, 6, 110, 46, },
++      { 0, 1, 1, 6, 118, 46, },
++      { 2, 1, 1, 6, 118, 46, },
++      { 1, 1, 1, 6, 118, 46, },
++      { 0, 1, 1, 6, 126, 46, },
++      { 2, 1, 1, 6, 126, 46, },
++      { 1, 1, 1, 6, 126, 46, },
++      { 0, 1, 1, 6, 134, 46, },
++      { 2, 1, 1, 6, 134, 46, },
++      { 1, 1, 1, 6, 134, 46, },
++      { 0, 1, 1, 6, 151, 46, },
++      { 2, 1, 1, 6, 151, 46, },
++      { 1, 1, 1, 6, 151, 63, },
++      { 0, 1, 1, 6, 159, 46, },
++      { 2, 1, 1, 6, 159, 46, },
++      { 1, 1, 1, 6, 159, 63, },
++      { 0, 1, 1, 7, 38, 46, },
++      { 2, 1, 1, 7, 38, 46, },
++      { 1, 1, 1, 7, 38, 46, },
++      { 0, 1, 1, 7, 46, 46, },
++      { 2, 1, 1, 7, 46, 46, },
++      { 1, 1, 1, 7, 46, 46, },
++      { 0, 1, 1, 7, 54, 46, },
++      { 2, 1, 1, 7, 54, 46, },
++      { 1, 1, 1, 7, 54, 46, },
++      { 0, 1, 1, 7, 62, 46, },
++      { 2, 1, 1, 7, 62, 46, },
++      { 1, 1, 1, 7, 62, 46, },
++      { 0, 1, 1, 7, 102, 46, },
++      { 2, 1, 1, 7, 102, 46, },
++      { 1, 1, 1, 7, 102, 46, },
++      { 0, 1, 1, 7, 110, 46, },
++      { 2, 1, 1, 7, 110, 46, },
++      { 1, 1, 1, 7, 110, 46, },
++      { 0, 1, 1, 7, 118, 46, },
++      { 2, 1, 1, 7, 118, 46, },
++      { 1, 1, 1, 7, 118, 46, },
++      { 0, 1, 1, 7, 126, 46, },
++      { 2, 1, 1, 7, 126, 46, },
++      { 1, 1, 1, 7, 126, 46, },
++      { 0, 1, 1, 7, 134, 46, },
++      { 2, 1, 1, 7, 134, 46, },
++      { 1, 1, 1, 7, 134, 46, },
++      { 0, 1, 1, 7, 151, 46, },
++      { 2, 1, 1, 7, 151, 46, },
++      { 1, 1, 1, 7, 151, 63, },
++      { 0, 1, 1, 7, 159, 46, },
++      { 2, 1, 1, 7, 159, 46, },
++      { 1, 1, 1, 7, 159, 63, },
++      { 0, 1, 2, 4, 42, 46, },
++      { 2, 1, 2, 4, 42, 46, },
++      { 1, 1, 2, 4, 42, 46, },
++      { 0, 1, 2, 4, 58, 46, },
++      { 2, 1, 2, 4, 58, 46, },
++      { 1, 1, 2, 4, 58, 46, },
++      { 0, 1, 2, 4, 106, 46, },
++      { 2, 1, 2, 4, 106, 46, },
++      { 1, 1, 2, 4, 106, 46, },
++      { 0, 1, 2, 4, 122, 46, },
++      { 2, 1, 2, 4, 122, 46, },
++      { 1, 1, 2, 4, 122, 46, },
++      { 0, 1, 2, 4, 155, 46, },
++      { 2, 1, 2, 4, 155, 46, },
++      { 1, 1, 2, 4, 155, 63, },
++      { 0, 1, 2, 5, 42, 46, },
++      { 2, 1, 2, 5, 42, 46, },
++      { 1, 1, 2, 5, 42, 46, },
++      { 0, 1, 2, 5, 58, 46, },
++      { 2, 1, 2, 5, 58, 46, },
++      { 1, 1, 2, 5, 58, 46, },
++      { 0, 1, 2, 5, 106, 46, },
++      { 2, 1, 2, 5, 106, 46, },
++      { 1, 1, 2, 5, 106, 46, },
++      { 0, 1, 2, 5, 122, 46, },
++      { 2, 1, 2, 5, 122, 46, },
++      { 1, 1, 2, 5, 122, 46, },
++      { 0, 1, 2, 5, 155, 46, },
++      { 2, 1, 2, 5, 155, 46, },
++      { 1, 1, 2, 5, 155, 63, },
++      { 0, 1, 2, 8, 42, 46, },
++      { 2, 1, 2, 8, 42, 46, },
++      { 1, 1, 2, 8, 42, 46, },
++      { 0, 1, 2, 8, 58, 46, },
++      { 2, 1, 2, 8, 58, 46, },
++      { 1, 1, 2, 8, 58, 46, },
++      { 0, 1, 2, 8, 106, 46, },
++      { 2, 1, 2, 8, 106, 46, },
++      { 1, 1, 2, 8, 106, 46, },
++      { 0, 1, 2, 8, 122, 46, },
++      { 2, 1, 2, 8, 122, 46, },
++      { 1, 1, 2, 8, 122, 46, },
++      { 0, 1, 2, 8, 155, 46, },
++      { 2, 1, 2, 8, 155, 46, },
++      { 1, 1, 2, 8, 155, 63, },
++      { 0, 1, 2, 9, 42, 46, },
++      { 2, 1, 2, 9, 42, 46, },
++      { 1, 1, 2, 9, 42, 46, },
++      { 0, 1, 2, 9, 58, 46, },
++      { 2, 1, 2, 9, 58, 46, },
++      { 1, 1, 2, 9, 58, 46, },
++      { 0, 1, 2, 9, 106, 46, },
++      { 2, 1, 2, 9, 106, 46, },
++      { 1, 1, 2, 9, 106, 46, },
++      { 0, 1, 2, 9, 122, 46, },
++      { 2, 1, 2, 9, 122, 46, },
++      { 1, 1, 2, 9, 122, 46, },
++      { 0, 1, 2, 9, 155, 46, },
++      { 2, 1, 2, 9, 155, 46, },
++      { 1, 1, 2, 9, 155, 63, },
++};
++
++RTW_DECL_TABLE_TXPWR_LMT(rtw8814a_txpwr_lmt_type8);
++
++static const u8
++rtw8814a_pwrtrk_5gd_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11,
++       11, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19},
++      {0, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10,
++       11, 12, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18},
++      {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19},
++};
++
++static const u8
++rtw8814a_pwrtrk_5gd_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25, 25},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25},
++};
++
++static const u8
++rtw8814a_pwrtrk_5gc_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10,
++       11, 12, 13, 14, 15, 15, 15, 15, 16, 16, 17, 18},
++      {0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11,
++       12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20},
++      {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 11,
++       12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 20, 20},
++};
++
++static const u8
++rtw8814a_pwrtrk_5gc_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
++       16, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 25},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 17, 18, 19, 20, 21, 22, 23, 24, 24, 25, 25, 25},
++      {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
++       16, 16, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25},
++};
++
++static const u8
++rtw8814a_pwrtrk_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17},
++      {0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11,
++       12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20},
++      {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 11,
++       12, 13, 13, 14, 14, 15, 16, 17, 18, 18, 19, 20, 20},
++};
++
++static const u8
++rtw8814a_pwrtrk_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14,
++       15, 15, 16, 17, 18, 18, 19, 20, 21, 22, 23, 23, 24},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 18, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
++       16, 16, 17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 25},
++};
++
++static const u8
++rtw8814a_pwrtrk_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
++       8, 9, 9, 10, 11, 11, 11, 11, 12, 12, 13, 13, 14},
++      {0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 11,
++       12, 13, 14, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21},
++      {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19},
++};
++
++static const u8
++rtw8814a_pwrtrk_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 12, 13,
++       14, 15, 16, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 25, 25, 25},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25},
++};
++
++static const u8 rtw8814a_pwrtrk_2gd_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7,
++       7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2gd_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_2gc_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7,
++       7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2gc_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13
++};
++
++static const u8 rtw8814a_pwrtrk_2gb_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7,
++       7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2gb_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_2ga_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
++       7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13
++};
++
++static const u8 rtw8814a_pwrtrk_2ga_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 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
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_d_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7,
++       7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_d_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_c_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6,
++       7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_c_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
++       7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6,
++       6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7,
++       7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7,
++       7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
++       0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7,
++       8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14
++};
++
++const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_tbl = {
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5gd_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5gd_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5gd_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5gd_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5gd_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5gd_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5gc_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5gc_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5gc_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5gc_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5gc_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5gc_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5gb_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5gb_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5gb_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5gb_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5gb_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5gb_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5ga_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5ga_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5ga_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_5ga_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_5ga_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_5ga_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_2gd_n = rtw8814a_pwrtrk_2gd_n,
++      .pwrtrk_2gd_p = rtw8814a_pwrtrk_2gd_p,
++      .pwrtrk_2gc_n = rtw8814a_pwrtrk_2gc_n,
++      .pwrtrk_2gc_p = rtw8814a_pwrtrk_2gc_p,
++      .pwrtrk_2gb_n = rtw8814a_pwrtrk_2gb_n,
++      .pwrtrk_2gb_p = rtw8814a_pwrtrk_2gb_p,
++      .pwrtrk_2ga_n = rtw8814a_pwrtrk_2ga_n,
++      .pwrtrk_2ga_p = rtw8814a_pwrtrk_2ga_p,
++      .pwrtrk_2g_cckd_n = rtw8814a_pwrtrk_2g_cck_d_n,
++      .pwrtrk_2g_cckd_p = rtw8814a_pwrtrk_2g_cck_d_p,
++      .pwrtrk_2g_cckc_n = rtw8814a_pwrtrk_2g_cck_c_n,
++      .pwrtrk_2g_cckc_p = rtw8814a_pwrtrk_2g_cck_c_p,
++      .pwrtrk_2g_cckb_n = rtw8814a_pwrtrk_2g_cck_b_n,
++      .pwrtrk_2g_cckb_p = rtw8814a_pwrtrk_2g_cck_b_p,
++      .pwrtrk_2g_ccka_n = rtw8814a_pwrtrk_2g_cck_a_n,
++      .pwrtrk_2g_ccka_p = rtw8814a_pwrtrk_2g_cck_a_p,
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5gd_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5gd_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5gc_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5gc_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type0_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2gd_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2gd_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2gc_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2gc_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2gb_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2gb_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2ga_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2ga_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_d_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_d_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_c_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_c_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type0_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
++       0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type0_tbl = {
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5gd_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5gd_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5gd_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5gd_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5gd_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5gd_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5gc_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5gc_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5gc_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5gc_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5gc_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5gc_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5gb_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5gb_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5gb_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5gb_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5gb_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5gb_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5ga_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5ga_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5ga_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type0_5ga_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type0_5ga_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type0_5ga_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_2gd_n = rtw8814a_pwrtrk_type0_2gd_n,
++      .pwrtrk_2gd_p = rtw8814a_pwrtrk_type0_2gd_p,
++      .pwrtrk_2gc_n = rtw8814a_pwrtrk_type0_2gc_n,
++      .pwrtrk_2gc_p = rtw8814a_pwrtrk_type0_2gc_p,
++      .pwrtrk_2gb_n = rtw8814a_pwrtrk_type0_2gb_n,
++      .pwrtrk_2gb_p = rtw8814a_pwrtrk_type0_2gb_p,
++      .pwrtrk_2ga_n = rtw8814a_pwrtrk_type0_2ga_n,
++      .pwrtrk_2ga_p = rtw8814a_pwrtrk_type0_2ga_p,
++      .pwrtrk_2g_cckd_n = rtw8814a_pwrtrk_type0_2g_cck_d_n,
++      .pwrtrk_2g_cckd_p = rtw8814a_pwrtrk_type0_2g_cck_d_p,
++      .pwrtrk_2g_cckc_n = rtw8814a_pwrtrk_type0_2g_cck_c_n,
++      .pwrtrk_2g_cckc_p = rtw8814a_pwrtrk_type0_2g_cck_c_p,
++      .pwrtrk_2g_cckb_n = rtw8814a_pwrtrk_type0_2g_cck_b_n,
++      .pwrtrk_2g_cckb_p = rtw8814a_pwrtrk_type0_2g_cck_b_p,
++      .pwrtrk_2g_ccka_n = rtw8814a_pwrtrk_type0_2g_cck_a_n,
++      .pwrtrk_2g_ccka_p = rtw8814a_pwrtrk_type0_2g_cck_a_p,
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5gd_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12, 12,
++       12, 13, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16},
++      {0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 10, 10,
++       11, 11, 12, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 12,
++       12, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5gd_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14,
++       15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14,
++       15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
++       17, 18, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5gc_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 12,
++       12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12,
++       13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11,
++       12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5gc_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14,
++       15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21},
++      {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14,
++       15, 16, 17, 18, 19, 20, 20, 20, 21, 21, 21, 21, 21},
++      {0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14,
++       15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13,
++       13, 13, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12,
++       13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11,
++       12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15,
++       16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21},
++      {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 11, 12, 13,
++       14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20},
++      {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14,
++       15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 11, 11,
++       12, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15},
++      {0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12,
++       12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 11, 12,
++       12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++};
++
++static const u8
++rtw8814a_pwrtrk_type2_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14,
++       15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 20},
++      {0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14,
++       15, 16, 16, 17, 18, 19, 20, 20, 20, 20, 20, 20, 20},
++      {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 15,
++       15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 20},
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2gd_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5,
++       6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2gd_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2gc_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2gc_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10,
++       11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2gb_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8,
++       9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2gb_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2ga_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9,
++       10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2ga_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10,
++       11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_d_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8,
++       9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_d_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_c_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10,
++       10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_c_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10,
++       10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9,
++       10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type2_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
++       0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10,
++       11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13
++};
++
++const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type2_tbl = {
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5gd_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5gd_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5gd_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5gd_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5gd_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5gd_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5gc_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5gc_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5gc_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5gc_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5gc_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5gc_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5gb_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5gb_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5gb_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5gb_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5gb_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5gb_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5ga_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5ga_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5ga_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type2_5ga_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type2_5ga_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type2_5ga_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_2gd_n = rtw8814a_pwrtrk_type2_2gd_n,
++      .pwrtrk_2gd_p = rtw8814a_pwrtrk_type2_2gd_p,
++      .pwrtrk_2gc_n = rtw8814a_pwrtrk_type2_2gc_n,
++      .pwrtrk_2gc_p = rtw8814a_pwrtrk_type2_2gc_p,
++      .pwrtrk_2gb_n = rtw8814a_pwrtrk_type2_2gb_n,
++      .pwrtrk_2gb_p = rtw8814a_pwrtrk_type2_2gb_p,
++      .pwrtrk_2ga_n = rtw8814a_pwrtrk_type2_2ga_n,
++      .pwrtrk_2ga_p = rtw8814a_pwrtrk_type2_2ga_p,
++      .pwrtrk_2g_cckd_n = rtw8814a_pwrtrk_type2_2g_cck_d_n,
++      .pwrtrk_2g_cckd_p = rtw8814a_pwrtrk_type2_2g_cck_d_p,
++      .pwrtrk_2g_cckc_n = rtw8814a_pwrtrk_type2_2g_cck_c_n,
++      .pwrtrk_2g_cckc_p = rtw8814a_pwrtrk_type2_2g_cck_c_p,
++      .pwrtrk_2g_cckb_n = rtw8814a_pwrtrk_type2_2g_cck_b_n,
++      .pwrtrk_2g_cckb_p = rtw8814a_pwrtrk_type2_2g_cck_b_p,
++      .pwrtrk_2g_ccka_n = rtw8814a_pwrtrk_type2_2g_cck_a_n,
++      .pwrtrk_2g_ccka_p = rtw8814a_pwrtrk_type2_2g_cck_a_p,
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5gd_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 3, 3, 3, 4, 6, 6, 7, 7, 8, 9, 10, 11, 12, 13, 13, 14,
++       14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 4, 5, 6, 7, 7, 8, 7, 8, 10, 11, 12, 12, 13, 13, 14, 14,
++       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 5, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16,
++       16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5gd_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 10, 11, 12,
++       12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 0, 0, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 11, 12,
++       12, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 0, 1, 1, 2, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 13,
++       13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5gc_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 2, 3, 3, 4, 6, 7, 7, 8, 9, 9, 9, 10, 10, 10,
++       10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12},
++      {0, 1, 2, 3, 3, 7, 7, 8, 8, 9, 11, 12, 12, 13, 14, 14, 15,
++       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 0, 1, 2, 3, 4, 5, 7, 8, 8, 10, 11, 12, 12, 13, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5gc_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 9, 11, 11,
++       11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13},
++      {0, 0, 1, 2, 3, 3, 5, 5, 6, 8, 8, 9, 10, 11, 13, 13, 13,
++       13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 2, 3, 4, 4, 5, 7, 8, 9, 9, 10, 11, 12, 12, 12,
++       12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 7, 9, 10, 10, 10, 10, 10,
++       10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12},
++      {0, 1, 2, 3, 3, 7, 7, 8, 8, 9, 11, 12, 12, 13, 14, 14, 15,
++       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 0, 1, 2, 3, 4, 5, 7, 8, 8, 10, 11, 12, 12, 13, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 1, 2, 2, 4, 5, 6, 6, 7, 8, 9, 10, 11, 11, 11,
++       12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 0, 2, 3, 4, 5, 6, 8, 8, 9, 9, 11, 12, 13, 13, 13,
++       13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 0, 1, 2, 3, 3, 4, 6, 7, 8, 9, 10, 11, 12, 12, 12,
++       12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 0, 1, 2, 3, 3, 3, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12},
++      {0, 2, 3, 4, 5, 7, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 17,
++       17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18},
++      {0, 1, 2, 3, 3, 4, 6, 7, 8, 8, 10, 11, 11, 12, 13, 13, 13,
++       13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type5_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 1, 3, 3, 3, 5, 5, 6, 6, 8, 8, 9, 10, 11, 11, 11,
++       12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 8, 9, 11, 12, 13, 14, 15,
++       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 0, 1, 3, 3, 4, 5, 5, 6, 7, 7, 8, 10, 10, 11, 11, 11,
++       11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13},
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2gd_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8, 9, 9, 9,
++       9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2gd_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2gc_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 10,
++       10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2gc_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 8, 8, 9, 9, 9,
++       9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2gb_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 10, 10, 10,
++       10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2gb_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 8, 9, 9, 9, 9,
++       9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2ga_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 10,
++       10, 11, 11, 11, 11, 111, 12, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2ga_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9,
++       9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_d_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9,
++       10, 10, 10, 10, 10, 11, 11, 10, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_d_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8,
++       9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_c_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 10, 10,
++       10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_c_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8,
++       9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 2, 3, 4, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, 10, 10,
++       10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8,
++       9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10,
++       10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
++};
++
++static const u8 rtw8814a_pwrtrk_type5_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
++       0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9,
++       9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10
++};
++
++const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type5_tbl = {
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5gd_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5gd_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5gd_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5gd_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5gd_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5gd_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5gc_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5gc_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5gc_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5gc_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5gc_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5gc_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5gb_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5gb_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5gb_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5gb_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5gb_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5gb_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5ga_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5ga_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5ga_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type5_5ga_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type5_5ga_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type5_5ga_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_2gd_n = rtw8814a_pwrtrk_type5_2gd_n,
++      .pwrtrk_2gd_p = rtw8814a_pwrtrk_type5_2gd_p,
++      .pwrtrk_2gc_n = rtw8814a_pwrtrk_type5_2gc_n,
++      .pwrtrk_2gc_p = rtw8814a_pwrtrk_type5_2gc_p,
++      .pwrtrk_2gb_n = rtw8814a_pwrtrk_type5_2gb_n,
++      .pwrtrk_2gb_p = rtw8814a_pwrtrk_type5_2gb_p,
++      .pwrtrk_2ga_n = rtw8814a_pwrtrk_type5_2ga_n,
++      .pwrtrk_2ga_p = rtw8814a_pwrtrk_type5_2ga_p,
++      .pwrtrk_2g_cckd_n = rtw8814a_pwrtrk_type5_2g_cck_d_n,
++      .pwrtrk_2g_cckd_p = rtw8814a_pwrtrk_type5_2g_cck_d_p,
++      .pwrtrk_2g_cckc_n = rtw8814a_pwrtrk_type5_2g_cck_c_n,
++      .pwrtrk_2g_cckc_p = rtw8814a_pwrtrk_type5_2g_cck_c_p,
++      .pwrtrk_2g_cckb_n = rtw8814a_pwrtrk_type5_2g_cck_b_n,
++      .pwrtrk_2g_cckb_p = rtw8814a_pwrtrk_type5_2g_cck_b_p,
++      .pwrtrk_2g_ccka_n = rtw8814a_pwrtrk_type5_2g_cck_a_n,
++      .pwrtrk_2g_ccka_p = rtw8814a_pwrtrk_type5_2g_cck_a_p,
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5gd_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5gd_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5gc_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5gc_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++      {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
++       8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
++};
++
++static const u8
++rtw8814a_pwrtrk_type7_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2gd_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2gd_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2gc_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2gc_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2gb_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2gb_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2ga_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2ga_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_d_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_d_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_c_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_c_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 7, 7,
++       7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++static const u8 rtw8814a_pwrtrk_type7_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
++       0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
++       8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
++};
++
++const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type7_tbl = {
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5gd_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5gd_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5gd_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5gd_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5gd_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5gd_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5gc_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5gc_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5gc_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5gc_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5gc_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5gc_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5gb_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5gb_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5gb_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5gb_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5gb_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5gb_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5ga_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5ga_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5ga_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type7_5ga_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type7_5ga_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type7_5ga_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_2gd_n = rtw8814a_pwrtrk_type7_2gd_n,
++      .pwrtrk_2gd_p = rtw8814a_pwrtrk_type7_2gd_p,
++      .pwrtrk_2gc_n = rtw8814a_pwrtrk_type7_2gc_n,
++      .pwrtrk_2gc_p = rtw8814a_pwrtrk_type7_2gc_p,
++      .pwrtrk_2gb_n = rtw8814a_pwrtrk_type7_2gb_n,
++      .pwrtrk_2gb_p = rtw8814a_pwrtrk_type7_2gb_p,
++      .pwrtrk_2ga_n = rtw8814a_pwrtrk_type7_2ga_n,
++      .pwrtrk_2ga_p = rtw8814a_pwrtrk_type7_2ga_p,
++      .pwrtrk_2g_cckd_n = rtw8814a_pwrtrk_type7_2g_cck_d_n,
++      .pwrtrk_2g_cckd_p = rtw8814a_pwrtrk_type7_2g_cck_d_p,
++      .pwrtrk_2g_cckc_n = rtw8814a_pwrtrk_type7_2g_cck_c_n,
++      .pwrtrk_2g_cckc_p = rtw8814a_pwrtrk_type7_2g_cck_c_p,
++      .pwrtrk_2g_cckb_n = rtw8814a_pwrtrk_type7_2g_cck_b_n,
++      .pwrtrk_2g_cckb_p = rtw8814a_pwrtrk_type7_2g_cck_b_p,
++      .pwrtrk_2g_ccka_n = rtw8814a_pwrtrk_type7_2g_cck_a_n,
++      .pwrtrk_2g_ccka_p = rtw8814a_pwrtrk_type7_2g_cck_a_p,
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5gd_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 4, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11, 12,
++       13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 1, 2, 3, 4, 4, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 12,
++       12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9, 10, 10,
++       10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5gd_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 14,
++       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 0, 1, 2, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5gc_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 4, 4, 5, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11, 12,
++       12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11,
++       12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11,
++       11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5gc_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 3, 4, 4, 5, 6, 7, 7, 8, 10, 11, 12, 13, 14,
++       15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
++      {0, 0, 1, 2, 4, 5, 5, 6, 6, 7, 7, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5gb_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11,
++       12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11,
++       12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 11,
++       11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5gb_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 10, 11, 11, 13, 13,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 10, 10, 11, 13, 13,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5ga_n[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11,
++       12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
++      {0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10, 11, 11,
++       12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++      {0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 10, 10, 11, 12,
++       12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
++};
++
++static const u8
++rtw8814a_pwrtrk_type8_5ga_p[RTW_PWR_TRK_5G_NUM][RTW_PWR_TRK_TBL_SZ] = {
++      {0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++      {0, 0, 1, 2, 3, 3, 4, 4, 6, 7, 7, 9, 10, 11, 12, 13, 14,
++       14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2gd_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5,
++       6, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2gd_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2gc_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2gc_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 8, 9, 10, 10,
++       11, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2gb_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8,
++       9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2gb_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2ga_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9,
++       10, 11, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2ga_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10,
++       11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_d_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8,
++       9, 9, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_d_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 10,
++       10, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 14
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_c_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9, 10,
++       10, 11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_c_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_b_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10,
++       10, 10, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_b_p[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10,
++       10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_a_n[RTW_PWR_TRK_TBL_SZ] = {
++      0, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 9, 9,
++       10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12
++};
++
++static const u8 rtw8814a_pwrtrk_type8_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
++       0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10,
++       11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13
++};
++
++const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type8_tbl = {
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5gd_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5gd_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5gd_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5gd_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5gd_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gd_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5gd_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5gc_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5gc_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5gc_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5gc_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5gc_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gc_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5gc_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5gb_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5gb_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5gb_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5gb_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5gb_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5gb_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5gb_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5ga_n[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5ga_n[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_n[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5ga_n[RTW_PWR_TRK_5G_3],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_1] = rtw8814a_pwrtrk_type8_5ga_p[RTW_PWR_TRK_5G_1],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_2] = rtw8814a_pwrtrk_type8_5ga_p[RTW_PWR_TRK_5G_2],
++      .pwrtrk_5ga_p[RTW_PWR_TRK_5G_3] = rtw8814a_pwrtrk_type8_5ga_p[RTW_PWR_TRK_5G_3],
++      .pwrtrk_2gd_n = rtw8814a_pwrtrk_type8_2gd_n,
++      .pwrtrk_2gd_p = rtw8814a_pwrtrk_type8_2gd_p,
++      .pwrtrk_2gc_n = rtw8814a_pwrtrk_type8_2gc_n,
++      .pwrtrk_2gc_p = rtw8814a_pwrtrk_type8_2gc_p,
++      .pwrtrk_2gb_n = rtw8814a_pwrtrk_type8_2gb_n,
++      .pwrtrk_2gb_p = rtw8814a_pwrtrk_type8_2gb_p,
++      .pwrtrk_2ga_n = rtw8814a_pwrtrk_type8_2ga_n,
++      .pwrtrk_2ga_p = rtw8814a_pwrtrk_type8_2ga_p,
++      .pwrtrk_2g_cckd_n = rtw8814a_pwrtrk_type8_2g_cck_d_n,
++      .pwrtrk_2g_cckd_p = rtw8814a_pwrtrk_type8_2g_cck_d_p,
++      .pwrtrk_2g_cckc_n = rtw8814a_pwrtrk_type8_2g_cck_c_n,
++      .pwrtrk_2g_cckc_p = rtw8814a_pwrtrk_type8_2g_cck_c_p,
++      .pwrtrk_2g_cckb_n = rtw8814a_pwrtrk_type8_2g_cck_b_n,
++      .pwrtrk_2g_cckb_p = rtw8814a_pwrtrk_type8_2g_cck_b_p,
++      .pwrtrk_2g_ccka_n = rtw8814a_pwrtrk_type8_2g_cck_a_n,
++      .pwrtrk_2g_ccka_p = rtw8814a_pwrtrk_type8_2g_cck_a_p,
++};
++
++static const struct rtw_pwr_seq_cmd init_power_on_8814a[] = {
++      {0x10c2,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), BIT(1)},
++      {0xFFFF,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       0,
++       RTW_PWR_CMD_END, 0, 0},
++};
++
++static const struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8814a[] = {
++      {0x0012,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(6), BIT(6)},
++      {0x0015,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(5), 0},
++      {0x0015,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(6), 0},
++      {0x0023,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(4), 0},
++      {0x0046,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x00},
++      {0x0062,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x00},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_PCI_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(2), 0},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(3), 0},
++      {0x0301,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_PCI_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0},
++      {0x0071,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_PCI_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(2), 0},
++      {0xFFFF,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       0,
++       RTW_PWR_CMD_END, 0, 0},
++};
++
++static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8814a[] = {
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(2), 0},
++      {0x0006,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_POLLING, BIT(1), BIT(1)},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(3), 0},
++      {0x00F0,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(7), 0},
++      {0x0081,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0x30, 0x20},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(0), BIT(0)},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_POLLING, BIT(0), 0},
++      {0xFFFF,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       0,
++       RTW_PWR_CMD_END, 0, 0},
++};
++
++static const struct rtw_pwr_seq_cmd trans_act_to_cardemu_8814a[] = {
++      {0x0c00,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x04},
++      {0x0e00,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x04},
++      {0x1002,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(0), 0},
++      {0x0002,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_DELAY, 1, RTW_PWR_DELAY_US},
++      {0x1002,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_PCI_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x001F,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0},
++      {0x0007,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x28},
++      {0x0008,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0x02, 0},
++      {0x0066,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(7), 0},
++      {0x0041,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(4), 0},
++      {0x0042,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x004e,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(5), BIT(5)},
++      {0x0041,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_USB_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(0), 0},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), BIT(1)},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_POLLING, BIT(1), 0},
++      {0xFFFF,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       0,
++       RTW_PWR_CMD_END, 0, 0},
++};
++
++static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8814a[] = {
++      {0x0003,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(2), 0},
++      {0x0080,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x01},
++      {0x0081,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x30},
++      {0x0045,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x00},
++      {0x0046,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0xff},
++      {0x0047,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0},
++      {0x0015,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(6), BIT(6)},
++      {0x0015,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(5), BIT(5)},
++      {0x0012,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(6), 0},
++      {0x0023,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(4), BIT(4)},
++      {0x0008,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x0007,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xFF, 0x20},
++      {0x001f,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x0020,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x0021,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x0076,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(1), 0},
++      {0x0091,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, 0xA0, 0xA0},
++      {0x0070,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(3), BIT(3)},
++      {0x0005,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       RTW_PWR_ADDR_MAC,
++       RTW_PWR_CMD_WRITE, BIT(3), BIT(3)},
++      {0xFFFF,
++       RTW_PWR_CUT_ALL_MSK,
++       RTW_PWR_INTF_ALL_MSK,
++       0,
++       RTW_PWR_CMD_END, 0, 0},
++};
++
++const struct rtw_pwr_seq_cmd * const card_enable_flow_8814a[] = {
++      init_power_on_8814a,
++      trans_carddis_to_cardemu_8814a,
++      trans_cardemu_to_act_8814a,
++      NULL
++};
++
++const struct rtw_pwr_seq_cmd * const card_disable_flow_8814a[] = {
++      trans_act_to_cardemu_8814a,
++      trans_cardemu_to_carddis_8814a,
++      NULL
++};
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a_table.h
+@@ -0,0 +1,40 @@
++/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#ifndef __RTW8814A_TABLE_H__
++#define __RTW8814A_TABLE_H__
++
++extern const struct rtw_table rtw8814a_mac_tbl;
++extern const struct rtw_table rtw8814a_agc_tbl;
++extern const struct rtw_table rtw8814a_bb_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type0_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type2_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type3_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type4_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type5_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type7_tbl;
++extern const struct rtw_table rtw8814a_bb_pg_type8_tbl;
++extern const struct rtw_table rtw8814a_rf_a_tbl;
++extern const struct rtw_table rtw8814a_rf_b_tbl;
++extern const struct rtw_table rtw8814a_rf_c_tbl;
++extern const struct rtw_table rtw8814a_rf_d_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type0_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type1_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type2_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type3_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type5_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type7_tbl;
++extern const struct rtw_table rtw8814a_txpwr_lmt_type8_tbl;
++extern const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_tbl;
++extern const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type0_tbl;
++extern const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type2_tbl;
++extern const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type5_tbl;
++extern const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type7_tbl;
++extern const struct rtw_pwr_track_tbl rtw8814a_rtw_pwrtrk_type8_tbl;
++extern const struct rtw_pwr_seq_cmd * const card_disable_flow_8814a[];
++extern const struct rtw_pwr_seq_cmd * const card_enable_flow_8814a[];
++
++#endif
diff --git a/package/kernel/mac80211/patches/rtl/088-v6.15-wifi-rtw88-Add-rtw8814a.-c-h.patch b/package/kernel/mac80211/patches/rtl/088-v6.15-wifi-rtw88-Add-rtw8814a.-c-h.patch
new file mode 100644 (file)
index 0000000..3d8ccd8
--- /dev/null
@@ -0,0 +1,2343 @@
+From 1a75457846424b77978d0ba1feb836913ed60637 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:24:40 +0200
+Subject: [PATCH] wifi: rtw88: Add rtw8814a.{c,h}
+
+These contain all the logic for the RTL8814A chip.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/5d3b8c03-63c1-4f20-860a-89d424badad8@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8814a.c | 2257 +++++++++++++++++
+ drivers/net/wireless/realtek/rtw88/rtw8814a.h |   62 +
+ 2 files changed, 2319 insertions(+)
+ create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8814a.c
+ create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8814a.h
+
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a.c
+@@ -0,0 +1,2257 @@
++// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#include <linux/usb.h>
++#include "main.h"
++#include "coex.h"
++#include "tx.h"
++#include "phy.h"
++#include "rtw8814a.h"
++#include "rtw8814a_table.h"
++#include "rtw88xxa.h"
++#include "reg.h"
++#include "debug.h"
++#include "efuse.h"
++#include "regd.h"
++#include "usb.h"
++
++static void rtw8814a_efuse_grant(struct rtw_dev *rtwdev, bool on)
++{
++      if (on) {
++              rtw_write8(rtwdev, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON);
++
++              rtw_write16_set(rtwdev, REG_SYS_FUNC_EN, BIT_FEN_ELDR);
++              rtw_write16_set(rtwdev, REG_SYS_CLKR,
++                              BIT_LOADER_CLK_EN | BIT_ANA8M);
++      } else {
++              rtw_write8(rtwdev, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF);
++      }
++}
++
++static void rtw8814a_read_rfe_type(struct rtw_dev *rtwdev)
++{
++      struct rtw_efuse *efuse = &rtwdev->efuse;
++
++      if (!(efuse->rfe_option & BIT(7)))
++              return;
++
++      if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE)
++              efuse->rfe_option = 0;
++      else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB)
++              efuse->rfe_option = 1;
++}
++
++static void rtw8814a_read_amplifier_type(struct rtw_dev *rtwdev)
++{
++      struct rtw_efuse *efuse = &rtwdev->efuse;
++
++      switch (efuse->rfe_option) {
++      case 1:
++              /* Internal 2G */
++              efuse->pa_type_2g = 0;
++              efuse->lna_type_2g = 0;
++              /* External 5G */
++              efuse->pa_type_5g = BIT(0);
++              efuse->lna_type_5g = BIT(3);
++              break;
++      case 2 ... 5:
++              /* External everything */
++              efuse->pa_type_2g = BIT(4);
++              efuse->lna_type_2g = BIT(3);
++              efuse->pa_type_5g = BIT(0);
++              efuse->lna_type_5g = BIT(3);
++              break;
++      case 6:
++              efuse->lna_type_5g = BIT(3);
++              break;
++      default:
++              break;
++      }
++}
++
++static void rtw8814a_read_rf_type(struct rtw_dev *rtwdev,
++                                struct rtw8814a_efuse *map)
++{
++      struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev);
++      struct rtw_hal *hal = &rtwdev->hal;
++
++      switch (map->trx_antenna_option) {
++      case 0xff: /* 4T4R */
++      case 0xee: /* 3T3R */
++              if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB &&
++                  rtwusb->udev->speed != USB_SPEED_SUPER)
++                      hal->rf_type = RF_2T2R;
++              else
++                      hal->rf_type = RF_3T3R;
++
++              break;
++      case 0x66: /* 2T2R */
++      case 0x6f: /* 2T4R */
++      default:
++              hal->rf_type = RF_2T2R;
++              break;
++      }
++
++      hal->rf_path_num = 4;
++      hal->rf_phy_num = 4;
++
++      if (hal->rf_type == RF_3T3R) {
++              hal->antenna_rx = BB_PATH_ABC;
++              hal->antenna_tx = BB_PATH_ABC;
++      } else {
++              hal->antenna_rx = BB_PATH_AB;
++              hal->antenna_tx = BB_PATH_AB;
++      }
++}
++
++static void rtw8814a_init_hwcap(struct rtw_dev *rtwdev)
++{
++      struct rtw_efuse *efuse = &rtwdev->efuse;
++      struct rtw_hal *hal = &rtwdev->hal;
++
++      efuse->hw_cap.bw = BIT(RTW_CHANNEL_WIDTH_20) |
++                         BIT(RTW_CHANNEL_WIDTH_40) |
++                         BIT(RTW_CHANNEL_WIDTH_80);
++      efuse->hw_cap.ptcl = EFUSE_HW_CAP_PTCL_VHT;
++
++      if (hal->rf_type == RF_3T3R)
++              efuse->hw_cap.nss = 3;
++      else
++              efuse->hw_cap.nss = 2;
++
++      rtw_dbg(rtwdev, RTW_DBG_EFUSE,
++              "hw cap: hci=0x%02x, bw=0x%02x, ptcl=0x%02x, ant_num=%d, nss=%d\n",
++              efuse->hw_cap.hci, efuse->hw_cap.bw, efuse->hw_cap.ptcl,
++              efuse->hw_cap.ant_num, efuse->hw_cap.nss);
++}
++
++static int rtw8814a_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
++{
++      struct rtw_efuse *efuse = &rtwdev->efuse;
++      struct rtw8814a_efuse *map;
++      int i;
++
++      if (rtw_dbg_is_enabled(rtwdev, RTW_DBG_EFUSE))
++              print_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 1,
++                             log_map, rtwdev->chip->log_efuse_size, true);
++
++      map = (struct rtw8814a_efuse *)log_map;
++
++      efuse->usb_mode_switch = u8_get_bits(map->usb_mode, BIT(4));
++      efuse->rfe_option = map->rfe_option;
++      efuse->rf_board_option = map->rf_board_option;
++      efuse->crystal_cap = map->xtal_k;
++      efuse->channel_plan = map->channel_plan;
++      efuse->country_code[0] = map->country_code[0];
++      efuse->country_code[1] = map->country_code[1];
++      efuse->bt_setting = map->rf_bt_setting;
++      efuse->regd = map->rf_board_option & 0x7;
++      efuse->thermal_meter[RF_PATH_A] = map->thermal_meter;
++      efuse->thermal_meter_k = map->thermal_meter;
++      efuse->tx_bb_swing_setting_2g = map->tx_bb_swing_setting_2g;
++      efuse->tx_bb_swing_setting_5g = map->tx_bb_swing_setting_5g;
++
++      rtw8814a_read_rfe_type(rtwdev);
++      rtw8814a_read_amplifier_type(rtwdev);
++
++      /* Override rtw_chip_parameter_setup() */
++      rtw8814a_read_rf_type(rtwdev, map);
++
++      rtw8814a_init_hwcap(rtwdev);
++
++      for (i = 0; i < 4; i++)
++              efuse->txpwr_idx_table[i] = map->txpwr_idx_table[i];
++
++      switch (rtw_hci_type(rtwdev)) {
++      case RTW_HCI_TYPE_USB:
++              ether_addr_copy(efuse->addr, map->u.mac_addr);
++              break;
++      case RTW_HCI_TYPE_PCIE:
++              ether_addr_copy(efuse->addr, map->e.mac_addr);
++              break;
++      case RTW_HCI_TYPE_SDIO:
++      default:
++              /* unsupported now */
++              return -EOPNOTSUPP;
++      }
++
++      return 0;
++}
++
++static void rtw8814a_init_rfe_reg(struct rtw_dev *rtwdev)
++{
++      u8 rfe_option = rtwdev->efuse.rfe_option;
++
++      if (rfe_option == 2 || rfe_option == 1) {
++              rtw_write32_mask(rtwdev, 0x1994, 0xf, 0xf);
++              rtw_write8_set(rtwdev, REG_GPIO_MUXCFG + 2, 0xf0);
++      } else if (rfe_option == 0) {
++              rtw_write32_mask(rtwdev, 0x1994, 0xf, 0xf);
++              rtw_write8_set(rtwdev, REG_GPIO_MUXCFG + 2, 0xc0);
++      }
++}
++
++#define RTW_TXSCALE_SIZE 37
++static const u32 rtw8814a_txscale_tbl[RTW_TXSCALE_SIZE] = {
++      0x081, 0x088, 0x090, 0x099, 0x0a2, 0x0ac, 0x0b6, 0x0c0, 0x0cc, 0x0d8,
++      0x0e5, 0x0f2, 0x101, 0x110, 0x120, 0x131, 0x143, 0x156, 0x16a, 0x180,
++      0x197, 0x1af, 0x1c8, 0x1e3, 0x200, 0x21e, 0x23e, 0x261, 0x285, 0x2ab,
++      0x2d3, 0x2fe, 0x32b, 0x35c, 0x38e, 0x3c4, 0x3fe
++};
++
++static u32 rtw8814a_get_bb_swing(struct rtw_dev *rtwdev, u8 band, u8 rf_path)
++{
++      static const u32 swing2setting[4] = {0x200, 0x16a, 0x101, 0x0b6};
++      struct rtw_efuse *efuse = &rtwdev->efuse;
++      u8 tx_bb_swing;
++
++      if (band == RTW_BAND_2G)
++              tx_bb_swing = efuse->tx_bb_swing_setting_2g;
++      else
++              tx_bb_swing = efuse->tx_bb_swing_setting_5g;
++
++      tx_bb_swing >>= 2 * rf_path;
++      tx_bb_swing &= 0x3;
++
++      return swing2setting[tx_bb_swing];
++}
++
++static u8 rtw8814a_get_swing_index(struct rtw_dev *rtwdev)
++{
++      u32 swing, table_value;
++      u8 i;
++
++      swing = rtw8814a_get_bb_swing(rtwdev, rtwdev->hal.current_band_type,
++                                    RF_PATH_A);
++
++      for (i = 0; i < ARRAY_SIZE(rtw8814a_txscale_tbl); i++) {
++              table_value = rtw8814a_txscale_tbl[i];
++              if (swing == table_value)
++                      return i;
++      }
++
++      return 24;
++}
++
++static void rtw8814a_pwrtrack_init(struct rtw_dev *rtwdev)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++      u8 path;
++
++      dm_info->default_ofdm_index = rtw8814a_get_swing_index(rtwdev);
++
++      for (path = RF_PATH_A; path < rtwdev->hal.rf_path_num; path++) {
++              ewma_thermal_init(&dm_info->avg_thermal[path]);
++              dm_info->delta_power_index[path] = 0;
++              dm_info->delta_power_index_last[path] = 0;
++      }
++      dm_info->pwr_trk_triggered = false;
++      dm_info->pwr_trk_init_trigger = true;
++      dm_info->thermal_meter_k = rtwdev->efuse.thermal_meter_k;
++}
++
++static void rtw8814a_config_trx_path(struct rtw_dev *rtwdev)
++{
++      /* RX CCK disable 2R CCA */
++      rtw_write32_clr(rtwdev, REG_CCK0_FAREPORT,
++                      BIT_CCK0_2RX | BIT_CCK0_MRC);
++      /* pathB tx on, path A/C/D tx off */
++      rtw_write32_mask(rtwdev, REG_CCK_RX, 0xf0000000, 0x4);
++      /* pathB rx */
++      rtw_write32_mask(rtwdev, REG_CCK_RX, 0x0f000000, 0x5);
++}
++
++static void rtw8814a_config_cck_rx_antenna_init(struct rtw_dev *rtwdev)
++{
++      /* CCK 2R CCA parameters */
++
++      /* Disable Ant diversity */
++      rtw_write32_mask(rtwdev, REG_RXSB, BIT_RXSB_ANA_DIV, 0x0);
++      /* Concurrent CCA at LSB & USB */
++      rtw_write32_mask(rtwdev, REG_CCA, BIT_CCA_CO, 0);
++      /* RX path diversity enable */
++      rtw_write32_mask(rtwdev, REG_ANTSEL, BIT_ANT_BYCO, 0);
++      /* r_en_mrc_antsel */
++      rtw_write32_mask(rtwdev, REG_PRECTRL, BIT_DIS_CO_PATHSEL, 0);
++      /* MBC weighting */
++      rtw_write32_mask(rtwdev, REG_CCA_MF, BIT_MBC_WIN, 1);
++      /* 2R CCA only */
++      rtw_write32_mask(rtwdev, REG_CCKTX, BIT_CMB_CCA_2R, 1);
++}
++
++static void rtw8814a_phy_set_param(struct rtw_dev *rtwdev)
++{
++      u32 crystal_cap, val32;
++      u8 val8, rf_path;
++
++      /* power on BB/RF domain */
++      if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB)
++              rtw_write8_set(rtwdev, REG_SYS_FUNC_EN, BIT_FEN_USBA);
++      else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE)
++              rtw_write8_set(rtwdev, REG_SYS_FUNC_EN, BIT_FEN_PCIEA);
++
++      rtw_write8_set(rtwdev, REG_SYS_CFG3_8814A + 2,
++                     BIT_FEN_BB_GLB_RST | BIT_FEN_BB_RSTB);
++
++      /* Power on RF paths A..D */
++      val8 = BIT_RF_EN | BIT_RF_RSTB | BIT_RF_SDM_RSTB;
++      rtw_write8(rtwdev, REG_RF_CTRL, val8);
++      rtw_write8(rtwdev, REG_RF_CTRL1, val8);
++      rtw_write8(rtwdev, REG_RF_CTRL2, val8);
++      rtw_write8(rtwdev, REG_RF_CTRL3, val8);
++
++      rtw_load_table(rtwdev, rtwdev->chip->bb_tbl);
++      rtw_load_table(rtwdev, rtwdev->chip->agc_tbl);
++
++      crystal_cap = rtwdev->efuse.crystal_cap & 0x3F;
++      crystal_cap |= crystal_cap << 6;
++      rtw_write32_mask(rtwdev, REG_AFE_CTRL3, 0x07ff8000, crystal_cap);
++
++      rtw8814a_config_trx_path(rtwdev);
++
++      for (rf_path = 0; rf_path < rtwdev->hal.rf_path_num; rf_path++)
++              rtw_load_table(rtwdev, rtwdev->chip->rf_tbl[rf_path]);
++
++      val32 = rtw_read_rf(rtwdev, RF_PATH_A, RF_RCK1_V1, RFREG_MASK);
++      rtw_write_rf(rtwdev, RF_PATH_B, RF_RCK1_V1, RFREG_MASK, val32);
++      rtw_write_rf(rtwdev, RF_PATH_C, RF_RCK1_V1, RFREG_MASK, val32);
++      rtw_write_rf(rtwdev, RF_PATH_D, RF_RCK1_V1, RFREG_MASK, val32);
++
++      rtw_write32_set(rtwdev, REG_RXPSEL, BIT_RX_PSEL_RST);
++
++      rtw_write8(rtwdev, REG_HWSEQ_CTRL, 0xFF);
++
++      rtw_write32(rtwdev, REG_BAR_MODE_CTRL, 0x0201ffff);
++
++      rtw_write8(rtwdev, REG_MISC_CTRL, BIT_DIS_SECOND_CCA);
++
++      rtw_write8(rtwdev, REG_NAV_CTRL + 2, 0);
++
++      rtw_write8_clr(rtwdev, REG_GPIO_MUXCFG, BIT(5));
++
++      rtw8814a_config_cck_rx_antenna_init(rtwdev);
++
++      rtw_phy_init(rtwdev);
++      rtw8814a_pwrtrack_init(rtwdev);
++
++      rtw8814a_init_rfe_reg(rtwdev);
++
++      rtw_write8_clr(rtwdev, REG_QUEUE_CTRL, BIT(3));
++
++      rtw_write8(rtwdev, REG_NAV_CTRL + 2, 235);
++
++      /* enable Tx report. */
++      rtw_write8(rtwdev,  REG_FWHW_TXQ_CTRL + 1, 0x1F);
++
++      if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB) {
++              /* Reset USB mode switch setting */
++              rtw_write8(rtwdev, REG_SYS_SDIO_CTRL, 0x0);
++              rtw_write8(rtwdev, REG_ACLK_MON, 0x0);
++      }
++}
++
++static void rtw8814ae_enable_rf_1_2v(struct rtw_dev *rtwdev)
++{
++      /* This is for fullsize card, because GPIO7 there is floating.
++       * We should pull GPIO7 high to enable RF 1.2V Switch Power Supply
++       */
++
++      /* 1. set 0x40[1:0] to 0, BIT_GPIOSEL=0, select pin as GPIO */
++      rtw_write8_clr(rtwdev, REG_GPIO_MUXCFG, BIT(1) | BIT(0));
++
++      /* 2. set 0x44[31] to 0
++       * mode=0: data port;
++       * mode=1 and BIT_GPIO_IO_SEL=0: interrupt mode;
++       */
++      rtw_write8_clr(rtwdev, REG_GPIO_PIN_CTRL + 3, BIT(7));
++
++      /* 3. data mode
++       * 3.1 set 0x44[23] to 1
++       * sel=0: input;
++       * sel=1: output;
++       */
++      rtw_write8_set(rtwdev, REG_GPIO_PIN_CTRL + 2, BIT(7));
++
++      /* 3.2 set 0x44[15] to 1
++       * output high value;
++       */
++      rtw_write8_set(rtwdev, REG_GPIO_PIN_CTRL + 1, BIT(7));
++}
++
++static int rtw8814a_mac_init(struct rtw_dev *rtwdev)
++{
++      struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev);
++
++      rtw_write16(rtwdev, REG_CR,
++                  MAC_TRX_ENABLE | BIT_MAC_SEC_EN | BIT_32K_CAL_TMR_EN);
++
++      rtw_load_table(rtwdev, rtwdev->chip->mac_tbl);
++
++      if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB)
++              rtw_write8(rtwdev, REG_AUTO_LLT_V1 + 3,
++                         rtwdev->chip->usb_tx_agg_desc_num << 1);
++
++      rtw_write32(rtwdev, REG_HIMR0, 0);
++      rtw_write32(rtwdev, REG_HIMR1, 0);
++
++      rtw_write32_mask(rtwdev, REG_RRSR, 0xfffff, 0xfffff);
++
++      rtw_write16(rtwdev, REG_RETRY_LIMIT, 0x3030);
++
++      rtw_write16(rtwdev, REG_RXFLTMAP0, 0xffff);
++      rtw_write16(rtwdev, REG_RXFLTMAP1, 0x0400);
++      rtw_write16(rtwdev, REG_RXFLTMAP2, 0xffff);
++
++      rtw_write8(rtwdev, REG_MAX_AGGR_NUM, 0x36);
++      rtw_write8(rtwdev, REG_MAX_AGGR_NUM + 1, 0x36);
++
++      /* Set Spec SIFS (used in NAV) */
++      rtw_write16(rtwdev, REG_SPEC_SIFS, 0x100a);
++      rtw_write16(rtwdev, REG_MAC_SPEC_SIFS, 0x100a);
++
++      /* Set SIFS for CCK */
++      rtw_write16(rtwdev, REG_SIFS, 0x100a);
++
++      /* Set SIFS for OFDM */
++      rtw_write16(rtwdev, REG_SIFS + 2, 0x100a);
++
++      /* TXOP */
++      rtw_write32(rtwdev, REG_EDCA_BE_PARAM, 0x005EA42B);
++      rtw_write32(rtwdev, REG_EDCA_BK_PARAM, 0x0000A44F);
++      rtw_write32(rtwdev, REG_EDCA_VI_PARAM, 0x005EA324);
++      rtw_write32(rtwdev, REG_EDCA_VO_PARAM, 0x002FA226);
++
++      rtw_write8_set(rtwdev, REG_FWHW_TXQ_CTRL, BIT(7));
++
++      rtw_write8(rtwdev, REG_ACKTO, 0x80);
++
++      rtw_write16(rtwdev, REG_BCN_CTRL,
++                  BIT_DIS_TSF_UDT | (BIT_DIS_TSF_UDT << 8));
++      rtw_write32_mask(rtwdev, REG_TBTT_PROHIBIT, 0xfffff, WLAN_TBTT_TIME);
++      rtw_write8(rtwdev, REG_DRVERLYINT, 0x05);
++      rtw_write8(rtwdev, REG_BCNDMATIM, WLAN_BCN_DMA_TIME);
++      rtw_write16(rtwdev, REG_BCNTCFG, 0x4413);
++      rtw_write8(rtwdev, REG_BCN_MAX_ERR, 0xFF);
++
++      rtw_write32(rtwdev, REG_FAST_EDCA_VOVI_SETTING, 0x08070807);
++      rtw_write32(rtwdev, REG_FAST_EDCA_BEBK_SETTING, 0x08070807);
++
++      if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_USB &&
++          rtwusb->udev->speed == USB_SPEED_SUPER) {
++              /* Disable U1/U2 Mode to avoid 2.5G spur in USB3.0. */
++              rtw_write8_clr(rtwdev, REG_USB_MOD, BIT(4) | BIT(3));
++              /* To avoid usb 3.0 H2C fail. */
++              rtw_write16(rtwdev, 0xf002, 0);
++
++              rtw_write8_clr(rtwdev, REG_SW_AMPDU_BURST_MODE_CTRL,
++                             BIT_PRE_TX_CMD);
++      } else if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE) {
++              rtw8814ae_enable_rf_1_2v(rtwdev);
++
++              /* Force the antenna b to wifi. */
++              rtw_write8_set(rtwdev, REG_PAD_CTRL1, BIT(2));
++              rtw_write8_set(rtwdev, REG_PAD_CTRL1 + 1, BIT(0));
++              rtw_write8_set(rtwdev, REG_LED_CFG + 3,
++                             (BIT(27) | BIT_DPDT_WL_SEL) >> 24);
++      }
++
++      return 0;
++}
++
++static void rtw8814a_set_rfe_reg_24g(struct rtw_dev *rtwdev)
++{
++      switch (rtwdev->efuse.rfe_option) {
++      case 2:
++              rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x72707270);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x72707270);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x72707270);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_D, 0x77707770);
++
++              rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D,
++                               BIT_RFE_SELSW0_D, 0x72);
++
++              break;
++      case 1:
++              rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x77777777);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x77777777);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x77777777);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_D, 0x77777777);
++
++              rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D,
++                               BIT_RFE_SELSW0_D, 0x77);
++
++              break;
++      case 0:
++      default:
++              rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x77777777);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x77777777);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x77777777);
++              /* Is it not necessary to set REG_RFE_PINMUX_D ? */
++
++              rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D,
++                               BIT_RFE_SELSW0_D, 0x77);
++
++              break;
++      }
++}
++
++static void rtw8814a_set_rfe_reg_5g(struct rtw_dev *rtwdev)
++{
++      switch (rtwdev->efuse.rfe_option) {
++      case 2:
++              rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x37173717);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x37173717);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x37173717);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_D, 0x77177717);
++
++              rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D,
++                               BIT_RFE_SELSW0_D, 0x37);
++
++              break;
++      case 1:
++              rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x33173317);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x33173317);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x33173317);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_D, 0x77177717);
++
++              rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D,
++                               BIT_RFE_SELSW0_D, 0x33);
++
++              break;
++      case 0:
++      default:
++              rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x54775477);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x54775477);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x54775477);
++              rtw_write32(rtwdev, REG_RFE_PINMUX_D, 0x54775477);
++
++              rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D,
++                               BIT_RFE_SELSW0_D, 0x54);
++
++              break;
++      }
++}
++
++static void rtw8814a_set_channel_bb_swing(struct rtw_dev *rtwdev, u8 band)
++{
++      rtw_write32_mask(rtwdev, REG_TXSCALE_A, BB_SWING_MASK,
++                       rtw8814a_get_bb_swing(rtwdev, band, RF_PATH_A));
++      rtw_write32_mask(rtwdev, REG_TXSCALE_B, BB_SWING_MASK,
++                       rtw8814a_get_bb_swing(rtwdev, band, RF_PATH_B));
++      rtw_write32_mask(rtwdev, REG_TXSCALE_C, BB_SWING_MASK,
++                       rtw8814a_get_bb_swing(rtwdev, band, RF_PATH_C));
++      rtw_write32_mask(rtwdev, REG_TXSCALE_D, BB_SWING_MASK,
++                       rtw8814a_get_bb_swing(rtwdev, band, RF_PATH_D));
++      rtw8814a_pwrtrack_init(rtwdev);
++}
++
++static void rtw8814a_set_bw_reg_adc(struct rtw_dev *rtwdev, u8 bw)
++{
++      u32 adc = 0;
++
++      if (bw == RTW_CHANNEL_WIDTH_20)
++              adc = 0;
++      else if (bw == RTW_CHANNEL_WIDTH_40)
++              adc = 1;
++      else if (bw == RTW_CHANNEL_WIDTH_80)
++              adc = 2;
++
++      rtw_write32_mask(rtwdev, REG_ADCCLK, BIT(1) | BIT(0), adc);
++}
++
++static void rtw8814a_set_bw_reg_agc(struct rtw_dev *rtwdev, u8 new_band, u8 bw)
++{
++      u32 agc = 7;
++
++      if (bw == RTW_CHANNEL_WIDTH_20) {
++              agc = 6;
++      } else if (bw == RTW_CHANNEL_WIDTH_40) {
++              if (new_band == RTW_BAND_5G)
++                      agc = 8;
++              else
++                      agc = 7;
++      } else if (bw == RTW_CHANNEL_WIDTH_80) {
++              agc = 3;
++      }
++
++      rtw_write32_mask(rtwdev, REG_CCASEL, 0xf000, agc);
++}
++
++static void rtw8814a_switch_band(struct rtw_dev *rtwdev, u8 new_band, u8 bw)
++{
++      /* Clear 0x1000[16], When this bit is set to 0, CCK and OFDM
++       * are disabled, and clock are gated. Otherwise, CCK and OFDM
++       * are enabled.
++       */
++      rtw_write8_clr(rtwdev, REG_SYS_CFG3_8814A + 2, BIT_FEN_BB_RSTB);
++
++      if (new_band == RTW_BAND_2G) {
++              rtw_write32_mask(rtwdev, REG_AGC_TABLE, 0x1f, 0);
++
++              rtw8814a_set_rfe_reg_24g(rtwdev);
++
++              rtw_write32_mask(rtwdev, REG_TXPSEL, 0xf0, 0x2);
++              rtw_write32_mask(rtwdev, REG_CCK_RX, 0x0f000000, 0x5);
++
++              rtw_write32_mask(rtwdev, REG_RXPSEL, BIT_RX_PSEL_RST, 0x3);
++
++              rtw_write8(rtwdev, REG_CCK_CHECK, 0);
++
++              rtw_write32_mask(rtwdev, 0xa80, BIT(18), 0);
++      } else {
++              rtw_write8(rtwdev, REG_CCK_CHECK, BIT_CHECK_CCK_EN);
++
++              /* Enable CCK Tx function, even when CCK is off */
++              rtw_write32_mask(rtwdev, 0xa80, BIT(18), 1);
++
++              rtw8814a_set_rfe_reg_5g(rtwdev);
++
++              rtw_write32_mask(rtwdev, REG_TXPSEL, 0xf0, 0x0);
++              rtw_write32_mask(rtwdev, REG_CCK_RX, 0x0f000000, 0xf);
++
++              rtw_write32_mask(rtwdev, REG_RXPSEL, BIT_RX_PSEL_RST, 0x2);
++      }
++
++      rtw8814a_set_channel_bb_swing(rtwdev, new_band);
++
++      rtw8814a_set_bw_reg_adc(rtwdev, bw);
++      rtw8814a_set_bw_reg_agc(rtwdev, new_band, bw);
++
++      rtw_write8_set(rtwdev, REG_SYS_CFG3_8814A + 2, BIT_FEN_BB_RSTB);
++}
++
++static void rtw8814a_switch_channel(struct rtw_dev *rtwdev, u8 channel)
++{
++      struct rtw_hal *hal = &rtwdev->hal;
++      u32 fc_area, rf_mod_ag, cfgch;
++      u8 path;
++
++      switch (channel) {
++      case 36 ... 48:
++              fc_area = 0x494;
++              break;
++      case 50 ... 64:
++              fc_area = 0x453;
++              break;
++      case 100 ... 116:
++              fc_area = 0x452;
++              break;
++      default:
++              if (channel >= 118)
++                      fc_area = 0x412;
++              else
++                      fc_area = 0x96a;
++              break;
++      }
++
++      rtw_write32_mask(rtwdev, REG_CLKTRK, 0x1ffe0000, fc_area);
++
++      for (path = 0; path < hal->rf_path_num; path++) {
++              switch (channel) {
++              case 36 ... 64:
++                      rf_mod_ag = 0x101;
++                      break;
++              case 100 ... 140:
++                      rf_mod_ag = 0x301;
++                      break;
++              default:
++                      if (channel > 140)
++                              rf_mod_ag = 0x501;
++                      else
++                              rf_mod_ag = 0x000;
++                      break;
++              }
++
++              cfgch = (rf_mod_ag << 8) | channel;
++
++              rtw_write_rf(rtwdev, path, RF_CFGCH,
++                           RF18_RFSI_MASK | RF18_BAND_MASK | RF18_CHANNEL_MASK, cfgch);
++      }
++
++      switch (channel) {
++      case 36 ... 64:
++              rtw_write32_mask(rtwdev, REG_AGC_TABLE, 0x1f, 1);
++              break;
++      case 100 ... 144:
++              rtw_write32_mask(rtwdev, REG_AGC_TABLE, 0x1f, 2);
++              break;
++      default:
++              if (channel >= 149)
++                      rtw_write32_mask(rtwdev, REG_AGC_TABLE, 0x1f, 3);
++
++              break;
++      }
++}
++
++static void rtw8814a_24g_cck_tx_dfir(struct rtw_dev *rtwdev, u8 channel)
++{
++      if (channel >= 1 && channel <= 11) {
++              rtw_write32(rtwdev, REG_CCK0_TX_FILTER1, 0x1a1b0030);
++              rtw_write32(rtwdev, REG_CCK0_TX_FILTER2, 0x090e1317);
++              rtw_write32(rtwdev, REG_CCK0_DEBUG_PORT, 0x00000204);
++      } else if (channel >= 12 && channel <= 13) {
++              rtw_write32(rtwdev, REG_CCK0_TX_FILTER1, 0x1a1b0030);
++              rtw_write32(rtwdev, REG_CCK0_TX_FILTER2, 0x090e1217);
++              rtw_write32(rtwdev, REG_CCK0_DEBUG_PORT, 0x00000305);
++      } else if (channel == 14) {
++              rtw_write32(rtwdev, REG_CCK0_TX_FILTER1, 0x1a1b0030);
++              rtw_write32(rtwdev, REG_CCK0_TX_FILTER2, 0x00000E17);
++              rtw_write32(rtwdev, REG_CCK0_DEBUG_PORT, 0x00000000);
++      }
++}
++
++static void rtw8814a_set_bw_reg_mac(struct rtw_dev *rtwdev, u8 bw)
++{
++      u16 val16 = rtw_read16(rtwdev, REG_WMAC_TRXPTCL_CTL);
++
++      val16 &= ~BIT_RFMOD;
++      if (bw == RTW_CHANNEL_WIDTH_80)
++              val16 |= BIT_RFMOD_80M;
++      else if (bw == RTW_CHANNEL_WIDTH_40)
++              val16 |= BIT_RFMOD_40M;
++
++      rtw_write16(rtwdev, REG_WMAC_TRXPTCL_CTL, val16);
++}
++
++static void rtw8814a_set_bw_rf(struct rtw_dev *rtwdev, u8 bw)
++{
++      u8 path;
++
++      for (path = RF_PATH_A; path < rtwdev->hal.rf_path_num; path++) {
++              switch (bw) {
++              case RTW_CHANNEL_WIDTH_5:
++              case RTW_CHANNEL_WIDTH_10:
++              case RTW_CHANNEL_WIDTH_20:
++              default:
++                      rtw_write_rf(rtwdev, path, RF_CFGCH, RF18_BW_MASK, 3);
++                      break;
++              case RTW_CHANNEL_WIDTH_40:
++                      rtw_write_rf(rtwdev, path, RF_CFGCH, RF18_BW_MASK, 1);
++                      break;
++              case RTW_CHANNEL_WIDTH_80:
++                      rtw_write_rf(rtwdev, path, RF_CFGCH, RF18_BW_MASK, 0);
++                      break;
++              }
++      }
++}
++
++static void rtw8814a_adc_clk(struct rtw_dev *rtwdev)
++{
++      static const u32 rxiqc_reg[2][4] = {
++              { REG_RX_IQC_AB_A, REG_RX_IQC_AB_B,
++                REG_RX_IQC_AB_C, REG_RX_IQC_AB_D },
++              { REG_RX_IQC_CD_A, REG_RX_IQC_CD_B,
++                REG_RX_IQC_CD_C, REG_RX_IQC_CD_D }
++      };
++      u32 bb_reg_8fc, bb_reg_808, rxiqc[4];
++      u32 i = 0, mac_active = 1;
++      u8 mac_reg_522;
++
++      if (rtwdev->hal.cut_version != RTW_CHIP_VER_CUT_A)
++              return;
++
++      /* 1 Step1. MAC TX pause */
++      mac_reg_522 = rtw_read8(rtwdev, REG_TXPAUSE);
++      bb_reg_8fc = rtw_read32(rtwdev, REG_DBGSEL);
++      bb_reg_808 = rtw_read32(rtwdev, REG_RXPSEL);
++      rtw_write8(rtwdev, REG_TXPAUSE, 0x3f);
++
++      /* 1 Step 2. Backup rxiqc & rxiqc = 0 */
++      for (i = 0; i < 4; i++) {
++              rxiqc[i] = rtw_read32(rtwdev, rxiqc_reg[0][i]);
++              rtw_write32(rtwdev, rxiqc_reg[0][i], 0x0);
++              rtw_write32(rtwdev, rxiqc_reg[1][i], 0x0);
++      }
++      rtw_write32_mask(rtwdev, REG_PRECTRL, BIT_IQ_WGT, 0x3);
++      i = 0;
++
++      /* 1 Step 3. Monitor MAC IDLE */
++      rtw_write32(rtwdev, REG_DBGSEL, 0x0);
++      while (mac_active) {
++              mac_active = rtw_read32(rtwdev, REG_DBGRPT) & 0x803e0008;
++              i++;
++              if (i > 1000)
++                      break;
++      }
++
++      /* 1 Step 4. ADC clk flow */
++      rtw_write8(rtwdev, REG_RXPSEL, 0x11);
++      rtw_write32_mask(rtwdev, REG_DAC_RSTB, BIT(13), 0x1);
++      rtw_write8_mask(rtwdev, REG_GNT_BT, BIT(2) | BIT(1), 0x3);
++      rtw_write32_mask(rtwdev, REG_CCK_RPT_FORMAT, BIT(2), 0x1);
++
++      /* 0xc1c/0xe1c/0x181c/0x1a1c[4] must=1 to ensure table can be
++       * written when bbrstb=0
++       * 0xc60/0xe60/0x1860/0x1a60[15] always = 1 after this line
++       * 0xc60/0xe60/0x1860/0x1a60[14] always = 0 bcz its error in A-cut
++       */
++
++      /* power_off/clk_off @ anapar_state=idle mode */
++      rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x15800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x01808003);
++      rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x15800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x01808003);
++      rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x15800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x01808003);
++      rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x15800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x01808003);
++
++      rtw_write8_mask(rtwdev, REG_GNT_BT, BIT(2), 0x0);
++      rtw_write32_mask(rtwdev, REG_CCK_RPT_FORMAT, BIT(2), 0x0);
++      /* [19] = 1 to turn off ADC */
++      rtw_write32(rtwdev, REG_CK_MONHA, 0x0D080058);
++      rtw_write32(rtwdev, REG_CK_MONHB, 0x0D080058);
++      rtw_write32(rtwdev, REG_CK_MONHC, 0x0D080058);
++      rtw_write32(rtwdev, REG_CK_MONHD, 0x0D080058);
++
++      /* power_on/clk_off */
++      /* [19] = 0 to turn on ADC */
++      rtw_write32(rtwdev, REG_CK_MONHA, 0x0D000058);
++      rtw_write32(rtwdev, REG_CK_MONHB, 0x0D000058);
++      rtw_write32(rtwdev, REG_CK_MONHC, 0x0D000058);
++      rtw_write32(rtwdev, REG_CK_MONHD, 0x0D000058);
++
++      /* power_on/clk_on @ anapar_state=BT mode */
++      rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x05808032);
++      rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x05808032);
++      rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x05808032);
++      rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x05808032);
++      rtw_write8_mask(rtwdev, REG_GNT_BT, BIT(2), 0x1);
++      rtw_write32_mask(rtwdev, REG_CCK_RPT_FORMAT, BIT(2), 0x1);
++
++      /* recover original setting @ anapar_state=BT mode */
++      rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x05808032);
++      rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x05808032);
++      rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x05808032);
++      rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x05808032);
++
++      rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x05800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x07808003);
++      rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x05800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x07808003);
++      rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x05800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x07808003);
++      rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x05800002);
++      rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x07808003);
++
++      rtw_write8_mask(rtwdev, REG_GNT_BT, BIT(2) | BIT(1), 0x0);
++      rtw_write32_mask(rtwdev, REG_CCK_RPT_FORMAT, BIT(2), 0x0);
++      rtw_write32_mask(rtwdev, REG_DAC_RSTB, BIT(13), 0x0);
++
++      /* 1 Step 5. Recover MAC TX & IQC */
++      rtw_write8(rtwdev, REG_TXPAUSE, mac_reg_522);
++      rtw_write32(rtwdev, REG_DBGSEL, bb_reg_8fc);
++      rtw_write32(rtwdev, REG_RXPSEL, bb_reg_808);
++      for (i = 0; i < 4; i++) {
++              rtw_write32(rtwdev, rxiqc_reg[0][i], rxiqc[i]);
++              rtw_write32(rtwdev, rxiqc_reg[1][i], 0x01000000);
++      }
++      rtw_write32_mask(rtwdev, REG_PRECTRL, BIT_IQ_WGT, 0x0);
++}
++
++static void rtw8814a_spur_calibration_ch140(struct rtw_dev *rtwdev, u8 channel)
++{
++      struct rtw_hal *hal = &rtwdev->hal;
++
++      /* Add for 8814AE module ch140 MP Rx */
++      if (channel == 140) {
++              if (hal->ch_param[0] == 0)
++                      hal->ch_param[0] = rtw_read32(rtwdev, REG_CCASEL);
++              if (hal->ch_param[1] == 0)
++                      hal->ch_param[1] = rtw_read32(rtwdev, REG_PDMFTH);
++
++              rtw_write32(rtwdev, REG_CCASEL, 0x75438170);
++              rtw_write32(rtwdev, REG_PDMFTH, 0x79a18a0a);
++      } else {
++              if (rtw_read32(rtwdev, REG_CCASEL) == 0x75438170 &&
++                  hal->ch_param[0] != 0)
++                      rtw_write32(rtwdev, REG_CCASEL, hal->ch_param[0]);
++
++              if (rtw_read32(rtwdev, REG_PDMFTH) == 0x79a18a0a &&
++                  hal->ch_param[1] != 0)
++                      rtw_write32(rtwdev, REG_PDMFTH, hal->ch_param[1]);
++
++              hal->ch_param[0] = rtw_read32(rtwdev, REG_CCASEL);
++              hal->ch_param[1] = rtw_read32(rtwdev, REG_PDMFTH);
++      }
++}
++
++static void rtw8814a_set_nbi_reg(struct rtw_dev *rtwdev, u32 tone_idx)
++{
++      /* tone_idx X 10 */
++      static const u32 nbi_128[] = {
++              25, 55, 85, 115, 135,
++              155, 185, 205, 225, 245,
++              265, 285, 305, 335, 355,
++              375, 395, 415, 435, 455,
++              485, 505, 525, 555, 585, 615, 635
++      };
++      u32 reg_idx = 0;
++      u32 i;
++
++      for (i = 0; i < ARRAY_SIZE(nbi_128); i++) {
++              if (tone_idx < nbi_128[i]) {
++                      reg_idx = i + 1;
++                      break;
++              }
++      }
++
++      rtw_write32_mask(rtwdev, REG_NBI_SETTING, 0xfc000, reg_idx);
++}
++
++static void rtw8814a_nbi_setting(struct rtw_dev *rtwdev, u32 ch, u32 f_intf)
++{
++      u32 fc, int_distance, tone_idx;
++
++      fc = 2412 + (ch - 1) * 5;
++      int_distance = abs_diff(fc, f_intf);
++
++      /* 10 * (int_distance / 0.3125) */
++      tone_idx = int_distance << 5;
++
++      rtw8814a_set_nbi_reg(rtwdev, tone_idx);
++
++      rtw_write32_mask(rtwdev, REG_NBI_SETTING, BIT_NBI_ENABLE, 1);
++}
++
++static void rtw8814a_spur_nbi_setting(struct rtw_dev *rtwdev)
++{
++      u8 primary_channel = rtwdev->hal.primary_channel;
++      u8 rfe_type = rtwdev->efuse.rfe_option;
++
++      if (rfe_type != 0 && rfe_type != 1 && rfe_type != 6 && rfe_type != 7)
++              return;
++
++      if (primary_channel == 14)
++              rtw8814a_nbi_setting(rtwdev, primary_channel, 2480);
++      else if (primary_channel >= 4 && primary_channel <= 8)
++              rtw8814a_nbi_setting(rtwdev, primary_channel, 2440);
++      else
++              rtw_write32_mask(rtwdev, REG_NBI_SETTING, BIT_NBI_ENABLE, 0);
++}
++
++/* A workaround to eliminate the 5280 MHz & 5600 MHz & 5760 MHz spur of 8814A */
++static void rtw8814a_spur_calibration(struct rtw_dev *rtwdev, u8 channel, u8 bw)
++{
++      u8 rfe_type = rtwdev->efuse.rfe_option;
++      bool reset_nbi_csi = true;
++
++      if (rfe_type == 0) {
++              switch (bw) {
++              case RTW_CHANNEL_WIDTH_40:
++                      if (channel == 54 || channel == 118) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x3e >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK7, 0);
++
++                              reset_nbi_csi = false;
++                      } else if (channel == 151) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x1e >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK0,
++                                               BIT(16), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK7, 0);
++
++                              reset_nbi_csi = false;
++                      }
++                      break;
++              case RTW_CHANNEL_WIDTH_80:
++                      if (channel == 58 || channel == 122) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x3a >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK7,
++                                               BIT(0), 1);
++
++                              reset_nbi_csi = false;
++                      } else if (channel == 155) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x5a >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK6,
++                                               BIT(16), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK7, 0);
++
++                              reset_nbi_csi = false;
++                      }
++                      break;
++              case RTW_CHANNEL_WIDTH_20:
++                      if (channel == 153) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x1e >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK7,
++                                               BIT(16), 1);
++
++                              reset_nbi_csi = false;
++                      }
++
++                      rtw8814a_spur_calibration_ch140(rtwdev, channel);
++                      break;
++              default:
++                      break;
++              }
++      } else if (rfe_type == 1 || rfe_type == 2) {
++              switch (bw) {
++              case RTW_CHANNEL_WIDTH_20:
++                      if (channel == 153) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x1E >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK7,
++                                               BIT(16), 1);
++
++                              reset_nbi_csi = false;
++                      }
++                      break;
++              case RTW_CHANNEL_WIDTH_40:
++                      if (channel == 151) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x1e >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK0,
++                                               BIT(16), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK7, 0);
++
++                              reset_nbi_csi = false;
++                      }
++                      break;
++              case RTW_CHANNEL_WIDTH_80:
++                      if (channel == 155) {
++                              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                                               0x000fe000, 0x5a >> 1);
++                              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1,
++                                               BIT(0), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++                              rtw_write32_mask(rtwdev, REG_CSI_FIX_MASK6,
++                                               BIT(16), 1);
++                              rtw_write32(rtwdev, REG_CSI_FIX_MASK7, 0);
++
++                              reset_nbi_csi = false;
++                      }
++                      break;
++              default:
++                      break;
++              }
++      }
++
++      if (reset_nbi_csi) {
++              rtw_write32_mask(rtwdev, REG_NBI_SETTING,
++                               0x000fe000, 0xfc >> 1);
++              rtw_write32_mask(rtwdev, REG_CSI_MASK_SETTING1, BIT(0), 0);
++              rtw_write32(rtwdev, REG_CSI_FIX_MASK0, 0);
++              rtw_write32(rtwdev, REG_CSI_FIX_MASK1, 0);
++              rtw_write32(rtwdev, REG_CSI_FIX_MASK6, 0);
++              rtw_write32(rtwdev, REG_CSI_FIX_MASK7, 0);
++      }
++
++      rtw8814a_spur_nbi_setting(rtwdev);
++}
++
++static void rtw8814a_set_bw_mode(struct rtw_dev *rtwdev, u8 new_band,
++                               u8 channel, u8 bw, u8 primary_chan_idx)
++{
++      u8 txsc40 = 0, txsc20, txsc;
++
++      rtw8814a_set_bw_reg_mac(rtwdev, bw);
++
++      txsc20 = primary_chan_idx;
++      if (bw == RTW_CHANNEL_WIDTH_80) {
++              if (txsc20 == RTW_SC_20_UPPER || txsc20 == RTW_SC_20_UPMOST)
++                      txsc40 = RTW_SC_40_UPPER;
++              else
++                      txsc40 = RTW_SC_40_LOWER;
++      }
++
++      txsc = BIT_TXSC_20M(txsc20) | BIT_TXSC_40M(txsc40);
++      rtw_write8(rtwdev, REG_DATA_SC, txsc);
++
++      rtw8814a_set_bw_reg_adc(rtwdev, bw);
++      rtw8814a_set_bw_reg_agc(rtwdev, new_band, bw);
++
++      if (bw == RTW_CHANNEL_WIDTH_80) {
++              rtw_write32_mask(rtwdev, REG_ADCCLK, 0x3c, txsc);
++      } else if (bw == RTW_CHANNEL_WIDTH_40) {
++              rtw_write32_mask(rtwdev, REG_ADCCLK, 0x3c, txsc);
++
++              if (txsc == RTW_SC_20_UPPER)
++                      rtw_write32_set(rtwdev, REG_RXSB, BIT(4));
++              else
++                      rtw_write32_clr(rtwdev, REG_RXSB, BIT(4));
++      }
++
++      rtw8814a_set_bw_rf(rtwdev, bw);
++
++      rtw8814a_adc_clk(rtwdev);
++
++      rtw8814a_spur_calibration(rtwdev, channel, bw);
++}
++
++static void rtw8814a_set_channel(struct rtw_dev *rtwdev, u8 channel, u8 bw,
++                               u8 primary_chan_idx)
++{
++      u8 old_band, new_band;
++
++      if (rtw_read8(rtwdev, REG_CCK_CHECK) & BIT_CHECK_CCK_EN)
++              old_band = RTW_BAND_5G;
++      else
++              old_band = RTW_BAND_2G;
++
++      if (channel > 14)
++              new_band = RTW_BAND_5G;
++      else
++              new_band = RTW_BAND_2G;
++
++      if (new_band != old_band)
++              rtw8814a_switch_band(rtwdev, new_band, bw);
++
++      rtw8814a_switch_channel(rtwdev, channel);
++
++      rtw8814a_24g_cck_tx_dfir(rtwdev, channel);
++
++      rtw8814a_set_bw_mode(rtwdev, new_band, channel, bw, primary_chan_idx);
++}
++
++static s8 rtw8814a_cck_rx_pwr(u8 lna_idx, u8 vga_idx)
++{
++      s8 rx_pwr_all = 0;
++
++      switch (lna_idx) {
++      case 7:
++              rx_pwr_all = -38 - 2 * vga_idx;
++              break;
++      case 5:
++              rx_pwr_all = -28 - 2 * vga_idx;
++              break;
++      case 3:
++              rx_pwr_all = -8 - 2 * vga_idx;
++              break;
++      case 2:
++              rx_pwr_all = -1 - 2 * vga_idx;
++              break;
++      default:
++              break;
++      }
++
++      return rx_pwr_all;
++}
++
++static void rtw8814a_query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status,
++                                    struct rtw_rx_pkt_stat *pkt_stat)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++      struct rtw_jaguar_phy_status_rpt *rpt;
++      u8 gain[RTW_RF_PATH_MAX], rssi, i;
++      s8 rx_pwr_db, middle1, middle2;
++      s8 snr[RTW_RF_PATH_MAX];
++      s8 evm[RTW_RF_PATH_MAX];
++      u8 rfmode, subchannel;
++      u8 lna, vga;
++      s8 cfo[2];
++
++      rpt = (struct rtw_jaguar_phy_status_rpt *)phy_status;
++
++      pkt_stat->bw = RTW_CHANNEL_WIDTH_20;
++
++      if (pkt_stat->rate <= DESC_RATE11M) {
++              lna = le32_get_bits(rpt->w1, RTW_JGRPHY_W1_AGC_RPT_LNA_IDX);
++              vga = le32_get_bits(rpt->w1, RTW_JGRPHY_W1_AGC_RPT_VGA_IDX);
++
++              rx_pwr_db = rtw8814a_cck_rx_pwr(lna, vga);
++
++              pkt_stat->rx_power[RF_PATH_A] = rx_pwr_db;
++              pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1);
++              dm_info->rssi[RF_PATH_A] = pkt_stat->rssi;
++              pkt_stat->signal_power = rx_pwr_db;
++      } else { /* OFDM rate */
++              gain[RF_PATH_A] = le32_get_bits(rpt->w0, RTW_JGRPHY_W0_GAIN_A);
++              gain[RF_PATH_B] = le32_get_bits(rpt->w0, RTW_JGRPHY_W0_GAIN_B);
++              gain[RF_PATH_C] = le32_get_bits(rpt->w5, RTW_JGRPHY_W5_GAIN_C);
++              gain[RF_PATH_D] = le32_get_bits(rpt->w6, RTW_JGRPHY_W6_GAIN_D);
++
++              snr[RF_PATH_A] = le32_get_bits(rpt->w3, RTW_JGRPHY_W3_RXSNR_A);
++              snr[RF_PATH_B] = le32_get_bits(rpt->w4, RTW_JGRPHY_W4_RXSNR_B);
++              snr[RF_PATH_C] = le32_get_bits(rpt->w5, RTW_JGRPHY_W5_RXSNR_C);
++              snr[RF_PATH_D] = le32_get_bits(rpt->w5, RTW_JGRPHY_W5_RXSNR_D);
++
++              evm[RF_PATH_A] = le32_get_bits(rpt->w3, RTW_JGRPHY_W3_RXEVM_1);
++              evm[RF_PATH_B] = le32_get_bits(rpt->w3, RTW_JGRPHY_W3_RXEVM_2);
++              evm[RF_PATH_C] = le32_get_bits(rpt->w4, RTW_JGRPHY_W4_RXEVM_3);
++              evm[RF_PATH_D] = le32_get_bits(rpt->w5, RTW_JGRPHY_W5_RXEVM_4);
++
++              if (pkt_stat->rate <= DESC_RATE54M)
++                      evm[RF_PATH_A] = le32_get_bits(rpt->w6,
++                                                     RTW_JGRPHY_W6_SIGEVM);
++
++              for (i = RF_PATH_A; i < RTW_RF_PATH_MAX; i++) {
++                      pkt_stat->rx_power[i] = gain[i] - 110;
++
++                      rssi = rtw_phy_rf_power_2_rssi(&pkt_stat->rx_power[i], 1);
++                      dm_info->rssi[i] = rssi;
++
++                      pkt_stat->rx_snr[i] = snr[i];
++                      dm_info->rx_snr[i] = snr[i] >> 1;
++
++                      pkt_stat->rx_evm[i] = evm[i];
++                      evm[i] = max_t(s8, -127, evm[i]);
++                      dm_info->rx_evm_dbm[i] = abs(evm[i]) >> 1;
++              }
++
++              rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power,
++                                             RTW_RF_PATH_MAX);
++              pkt_stat->rssi = rssi;
++
++              /* When power saving is enabled the hardware sometimes
++               * reports unbelievably high gain for paths A and C
++               * (e.g. one frame 64 68 68 72, the next frame 106 66 88 72,
++               * the next 66 66 68 72), so use the second lowest gain
++               * instead of the highest.
++               */
++              middle1 = max(min(gain[RF_PATH_A], gain[RF_PATH_B]),
++                            min(gain[RF_PATH_C], gain[RF_PATH_D]));
++              middle2 = min(max(gain[RF_PATH_A], gain[RF_PATH_B]),
++                            max(gain[RF_PATH_C], gain[RF_PATH_D]));
++              rx_pwr_db = min(middle1, middle2);
++              rx_pwr_db -= 110;
++              pkt_stat->signal_power = rx_pwr_db;
++
++              rfmode = le32_get_bits(rpt->w0, RTW_JGRPHY_W0_R_RFMOD);
++              subchannel = le32_get_bits(rpt->w0, RTW_JGRPHY_W0_SUB_CHNL);
++
++              if (rfmode == 1 && subchannel == 0) {
++                      pkt_stat->bw = RTW_CHANNEL_WIDTH_40;
++              } else if (rfmode == 2) {
++                      if (subchannel == 0)
++                              pkt_stat->bw = RTW_CHANNEL_WIDTH_80;
++                      else if (subchannel == 9 || subchannel == 10)
++                              pkt_stat->bw = RTW_CHANNEL_WIDTH_40;
++              }
++
++              cfo[RF_PATH_A] = le32_get_bits(rpt->w2, RTW_JGRPHY_W2_CFO_TAIL_A);
++              cfo[RF_PATH_B] = le32_get_bits(rpt->w2, RTW_JGRPHY_W2_CFO_TAIL_B);
++
++              for (i = RF_PATH_A; i < 2; i++) {
++                      pkt_stat->cfo_tail[i] = cfo[i];
++                      dm_info->cfo_tail[i] = (cfo[i] * 5) >> 1;
++              }
++      }
++}
++
++static void
++rtw8814a_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
++{
++      struct rtw_hal *hal = &rtwdev->hal;
++      u32 txagc_table_wd;
++      u8 rate, pwr_index;
++      int j;
++
++      for (j = 0; j < rtw_rate_size[rs]; j++) {
++              rate = rtw_rate_section[rs][j];
++
++              pwr_index = hal->tx_pwr_tbl[path][rate] + 2;
++              if (pwr_index > rtwdev->chip->max_power_index)
++                      pwr_index = rtwdev->chip->max_power_index;
++
++              txagc_table_wd = 0x00801000;
++              txagc_table_wd |= (pwr_index << 24) | (path << 8) | rate;
++
++              rtw_write32(rtwdev, REG_AGC_TBL, txagc_table_wd);
++
++              /* first time to turn on the txagc table
++               * second to write the addr0
++               */
++              if (rate == DESC_RATE1M)
++                      rtw_write32(rtwdev, REG_AGC_TBL, txagc_table_wd);
++      }
++}
++
++static void rtw8814a_set_tx_power_index(struct rtw_dev *rtwdev)
++{
++      struct rtw_hal *hal = &rtwdev->hal;
++      int path;
++
++      for (path = 0; path < hal->rf_path_num; path++) {
++              if (hal->current_band_type == RTW_BAND_2G)
++                      rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                          RTW_RATE_SECTION_CCK);
++
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_OFDM);
++
++              if (test_bit(RTW_FLAG_SCANNING, rtwdev->flags))
++                      continue;
++
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_HT_1S);
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_VHT_1S);
++
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_HT_2S);
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_VHT_2S);
++
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_HT_3S);
++              rtw8814a_set_tx_power_index_by_rate(rtwdev, path,
++                                                  RTW_RATE_SECTION_VHT_3S);
++      }
++}
++
++static void rtw8814a_cfg_ldo25(struct rtw_dev *rtwdev, bool enable)
++{
++}
++
++static void rtw8814a_false_alarm_statistics(struct rtw_dev *rtwdev)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++      u32 cck_fa_cnt, ofdm_fa_cnt;
++      u32 crc32_cnt, cca32_cnt;
++      u32 cck_enable;
++
++      cck_enable = rtw_read32(rtwdev, REG_RXPSEL) & BIT(28);
++      cck_fa_cnt = rtw_read16(rtwdev, REG_FA_CCK);
++      ofdm_fa_cnt = rtw_read16(rtwdev, REG_FA_OFDM);
++
++      dm_info->cck_fa_cnt = cck_fa_cnt;
++      dm_info->ofdm_fa_cnt = ofdm_fa_cnt;
++      dm_info->total_fa_cnt = ofdm_fa_cnt;
++      if (cck_enable)
++              dm_info->total_fa_cnt += cck_fa_cnt;
++
++      crc32_cnt = rtw_read32(rtwdev, REG_CRC_CCK);
++      dm_info->cck_ok_cnt = u32_get_bits(crc32_cnt, MASKLWORD);
++      dm_info->cck_err_cnt = u32_get_bits(crc32_cnt, MASKHWORD);
++
++      crc32_cnt = rtw_read32(rtwdev, REG_CRC_OFDM);
++      dm_info->ofdm_ok_cnt = u32_get_bits(crc32_cnt, MASKLWORD);
++      dm_info->ofdm_err_cnt = u32_get_bits(crc32_cnt, MASKHWORD);
++
++      crc32_cnt = rtw_read32(rtwdev, REG_CRC_HT);
++      dm_info->ht_ok_cnt = u32_get_bits(crc32_cnt, MASKLWORD);
++      dm_info->ht_err_cnt = u32_get_bits(crc32_cnt, MASKHWORD);
++
++      crc32_cnt = rtw_read32(rtwdev, REG_CRC_VHT);
++      dm_info->vht_ok_cnt = u32_get_bits(crc32_cnt, MASKLWORD);
++      dm_info->vht_err_cnt = u32_get_bits(crc32_cnt, MASKHWORD);
++
++      cca32_cnt = rtw_read32(rtwdev, REG_CCA_OFDM);
++      dm_info->ofdm_cca_cnt = u32_get_bits(cca32_cnt, MASKHWORD);
++      dm_info->total_cca_cnt = dm_info->ofdm_cca_cnt;
++      if (cck_enable) {
++              cca32_cnt = rtw_read32(rtwdev, REG_CCA_CCK);
++              dm_info->cck_cca_cnt = u32_get_bits(cca32_cnt, MASKLWORD);
++              dm_info->total_cca_cnt += dm_info->cck_cca_cnt;
++      }
++
++      rtw_write32_set(rtwdev, REG_FAS, BIT(17));
++      rtw_write32_clr(rtwdev, REG_FAS, BIT(17));
++      rtw_write32_clr(rtwdev, REG_CCK0_FAREPORT, BIT(15));
++      rtw_write32_set(rtwdev, REG_CCK0_FAREPORT, BIT(15));
++      rtw_write32_set(rtwdev, REG_CNTRST, BIT(0));
++      rtw_write32_clr(rtwdev, REG_CNTRST, BIT(0));
++}
++
++#define MAC_REG_NUM_8814 2
++#define BB_REG_NUM_8814 14
++#define RF_REG_NUM_8814 1
++
++static void rtw8814a_iqk_backup_mac_bb(struct rtw_dev *rtwdev,
++                                     u32 *mac_backup, u32 *bb_backup,
++                                     const u32 *mac_regs,
++                                     const u32 *bb_regs)
++{
++      u32 i;
++
++      /* save MACBB default value */
++      for (i = 0; i < MAC_REG_NUM_8814; i++)
++              mac_backup[i] = rtw_read32(rtwdev, mac_regs[i]);
++
++      for (i = 0; i < BB_REG_NUM_8814; i++)
++              bb_backup[i] = rtw_read32(rtwdev, bb_regs[i]);
++}
++
++static void rtw8814a_iqk_backup_rf(struct rtw_dev *rtwdev,
++                                 u32 rf_backup[][4], const u32 *rf_regs)
++{
++      u32 i;
++
++      /* Save RF Parameters */
++      for (i = 0; i < RF_REG_NUM_8814; i++) {
++              rf_backup[i][RF_PATH_A] = rtw_read_rf(rtwdev, RF_PATH_A,
++                                                    rf_regs[i], RFREG_MASK);
++              rf_backup[i][RF_PATH_B] = rtw_read_rf(rtwdev, RF_PATH_B,
++                                                    rf_regs[i], RFREG_MASK);
++              rf_backup[i][RF_PATH_C] = rtw_read_rf(rtwdev, RF_PATH_C,
++                                                    rf_regs[i], RFREG_MASK);
++              rf_backup[i][RF_PATH_D] = rtw_read_rf(rtwdev, RF_PATH_D,
++                                                    rf_regs[i], RFREG_MASK);
++      }
++}
++
++static void rtw8814a_iqk_afe_setting(struct rtw_dev *rtwdev, bool do_iqk)
++{
++      if (do_iqk) {
++              /* IQK AFE setting RX_WAIT_CCA mode */
++              rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x0e808003);
++              rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x0e808003);
++              rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x0e808003);
++              rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x0e808003);
++      } else {
++              rtw_write32(rtwdev, REG_AFE_PWR1_A, 0x07808003);
++              rtw_write32(rtwdev, REG_AFE_PWR1_B, 0x07808003);
++              rtw_write32(rtwdev, REG_AFE_PWR1_C, 0x07808003);
++              rtw_write32(rtwdev, REG_AFE_PWR1_D, 0x07808003);
++      }
++
++      rtw_write32_mask(rtwdev, REG_DAC_RSTB, BIT(13), 0x1);
++
++      rtw_write8_set(rtwdev, REG_GNT_BT, BIT(2) | BIT(1));
++      rtw_write8_clr(rtwdev, REG_GNT_BT, BIT(2) | BIT(1));
++
++      rtw_write32_set(rtwdev, REG_CCK_RPT_FORMAT, BIT(2));
++      rtw_write32_clr(rtwdev, REG_CCK_RPT_FORMAT, BIT(2));
++}
++
++static void rtw8814a_iqk_restore_mac_bb(struct rtw_dev *rtwdev,
++                                      u32 *mac_backup, u32 *bb_backup,
++                                      const u32 *mac_regs,
++                                      const u32 *bb_regs)
++{
++      u32 i;
++
++      /* Reload MacBB Parameters */
++      for (i = 0; i < MAC_REG_NUM_8814; i++)
++              rtw_write32(rtwdev, mac_regs[i], mac_backup[i]);
++
++      for (i = 0; i < BB_REG_NUM_8814; i++)
++              rtw_write32(rtwdev, bb_regs[i], bb_backup[i]);
++}
++
++static void rtw8814a_iqk_restore_rf(struct rtw_dev *rtwdev,
++                                  const u32 rf_backup[][4],
++                                  const u32 *rf_regs)
++{
++      u32 i;
++
++      rtw_write_rf(rtwdev, RF_PATH_A, RF_LUTWE, RFREG_MASK, 0x0);
++      rtw_write_rf(rtwdev, RF_PATH_B, RF_LUTWE, RFREG_MASK, 0x0);
++      rtw_write_rf(rtwdev, RF_PATH_C, RF_LUTWE, RFREG_MASK, 0x0);
++      rtw_write_rf(rtwdev, RF_PATH_D, RF_LUTWE, RFREG_MASK, 0x0);
++
++      rtw_write_rf(rtwdev, RF_PATH_A, RF_RXBB2, RFREG_MASK, 0x88001);
++      rtw_write_rf(rtwdev, RF_PATH_B, RF_RXBB2, RFREG_MASK, 0x88001);
++      rtw_write_rf(rtwdev, RF_PATH_C, RF_RXBB2, RFREG_MASK, 0x88001);
++      rtw_write_rf(rtwdev, RF_PATH_D, RF_RXBB2, RFREG_MASK, 0x88001);
++
++      for (i = 0; i < RF_REG_NUM_8814; i++) {
++              rtw_write_rf(rtwdev, RF_PATH_A, rf_regs[i],
++                           RFREG_MASK, rf_backup[i][RF_PATH_A]);
++              rtw_write_rf(rtwdev, RF_PATH_B, rf_regs[i],
++                           RFREG_MASK, rf_backup[i][RF_PATH_B]);
++              rtw_write_rf(rtwdev, RF_PATH_C, rf_regs[i],
++                           RFREG_MASK, rf_backup[i][RF_PATH_C]);
++              rtw_write_rf(rtwdev, RF_PATH_D, rf_regs[i],
++                           RFREG_MASK, rf_backup[i][RF_PATH_D]);
++      }
++}
++
++static void rtw8814a_iqk_reset_nctl(struct rtw_dev *rtwdev)
++{
++      rtw_write32(rtwdev, 0x1b00, 0xf8000000);
++      rtw_write32(rtwdev, 0x1b80, 0x00000006);
++
++      rtw_write32(rtwdev, 0x1b00, 0xf8000000);
++      rtw_write32(rtwdev, 0x1b80, 0x00000002);
++}
++
++static void rtw8814a_iqk_configure_mac(struct rtw_dev *rtwdev)
++{
++      rtw_write8(rtwdev, REG_TXPAUSE, 0x3f);
++      rtw_write32_clr(rtwdev, REG_BCN_CTRL,
++                      (BIT_EN_BCN_FUNCTION << 8) | BIT_EN_BCN_FUNCTION);
++
++      /* RX ante off */
++      rtw_write8(rtwdev, REG_RXPSEL, 0x00);
++      /* CCA off */
++      rtw_write32_mask(rtwdev, REG_CCA2ND, 0xf, 0xe);
++      /* CCK RX path off */
++      rtw_write32_set(rtwdev, REG_PRECTRL, BIT_IQ_WGT);
++      rtw_write32(rtwdev, REG_RFE_PINMUX_A, 0x77777777);
++      rtw_write32(rtwdev, REG_RFE_PINMUX_B, 0x77777777);
++      rtw_write32(rtwdev, REG_RFE_PINMUX_C, 0x77777777);
++      rtw_write32(rtwdev, REG_RFE_PINMUX_D, 0x77777777);
++      rtw_write32_mask(rtwdev, REG_RFE_INVSEL_D, BIT_RFE_SELSW0_D, 0x77);
++      rtw_write32_mask(rtwdev, REG_PSD, BIT_PSD_INI, 0x0);
++
++      rtw_write32_mask(rtwdev, REG_RFE_INV0, 0xf, 0x0);
++}
++
++static void rtw8814a_lok_one_shot(struct rtw_dev *rtwdev, u8 path)
++{
++      u32 lok_temp1, lok_temp2;
++      bool lok_ready;
++      u8 ii;
++
++      /* ADC Clock source */
++      rtw_write32_mask(rtwdev, REG_FAS, BIT(21) | BIT(20), path);
++      /* LOK: CMD ID = 0
++       * {0xf8000011, 0xf8000021, 0xf8000041, 0xf8000081}
++       */
++      rtw_write32(rtwdev, 0x1b00, 0xf8000001 | (BIT(path) << 4));
++
++      usleep_range(1000, 1100);
++
++      if (read_poll_timeout(!rtw_read32_mask, lok_ready, lok_ready,
++                            1000, 10000, false,
++                            rtwdev, 0x1b00, BIT(0))) {
++              rtw_dbg(rtwdev, RTW_DBG_RFK, "==>S%d LOK timed out\n", path);
++
++              rtw8814a_iqk_reset_nctl(rtwdev);
++
++              rtw_write_rf(rtwdev, path, RF_DTXLOK, RFREG_MASK, 0x08400);
++
++              return;
++      }
++
++      rtw_write32(rtwdev, 0x1b00, 0xf8000000 | (path << 1));
++      rtw_write32(rtwdev, 0x1bd4, 0x003f0001);
++
++      lok_temp2 = rtw_read32_mask(rtwdev, 0x1bfc, 0x003e0000);
++      lok_temp2 = (lok_temp2 + 0x10) & 0x1f;
++
++      lok_temp1 = rtw_read32_mask(rtwdev, 0x1bfc, 0x0000003e);
++      lok_temp1 = (lok_temp1 + 0x10) & 0x1f;
++
++      for (ii = 1; ii < 5; ii++) {
++              lok_temp1 += (lok_temp1 & BIT(4 - ii)) << (ii * 2);
++              lok_temp2 += (lok_temp2 & BIT(4 - ii)) << (ii * 2);
++      }
++
++      rtw_dbg(rtwdev, RTW_DBG_RFK,
++              "path %d lok_temp1 = %#x, lok_temp2 = %#x\n",
++              path, lok_temp1 >> 4, lok_temp2 >> 4);
++
++      rtw_write_rf(rtwdev, path, RF_DTXLOK, 0x07c00, lok_temp1 >> 4);
++      rtw_write_rf(rtwdev, path, RF_DTXLOK, 0xf8000, lok_temp2 >> 4);
++}
++
++static void rtw8814a_iqk_tx_one_shot(struct rtw_dev *rtwdev, u8 path,
++                                   u32 *tx_matrix, bool *tx_ok)
++{
++      u8 bw = rtwdev->hal.current_band_width;
++      u8 cal_retry;
++      u32 iqk_cmd;
++
++      for (cal_retry = 0; cal_retry < 4; cal_retry++) {
++              rtw_write32_mask(rtwdev, REG_FAS, BIT(21) | BIT(20), path);
++
++              iqk_cmd = 0xf8000001 | ((bw + 3) << 8) | (BIT(path) << 4);
++
++              rtw_dbg(rtwdev, RTW_DBG_RFK, "TXK_Trigger = %#x\n", iqk_cmd);
++
++              rtw_write32(rtwdev, 0x1b00, iqk_cmd);
++
++              usleep_range(10000, 11000);
++
++              if (read_poll_timeout(!rtw_read32_mask, *tx_ok, *tx_ok,
++                                    1000, 20000, false,
++                                    rtwdev, 0x1b00, BIT(0))) {
++                      rtw_dbg(rtwdev, RTW_DBG_RFK,
++                              "tx iqk S%d timed out\n", path);
++
++                      rtw8814a_iqk_reset_nctl(rtwdev);
++              } else {
++                      *tx_ok = !rtw_read32_mask(rtwdev, 0x1b08, BIT(26));
++
++                      if (*tx_ok)
++                              break;
++              }
++      }
++
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d tx ==> 0x1b00 = 0x%x\n",
++              path, rtw_read32(rtwdev, 0x1b00));
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d tx ==> 0x1b08 = 0x%x\n",
++              path, rtw_read32(rtwdev, 0x1b08));
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d tx ==> cal_retry = %x\n",
++              path, cal_retry);
++
++      rtw_write32(rtwdev, 0x1b00, 0xf8000000 | (path << 1));
++
++      if (*tx_ok) {
++              *tx_matrix = rtw_read32(rtwdev, 0x1b38);
++
++              rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d_IQC = 0x%x\n",
++                      path, *tx_matrix);
++      }
++}
++
++static void rtw8814a_iqk_rx_one_shot(struct rtw_dev *rtwdev, u8 path,
++                                   u32 *tx_matrix, bool *tx_ok)
++{
++      static const u16 iqk_apply[RTW_RF_PATH_MAX] = {
++              REG_TXAGCIDX, REG_TX_AGC_B, REG_TX_AGC_C, REG_TX_AGC_D
++      };
++      u8 band = rtwdev->hal.current_band_type;
++      u8 bw = rtwdev->hal.current_band_width;
++      u32 rx_matrix;
++      u8 cal_retry;
++      u32 iqk_cmd;
++      bool rx_ok;
++
++      for (cal_retry = 0; cal_retry < 4; cal_retry++) {
++              rtw_write32_mask(rtwdev, REG_FAS, BIT(21) | BIT(20), path);
++
++              if (band == RTW_BAND_2G) {
++                      rtw_write_rf(rtwdev, path, RF_LUTDBG, BIT(11), 0x1);
++                      rtw_write_rf(rtwdev, path, RF_GAINTX, 0xfffff, 0x51ce1);
++
++                      switch (path) {
++                      case 0:
++                      case 1:
++                              rtw_write32(rtwdev, REG_RFE_PINMUX_B,
++                                          0x54775477);
++                              break;
++                      case 2:
++                              rtw_write32(rtwdev, REG_RFE_PINMUX_C,
++                                          0x54775477);
++                              break;
++                      case 3:
++                              rtw_write32(rtwdev, REG_RFE_INVSEL_D, 0x75400000);
++                              rtw_write32(rtwdev, REG_RFE_PINMUX_D,
++                                          0x77777777);
++                              break;
++                      }
++              }
++
++              iqk_cmd = 0xf8000001 | ((9 - bw) << 8) | (BIT(path) << 4);
++
++              rtw_dbg(rtwdev, RTW_DBG_RFK, "RXK_Trigger = 0x%x\n", iqk_cmd);
++
++              rtw_write32(rtwdev, 0x1b00, iqk_cmd);
++
++              usleep_range(10000, 11000);
++
++              if (read_poll_timeout(!rtw_read32_mask, rx_ok, rx_ok,
++                                    1000, 20000, false,
++                                    rtwdev, 0x1b00, BIT(0))) {
++                      rtw_dbg(rtwdev, RTW_DBG_RFK,
++                              "rx iqk S%d timed out\n", path);
++
++                      rtw8814a_iqk_reset_nctl(rtwdev);
++              } else {
++                      rx_ok = !rtw_read32_mask(rtwdev, 0x1b08, BIT(26));
++
++                      if (rx_ok)
++                              break;
++              }
++      }
++
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d rx ==> 0x1b00 = 0x%x\n",
++              path, rtw_read32(rtwdev, 0x1b00));
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d rx ==> 0x1b08 = 0x%x\n",
++              path, rtw_read32(rtwdev, 0x1b08));
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d rx ==> cal_retry = %x\n",
++              path, cal_retry);
++
++      rtw_write32(rtwdev, 0x1b00, 0xf8000000 | (path << 1));
++
++      if (rx_ok) {
++              rtw_write32(rtwdev, 0x1b3c, 0x20000000);
++              rx_matrix = rtw_read32(rtwdev, 0x1b3c);
++
++              rtw_dbg(rtwdev, RTW_DBG_RFK, "S%d_IQC = 0x%x\n",
++                      path, rx_matrix);
++      }
++
++      if (*tx_ok)
++              rtw_write32(rtwdev, 0x1b38, *tx_matrix);
++      else
++              rtw_write32_mask(rtwdev, iqk_apply[path], BIT(0), 0x0);
++
++      if (!rx_ok)
++              rtw_write32_mask(rtwdev, iqk_apply[path],
++                               BIT(11) | BIT(10), 0x0);
++
++      if (band == RTW_BAND_2G)
++              rtw_write_rf(rtwdev, path, RF_LUTDBG, BIT(11), 0x0);
++}
++
++static void rtw8814a_iqk(struct rtw_dev *rtwdev)
++{
++      u8 band = rtwdev->hal.current_band_type;
++      u8 bw = rtwdev->hal.current_band_width;
++      u32 tx_matrix[RTW_RF_PATH_MAX];
++      bool tx_ok[RTW_RF_PATH_MAX];
++      u8 path;
++
++      rtw_dbg(rtwdev, RTW_DBG_RFK, "IQK band = %d GHz bw = %d MHz\n",
++              band == RTW_BAND_2G ? 2 : 5, (1 << (bw + 1)) * 10);
++
++      rtw_write_rf(rtwdev, RF_PATH_A, RF_TXMOD, BIT(19), 0x1);
++      rtw_write_rf(rtwdev, RF_PATH_B, RF_TXMOD, BIT(19), 0x1);
++      rtw_write_rf(rtwdev, RF_PATH_C, RF_TXMOD, BIT(19), 0x1);
++      rtw_write_rf(rtwdev, RF_PATH_D, RF_TXMOD, BIT(19), 0x1);
++
++      rtw_write32_mask(rtwdev, REG_TXAGCIDX,
++                       (BIT(11) | BIT(10) | BIT(0)), 0x401);
++      rtw_write32_mask(rtwdev, REG_TX_AGC_B,
++                       (BIT(11) | BIT(10) | BIT(0)), 0x401);
++      rtw_write32_mask(rtwdev, REG_TX_AGC_C,
++                       (BIT(11) | BIT(10) | BIT(0)), 0x401);
++      rtw_write32_mask(rtwdev, REG_TX_AGC_D,
++                       (BIT(11) | BIT(10) | BIT(0)), 0x401);
++
++      if (band == RTW_BAND_5G)
++              rtw_write32(rtwdev, 0x1b00, 0xf8000ff1);
++      else
++              rtw_write32(rtwdev, 0x1b00, 0xf8000ef1);
++
++      usleep_range(1000, 1100);
++
++      rtw_write32(rtwdev, 0x810, 0x20101063);
++      rtw_write32(rtwdev, REG_DAC_RSTB, 0x0B00C000);
++
++      for (path = RF_PATH_A; path < RTW_RF_PATH_MAX; path++)
++              rtw8814a_lok_one_shot(rtwdev, path);
++
++      for (path = RF_PATH_A; path < RTW_RF_PATH_MAX; path++)
++              rtw8814a_iqk_tx_one_shot(rtwdev, path,
++                                       &tx_matrix[path], &tx_ok[path]);
++
++      for (path = RF_PATH_A; path < RTW_RF_PATH_MAX; path++)
++              rtw8814a_iqk_rx_one_shot(rtwdev, path,
++                                       &tx_matrix[path], &tx_ok[path]);
++}
++
++static void rtw8814a_do_iqk(struct rtw_dev *rtwdev)
++{
++      static const u32 backup_mac_reg[MAC_REG_NUM_8814] = {0x520, 0x550};
++      static const u32 backup_bb_reg[BB_REG_NUM_8814] = {
++              0xa14, 0x808, 0x838, 0x90c, 0x810, 0xcb0, 0xeb0,
++              0x18b4, 0x1ab4, 0x1abc, 0x9a4, 0x764, 0xcbc, 0x910
++      };
++      static const u32 backup_rf_reg[RF_REG_NUM_8814] = {0x0};
++      u32 rf_backup[RF_REG_NUM_8814][RTW_RF_PATH_MAX];
++      u32 mac_backup[MAC_REG_NUM_8814];
++      u32 bb_backup[BB_REG_NUM_8814];
++
++      rtw8814a_iqk_backup_mac_bb(rtwdev, mac_backup, bb_backup,
++                                 backup_mac_reg, backup_bb_reg);
++      rtw8814a_iqk_afe_setting(rtwdev, true);
++      rtw8814a_iqk_backup_rf(rtwdev, rf_backup, backup_rf_reg);
++      rtw8814a_iqk_configure_mac(rtwdev);
++      rtw8814a_iqk(rtwdev);
++      rtw8814a_iqk_reset_nctl(rtwdev); /* for 3-wire to BB use */
++      rtw8814a_iqk_afe_setting(rtwdev, false);
++      rtw8814a_iqk_restore_mac_bb(rtwdev, mac_backup, bb_backup,
++                                  backup_mac_reg, backup_bb_reg);
++      rtw8814a_iqk_restore_rf(rtwdev, rf_backup, backup_rf_reg);
++}
++
++static void rtw8814a_phy_calibration(struct rtw_dev *rtwdev)
++{
++      rtw8814a_do_iqk(rtwdev);
++}
++
++static void rtw8814a_coex_cfg_init(struct rtw_dev *rtwdev)
++{
++}
++
++static void rtw8814a_coex_cfg_ant_switch(struct rtw_dev *rtwdev, u8 ctrl_type,
++                                       u8 pos_type)
++{
++      /* Override rtw_coex_coex_ctrl_owner(). RF path C does not
++       * function when BIT_LTE_MUX_CTRL_PATH is set.
++       */
++      rtw_write8_clr(rtwdev, REG_SYS_SDIO_CTRL + 3,
++                     BIT_LTE_MUX_CTRL_PATH >> 24);
++}
++
++static void rtw8814a_coex_cfg_gnt_fix(struct rtw_dev *rtwdev)
++{
++}
++
++static void rtw8814a_coex_cfg_gnt_debug(struct rtw_dev *rtwdev)
++{
++}
++
++static void rtw8814a_coex_cfg_rfe_type(struct rtw_dev *rtwdev)
++{
++      struct rtw_coex *coex = &rtwdev->coex;
++      struct rtw_coex_rfe *coex_rfe = &coex->rfe;
++
++      /* Only needed to make rtw8814a_coex_cfg_ant_switch() run. */
++      coex_rfe->ant_switch_exist = true;
++}
++
++static void rtw8814a_coex_cfg_wl_tx_power(struct rtw_dev *rtwdev, u8 wl_pwr)
++{
++}
++
++static void rtw8814a_coex_cfg_wl_rx_gain(struct rtw_dev *rtwdev, bool low_gain)
++{
++}
++
++static void rtw8814a_txagc_swing_offset(struct rtw_dev *rtwdev, u8 path,
++                                      u8 tx_pwr_idx_offset,
++                                      s8 *txagc_idx, u8 *swing_idx)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++      u8 swing_upper_bound = dm_info->default_ofdm_index + 10;
++      s8 delta_pwr_idx = dm_info->delta_power_index[path];
++      u8 swing_index = dm_info->default_ofdm_index;
++      u8 max_tx_pwr_idx_offset = 0xf;
++      u8 swing_lower_bound = 0;
++      s8 agc_index = 0;
++
++      tx_pwr_idx_offset = min_t(u8, tx_pwr_idx_offset, max_tx_pwr_idx_offset);
++
++      if (delta_pwr_idx >= 0) {
++              if (delta_pwr_idx <= tx_pwr_idx_offset) {
++                      agc_index = delta_pwr_idx;
++                      swing_index = dm_info->default_ofdm_index;
++              } else if (delta_pwr_idx > tx_pwr_idx_offset) {
++                      agc_index = tx_pwr_idx_offset;
++                      swing_index = dm_info->default_ofdm_index +
++                                      delta_pwr_idx - tx_pwr_idx_offset;
++                      swing_index = min_t(u8, swing_index, swing_upper_bound);
++              }
++      } else {
++              if (dm_info->default_ofdm_index > abs(delta_pwr_idx))
++                      swing_index =
++                              dm_info->default_ofdm_index + delta_pwr_idx;
++              else
++                      swing_index = swing_lower_bound;
++              swing_index = max_t(u8, swing_index, swing_lower_bound);
++
++              agc_index = 0;
++      }
++
++      if (swing_index >= RTW_TXSCALE_SIZE) {
++              rtw_warn(rtwdev, "swing index overflow\n");
++              swing_index = RTW_TXSCALE_SIZE - 1;
++      }
++      *txagc_idx = agc_index;
++      *swing_idx = swing_index;
++}
++
++static void rtw8814a_pwrtrack_set_pwr(struct rtw_dev *rtwdev, u8 path,
++                                    u8 pwr_idx_offset)
++{
++      static const u32 txagc_reg[RTW_RF_PATH_MAX] = {
++              REG_TX_AGC_A, REG_TX_AGC_B, REG_TX_AGC_C, REG_TX_AGC_D
++      };
++      static const u32 txscale_reg[RTW_RF_PATH_MAX] = {
++              REG_TXSCALE_A, REG_TXSCALE_B, REG_TXSCALE_C, REG_TXSCALE_D
++      };
++      s8 txagc_idx;
++      u8 swing_idx;
++
++      rtw8814a_txagc_swing_offset(rtwdev, path, pwr_idx_offset,
++                                  &txagc_idx, &swing_idx);
++      rtw_write32_mask(rtwdev, txagc_reg[path], GENMASK(29, 25),
++                       txagc_idx);
++      rtw_write32_mask(rtwdev, txscale_reg[path], BB_SWING_MASK,
++                       rtw8814a_txscale_tbl[swing_idx]);
++}
++
++static void rtw8814a_pwrtrack_set(struct rtw_dev *rtwdev, u8 path)
++{
++      u8 max_pwr_idx = rtwdev->chip->max_power_index;
++      u8 band_width = rtwdev->hal.current_band_width;
++      u8 channel = rtwdev->hal.current_channel;
++      u8 tx_rate = rtwdev->dm_info.tx_rate;
++      u8 regd = rtw_regd_get(rtwdev);
++      u8 pwr_idx_offset, tx_pwr_idx;
++
++      tx_pwr_idx = rtw_phy_get_tx_power_index(rtwdev, path, tx_rate,
++                                              band_width, channel, regd);
++
++      tx_pwr_idx = min_t(u8, tx_pwr_idx, max_pwr_idx);
++
++      pwr_idx_offset = max_pwr_idx - tx_pwr_idx;
++
++      rtw8814a_pwrtrack_set_pwr(rtwdev, path, pwr_idx_offset);
++}
++
++static void rtw8814a_phy_pwrtrack_path(struct rtw_dev *rtwdev,
++                                     struct rtw_swing_table *swing_table,
++                                     u8 path)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++      u8 power_idx_cur, power_idx_last;
++      u8 delta;
++
++      /* 8814A only has one thermal meter at PATH A */
++      delta = rtw_phy_pwrtrack_get_delta(rtwdev, RF_PATH_A);
++
++      power_idx_last = dm_info->delta_power_index[path];
++      power_idx_cur = rtw_phy_pwrtrack_get_pwridx(rtwdev, swing_table,
++                                                  path, RF_PATH_A, delta);
++
++      /* if delta of power indexes are the same, just skip */
++      if (power_idx_cur == power_idx_last)
++              return;
++
++      dm_info->delta_power_index[path] = power_idx_cur;
++      rtw8814a_pwrtrack_set(rtwdev, path);
++}
++
++static void rtw8814a_phy_pwrtrack(struct rtw_dev *rtwdev)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++      struct rtw_swing_table swing_table;
++      u8 thermal_value, path;
++
++      rtw_phy_config_swing_table(rtwdev, &swing_table);
++
++      if (rtwdev->efuse.thermal_meter[RF_PATH_A] == 0xff)
++              return;
++
++      thermal_value = rtw_read_rf(rtwdev, RF_PATH_A, RF_T_METER, 0xfc00);
++
++      rtw_phy_pwrtrack_avg(rtwdev, thermal_value, RF_PATH_A);
++
++      if (dm_info->pwr_trk_init_trigger)
++              dm_info->pwr_trk_init_trigger = false;
++      else if (!rtw_phy_pwrtrack_thermal_changed(rtwdev, thermal_value,
++                                                 RF_PATH_A))
++              goto iqk;
++
++      for (path = RF_PATH_A; path < rtwdev->hal.rf_path_num; path++)
++              rtw8814a_phy_pwrtrack_path(rtwdev, &swing_table, path);
++
++iqk:
++      if (rtw_phy_pwrtrack_need_iqk(rtwdev))
++              rtw8814a_do_iqk(rtwdev);
++}
++
++static void rtw8814a_pwr_track(struct rtw_dev *rtwdev)
++{
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++
++      if (!dm_info->pwr_trk_triggered) {
++              rtw_write_rf(rtwdev, RF_PATH_A, RF_T_METER,
++                           GENMASK(17, 16), 0x03);
++              dm_info->pwr_trk_triggered = true;
++              return;
++      }
++
++      rtw8814a_phy_pwrtrack(rtwdev);
++      dm_info->pwr_trk_triggered = false;
++}
++
++static void rtw8814a_phy_cck_pd_set(struct rtw_dev *rtwdev, u8 new_lvl)
++{
++      static const u8 pd[CCK_PD_LV_MAX] = {0x40, 0x83, 0xcd, 0xdd, 0xed};
++      struct rtw_dm_info *dm_info = &rtwdev->dm_info;
++
++      /* Override rtw_phy_cck_pd_lv_link(). It implements something
++       * like type 2/3/4. We need type 1 here.
++       */
++      if (rtw_is_assoc(rtwdev)) {
++              if (dm_info->min_rssi > 60) {
++                      new_lvl = CCK_PD_LV3;
++              } else if (dm_info->min_rssi > 35) {
++                      new_lvl = CCK_PD_LV2;
++              } else if (dm_info->min_rssi > 20) {
++                      if (dm_info->cck_fa_avg > 500)
++                              new_lvl = CCK_PD_LV2;
++                      else if (dm_info->cck_fa_avg < 250)
++                              new_lvl = CCK_PD_LV1;
++                      else
++                              return;
++              } else {
++                      new_lvl = CCK_PD_LV1;
++              }
++      }
++
++      rtw_dbg(rtwdev, RTW_DBG_PHY, "lv: (%d) -> (%d)\n",
++              dm_info->cck_pd_lv[RTW_CHANNEL_WIDTH_20][RF_PATH_A], new_lvl);
++
++      if (dm_info->cck_pd_lv[RTW_CHANNEL_WIDTH_20][RF_PATH_A] == new_lvl)
++              return;
++
++      dm_info->cck_fa_avg = CCK_FA_AVG_RESET;
++      dm_info->cck_pd_lv[RTW_CHANNEL_WIDTH_20][RF_PATH_A] = new_lvl;
++
++      rtw_write8(rtwdev, REG_CCK_PD_TH, pd[new_lvl]);
++}
++
++static void rtw8814a_led_set(struct led_classdev *led,
++                           enum led_brightness brightness)
++{
++      struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
++      u32 led_gpio_cfg;
++
++      led_gpio_cfg = rtw_read32(rtwdev, REG_GPIO_PIN_CTRL_2);
++      led_gpio_cfg |= BIT(16) | BIT(17) | BIT(21) | BIT(22);
++
++      if (brightness == LED_OFF) {
++              led_gpio_cfg |= BIT(8) | BIT(9) | BIT(13) | BIT(14);
++      } else {
++              led_gpio_cfg &= ~(BIT(8) | BIT(9) | BIT(13) | BIT(14));
++              led_gpio_cfg &= ~(BIT(0) | BIT(1) | BIT(5) | BIT(6));
++      }
++
++      rtw_write32(rtwdev, REG_GPIO_PIN_CTRL_2, led_gpio_cfg);
++}
++
++static void rtw8814a_fill_txdesc_checksum(struct rtw_dev *rtwdev,
++                                        struct rtw_tx_pkt_info *pkt_info,
++                                        u8 *txdesc)
++{
++      size_t words = 32 / 2; /* calculate the first 32 bytes (16 words) */
++
++      fill_txdesc_checksum_common(txdesc, words);
++}
++
++static const struct rtw_chip_ops rtw8814a_ops = {
++      .power_on               = rtw_power_on,
++      .power_off              = rtw_power_off,
++      .phy_set_param          = rtw8814a_phy_set_param,
++      .read_efuse             = rtw8814a_read_efuse,
++      .query_phy_status       = rtw8814a_query_phy_status,
++      .set_channel            = rtw8814a_set_channel,
++      .mac_init               = rtw8814a_mac_init,
++      .read_rf                = rtw_phy_read_rf,
++      .write_rf               = rtw_phy_write_rf_reg_sipi,
++      .set_tx_power_index     = rtw8814a_set_tx_power_index,
++      .set_antenna            = NULL,
++      .cfg_ldo25              = rtw8814a_cfg_ldo25,
++      .efuse_grant            = rtw8814a_efuse_grant,
++      .false_alarm_statistics = rtw8814a_false_alarm_statistics,
++      .phy_calibration        = rtw8814a_phy_calibration,
++      .cck_pd_set             = rtw8814a_phy_cck_pd_set,
++      .pwr_track              = rtw8814a_pwr_track,
++      .config_bfee            = NULL,
++      .set_gid_table          = NULL,
++      .cfg_csi_rate           = NULL,
++      .led_set                = rtw8814a_led_set,
++      .fill_txdesc_checksum   = rtw8814a_fill_txdesc_checksum,
++
++      .coex_set_init          = rtw8814a_coex_cfg_init,
++      .coex_set_ant_switch    = rtw8814a_coex_cfg_ant_switch,
++      .coex_set_gnt_fix       = rtw8814a_coex_cfg_gnt_fix,
++      .coex_set_gnt_debug     = rtw8814a_coex_cfg_gnt_debug,
++      .coex_set_rfe_type      = rtw8814a_coex_cfg_rfe_type,
++      .coex_set_wl_tx_power   = rtw8814a_coex_cfg_wl_tx_power,
++      .coex_set_wl_rx_gain    = rtw8814a_coex_cfg_wl_rx_gain,
++};
++
++static const struct rtw_rqpn rqpn_table_8814a[] = {
++      /* SDIO */
++      {RTW_DMA_MAPPING_NORMAL, RTW_DMA_MAPPING_NORMAL, /* vo vi */
++       RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,       /* be bk */
++       RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},   /* mg hi */
++      /* PCIE */
++      {RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_NORMAL,
++       RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,
++       RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_HIGH},
++      /* USB, 2 bulk out */
++      {RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_HIGH,
++       RTW_DMA_MAPPING_NORMAL, RTW_DMA_MAPPING_NORMAL,
++       RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_HIGH},
++      /* USB, 3 bulk out */
++      {RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_NORMAL,
++       RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,
++       RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_HIGH},
++      /* USB, 4 bulk out */
++      {RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_NORMAL,
++       RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,
++       RTW_DMA_MAPPING_HIGH, RTW_DMA_MAPPING_HIGH},
++};
++
++static const struct rtw_prioq_addrs prioq_addrs_8814a = {
++      .prio[RTW_DMA_MAPPING_EXTRA] = {
++              .rsvd = REG_FIFOPAGE_INFO_4, .avail = REG_FIFOPAGE_INFO_4 + 2,
++      },
++      .prio[RTW_DMA_MAPPING_LOW] = {
++              .rsvd = REG_FIFOPAGE_INFO_2, .avail = REG_FIFOPAGE_INFO_2 + 2,
++      },
++      .prio[RTW_DMA_MAPPING_NORMAL] = {
++              .rsvd = REG_FIFOPAGE_INFO_3, .avail = REG_FIFOPAGE_INFO_3 + 2,
++      },
++      .prio[RTW_DMA_MAPPING_HIGH] = {
++              .rsvd = REG_FIFOPAGE_INFO_1, .avail = REG_FIFOPAGE_INFO_1 + 2,
++      },
++      .wsize = true,
++};
++
++static const struct rtw_page_table page_table_8814a[] = {
++      /* SDIO */
++      {0, 0, 0, 0, 0},        /* hq nq lq exq gapq */
++      /* PCIE */
++      {32, 32, 32, 32, 0},
++      /* USB, 2 bulk out */
++      {32, 32, 32, 32, 0},
++      /* USB, 3 bulk out */
++      {32, 32, 32, 32, 0},
++      /* USB, 4 bulk out */
++      {32, 32, 32, 32, 0},
++};
++
++static const struct rtw_intf_phy_para_table phy_para_table_8814a = {};
++
++static const struct rtw_hw_reg rtw8814a_dig[] = {
++      [0] = { .addr = 0xc50, .mask = 0x7f },
++      [1] = { .addr = 0xe50, .mask = 0x7f },
++      [2] = { .addr = 0x1850, .mask = 0x7f },
++      [3] = { .addr = 0x1a50, .mask = 0x7f },
++};
++
++static const struct rtw_rfe_def rtw8814a_rfe_defs[] = {
++      [0] = { .phy_pg_tbl     = &rtw8814a_bb_pg_type0_tbl,
++              .txpwr_lmt_tbl  = &rtw8814a_txpwr_lmt_type0_tbl,
++              .pwr_track_tbl  = &rtw8814a_rtw_pwrtrk_type0_tbl },
++      [1] = { .phy_pg_tbl     = &rtw8814a_bb_pg_tbl,
++              .txpwr_lmt_tbl  = &rtw8814a_txpwr_lmt_type1_tbl,
++              .pwr_track_tbl  = &rtw8814a_rtw_pwrtrk_tbl },
++};
++
++/* rssi in percentage % (dbm = % - 100) */
++static const u8 wl_rssi_step_8814a[] = {60, 50, 44, 30};
++static const u8 bt_rssi_step_8814a[] = {30, 30, 30, 30};
++
++/* wl_tx_dec_power, bt_tx_dec_power, wl_rx_gain, bt_rx_lna_constrain */
++static const struct coex_rf_para rf_para_tx_8814a[] = {
++      {0, 0, false, 7},  /* for normal */
++      {0, 16, false, 7}, /* for WL-CPT */
++      {4, 0, true, 1},
++      {3, 6, true, 1},
++      {2, 9, true, 1},
++      {1, 13, true, 1}
++};
++
++static const struct coex_rf_para rf_para_rx_8814a[] = {
++      {0, 0, false, 7},  /* for normal */
++      {0, 16, false, 7}, /* for WL-CPT */
++      {4, 0, true, 1},
++      {3, 6, true, 1},
++      {2, 9, true, 1},
++      {1, 13, true, 1}
++};
++
++static_assert(ARRAY_SIZE(rf_para_tx_8814a) == ARRAY_SIZE(rf_para_rx_8814a));
++
++const struct rtw_chip_info rtw8814a_hw_spec = {
++      .ops = &rtw8814a_ops,
++      .id = RTW_CHIP_TYPE_8814A,
++      .fw_name = "rtw88/rtw8814a_fw.bin",
++      .wlan_cpu = RTW_WCPU_11AC,
++      .tx_pkt_desc_sz = 40,
++      .tx_buf_desc_sz = 16,
++      .rx_pkt_desc_sz = 24,
++      .rx_buf_desc_sz = 8,
++      .phy_efuse_size = 1024,
++      .log_efuse_size = 512,
++      .ptct_efuse_size = 0,
++      .txff_size = (2048 - 10) * TX_PAGE_SIZE,
++      .rxff_size = 23552,
++      .rsvd_drv_pg_num = 8,
++      .band = RTW_BAND_2G | RTW_BAND_5G,
++      .page_size = TX_PAGE_SIZE,
++      .csi_buf_pg_num = 0,
++      .dig_min = 0x1c,
++      .txgi_factor = 1,
++      .is_pwr_by_rate_dec = true,
++      .rx_ldpc = true,
++      .max_power_index = 0x3f,
++      .ampdu_density = IEEE80211_HT_MPDU_DENSITY_2,
++      .usb_tx_agg_desc_num = 3,
++      .hw_feature_report = false,
++      .c2h_ra_report_size = 6,
++      .old_datarate_fb_limit = false,
++      .ht_supported = true,
++      .vht_supported = true,
++      .lps_deep_mode_supported = BIT(LPS_DEEP_MODE_LCLK),
++      .sys_func_en = 0xDC,
++      .pwr_on_seq = card_enable_flow_8814a,
++      .pwr_off_seq = card_disable_flow_8814a,
++      .rqpn_table = rqpn_table_8814a,
++      .prioq_addrs = &prioq_addrs_8814a,
++      .page_table = page_table_8814a,
++      .intf_table = &phy_para_table_8814a,
++      .dig = rtw8814a_dig,
++      .dig_cck = NULL,
++      .rf_base_addr = {0x2800, 0x2c00, 0x3800, 0x3c00},
++      .rf_sipi_addr = {0xc90, 0xe90, 0x1890, 0x1a90},
++      .ltecoex_addr = NULL,
++      .mac_tbl = &rtw8814a_mac_tbl,
++      .agc_tbl = &rtw8814a_agc_tbl,
++      .bb_tbl = &rtw8814a_bb_tbl,
++      .rf_tbl = {&rtw8814a_rf_a_tbl, &rtw8814a_rf_b_tbl,
++                 &rtw8814a_rf_c_tbl, &rtw8814a_rf_d_tbl},
++      .rfe_defs = rtw8814a_rfe_defs,
++      .rfe_defs_size = ARRAY_SIZE(rtw8814a_rfe_defs),
++      .iqk_threshold = 8,
++      .max_scan_ie_len = IEEE80211_MAX_DATA_LEN,
++
++      .coex_para_ver = 0,
++      .bt_desired_ver = 0,
++      .scbd_support = false,
++      .new_scbd10_def = false,
++      .ble_hid_profile_support = false,
++      .wl_mimo_ps_support = false,
++      .pstdma_type = COEX_PSTDMA_FORCE_LPSOFF,
++      .bt_rssi_type = COEX_BTRSSI_RATIO,
++      .ant_isolation = 15,
++      .rssi_tolerance = 2,
++      .wl_rssi_step = wl_rssi_step_8814a,
++      .bt_rssi_step = bt_rssi_step_8814a,
++      .table_sant_num = 0,
++      .table_sant = NULL,
++      .table_nsant_num = 0,
++      .table_nsant = NULL,
++      .tdma_sant_num = 0,
++      .tdma_sant = NULL,
++      .tdma_nsant_num = 0,
++      .tdma_nsant = NULL,
++      .wl_rf_para_num = ARRAY_SIZE(rf_para_tx_8814a),
++      .wl_rf_para_tx = rf_para_tx_8814a,
++      .wl_rf_para_rx = rf_para_rx_8814a,
++      .bt_afh_span_bw20 = 0x24,
++      .bt_afh_span_bw40 = 0x36,
++      .afh_5g_num = 0,
++      .afh_5g = NULL,
++      .coex_info_hw_regs_num = 0,
++      .coex_info_hw_regs = NULL,
++};
++EXPORT_SYMBOL(rtw8814a_hw_spec);
++
++MODULE_FIRMWARE("rtw88/rtw8814a_fw.bin");
++
++MODULE_AUTHOR("Bitterblue Smith <rtl8821cerfe2@gmail.com>");
++MODULE_DESCRIPTION("Realtek 802.11ac wireless 8814a driver");
++MODULE_LICENSE("Dual BSD/GPL");
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a.h
+@@ -0,0 +1,62 @@
++/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#ifndef __RTW8814A_H__
++#define __RTW8814A_H__
++
++struct rtw8814au_efuse {
++      u8 vid[2];                      /* 0xd0 */
++      u8 pid[2];                      /* 0xd2 */
++      u8 res[4];                      /* 0xd4 */
++      u8 mac_addr[ETH_ALEN];          /* 0xd8 */
++} __packed;
++
++struct rtw8814ae_efuse {
++      u8 mac_addr[ETH_ALEN];          /* 0xd0 */
++      u8 vid[2];                      /* 0xd6 */
++      u8 did[2];                      /* 0xd8 */
++      u8 svid[2];                     /* 0xda */
++      u8 smid[2];                     /* 0xdc */
++} __packed;
++
++struct rtw8814a_efuse {
++      __le16 rtl_id;
++      u8 res0[0x0c];
++      u8 usb_mode;                    /* 0x0e */
++      u8 res1;
++
++      /* power index for four RF paths */
++      struct rtw_txpwr_idx txpwr_idx_table[4];
++
++      u8 channel_plan;                /* 0xb8 */
++      u8 xtal_k;                      /* 0xb9 */
++      u8 thermal_meter;               /* 0xba */
++      u8 iqk_lck;                     /* 0xbb */
++      u8 pa_type;                     /* 0xbc */
++      u8 lna_type_2g[2];              /* 0xbd */
++      u8 lna_type_5g[2];              /* 0xbf */
++      u8 rf_board_option;             /* 0xc1 */
++      u8 res2;
++      u8 rf_bt_setting;               /* 0xc3 */
++      u8 eeprom_version;              /* 0xc4 */
++      u8 eeprom_customer_id;          /* 0xc5 */
++      u8 tx_bb_swing_setting_2g;      /* 0xc6 */
++      u8 tx_bb_swing_setting_5g;      /* 0xc7 */
++      u8 res3;
++      u8 trx_antenna_option;          /* 0xc9 */
++      u8 rfe_option;                  /* 0xca */
++      u8 country_code[2];             /* 0xcb */
++      u8 res4[3];
++      union {
++              struct rtw8814au_efuse u;
++              struct rtw8814ae_efuse e;
++      };
++      u8 res5[0x122];                 /* 0xde */
++} __packed;
++
++static_assert(sizeof(struct rtw8814a_efuse) == 512);
++
++extern const struct rtw_chip_info rtw8814a_hw_spec;
++
++#endif
diff --git a/package/kernel/mac80211/patches/rtl/089-v6.15-wifi-rtw88-Add-rtw8814ae.c.patch b/package/kernel/mac80211/patches/rtl/089-v6.15-wifi-rtw88-Add-rtw8814ae.c.patch
new file mode 100644 (file)
index 0000000..0aa9a90
--- /dev/null
@@ -0,0 +1,50 @@
+From dad8e879310211c1e02f09c35f169388bccbfa42 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:25:09 +0200
+Subject: [PATCH] wifi: rtw88: Add rtw8814ae.c
+
+This is the entry point for the new module rtw88_8814ae.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/74ebab2f-a23e-4d87-935f-0af2b5cba672@gmail.com
+---
+ .../net/wireless/realtek/rtw88/rtw8814ae.c    | 31 +++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+ create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8814ae.c
+
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814ae.c
+@@ -0,0 +1,31 @@
++// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#include <linux/module.h>
++#include <linux/pci.h>
++#include "pci.h"
++#include "rtw8814a.h"
++
++static const struct pci_device_id rtw_8814ae_id_table[] = {
++      {
++              PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8813),
++              .driver_data = (kernel_ulong_t)&rtw8814a_hw_spec
++      },
++      {}
++};
++MODULE_DEVICE_TABLE(pci, rtw_8814ae_id_table);
++
++static struct pci_driver rtw_8814ae_driver = {
++      .name = "rtw_8814ae",
++      .id_table = rtw_8814ae_id_table,
++      .probe = rtw_pci_probe,
++      .remove = rtw_pci_remove,
++      .driver.pm = &rtw_pm_ops,
++      .shutdown = rtw_pci_shutdown,
++};
++module_pci_driver(rtw_8814ae_driver);
++
++MODULE_AUTHOR("Bitterblue Smith <rtl8821cerfe2@gmail.com>");
++MODULE_DESCRIPTION("Realtek 802.11ac wireless 8814ae driver");
++MODULE_LICENSE("Dual BSD/GPL");
diff --git a/package/kernel/mac80211/patches/rtl/090-v6.15-wifi-rtw88-Add-rtw8814au.c.patch b/package/kernel/mac80211/patches/rtl/090-v6.15-wifi-rtw88-Add-rtw8814au.c.patch
new file mode 100644 (file)
index 0000000..b83174d
--- /dev/null
@@ -0,0 +1,73 @@
+From bad060e8a425182809bfc2586a2e7f5ccd1a994d Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:25:37 +0200
+Subject: [PATCH] wifi: rtw88: Add rtw8814au.c
+
+This is the entry point for the new module rtw88_8814au.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/71457787-5a9e-4ead-a62c-22ca44e00b89@gmail.com
+---
+ .../net/wireless/realtek/rtw88/rtw8814au.c    | 54 +++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+ create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8814au.c
+
+--- /dev/null
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814au.c
+@@ -0,0 +1,54 @@
++// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
++/* Copyright(c) 2025  Realtek Corporation
++ */
++
++#include <linux/module.h>
++#include <linux/usb.h>
++#include "main.h"
++#include "rtw8814a.h"
++#include "usb.h"
++
++static const struct usb_device_id rtw_8814au_id_table[] = {
++      { USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0x8813, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x400b, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x400d, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0x9054, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x1817, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x1852, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x1853, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x0e66, 0x0026, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x331a, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x20f4, 0x809a, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x20f4, 0x809b, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0106, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xa834, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      { USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xa833, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8814a_hw_spec) },
++      {},
++};
++MODULE_DEVICE_TABLE(usb, rtw_8814au_id_table);
++
++static struct usb_driver rtw_8814au_driver = {
++      .name = "rtw_8814au",
++      .id_table = rtw_8814au_id_table,
++      .probe = rtw_usb_probe,
++      .disconnect = rtw_usb_disconnect,
++};
++module_usb_driver(rtw_8814au_driver);
++
++MODULE_AUTHOR("Bitterblue Smith <rtl8821cerfe2@gmail.com>");
++MODULE_DESCRIPTION("Realtek 802.11ac wireless 8814au driver");
++MODULE_LICENSE("Dual BSD/GPL");
diff --git a/package/kernel/mac80211/patches/rtl/091-v6.15-wifi-rtw88-Add-__nonstring-annotations-for-untermina.patch b/package/kernel/mac80211/patches/rtl/091-v6.15-wifi-rtw88-Add-__nonstring-annotations-for-untermina.patch
new file mode 100644 (file)
index 0000000..4bb3253
--- /dev/null
@@ -0,0 +1,34 @@
+From d58ad77d5cc2a6d04db622a898e54d93fc7002a2 Mon Sep 17 00:00:00 2001
+From: Kees Cook <kees@kernel.org>
+Date: Mon, 10 Mar 2025 15:22:58 -0700
+Subject: [PATCH] wifi: rtw88: Add __nonstring annotations for unterminated
+ strings
+
+When a character array without a terminating NUL character has a static
+initializer, GCC 15's -Wunterminated-string-initialization will only
+warn if the array lacks the "nonstring" attribute[1]. Mark the arrays
+with __nonstring to and correctly identify the char array as "not a C
+string" and thereby eliminate the warning.
+
+Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117178 [1]
+Cc: Ping-Ke Shih <pkshih@realtek.com>
+Cc: Johannes Berg <johannes@sipsolutions.net>
+Cc: linux-wireless@vger.kernel.org
+Signed-off-by: Kees Cook <kees@kernel.org>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250310222257.work.866-kees@kernel.org
+---
+ drivers/net/wireless/realtek/rtw88/main.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -835,7 +835,7 @@ struct rtw_vif {
+ };
+ struct rtw_regulatory {
+-      char alpha2[2];
++      char alpha2[2] __nonstring;
+       u8 txpwr_regd_2g;
+       u8 txpwr_regd_5g;
+ };
diff --git a/package/kernel/mac80211/patches/rtl/091-v6.15wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch b/package/kernel/mac80211/patches/rtl/091-v6.15wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch
new file mode 100644 (file)
index 0000000..8446ad3
--- /dev/null
@@ -0,0 +1,147 @@
+From deb3ddeb18652118956fb581a39ac299e1ee5623 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 7 Mar 2025 02:26:25 +0200
+Subject: [PATCH] wifi: rtw88: Enable the new RTL8814AE/RTL8814AU drivers
+
+RTL8814A is a wifi 5 chip with 4 RF paths (chains), 3 spatial streams,
+and probably no Bluetooth.
+
+The USB-based RTL8814AU can reach 800 Mbps in the 5 GHz band in USB 3
+mode. In USB 2 mode it only uses 2 spatial streams.
+
+The PCI-based RTL8814AE is not as popular and didn't get as much
+testing so it's unclear how fast it goes. It's more like a bonus on top
+of the RTL8814AU support.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/5795b0a7-511e-40b5-ac36-476b63f174c7@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/Kconfig  | 25 +++++++++++++++++++++
+ drivers/net/wireless/realtek/rtw88/Makefile |  9 ++++++++
+ 2 files changed, 34 insertions(+)
+
+--- a/Kconfig.local
++++ b/Kconfig.local
+@@ -1153,6 +1153,9 @@ config BACKPORTED_RTW88_8821A
+ config BACKPORTED_RTW88_8812A
+       tristate
+       default RTW88_8812A
++config BACKPORTED_RTW88_8814A
++      tristate
++      default RTW88_8814A
+ config BACKPORTED_RTW88_8822BE
+       tristate
+       default RTW88_8822BE
+@@ -1198,12 +1201,21 @@ config BACKPORTED_RTW88_8821AU
+ config BACKPORTED_RTW88_8812AU
+       tristate
+       default RTW88_8812AU
++config BACKPORTED_RTW88_8814AE
++      tristate
++      default RTW88_8814AE
++config BACKPORTED_RTW88_8814AU
++      tristate
++      default RTW88_8814AU
+ config BACKPORTED_RTW88_DEBUG
+       tristate
+       default RTW88_DEBUG
+ config BACKPORTED_RTW88_DEBUGFS
+       tristate
+       default RTW88_DEBUGFS
++config BACKPORTED_RTW88_LEDS
++      tristate
++      default RTW88_LEDS
+ config BACKPORTED_RTW89
+       tristate
+       default RTW89
+--- a/drivers/net/wireless/realtek/rtw88/Kconfig
++++ b/drivers/net/wireless/realtek/rtw88/Kconfig
+@@ -68,6 +68,10 @@ config RTW88_8812A
+       depends on m
+       select RTW88_88XXA
++config RTW88_8814A
++      tristate
++      depends on m
++
+ config RTW88_8822BE
+       tristate "Realtek 8822BE PCI wireless network adapter"
+       depends on m
+@@ -251,6 +255,30 @@ config RTW88_8812AU
+         802.11ac USB wireless network adapter
++config RTW88_8814AE
++      tristate "Realtek 8814AE PCI wireless network adapter"
++      depends on m
++      depends on PCI
++      select RTW88_CORE
++      select RTW88_PCI
++      select RTW88_8814A
++      help
++        Select this option will enable support for 8814AE chipset
++
++        802.11ac PCIe wireless network adapter
++
++config RTW88_8814AU
++      tristate "Realtek 8814AU USB wireless network adapter"
++      depends on m
++      depends on USB
++      select RTW88_CORE
++      select RTW88_USB
++      select RTW88_8814A
++      help
++        Select this option will enable support for 8814AU chipset
++
++        802.11ac USB wireless network adapter
++
+ config RTW88_DEBUG
+       bool "Realtek rtw88 debug support"
+       depends on RTW88_CORE
+--- a/drivers/net/wireless/realtek/rtw88/Makefile
++++ b/drivers/net/wireless/realtek/rtw88/Makefile
+@@ -94,6 +94,15 @@ rtw88_8821au-objs           := rtw8821au.o
+ obj-$(CPTCFG_RTW88_8812AU)    += rtw88_8812au.o
+ rtw88_8812au-objs             := rtw8812au.o
++obj-$(CPTCFG_RTW88_8814A)     += rtw88_8814a.o
++rtw88_8814a-objs              := rtw8814a.o rtw8814a_table.o
++
++obj-$(CPTCFG_RTW88_8814AE)    += rtw88_8814ae.o
++rtw88_8814ae-objs             := rtw8814ae.o
++
++obj-$(CPTCFG_RTW88_8814AU)    += rtw88_8814au.o
++rtw88_8814au-objs             := rtw8814au.o
++
+ obj-$(CPTCFG_RTW88_PCI)               += rtw88_pci.o
+ rtw88_pci-objs                        := pci.o
+--- a/local-symbols
++++ b/local-symbols
+@@ -377,6 +377,10 @@ RTW88_8723X=
+ RTW88_8703B=
+ RTW88_8723D=
+ RTW88_8821C=
++RTW88_88XXA=
++RTW88_8821A=
++RTW88_8812A=
++RTW88_8814A=
+ RTW88_8822BE=
+ RTW88_8822BS=
+ RTW88_8822BU=
+@@ -390,8 +394,13 @@ RTW88_8723DU=
+ RTW88_8821CE=
+ RTW88_8821CS=
+ RTW88_8821CU=
++RTW88_8821AU=
++RTW88_8812AU=
++RTW88_8814AE=
++RTW88_8814AU=
+ RTW88_DEBUG=
+ RTW88_DEBUGFS=
++RTW88_LEDS=
+ RTW89=
+ RTW89_CORE=
+ RTW89_PCI=
diff --git a/package/kernel/mac80211/patches/rtl/093-v6.16-wifi-rtw88-sdio-Remove-redundant-flush_workqueue-cal.patch b/package/kernel/mac80211/patches/rtl/093-v6.16-wifi-rtw88-sdio-Remove-redundant-flush_workqueue-cal.patch
new file mode 100644 (file)
index 0000000..9852bdf
--- /dev/null
@@ -0,0 +1,36 @@
+From 5c4cf36c538bb2714e43654e365cb77b19c4a93e Mon Sep 17 00:00:00 2001
+From: Chen Ni <nichen@iscas.ac.cn>
+Date: Mon, 24 Mar 2025 15:59:10 +0800
+Subject: [PATCH] wifi: rtw88: sdio: Remove redundant 'flush_workqueue()' calls
+
+'destroy_workqueue()' already drains the queue before destroying it, so
+there is no need to flush it explicitly.
+
+Remove the redundant 'flush_workqueue()' calls.
+
+This was generated with coccinelle:
+
+@@
+expression E;
+@@
+
+- flush_workqueue(E);
+  destroy_workqueue(E);
+
+Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250324075910.407999-1-nichen@iscas.ac.cn
+---
+ drivers/net/wireless/realtek/rtw88/sdio.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -1298,7 +1298,6 @@ static void rtw_sdio_deinit_tx(struct rt
+       struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv;
+       int i;
+-      flush_workqueue(rtwsdio->txwq);
+       destroy_workqueue(rtwsdio->txwq);
+       kfree(rtwsdio->tx_handler_data);
diff --git a/package/kernel/mac80211/patches/rtl/094-v6.16-wifi-rtw88-usb-Remove-redundant-flush_workqueue-call.patch b/package/kernel/mac80211/patches/rtl/094-v6.16-wifi-rtw88-usb-Remove-redundant-flush_workqueue-call.patch
new file mode 100644 (file)
index 0000000..41e670f
--- /dev/null
@@ -0,0 +1,44 @@
+From 625fbc16524a45488f6eb8561d98b3328efe79cd Mon Sep 17 00:00:00 2001
+From: Chen Ni <nichen@iscas.ac.cn>
+Date: Mon, 24 Mar 2025 16:03:03 +0800
+Subject: [PATCH] wifi: rtw88: usb: Remove redundant 'flush_workqueue()' calls
+
+'destroy_workqueue()' already drains the queue before destroying it, so
+there is no need to flush it explicitly.
+
+Remove the redundant 'flush_workqueue()' calls.
+
+This was generated with coccinelle:
+
+@@
+expression E;
+@@
+
+- flush_workqueue(E);
+  destroy_workqueue(E);
+
+Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250324080303.408084-1-nichen@iscas.ac.cn
+---
+ drivers/net/wireless/realtek/rtw88/usb.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -901,7 +901,6 @@ static void rtw_usb_deinit_rx(struct rtw
+       skb_queue_purge(&rtwusb->rx_queue);
+-      flush_workqueue(rtwusb->rxwq);
+       destroy_workqueue(rtwusb->rxwq);
+ }
+@@ -928,7 +927,6 @@ static void rtw_usb_deinit_tx(struct rtw
+ {
+       struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev);
+-      flush_workqueue(rtwusb->txwq);
+       destroy_workqueue(rtwusb->txwq);
+       rtw_usb_tx_queue_purge(rtwusb);
+ }
diff --git a/package/kernel/mac80211/patches/rtl/095-v6.16-wifi-rtw88-usb-Enable-switching-the-RTL8814AU-to-USB.patch b/package/kernel/mac80211/patches/rtl/095-v6.16-wifi-rtw88-usb-Enable-switching-the-RTL8814AU-to-USB.patch
new file mode 100644 (file)
index 0000000..edd3cd5
--- /dev/null
@@ -0,0 +1,32 @@
+From bf1103654df99d50724a022c8b9fca8908a86f50 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 2 Apr 2025 18:30:02 +0300
+Subject: [PATCH] wifi: rtw88: usb: Enable switching the RTL8814AU to USB 3
+
+The Realtek wifi 5 devices which support USB 3 are weird: when first
+plugged in, they pretend to be USB 2. The driver needs to send some
+commands to the device, which make it disappear and come back as a
+USB 3 device.
+
+The method used to switch the RTL8812AU also works for the RTL8814AU.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/d3608f70-e04f-4f6b-987a-022c8e317165@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/usb.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -1043,7 +1043,8 @@ static int rtw_usb_switch_mode_new(struc
+ static bool rtw_usb3_chip_old(u8 chip_id)
+ {
+-      return chip_id == RTW_CHIP_TYPE_8812A;
++      return chip_id == RTW_CHIP_TYPE_8812A ||
++             chip_id == RTW_CHIP_TYPE_8814A;
+ }
+ static bool rtw_usb3_chip_new(u8 chip_id)
diff --git a/package/kernel/mac80211/patches/rtl/096-v6.16-wifi-rtw88-usb-Enable-RX-aggregation-for-RTL8814AU.patch b/package/kernel/mac80211/patches/rtl/096-v6.16-wifi-rtw88-usb-Enable-RX-aggregation-for-RTL8814AU.patch
new file mode 100644 (file)
index 0000000..9709528
--- /dev/null
@@ -0,0 +1,28 @@
+From dcbb7bb3a364f218411761e2e5ee2f6818d9bdfc Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 2 Apr 2025 18:30:28 +0300
+Subject: [PATCH] wifi: rtw88: usb: Enable RX aggregation for RTL8814AU
+
+Let the chip transfer several frames in a single USB Request Block.
+This is supposed to improve the RX speed.
+
+It can use the same code used for RTL8822CU, RTL8822BU, and RTL8821CU.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/672397ac-dd4d-4420-8b3e-7011578e2243@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/usb.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -829,6 +829,7 @@ static void rtw_usb_dynamic_rx_agg(struc
+       case RTW_CHIP_TYPE_8822C:
+       case RTW_CHIP_TYPE_8822B:
+       case RTW_CHIP_TYPE_8821C:
++      case RTW_CHIP_TYPE_8814A:
+               rtw_usb_dynamic_rx_agg_v1(rtwdev, enable);
+               break;
+       case RTW_CHIP_TYPE_8821A:
diff --git a/package/kernel/mac80211/patches/rtl/097-v6.16-wifi-rtw88-Set-AMPDU-factor-to-hardware-for-RTL8814A.patch b/package/kernel/mac80211/patches/rtl/097-v6.16-wifi-rtw88-Set-AMPDU-factor-to-hardware-for-RTL8814A.patch
new file mode 100644 (file)
index 0000000..bdac02c
--- /dev/null
@@ -0,0 +1,192 @@
+From 0d2a88690e583168effb03c64fd217a323b2c444 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 2 Apr 2025 18:31:12 +0300
+Subject: [PATCH] wifi: rtw88: Set AMPDU factor to hardware for RTL8814A
+
+Tell the chip the maximum AMPDU size supported by the AP. This greatly
+improves the TX speed of RTL8814AU in the 2.4 GHz band. Before: ~90
+Mbps. After: ~300 Mbps.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/4edc2a63-81b3-431c-9a37-5a7d899a6cc2@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/mac80211.c |  2 ++
+ drivers/net/wireless/realtek/rtw88/main.c     | 32 +++++++++++++++++++
+ drivers/net/wireless/realtek/rtw88/main.h     |  3 ++
+ drivers/net/wireless/realtek/rtw88/rtw8703b.c |  1 +
+ drivers/net/wireless/realtek/rtw88/rtw8723d.c |  1 +
+ drivers/net/wireless/realtek/rtw88/rtw8812a.c |  1 +
+ drivers/net/wireless/realtek/rtw88/rtw8814a.c | 11 +++++++
+ drivers/net/wireless/realtek/rtw88/rtw8821a.c |  1 +
+ drivers/net/wireless/realtek/rtw88/rtw8821c.c |  1 +
+ drivers/net/wireless/realtek/rtw88/rtw8822b.c |  1 +
+ drivers/net/wireless/realtek/rtw88/rtw8822c.c |  1 +
+ 11 files changed, 55 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
++++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
+@@ -396,6 +396,8 @@ static void rtw_ops_bss_info_changed(str
+                       if (rtw_bf_support)
+                               rtw_bf_assoc(rtwdev, vif, conf);
++                      rtw_set_ampdu_factor(rtwdev, vif, conf);
++
+                       rtw_fw_beacon_filter_config(rtwdev, true, vif);
+               } else {
+                       rtw_leave_lps(rtwdev);
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -2447,6 +2447,38 @@ void rtw_core_enable_beacon(struct rtw_d
+       }
+ }
++void rtw_set_ampdu_factor(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
++                        struct ieee80211_bss_conf *bss_conf)
++{
++      const struct rtw_chip_ops *ops = rtwdev->chip->ops;
++      struct ieee80211_sta *sta;
++      u8 factor = 0xff;
++
++      if (!ops->set_ampdu_factor)
++              return;
++
++      rcu_read_lock();
++
++      sta = ieee80211_find_sta(vif, bss_conf->bssid);
++      if (!sta) {
++              rcu_read_unlock();
++              rtw_warn(rtwdev, "%s: failed to find station %pM\n",
++                       __func__, bss_conf->bssid);
++              return;
++      }
++
++      if (sta->deflink.vht_cap.vht_supported)
++              factor = u32_get_bits(sta->deflink.vht_cap.cap,
++                                    IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK);
++      else if (sta->deflink.ht_cap.ht_supported)
++              factor = sta->deflink.ht_cap.ampdu_factor;
++
++      rcu_read_unlock();
++
++      if (factor != 0xff)
++              ops->set_ampdu_factor(rtwdev, factor);
++}
++
+ MODULE_AUTHOR("Realtek Corporation");
+ MODULE_DESCRIPTION("Realtek 802.11ac wireless core module");
+ MODULE_LICENSE("Dual BSD/GPL");
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -878,6 +878,7 @@ struct rtw_chip_ops {
+                          u32 antenna_rx);
+       void (*cfg_ldo25)(struct rtw_dev *rtwdev, bool enable);
+       void (*efuse_grant)(struct rtw_dev *rtwdev, bool enable);
++      void (*set_ampdu_factor)(struct rtw_dev *rtwdev, u8 factor);
+       void (*false_alarm_statistics)(struct rtw_dev *rtwdev);
+       void (*phy_calibration)(struct rtw_dev *rtwdev);
+       void (*dpk_track)(struct rtw_dev *rtwdev);
+@@ -2272,4 +2273,6 @@ void rtw_update_channel(struct rtw_dev *
+ void rtw_core_port_switch(struct rtw_dev *rtwdev, struct ieee80211_vif *vif);
+ bool rtw_core_check_sta_active(struct rtw_dev *rtwdev);
+ void rtw_core_enable_beacon(struct rtw_dev *rtwdev, bool enable);
++void rtw_set_ampdu_factor(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
++                        struct ieee80211_bss_conf *bss_conf);
+ #endif
+--- a/drivers/net/wireless/realtek/rtw88/rtw8703b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8703b.c
+@@ -1904,6 +1904,7 @@ static const struct rtw_chip_ops rtw8703
+       .set_antenna            = NULL,
+       .cfg_ldo25              = rtw8723x_cfg_ldo25,
+       .efuse_grant            = rtw8723x_efuse_grant,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw8723x_false_alarm_statistics,
+       .phy_calibration        = rtw8703b_phy_calibration,
+       .dpk_track              = NULL,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723d.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723d.c
+@@ -1404,6 +1404,7 @@ static const struct rtw_chip_ops rtw8723
+       .set_antenna            = NULL,
+       .cfg_ldo25              = rtw8723x_cfg_ldo25,
+       .efuse_grant            = rtw8723x_efuse_grant,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw8723x_false_alarm_statistics,
+       .phy_calibration        = rtw8723d_phy_calibration,
+       .cck_pd_set             = rtw8723d_phy_cck_pd_set,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8812a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8812a.c
+@@ -925,6 +925,7 @@ static const struct rtw_chip_ops rtw8812
+       .set_tx_power_index     = rtw88xxa_set_tx_power_index,
+       .cfg_ldo25              = rtw8812a_cfg_ldo25,
+       .efuse_grant            = rtw88xxa_efuse_grant,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw88xxa_false_alarm_statistics,
+       .phy_calibration        = rtw8812a_phy_calibration,
+       .cck_pd_set             = rtw88xxa_phy_cck_pd_set,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8814a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a.c
+@@ -1332,6 +1332,16 @@ static void rtw8814a_cfg_ldo25(struct rt
+ {
+ }
++/* Without this RTL8814A sends too many frames and (some?) 11n AP
++ * can't handle it, resulting in low TX speed. Other chips seem fine.
++ */
++static void rtw8814a_set_ampdu_factor(struct rtw_dev *rtwdev, u8 factor)
++{
++      factor = min_t(u8, factor, IEEE80211_VHT_MAX_AMPDU_256K);
++
++      rtw_write32(rtwdev, REG_AMPDU_MAX_LENGTH, (8192 << factor) - 1);
++}
++
+ static void rtw8814a_false_alarm_statistics(struct rtw_dev *rtwdev)
+ {
+       struct rtw_dm_info *dm_info = &rtwdev->dm_info;
+@@ -2051,6 +2061,7 @@ static const struct rtw_chip_ops rtw8814
+       .set_antenna            = NULL,
+       .cfg_ldo25              = rtw8814a_cfg_ldo25,
+       .efuse_grant            = rtw8814a_efuse_grant,
++      .set_ampdu_factor       = rtw8814a_set_ampdu_factor,
+       .false_alarm_statistics = rtw8814a_false_alarm_statistics,
+       .phy_calibration        = rtw8814a_phy_calibration,
+       .cck_pd_set             = rtw8814a_phy_cck_pd_set,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821a.c
+@@ -871,6 +871,7 @@ static const struct rtw_chip_ops rtw8821
+       .set_tx_power_index     = rtw88xxa_set_tx_power_index,
+       .cfg_ldo25              = rtw8821a_cfg_ldo25,
+       .efuse_grant            = rtw88xxa_efuse_grant,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw88xxa_false_alarm_statistics,
+       .phy_calibration        = rtw8821a_phy_calibration,
+       .cck_pd_set             = rtw88xxa_phy_cck_pd_set,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+@@ -1668,6 +1668,7 @@ static const struct rtw_chip_ops rtw8821
+       .set_antenna            = NULL,
+       .set_tx_power_index     = rtw8821c_set_tx_power_index,
+       .cfg_ldo25              = rtw8821c_cfg_ldo25,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw8821c_false_alarm_statistics,
+       .phy_calibration        = rtw8821c_phy_calibration,
+       .cck_pd_set             = rtw8821c_phy_cck_pd_set,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+@@ -2158,6 +2158,7 @@ static const struct rtw_chip_ops rtw8822
+       .set_tx_power_index     = rtw8822b_set_tx_power_index,
+       .set_antenna            = rtw8822b_set_antenna,
+       .cfg_ldo25              = rtw8822b_cfg_ldo25,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw8822b_false_alarm_statistics,
+       .phy_calibration        = rtw8822b_phy_calibration,
+       .pwr_track              = rtw8822b_pwr_track,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+@@ -4968,6 +4968,7 @@ static const struct rtw_chip_ops rtw8822
+       .set_tx_power_index     = rtw8822c_set_tx_power_index,
+       .set_antenna            = rtw8822c_set_antenna,
+       .cfg_ldo25              = rtw8822c_cfg_ldo25,
++      .set_ampdu_factor       = NULL,
+       .false_alarm_statistics = rtw8822c_false_alarm_statistics,
+       .dpk_track              = rtw8822c_dpk_track,
+       .phy_calibration        = rtw8822c_phy_calibration,
diff --git a/package/kernel/mac80211/patches/rtl/098-v6.16-wifi-rtw88-Don-t-set-SUPPORTS_AMSDU_IN_AMPDU-for-RTL.patch b/package/kernel/mac80211/patches/rtl/098-v6.16-wifi-rtw88-Don-t-set-SUPPORTS_AMSDU_IN_AMPDU-for-RTL.patch
new file mode 100644 (file)
index 0000000..1b03076
--- /dev/null
@@ -0,0 +1,169 @@
+From b8d49bb8d16ae7dde8e05b275d6e3b8bbf27f011 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 2 Apr 2025 18:31:36 +0300
+Subject: [PATCH] wifi: rtw88: Don't set SUPPORTS_AMSDU_IN_AMPDU for RTL8814AU
+
+RTL8814AU doesn't work well with SUPPORTS_AMSDU_IN_AMPDU. The RX speed
+is noticeably lower and the VHT RX statistics are strange. Typical
+values with SUPPORTS_AMSDU_IN_AMPDU:
+
+Reverse mode, remote host 192.168.0.1 is sending
+[  5] local 192.168.0.50 port 60710 connected to 192.168.0.1 port 5201
+[ ID] Interval           Transfer     Bitrate
+[  5]   0.00-1.00   sec  74.6 MBytes   626 Mbits/sec
+[  5]   1.00-2.00   sec  79.2 MBytes   665 Mbits/sec
+[  5]   2.00-3.00   sec  84.9 MBytes   712 Mbits/sec
+[  5]   3.00-4.00   sec  83.8 MBytes   703 Mbits/sec
+[  5]   4.00-5.00   sec  85.9 MBytes   720 Mbits/sec
+[  5]   5.00-6.00   sec  78.9 MBytes   662 Mbits/sec
+[  5]   6.00-7.00   sec  81.2 MBytes   682 Mbits/sec
+[  5]   7.00-8.00   sec  80.5 MBytes   675 Mbits/sec
+[  5]   8.00-9.00   sec  79.4 MBytes   666 Mbits/sec
+[  5]   9.00-10.00  sec  82.2 MBytes   689 Mbits/sec
+[  5]  10.00-11.00  sec  82.0 MBytes   688 Mbits/sec
+[  5]  11.00-12.00  sec  84.2 MBytes   707 Mbits/sec
+[  5]  12.00-13.00  sec  71.0 MBytes   596 Mbits/sec
+[  5]  13.00-14.00  sec  69.4 MBytes   582 Mbits/sec
+[  5]  14.00-15.00  sec  80.2 MBytes   673 Mbits/sec
+[  5]  15.00-16.00  sec  74.5 MBytes   625 Mbits/sec
+
+[Rx Counter]:
+ * CCA (CCK, OFDM, Total) = (0, 2455, 2455)
+ * False Alarm (CCK, OFDM, Total) = (0, 69, 69)
+ * CCK cnt (ok, err) = (0, 0)
+ * OFDM cnt (ok, err) = (1239, 2)
+ * HT cnt (ok, err) = (0, 0)
+ * VHT cnt (ok, err) = (21, 12109)
+
+The "VHT ok" number is not believable.
+
+And without SUPPORTS_AMSDU_IN_AMPDU:
+
+Reverse mode, remote host 192.168.0.1 is sending
+[  5] local 192.168.0.50 port 50030 connected to 192.168.0.1 port 5201
+[ ID] Interval           Transfer     Bitrate
+[  5]   0.00-1.00   sec  70.5 MBytes   591 Mbits/sec
+[  5]   1.00-2.00   sec  86.9 MBytes   729 Mbits/sec
+[  5]   2.00-3.00   sec  98.6 MBytes   827 Mbits/sec
+[  5]   3.00-4.00   sec  97.4 MBytes   817 Mbits/sec
+[  5]   4.00-5.00   sec  98.6 MBytes   827 Mbits/sec
+[  5]   5.00-6.00   sec  96.9 MBytes   813 Mbits/sec
+[  5]   6.00-7.00   sec  98.2 MBytes   824 Mbits/sec
+[  5]   7.00-8.00   sec  98.0 MBytes   822 Mbits/sec
+[  5]   8.00-9.00   sec  99.9 MBytes   838 Mbits/sec
+[  5]   9.00-10.00  sec  99.2 MBytes   833 Mbits/sec
+[  5]  10.00-11.00  sec  98.0 MBytes   822 Mbits/sec
+[  5]  11.00-12.00  sec  98.1 MBytes   823 Mbits/sec
+[  5]  12.00-13.00  sec  97.0 MBytes   814 Mbits/sec
+[  5]  13.00-14.00  sec  98.2 MBytes   824 Mbits/sec
+[  5]  14.00-15.00  sec  98.5 MBytes   826 Mbits/sec
+[  5]  15.00-16.00  sec  97.4 MBytes   817 Mbits/sec
+
+[Rx Counter]:
+ * CCA (CCK, OFDM, Total) = (0, 3860, 3860)
+ * False Alarm (CCK, OFDM, Total) = (0, 2, 2)
+ * CCK cnt (ok, err) = (0, 0)
+ * OFDM cnt (ok, err) = (1486, 0)
+ * HT cnt (ok, err) = (0, 0)
+ * VHT cnt (ok, err) = (7399, 9118)
+
+Add a new member "amsdu_in_ampdu" in struct rtw_chip_info and use it
+to set SUPPORTS_AMSDU_IN_AMPDU only for the other chips.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/6202ccfb-feb0-4107-a08d-db2699e179f0@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/main.c     | 3 ++-
+ drivers/net/wireless/realtek/rtw88/main.h     | 1 +
+ drivers/net/wireless/realtek/rtw88/rtw8812a.c | 1 +
+ drivers/net/wireless/realtek/rtw88/rtw8814a.c | 1 +
+ drivers/net/wireless/realtek/rtw88/rtw8821a.c | 1 +
+ drivers/net/wireless/realtek/rtw88/rtw8821c.c | 1 +
+ drivers/net/wireless/realtek/rtw88/rtw8822b.c | 1 +
+ drivers/net/wireless/realtek/rtw88/rtw8822c.c | 1 +
+ 8 files changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/main.c
++++ b/drivers/net/wireless/realtek/rtw88/main.c
+@@ -2242,7 +2242,8 @@ int rtw_register_hw(struct rtw_dev *rtwd
+       ieee80211_hw_set(hw, SUPPORTS_PS);
+       ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS);
+       ieee80211_hw_set(hw, SUPPORT_FAST_XMIT);
+-      ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU);
++      if (rtwdev->chip->amsdu_in_ampdu)
++              ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU);
+       ieee80211_hw_set(hw, HAS_RATE_CONTROL);
+       ieee80211_hw_set(hw, TX_AMSDU);
+       ieee80211_hw_set(hw, SINGLE_SCAN_ON_ALL_BANDS);
+--- a/drivers/net/wireless/realtek/rtw88/main.h
++++ b/drivers/net/wireless/realtek/rtw88/main.h
+@@ -1230,6 +1230,7 @@ struct rtw_chip_info {
+       u16 fw_fifo_addr[RTW_FW_FIFO_MAX];
+       const struct rtw_fwcd_segs *fwcd_segs;
++      bool amsdu_in_ampdu;
+       u8 usb_tx_agg_desc_num;
+       bool hw_feature_report;
+       u8 c2h_ra_report_size;
+--- a/drivers/net/wireless/realtek/rtw88/rtw8812a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8812a.c
+@@ -1076,6 +1076,7 @@ const struct rtw_chip_info rtw8812a_hw_s
+       .rfe_defs = rtw8812a_rfe_defs,
+       .rfe_defs_size = ARRAY_SIZE(rtw8812a_rfe_defs),
+       .rx_ldpc = false,
++      .amsdu_in_ampdu = true,
+       .hw_feature_report = false,
+       .c2h_ra_report_size = 4,
+       .old_datarate_fb_limit = true,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8814a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814a.c
+@@ -2200,6 +2200,7 @@ const struct rtw_chip_info rtw8814a_hw_s
+       .rx_ldpc = true,
+       .max_power_index = 0x3f,
+       .ampdu_density = IEEE80211_HT_MPDU_DENSITY_2,
++      .amsdu_in_ampdu = false, /* RX speed is better without AMSDU */
+       .usb_tx_agg_desc_num = 3,
+       .hw_feature_report = false,
+       .c2h_ra_report_size = 6,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821a.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821a.c
+@@ -1176,6 +1176,7 @@ const struct rtw_chip_info rtw8821a_hw_s
+       .rfe_defs = rtw8821a_rfe_defs,
+       .rfe_defs_size = ARRAY_SIZE(rtw8821a_rfe_defs),
+       .rx_ldpc = false,
++      .amsdu_in_ampdu = true,
+       .hw_feature_report = false,
+       .c2h_ra_report_size = 4,
+       .old_datarate_fb_limit = true,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+@@ -1991,6 +1991,7 @@ const struct rtw_chip_info rtw8821c_hw_s
+       .band = RTW_BAND_2G | RTW_BAND_5G,
+       .page_size = TX_PAGE_SIZE,
+       .dig_min = 0x1c,
++      .amsdu_in_ampdu = true,
+       .usb_tx_agg_desc_num = 3,
+       .hw_feature_report = true,
+       .c2h_ra_report_size = 7,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+@@ -2532,6 +2532,7 @@ const struct rtw_chip_info rtw8822b_hw_s
+       .band = RTW_BAND_2G | RTW_BAND_5G,
+       .page_size = TX_PAGE_SIZE,
+       .dig_min = 0x1c,
++      .amsdu_in_ampdu = true,
+       .usb_tx_agg_desc_num = 3,
+       .hw_feature_report = true,
+       .c2h_ra_report_size = 7,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+@@ -5350,6 +5350,7 @@ const struct rtw_chip_info rtw8822c_hw_s
+       .band = RTW_BAND_2G | RTW_BAND_5G,
+       .page_size = TX_PAGE_SIZE,
+       .dig_min = 0x20,
++      .amsdu_in_ampdu = true,
+       .usb_tx_agg_desc_num = 3,
+       .hw_feature_report = true,
+       .c2h_ra_report_size = 7,
diff --git a/package/kernel/mac80211/patches/rtl/099-v6.16-wifi-rtw88-Fix-the-module-names-printed-in-dmesg.patch b/package/kernel/mac80211/patches/rtl/099-v6.16-wifi-rtw88-Fix-the-module-names-printed-in-dmesg.patch
new file mode 100644 (file)
index 0000000..5082d77
--- /dev/null
@@ -0,0 +1,230 @@
+From 581cf3a9cb61daae1009c2380b228f40177046d8 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Wed, 2 Apr 2025 20:54:30 +0300
+Subject: [PATCH] wifi: rtw88: Fix the module names printed in dmesg
+
+The rtw88 module names all start with the "rtw88_" prefix, but the
+messages in dmesg mostly use the "rtw_" prefix. The messages from
+rtw88_8723cs don't even have the underscore.
+
+Use the KBUILD_MODNAME macro in every driver. This ensures that the
+messages in dmesg will always use the module name.
+
+Before:
+
+Mar 17 15:54:19 ideapad2 kernel: rtw_8814au 2-4:1.0: Firmware version 33.6.0, H2C version 6
+
+After:
+
+Mar 17 16:33:35 ideapad2 kernel: rtw88_8814au 2-4:1.0: Firmware version 33.6.0, H2C version 6
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/29cd29ba-bc51-4d5b-ad48-a43c6ce72d56@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8723cs.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8723de.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8723ds.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8723du.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8812au.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8814ae.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8814au.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8821au.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8821ce.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8821cs.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8821cu.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822be.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822bs.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822bu.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822ce.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822cs.c | 2 +-
+ drivers/net/wireless/realtek/rtw88/rtw8822cu.c | 2 +-
+ 17 files changed, 17 insertions(+), 17 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723cs.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723cs.c
+@@ -19,7 +19,7 @@ static const struct sdio_device_id rtw_8
+ MODULE_DEVICE_TABLE(sdio, rtw_8723cs_id_table);
+ static struct sdio_driver rtw_8723cs_driver = {
+-      .name = "rtw8723cs",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8723cs_id_table,
+       .probe = rtw_sdio_probe,
+       .remove = rtw_sdio_remove,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723de.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723de.c
+@@ -17,7 +17,7 @@ static const struct pci_device_id rtw_87
+ MODULE_DEVICE_TABLE(pci, rtw_8723de_id_table);
+ static struct pci_driver rtw_8723de_driver = {
+-      .name = "rtw_8723de",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8723de_id_table,
+       .probe = rtw_pci_probe,
+       .remove = rtw_pci_remove,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723ds.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723ds.c
+@@ -25,7 +25,7 @@ static const struct sdio_device_id rtw_8
+ MODULE_DEVICE_TABLE(sdio, rtw_8723ds_id_table);
+ static struct sdio_driver rtw_8723ds_driver = {
+-      .name = "rtw_8723ds",
++      .name = KBUILD_MODNAME,
+       .probe = rtw_sdio_probe,
+       .remove = rtw_sdio_remove,
+       .id_table = rtw_8723ds_id_table,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723du.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723du.c
+@@ -24,7 +24,7 @@ static int rtw8723du_probe(struct usb_in
+ }
+ static struct usb_driver rtw_8723du_driver = {
+-      .name = "rtw_8723du",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8723du_id_table,
+       .probe = rtw8723du_probe,
+       .disconnect = rtw_usb_disconnect,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8812au.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8812au.c
+@@ -82,7 +82,7 @@ static const struct usb_device_id rtw_88
+ MODULE_DEVICE_TABLE(usb, rtw_8812au_id_table);
+ static struct usb_driver rtw_8812au_driver = {
+-      .name = "rtw_8812au",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8812au_id_table,
+       .probe = rtw_usb_probe,
+       .disconnect = rtw_usb_disconnect,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8814ae.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814ae.c
+@@ -17,7 +17,7 @@ static const struct pci_device_id rtw_88
+ MODULE_DEVICE_TABLE(pci, rtw_8814ae_id_table);
+ static struct pci_driver rtw_8814ae_driver = {
+-      .name = "rtw_8814ae",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8814ae_id_table,
+       .probe = rtw_pci_probe,
+       .remove = rtw_pci_remove,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8814au.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8814au.c
+@@ -42,7 +42,7 @@ static const struct usb_device_id rtw_88
+ MODULE_DEVICE_TABLE(usb, rtw_8814au_id_table);
+ static struct usb_driver rtw_8814au_driver = {
+-      .name = "rtw_8814au",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8814au_id_table,
+       .probe = rtw_usb_probe,
+       .disconnect = rtw_usb_disconnect,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821au.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821au.c
+@@ -66,7 +66,7 @@ static const struct usb_device_id rtw_88
+ MODULE_DEVICE_TABLE(usb, rtw_8821au_id_table);
+ static struct usb_driver rtw_8821au_driver = {
+-      .name = "rtw_8821au",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8821au_id_table,
+       .probe = rtw_usb_probe,
+       .disconnect = rtw_usb_disconnect,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821ce.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821ce.c
+@@ -21,7 +21,7 @@ static const struct pci_device_id rtw_88
+ MODULE_DEVICE_TABLE(pci, rtw_8821ce_id_table);
+ static struct pci_driver rtw_8821ce_driver = {
+-      .name = "rtw_8821ce",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8821ce_id_table,
+       .probe = rtw_pci_probe,
+       .remove = rtw_pci_remove,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821cs.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821cs.c
+@@ -20,7 +20,7 @@ static const struct sdio_device_id rtw_8
+ MODULE_DEVICE_TABLE(sdio, rtw_8821cs_id_table);
+ static struct sdio_driver rtw_8821cs_driver = {
+-      .name = "rtw_8821cs",
++      .name = KBUILD_MODNAME,
+       .probe = rtw_sdio_probe,
+       .remove = rtw_sdio_remove,
+       .id_table = rtw_8821cs_id_table,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8821cu.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8821cu.c
+@@ -48,7 +48,7 @@ static int rtw_8821cu_probe(struct usb_i
+ }
+ static struct usb_driver rtw_8821cu_driver = {
+-      .name = "rtw_8821cu",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8821cu_id_table,
+       .probe = rtw_8821cu_probe,
+       .disconnect = rtw_usb_disconnect,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822be.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822be.c
+@@ -17,7 +17,7 @@ static const struct pci_device_id rtw_88
+ MODULE_DEVICE_TABLE(pci, rtw_8822be_id_table);
+ static struct pci_driver rtw_8822be_driver = {
+-      .name = "rtw_8822be",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8822be_id_table,
+       .probe = rtw_pci_probe,
+       .remove = rtw_pci_remove,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822bs.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822bs.c
+@@ -20,7 +20,7 @@ static const struct sdio_device_id rtw_8
+ MODULE_DEVICE_TABLE(sdio, rtw_8822bs_id_table);
+ static struct sdio_driver rtw_8822bs_driver = {
+-      .name = "rtw_8822bs",
++      .name = KBUILD_MODNAME,
+       .probe = rtw_sdio_probe,
+       .remove = rtw_sdio_remove,
+       .id_table = rtw_8822bs_id_table,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822bu.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822bu.c
+@@ -88,7 +88,7 @@ static int rtw8822bu_probe(struct usb_in
+ }
+ static struct usb_driver rtw_8822bu_driver = {
+-      .name = "rtw_8822bu",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8822bu_id_table,
+       .probe = rtw8822bu_probe,
+       .disconnect = rtw_usb_disconnect,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822ce.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822ce.c
+@@ -21,7 +21,7 @@ static const struct pci_device_id rtw_88
+ MODULE_DEVICE_TABLE(pci, rtw_8822ce_id_table);
+ static struct pci_driver rtw_8822ce_driver = {
+-      .name = "rtw_8822ce",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8822ce_id_table,
+       .probe = rtw_pci_probe,
+       .remove = rtw_pci_remove,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822cs.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822cs.c
+@@ -20,7 +20,7 @@ static const struct sdio_device_id rtw_8
+ MODULE_DEVICE_TABLE(sdio, rtw_8822cs_id_table);
+ static struct sdio_driver rtw_8822cs_driver = {
+-      .name = "rtw_8822cs",
++      .name = KBUILD_MODNAME,
+       .probe = rtw_sdio_probe,
+       .remove = rtw_sdio_remove,
+       .id_table = rtw_8822cs_id_table,
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822cu.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822cu.c
+@@ -32,7 +32,7 @@ static int rtw8822cu_probe(struct usb_in
+ }
+ static struct usb_driver rtw_8822cu_driver = {
+-      .name = "rtw_8822cu",
++      .name = KBUILD_MODNAME,
+       .id_table = rtw_8822cu_id_table,
+       .probe = rtw8822cu_probe,
+       .disconnect = rtw_usb_disconnect,
diff --git a/package/kernel/mac80211/patches/rtl/100-v6.16-wifi-rtw88-sdio-map-mgmt-frames-to-queue-TX_DESC_QSE.patch b/package/kernel/mac80211/patches/rtl/100-v6.16-wifi-rtw88-sdio-map-mgmt-frames-to-queue-TX_DESC_QSE.patch
new file mode 100644 (file)
index 0000000..ae2d2f5
--- /dev/null
@@ -0,0 +1,36 @@
+From b2effcdc237979dcc533d446a792fc54fd0e1213 Mon Sep 17 00:00:00 2001
+From: Zhen XIN <zhen.xin@nokia-sbell.com>
+Date: Thu, 10 Apr 2025 15:42:17 +0000
+Subject: [PATCH] wifi: rtw88: sdio: map mgmt frames to queue TX_DESC_QSEL_MGMT
+
+The rtw88-sdio do not work in AP mode due to the lack of TX status report
+for management frames.
+
+Map the management frames to queue TX_DESC_QSEL_MGMT, which enables the
+chip to generate TX reports for these frames
+
+Tested-on: rtl8723ds
+
+Fixes: 65371a3f14e7 ("wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets")
+Signed-off-by: Zhen XIN <zhen.xin@nokia-sbell.com>
+Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250410154217.1849977-3-zhen.xin@nokia-sbell.com
+---
+ drivers/net/wireless/realtek/rtw88/sdio.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -718,10 +718,7 @@ static u8 rtw_sdio_get_tx_qsel(struct rt
+       case RTW_TX_QUEUE_H2C:
+               return TX_DESC_QSEL_H2C;
+       case RTW_TX_QUEUE_MGMT:
+-              if (rtw_chip_wcpu_11n(rtwdev))
+-                      return TX_DESC_QSEL_HIGH;
+-              else
+-                      return TX_DESC_QSEL_MGMT;
++              return TX_DESC_QSEL_MGMT;
+       case RTW_TX_QUEUE_HI0:
+               return TX_DESC_QSEL_HIGH;
+       default:
diff --git a/package/kernel/mac80211/patches/rtl/101-v6.16-wifi-rtw88-sdio-call-rtw_sdio_indicate_tx_status-unc.patch b/package/kernel/mac80211/patches/rtl/101-v6.16-wifi-rtw88-sdio-call-rtw_sdio_indicate_tx_status-unc.patch
new file mode 100644 (file)
index 0000000..aa85137
--- /dev/null
@@ -0,0 +1,37 @@
+From fc5f5a0ec463ae6a07850428bd3082947e01d276 Mon Sep 17 00:00:00 2001
+From: Zhen XIN <zhen.xin@nokia-sbell.com>
+Date: Thu, 10 Apr 2025 15:42:16 +0000
+Subject: [PATCH] wifi: rtw88: sdio: call rtw_sdio_indicate_tx_status
+ unconditionally
+
+The rtw88-sdio do not work in AP mode due to the lack of TX status report
+for management frames.
+
+Make the invocation of rtw_sdio_indicate_tx_status unconditional and cover
+all packet queues
+
+Tested-on: rtl8723ds
+
+Fixes: 65371a3f14e7 ("wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets")
+Signed-off-by: Zhen XIN <zhen.xin@nokia-sbell.com>
+Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250410154217.1849977-2-zhen.xin@nokia-sbell.com
+---
+ drivers/net/wireless/realtek/rtw88/sdio.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -1224,10 +1224,7 @@ static void rtw_sdio_process_tx_queue(st
+               return;
+       }
+-      if (queue <= RTW_TX_QUEUE_VO)
+-              rtw_sdio_indicate_tx_status(rtwdev, skb);
+-      else
+-              dev_kfree_skb_any(skb);
++      rtw_sdio_indicate_tx_status(rtwdev, skb);
+ }
+ static void rtw_sdio_tx_handler(struct work_struct *work)
diff --git a/package/kernel/mac80211/patches/rtl/102-v6.16-wifi-rtw88-do-not-ignore-hardware-read-error-during-.patch b/package/kernel/mac80211/patches/rtl/102-v6.16-wifi-rtw88-do-not-ignore-hardware-read-error-during-.patch
new file mode 100644 (file)
index 0000000..87d72bf
--- /dev/null
@@ -0,0 +1,32 @@
+From 20d3c19bd8f9b498173c198eadf54580c8caa336 Mon Sep 17 00:00:00 2001
+From: Dmitry Antipov <dmantipov@yandex.ru>
+Date: Tue, 15 Apr 2025 12:07:20 +0300
+Subject: [PATCH] wifi: rtw88: do not ignore hardware read error during DPK
+
+In 'rtw8822c_dpk_cal_coef1()', do not ignore error returned
+by 'check_hw_ready()' but issue a warning to denote possible
+DPK issue. Compile tested only.
+
+Found by Linux Verification Center (linuxtesting.org) with SVACE.
+
+Fixes: 5227c2ee453d ("rtw88: 8822c: add SW DPK support")
+Suggested-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250415090720.194048-1-dmantipov@yandex.ru
+---
+ drivers/net/wireless/realtek/rtw88/rtw8822c.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+@@ -3951,7 +3951,8 @@ static void rtw8822c_dpk_cal_coef1(struc
+       rtw_write32(rtwdev, REG_NCTL0, 0x00001148);
+       rtw_write32(rtwdev, REG_NCTL0, 0x00001149);
+-      check_hw_ready(rtwdev, 0x2d9c, MASKBYTE0, 0x55);
++      if (!check_hw_ready(rtwdev, 0x2d9c, MASKBYTE0, 0x55))
++              rtw_warn(rtwdev, "DPK stuck, performance may be suboptimal");
+       rtw_write8(rtwdev, 0x1b10, 0x0);
+       rtw_write32_mask(rtwdev, REG_NCTL0, BIT_SUBPAGE, 0x0000000c);
diff --git a/package/kernel/mac80211/patches/rtl/103-v6.16-wifi-rtw88-Fix-RX-aggregation-settings-for-RTL8723DS.patch b/package/kernel/mac80211/patches/rtl/103-v6.16-wifi-rtw88-Fix-RX-aggregation-settings-for-RTL8723DS.patch
new file mode 100644 (file)
index 0000000..901e471
--- /dev/null
@@ -0,0 +1,44 @@
+From 0ffa1ba81b35ba147c9df6206a61499a156b0128 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 2 May 2025 14:49:01 +0300
+Subject: [PATCH] wifi: rtw88: Fix RX aggregation settings for RTL8723DS
+
+Use the same RX aggregation size and timeout used by the out-of-tree
+RTL8723DS driver. Also set mystery bit 31 of REG_RXDMA_AGG_PG_TH. This
+improves the RX speed from ~44 Mbps to ~67 Mbps.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/4c79fdc1-54bc-4986-9931-bb3ceb418b97@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/sdio.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -677,12 +677,22 @@ static void rtw_sdio_enable_rx_aggregati
+ {
+       u8 size, timeout;
+-      if (rtw_chip_wcpu_11n(rtwdev)) {
++      switch (rtwdev->chip->id) {
++      case RTW_CHIP_TYPE_8703B:
++      case RTW_CHIP_TYPE_8821A:
++      case RTW_CHIP_TYPE_8812A:
+               size = 0x6;
+               timeout = 0x6;
+-      } else {
++              break;
++      case RTW_CHIP_TYPE_8723D:
++              size = 0xa;
++              timeout = 0x3;
++              rtw_write8_set(rtwdev, REG_RXDMA_AGG_PG_TH + 3, BIT(7));
++              break;
++      default:
+               size = 0xff;
+               timeout = 0x1;
++              break;
+       }
+       /* Make the firmware honor the size limit configured below */
diff --git a/package/kernel/mac80211/patches/rtl/104-v6.16-wifi-rtw88-Handle-RTL8723D-S-with-blank-efuse.patch b/package/kernel/mac80211/patches/rtl/104-v6.16-wifi-rtw88-Handle-RTL8723D-S-with-blank-efuse.patch
new file mode 100644 (file)
index 0000000..d994a6a
--- /dev/null
@@ -0,0 +1,198 @@
+From 2c17afde9ff6713f3e080ed1ea1a4bd7480be9aa Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Fri, 2 May 2025 14:49:34 +0300
+Subject: [PATCH] wifi: rtw88: Handle RTL8723D(S) with blank efuse
+
+Some users have RTL8723DS chips with nearly blank efuse. Currently these
+chips cannot connect when using rtw88, but they do work using the old
+out-of-tree driver.
+
+Use reasonable default values for TX power, antenna configuration, and
+crystal cap if the chip's efuse is missing these things.
+
+RTL8723D can use the same default values as RTL8703B, so simply move
+the code from rtl8703b_read_efuse() to the shared function
+__rtl8723x_read_efuse().
+
+Link: https://github.com/lwfinger/rtw88/issues/157
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/5734afe7-0870-40b2-acd4-5657a02d7c56@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8703b.c | 60 -------------------
+ drivers/net/wireless/realtek/rtw88/rtw8723x.c | 59 ++++++++++++++++++
+ 2 files changed, 59 insertions(+), 60 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8703b.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8703b.c
+@@ -519,15 +519,6 @@ static const struct rtw_rqpn rqpn_table_
+        RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},
+ };
+-/* Default power index table for RTL8703B, used if EFUSE does not
+- * contain valid data. Replaces EFUSE data from offset 0x10 (start of
+- * txpwr_idx_table).
+- */
+-static const u8 rtw8703b_txpwr_idx_table[] = {
+-      0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
+-      0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x02
+-};
+-
+ static void try_mac_from_devicetree(struct rtw_dev *rtwdev)
+ {
+       struct device_node *node = rtwdev->dev->of_node;
+@@ -544,15 +535,9 @@ static void try_mac_from_devicetree(stru
+       }
+ }
+-#define DBG_EFUSE_FIX(rtwdev, name)                                   \
+-      rtw_dbg(rtwdev, RTW_DBG_EFUSE, "Fixed invalid EFUSE value: "    \
+-              # name "=0x%x\n", rtwdev->efuse.name)
+-
+ static int rtw8703b_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
+ {
+       struct rtw_efuse *efuse = &rtwdev->efuse;
+-      u8 *pwr = (u8 *)efuse->txpwr_idx_table;
+-      bool valid = false;
+       int ret;
+       ret = rtw8723x_read_efuse(rtwdev, log_map);
+@@ -562,51 +547,6 @@ static int rtw8703b_read_efuse(struct rt
+       if (!is_valid_ether_addr(efuse->addr))
+               try_mac_from_devicetree(rtwdev);
+-      /* If TX power index table in EFUSE is invalid, fall back to
+-       * built-in table.
+-       */
+-      for (int i = 0; i < ARRAY_SIZE(rtw8703b_txpwr_idx_table); i++)
+-              if (pwr[i] != 0xff) {
+-                      valid = true;
+-                      break;
+-              }
+-      if (!valid) {
+-              for (int i = 0; i < ARRAY_SIZE(rtw8703b_txpwr_idx_table); i++)
+-                      pwr[i] = rtw8703b_txpwr_idx_table[i];
+-              rtw_dbg(rtwdev, RTW_DBG_EFUSE,
+-                      "Replaced invalid EFUSE TX power index table.");
+-              rtw8723x_debug_txpwr_limit(rtwdev,
+-                                         efuse->txpwr_idx_table, 2);
+-      }
+-
+-      /* Override invalid antenna settings. */
+-      if (efuse->bt_setting == 0xff) {
+-              /* shared antenna */
+-              efuse->bt_setting |= BIT(0);
+-              /* RF path A */
+-              efuse->bt_setting &= ~BIT(6);
+-              DBG_EFUSE_FIX(rtwdev, bt_setting);
+-      }
+-
+-      /* Override invalid board options: The coex code incorrectly
+-       * assumes that if bits 6 & 7 are set the board doesn't
+-       * support coex. Regd is also derived from rf_board_option and
+-       * should be 0 if there's no valid data.
+-       */
+-      if (efuse->rf_board_option == 0xff) {
+-              efuse->regd = 0;
+-              efuse->rf_board_option &= GENMASK(5, 0);
+-              DBG_EFUSE_FIX(rtwdev, rf_board_option);
+-      }
+-
+-      /* Override invalid crystal cap setting, default comes from
+-       * vendor driver. Chip specific.
+-       */
+-      if (efuse->crystal_cap == 0xff) {
+-              efuse->crystal_cap = 0x20;
+-              DBG_EFUSE_FIX(rtwdev, crystal_cap);
+-      }
+-
+       return 0;
+ }
+--- a/drivers/net/wireless/realtek/rtw88/rtw8723x.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8723x.c
+@@ -69,6 +69,9 @@ static void __rtw8723x_lck(struct rtw_de
+ #define DBG_EFUSE_2BYTE(rtwdev, map, name)                    \
+       rtw_dbg(rtwdev, RTW_DBG_EFUSE, # name "=0x%02x%02x\n",  \
+               (map)->name[0], (map)->name[1])
++#define DBG_EFUSE_FIX(rtwdev, name)                                   \
++      rtw_dbg(rtwdev, RTW_DBG_EFUSE, "Fixed invalid EFUSE value: "    \
++              # name "=0x%x\n", rtwdev->efuse.name)
+ static void rtw8723xe_efuse_debug(struct rtw_dev *rtwdev,
+                                 struct rtw8723x_efuse *map)
+@@ -238,10 +241,21 @@ static void rtw8723xs_efuse_parsing(stru
+       ether_addr_copy(efuse->addr, map->s.mac_addr);
+ }
++/* Default power index table for RTL8703B/RTL8723D, used if EFUSE does
++ * not contain valid data. Replaces EFUSE data from offset 0x10 (start
++ * of txpwr_idx_table).
++ */
++static const u8 rtw8723x_txpwr_idx_table[] = {
++      0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
++      0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x02
++};
++
+ static int __rtw8723x_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
+ {
+       struct rtw_efuse *efuse = &rtwdev->efuse;
++      u8 *pwr = (u8 *)efuse->txpwr_idx_table;
+       struct rtw8723x_efuse *map;
++      bool valid = false;
+       int i;
+       map = (struct rtw8723x_efuse *)log_map;
+@@ -279,6 +293,51 @@ static int __rtw8723x_read_efuse(struct
+               return -EOPNOTSUPP;
+       }
++      /* If TX power index table in EFUSE is invalid, fall back to
++       * built-in table.
++       */
++      for (i = 0; i < ARRAY_SIZE(rtw8723x_txpwr_idx_table); i++)
++              if (pwr[i] != 0xff) {
++                      valid = true;
++                      break;
++              }
++      if (!valid) {
++              for (i = 0; i < ARRAY_SIZE(rtw8723x_txpwr_idx_table); i++)
++                      pwr[i] = rtw8723x_txpwr_idx_table[i];
++              rtw_dbg(rtwdev, RTW_DBG_EFUSE,
++                      "Replaced invalid EFUSE TX power index table.");
++              rtw8723x_debug_txpwr_limit(rtwdev,
++                                         efuse->txpwr_idx_table, 2);
++      }
++
++      /* Override invalid antenna settings. */
++      if (efuse->bt_setting == 0xff) {
++              /* shared antenna */
++              efuse->bt_setting |= BIT(0);
++              /* RF path A */
++              efuse->bt_setting &= ~BIT(6);
++              DBG_EFUSE_FIX(rtwdev, bt_setting);
++      }
++
++      /* Override invalid board options: The coex code incorrectly
++       * assumes that if bits 6 & 7 are set the board doesn't
++       * support coex. Regd is also derived from rf_board_option and
++       * should be 0 if there's no valid data.
++       */
++      if (efuse->rf_board_option == 0xff) {
++              efuse->regd = 0;
++              efuse->rf_board_option &= GENMASK(5, 0);
++              DBG_EFUSE_FIX(rtwdev, rf_board_option);
++      }
++
++      /* Override invalid crystal cap setting, default comes from
++       * vendor driver. Chip specific.
++       */
++      if (efuse->crystal_cap == 0xff) {
++              efuse->crystal_cap = 0x20;
++              DBG_EFUSE_FIX(rtwdev, crystal_cap);
++      }
++
+       return 0;
+ }
diff --git a/package/kernel/mac80211/patches/rtl/105-v6.16-wifi-rtw88-rtw8822bu-VID-PID-for-BUFFALO-WI-U2-866DM.patch b/package/kernel/mac80211/patches/rtl/105-v6.16-wifi-rtw88-rtw8822bu-VID-PID-for-BUFFALO-WI-U2-866DM.patch
new file mode 100644 (file)
index 0000000..8321ca8
--- /dev/null
@@ -0,0 +1,27 @@
+From b7f0cc647e52296a3d4dd727b6479dcd6d7e364e Mon Sep 17 00:00:00 2001
+From: Yuuki NAGAO <wf.yn386@gmail.com>
+Date: Sat, 3 May 2025 09:32:27 +0900
+Subject: [PATCH] wifi: rtw88: rtw8822bu VID/PID for BUFFALO WI-U2-866DM
+
+Add VID/PID 0411/03d1 for recently released
+BUFFALO WI-U2-866DM USB WiFi adapter.
+
+Signed-off-by: Yuuki NAGAO <wf.yn386@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250503003227.6673-1-wf.yn386@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/rtw8822bu.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtw88/rtw8822bu.c
++++ b/drivers/net/wireless/realtek/rtw88/rtw8822bu.c
+@@ -77,6 +77,8 @@ static const struct usb_device_id rtw_88
+         .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* Mercusys MA30N */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3322, 0xff, 0xff, 0xff),
+         .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* D-Link DWA-T185 rev. A1 */
++      { USB_DEVICE_AND_INTERFACE_INFO(0x0411, 0x03d1, 0xff, 0xff, 0xff),
++        .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* BUFFALO WI-U2-866DM */
+       {},
+ };
+ MODULE_DEVICE_TABLE(usb, rtw_8822bu_id_table);
diff --git a/package/kernel/mac80211/patches/rtl/106-v6.16-wifi-rtw88-usb-Reduce-control-message-timeout-to-500.patch b/package/kernel/mac80211/patches/rtl/106-v6.16-wifi-rtw88-usb-Reduce-control-message-timeout-to-500.patch
new file mode 100644 (file)
index 0000000..9ed1162
--- /dev/null
@@ -0,0 +1,52 @@
+From 490340faddea461319652ce36dbc7c1b4482c35e Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Sat, 10 May 2025 15:21:25 +0300
+Subject: [PATCH] wifi: rtw88: usb: Reduce control message timeout to 500 ms
+
+RTL8811AU stops responding during the firmware download on some systems:
+
+[  809.256440] rtw_8821au 5-2.1:1.0: Firmware version 42.4.0, H2C version 0
+[  812.759142] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: renamed from wlan0
+[  837.315388] rtw_8821au 1-4:1.0: write register 0x1ef4 failed with -110
+[  867.524259] rtw_8821au 1-4:1.0: write register 0x1ef8 failed with -110
+[  868.930976] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: entered promiscuous mode
+[  897.730952] rtw_8821au 1-4:1.0: write register 0x1efc failed with -110
+
+Each write takes 30 seconds to fail because that's the timeout currently
+used for control messages in rtw_usb_write().
+
+In this scenario the firmware download takes at least 2000 seconds.
+Because this is done from the USB probe function, the long delay makes
+other things in the system hang.
+
+Reduce the timeout to 500 ms. This is the value used by the official USB
+wifi drivers from Realtek.
+
+Of course this only makes things hang for ~30 seconds instead of ~30
+minutes. It doesn't fix the firmware download.
+
+Tested with RTL8822CU, RTL8812BU, RTL8811CU, RTL8814AU, RTL8811AU,
+RTL8812AU, RTL8821AU, RTL8723DU.
+
+Cc: stable@vger.kernel.org
+Fixes: a82dfd33d123 ("wifi: rtw88: Add common USB chip support")
+Link: https://github.com/lwfinger/rtw88/issues/344
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/1e35dd26-3f10-40b1-b2b4-f72184a26611@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/usb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -139,7 +139,7 @@ static void rtw_usb_write(struct rtw_dev
+       ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
+                             RTW_USB_CMD_REQ, RTW_USB_CMD_WRITE,
+-                            addr, 0, data, len, 30000);
++                            addr, 0, data, len, 500);
+       if (ret < 0 && ret != -ENODEV && count++ < 4)
+               rtw_err(rtwdev, "write register 0x%x failed with %d\n",
+                       addr, ret);
diff --git a/package/kernel/mac80211/patches/rtl/107-v6.16-wifi-rtw88-usb-Upload-the-firmware-in-bigger-chunks.patch b/package/kernel/mac80211/patches/rtl/107-v6.16-wifi-rtw88-usb-Upload-the-firmware-in-bigger-chunks.patch
new file mode 100644 (file)
index 0000000..8031e46
--- /dev/null
@@ -0,0 +1,214 @@
+From 80fe0bc1659c0ccc79d082e426fa376be5df9c04 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Sat, 10 May 2025 15:22:24 +0300
+Subject: [PATCH] wifi: rtw88: usb: Upload the firmware in bigger chunks
+
+RTL8811AU stops responding during the firmware download on some systems:
+
+[  809.256440] rtw_8821au 5-2.1:1.0: Firmware version 42.4.0, H2C version 0
+[  812.759142] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: renamed from wlan0
+[  837.315388] rtw_8821au 1-4:1.0: write register 0x1ef4 failed with -110
+[  867.524259] rtw_8821au 1-4:1.0: write register 0x1ef8 failed with -110
+[  868.930976] rtw_8821au 5-2.1:1.0 wlp48s0f4u2u1: entered promiscuous mode
+[  897.730952] rtw_8821au 1-4:1.0: write register 0x1efc failed with -110
+
+Maybe it takes too long when writing the firmware 4 bytes at a time.
+
+Write 196 bytes at a time for RTL8821AU, RTL8811AU, and RTL8812AU,
+and 254 bytes at a time for RTL8723DU. These are the sizes used in
+their official drivers. Tested with all these chips.
+
+Cc: stable@vger.kernel.org
+Link: https://github.com/lwfinger/rtw88/issues/344
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Acked-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/43f1daad-3ec0-4a3b-a50c-9cd9eb2c2f52@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/hci.h  |  8 ++++
+ drivers/net/wireless/realtek/rtw88/mac.c  | 11 +++--
+ drivers/net/wireless/realtek/rtw88/mac.h  |  2 +
+ drivers/net/wireless/realtek/rtw88/pci.c  |  2 +
+ drivers/net/wireless/realtek/rtw88/sdio.c |  2 +
+ drivers/net/wireless/realtek/rtw88/usb.c  | 55 +++++++++++++++++++++++
+ 6 files changed, 76 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/hci.h
++++ b/drivers/net/wireless/realtek/rtw88/hci.h
+@@ -19,6 +19,8 @@ struct rtw_hci_ops {
+       void (*link_ps)(struct rtw_dev *rtwdev, bool enter);
+       void (*interface_cfg)(struct rtw_dev *rtwdev);
+       void (*dynamic_rx_agg)(struct rtw_dev *rtwdev, bool enable);
++      void (*write_firmware_page)(struct rtw_dev *rtwdev, u32 page,
++                                  const u8 *data, u32 size);
+       int (*write_data_rsvd_page)(struct rtw_dev *rtwdev, u8 *buf, u32 size);
+       int (*write_data_h2c)(struct rtw_dev *rtwdev, u8 *buf, u32 size);
+@@ -79,6 +81,12 @@ static inline void rtw_hci_dynamic_rx_ag
+               rtwdev->hci.ops->dynamic_rx_agg(rtwdev, enable);
+ }
++static inline void rtw_hci_write_firmware_page(struct rtw_dev *rtwdev, u32 page,
++                                             const u8 *data, u32 size)
++{
++      rtwdev->hci.ops->write_firmware_page(rtwdev, page, data, size);
++}
++
+ static inline int
+ rtw_hci_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, u32 size)
+ {
+--- a/drivers/net/wireless/realtek/rtw88/mac.c
++++ b/drivers/net/wireless/realtek/rtw88/mac.c
+@@ -856,8 +856,8 @@ fwdl_ready:
+       }
+ }
+-static void
+-write_firmware_page(struct rtw_dev *rtwdev, u32 page, const u8 *data, u32 size)
++void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page,
++                           const u8 *data, u32 size)
+ {
+       u32 val32;
+       u32 block_nr;
+@@ -887,6 +887,7 @@ write_firmware_page(struct rtw_dev *rtwd
+               rtw_write32(rtwdev, write_addr, le32_to_cpu(remain_data));
+       }
+ }
++EXPORT_SYMBOL(rtw_write_firmware_page);
+ static int
+ download_firmware_legacy(struct rtw_dev *rtwdev, const u8 *data, u32 size)
+@@ -904,11 +905,13 @@ download_firmware_legacy(struct rtw_dev
+       rtw_write8_set(rtwdev, REG_MCUFW_CTRL, BIT_FWDL_CHK_RPT);
+       for (page = 0; page < total_page; page++) {
+-              write_firmware_page(rtwdev, page, data, DLFW_PAGE_SIZE_LEGACY);
++              rtw_hci_write_firmware_page(rtwdev, page, data,
++                                          DLFW_PAGE_SIZE_LEGACY);
+               data += DLFW_PAGE_SIZE_LEGACY;
+       }
+       if (last_page_size)
+-              write_firmware_page(rtwdev, page, data, last_page_size);
++              rtw_hci_write_firmware_page(rtwdev, page, data,
++                                          last_page_size);
+       if (!check_hw_ready(rtwdev, REG_MCUFW_CTRL, BIT_FWDL_CHK_RPT, 1)) {
+               rtw_err(rtwdev, "failed to check download firmware report\n");
+--- a/drivers/net/wireless/realtek/rtw88/mac.h
++++ b/drivers/net/wireless/realtek/rtw88/mac.h
+@@ -34,6 +34,8 @@ int rtw_pwr_seq_parser(struct rtw_dev *r
+                      const struct rtw_pwr_seq_cmd * const *cmd_seq);
+ int rtw_mac_power_on(struct rtw_dev *rtwdev);
+ void rtw_mac_power_off(struct rtw_dev *rtwdev);
++void rtw_write_firmware_page(struct rtw_dev *rtwdev, u32 page,
++                           const u8 *data, u32 size);
+ int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw);
+ int rtw_mac_init(struct rtw_dev *rtwdev);
+ void rtw_mac_flush_queues(struct rtw_dev *rtwdev, u32 queues, bool drop);
+--- a/drivers/net/wireless/realtek/rtw88/pci.c
++++ b/drivers/net/wireless/realtek/rtw88/pci.c
+@@ -12,6 +12,7 @@
+ #include "fw.h"
+ #include "ps.h"
+ #include "debug.h"
++#include "mac.h"
+ static bool rtw_disable_msi;
+ static bool rtw_pci_disable_aspm;
+@@ -1602,6 +1603,7 @@ static const struct rtw_hci_ops rtw_pci_
+       .link_ps = rtw_pci_link_ps,
+       .interface_cfg = rtw_pci_interface_cfg,
+       .dynamic_rx_agg = NULL,
++      .write_firmware_page = rtw_write_firmware_page,
+       .read8 = rtw_pci_read8,
+       .read16 = rtw_pci_read16,
+--- a/drivers/net/wireless/realtek/rtw88/sdio.c
++++ b/drivers/net/wireless/realtek/rtw88/sdio.c
+@@ -10,6 +10,7 @@
+ #include <linux/mmc/host.h>
+ #include <linux/mmc/sdio_func.h>
+ #include "main.h"
++#include "mac.h"
+ #include "debug.h"
+ #include "fw.h"
+ #include "ps.h"
+@@ -1164,6 +1165,7 @@ static const struct rtw_hci_ops rtw_sdio
+       .link_ps = rtw_sdio_link_ps,
+       .interface_cfg = rtw_sdio_interface_cfg,
+       .dynamic_rx_agg = NULL,
++      .write_firmware_page = rtw_write_firmware_page,
+       .read8 = rtw_sdio_read8,
+       .read16 = rtw_sdio_read16,
+--- a/drivers/net/wireless/realtek/rtw88/usb.c
++++ b/drivers/net/wireless/realtek/rtw88/usb.c
+@@ -165,6 +165,60 @@ static void rtw_usb_write32(struct rtw_d
+       rtw_usb_write(rtwdev, addr, val, 4);
+ }
++static void rtw_usb_write_firmware_page(struct rtw_dev *rtwdev, u32 page,
++                                      const u8 *data, u32 size)
++{
++      struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev);
++      struct usb_device *udev = rtwusb->udev;
++      u32 addr = FW_START_ADDR_LEGACY;
++      u8 *data_dup, *buf;
++      u32 n, block_size;
++      int ret;
++
++      switch (rtwdev->chip->id) {
++      case RTW_CHIP_TYPE_8723D:
++              block_size = 254;
++              break;
++      default:
++              block_size = 196;
++              break;
++      }
++
++      data_dup = kmemdup(data, size, GFP_KERNEL);
++      if (!data_dup)
++              return;
++
++      buf = data_dup;
++
++      rtw_write32_mask(rtwdev, REG_MCUFW_CTRL, BIT_ROM_PGE, page);
++
++      while (size > 0) {
++              if (size >= block_size)
++                      n = block_size;
++              else if (size >= 8)
++                      n = 8;
++              else
++                      n = 1;
++
++              ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
++                                    RTW_USB_CMD_REQ, RTW_USB_CMD_WRITE,
++                                    addr, 0, buf, n, 500);
++              if (ret != n) {
++                      if (ret != -ENODEV)
++                              rtw_err(rtwdev,
++                                      "write 0x%x len %d failed: %d\n",
++                                      addr, n, ret);
++                      break;
++              }
++
++              addr += n;
++              buf += n;
++              size -= n;
++      }
++
++      kfree(data_dup);
++}
++
+ static int dma_mapping_to_ep(enum rtw_dma_mapping dma_mapping)
+ {
+       switch (dma_mapping) {
+@@ -855,6 +909,7 @@ static const struct rtw_hci_ops rtw_usb_
+       .link_ps = rtw_usb_link_ps,
+       .interface_cfg = rtw_usb_interface_cfg,
+       .dynamic_rx_agg = rtw_usb_dynamic_rx_agg,
++      .write_firmware_page = rtw_usb_write_firmware_page,
+       .write8  = rtw_usb_write8,
+       .write16 = rtw_usb_write16,
diff --git a/package/kernel/mac80211/patches/rtl/108-v6.16-wifi-rtw88-Fix-the-random-error-beacon-valid-message.patch b/package/kernel/mac80211/patches/rtl/108-v6.16-wifi-rtw88-Fix-the-random-error-beacon-valid-message.patch
new file mode 100644 (file)
index 0000000..8008b58
--- /dev/null
@@ -0,0 +1,73 @@
+From f24d0d8c3cd7e4237f802c4d2f3bd4ac04572948 Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Date: Sat, 10 May 2025 16:12:34 +0300
+Subject: [PATCH] wifi: rtw88: Fix the random "error beacon valid" messages for
+ USB
+
+All the USB devices have a problem in AP mode: uploading the updated
+beacon to the chip's reserved page can randomly fail:
+
+[34996.474304] rtw88_8723du 1-2:1.2: error beacon valid
+[34996.474788] rtw88_8723du 1-2:1.2: failed to download drv rsvd page
+[34999.956369] rtw88_8723du 1-2:1.2: error beacon valid
+[34999.956846] rtw88_8723du 1-2:1.2: failed to download drv rsvd page
+[34999.956855] rtw88_8723du 1-2:1.2: failed to download beacon
+[35017.978296] rtw88_8723du 1-2:1.2: error beacon valid
+[35017.978805] rtw88_8723du 1-2:1.2: failed to download drv rsvd page
+[35017.978823] rtw88_8723du 1-2:1.2: failed to download beacon
+[35023.200395] rtw88_8723du 1-2:1.2: error beacon valid
+[35023.200869] rtw88_8723du 1-2:1.2: failed to download drv rsvd page
+[35023.200875] rtw88_8723du 1-2:1.2: failed to download beacon
+[35478.680547] rtw88_8723du 1-2:1.2: error beacon valid
+[35478.681023] rtw88_8723du 1-2:1.2: failed to download drv rsvd page
+
+Disable some beacon-related hardware functions before uploading the
+beacon and enable them again after.
+
+Tested with RTL8723DU, RTL8812BU, RTL8822CE.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/c248c40a-d432-47ed-90e0-d81ee6c32464@gmail.com
+---
+ drivers/net/wireless/realtek/rtw88/fw.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/fw.c
++++ b/drivers/net/wireless/realtek/rtw88/fw.c
+@@ -1467,7 +1467,7 @@ void rtw_add_rsvd_page_sta(struct rtw_de
+ int rtw_fw_write_data_rsvd_page(struct rtw_dev *rtwdev, u16 pg_addr,
+                               u8 *buf, u32 size)
+ {
+-      u8 bckp[2];
++      u8 bckp[3];
+       u8 val;
+       u16 rsvd_pg_head;
+       u32 bcn_valid_addr;
+@@ -1479,6 +1479,8 @@ int rtw_fw_write_data_rsvd_page(struct r
+       if (!size)
+               return -EINVAL;
++      bckp[2] = rtw_read8(rtwdev, REG_BCN_CTRL);
++
+       if (rtw_chip_wcpu_11n(rtwdev)) {
+               rtw_write32_set(rtwdev, REG_DWBCN0_CTRL, BIT_BCN_VALID);
+       } else {
+@@ -1492,6 +1494,9 @@ int rtw_fw_write_data_rsvd_page(struct r
+       val |= BIT_ENSWBCN >> 8;
+       rtw_write8(rtwdev, REG_CR + 1, val);
++      rtw_write8(rtwdev, REG_BCN_CTRL,
++                 (bckp[2] & ~BIT_EN_BCN_FUNCTION) | BIT_DIS_TSF_UDT);
++
+       if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE) {
+               val = rtw_read8(rtwdev, REG_FWHW_TXQ_CTRL + 2);
+               bckp[1] = val;
+@@ -1522,6 +1527,7 @@ restore:
+       rsvd_pg_head = rtwdev->fifo.rsvd_boundary;
+       rtw_write16(rtwdev, REG_FIFOPAGE_CTRL_2,
+                   rsvd_pg_head | BIT_BCN_VALID_V1);
++      rtw_write8(rtwdev, REG_BCN_CTRL, bckp[2]);
+       if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE)
+               rtw_write8(rtwdev, REG_FWHW_TXQ_CTRL + 2, bckp[1]);
+       rtw_write8(rtwdev, REG_CR + 1, bckp[0]);
diff --git a/package/kernel/mac80211/patches/rtl/109-v6.16-wifi-rtw88-fix-the-para-buffer-size-to-avoid-reading.patch b/package/kernel/mac80211/patches/rtl/109-v6.16-wifi-rtw88-fix-the-para-buffer-size-to-avoid-reading.patch
new file mode 100644 (file)
index 0000000..11b7312
--- /dev/null
@@ -0,0 +1,38 @@
+From 4c2c372de2e108319236203cce6de44d70ae15cd Mon Sep 17 00:00:00 2001
+From: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
+Date: Tue, 13 May 2025 12:13:04 +0000
+Subject: [PATCH] wifi: rtw88: fix the 'para' buffer size to avoid reading out
+ of bounds
+
+Set the size to 6 instead of 2, since 'para' array is passed to
+'rtw_fw_bt_wifi_control(rtwdev, para[0], &para[1])', which reads
+5 bytes:
+
+void rtw_fw_bt_wifi_control(struct rtw_dev *rtwdev, u8 op_code, u8 *data)
+{
+    ...
+    SET_BT_WIFI_CONTROL_DATA1(h2c_pkt, *data);
+    SET_BT_WIFI_CONTROL_DATA2(h2c_pkt, *(data + 1));
+    ...
+    SET_BT_WIFI_CONTROL_DATA5(h2c_pkt, *(data + 4));
+
+Detected using the static analysis tool - Svace.
+Fixes: 4136214f7c46 ("rtw88: add BT co-existence support")
+Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
+Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
+Link: https://patch.msgid.link/20250513121304.124141-1-aleksei.kodanev@bell-sw.com
+---
+ drivers/net/wireless/realtek/rtw88/coex.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/coex.c
++++ b/drivers/net/wireless/realtek/rtw88/coex.c
+@@ -309,7 +309,7 @@ static void rtw_coex_tdma_timer_base(str
+ {
+       struct rtw_coex *coex = &rtwdev->coex;
+       struct rtw_coex_stat *coex_stat = &coex->stat;
+-      u8 para[2] = {0};
++      u8 para[6] = {};
+       u8 times;
+       u16 tbtt_interval = coex_stat->wl_beacon_interval;