From e005cdea10284975e81e77282d654a358f33d640 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 4 Aug 2025 21:45:54 +0200 Subject: [PATCH] mac80211: update to version 6.16 Signed-off-by: Felix Fietkau --- package/kernel/mac80211/Makefile | 4 +- ...21-ath10k_init_devices_synchronously.patch | 2 +- .../930-ath10k_add_tpt_led_trigger.patch | 4 +- ...75-ath10k-use-tpt-trigger-by-default.patch | 2 +- ...-power-reduction-for-US-regulatory-d.patch | 10 +- ...h10k-Try-to-get-mac-address-from-dts.patch | 2 +- ...k-always-use-mac80211-loss-detection.patch | 2 +- ...i-ath11k-use-unique-QRTR-instance-ID.patch | 4 +- ...ort-setting-bdf-addr-and-caldb-addr-.patch | 18 +- ...k-control-thermal-support-via-symbol.patch | 4 +- ...upport-setting-FW-memory-mode-via-DT.patch | 4 +- ...ifi-ath11k-add-hw-params-for-QCN6122.patch | 4 +- ...k-update-hif_and-pci_ops-for-QCN6122.patch | 10 +- ...h11k-add-multipd-support-for-QCN6122.patch | 6 +- ...11k-Support-to-assign-m3-dump-memory.patch | 2 +- ...ear-the-keys-properly-when-DISABLE_K.patch | 2 +- ...-and-handle-country-code-for-WCN7850.patch | 924 -- ...-correct-values-of-center-freq1-and-.patch | 53 - ...-correct-values-of-center-freq1-and-.patch | 43 - ...k-limit-WMI_SCAN_CHAN_LIST_CMDID-arg.patch | 4 +- ...k-fix-5GHz-operation-on-wideband-QCN.patch | 6 +- ...k-push-HE-MU-MIMO-params-to-hardware.patch | 28 +- ...-push-EHT-MU-MIMO-params-to-hardware.patch | 8 +- ...HE-MCS-mapper-to-a-separate-function.patch | 4 +- ...and-tx-mcs-maps-for-supported-HE-mcs.patch | 6 +- ...X-MCS-rate-configurations-in-HE-mode.patch | 4 +- ...ort-for-setting-fixed-HE-rate-GI-LTF.patch | 82 +- ...7-wifi-ath12k-clean-up-80P80-support.patch | 22 +- ...2k-add-support-for-160-MHz-bandwidth.patch | 60 +- ...ed-NSS-bandwidth-support-for-160-MHz.patch | 8 +- ...2k-convert-tasklet-to-BH-workqueue-f.patch | 10 +- ...se-devm-for-irq-and-ioremap-resource.patch | 50 - .../patches/ath9k/530-ath9k_extra_leds.patch | 6 +- .../ath9k/548-ath9k_enable_gpio_chip.patch | 2 +- ...und-bug-with-some-inconsistent-BSSes.patch | 2 +- ...fer-a-ccode-from-OTP-over-nvram-file.patch | 2 +- ...ac-Increase-power-saving-delay-to-2s.patch | 2 +- ...upport-DS1-exit-firmware-re-download.patch | 26 +- ...eroperating-DPP-and-other-encryption.patch | 2 +- ...mfmac-disable-dump_survey-on-bcm2835.patch | 6 +- .../100-backports-drop-QRTR-and-MHI.patch | 2 +- .../patches/build/140-trace_backport.patch | 2 +- .../150-ath_iommu_paging_domain_revert.patch | 2 +- .../build/200-iwlwifi_thermal_backport.patch | 4 +- .../210-wireless_netns_local_backport.patch | 37 +- .../220-brcmfmac_usb_driver_backport.patch | 2 +- ...x-init_vqs-build-error-on-kernel-6.6.patch | 4 +- .../240-realtek-rtw88-BH-workqueue.patch | 2 +- ...-genlmsg_multicast_allns-upstream-ba.patch | 4 +- ...-convert-short-fops-to-debugfs-files.patch | 2 +- .../801-libertas-configure-sysfs-links.patch | 2 +- ...ringified-name-of-command-in-error-l.patch | 20 +- ...00-fix-remove-callback-type-mismatch.patch | 42 - ...support-for-loading-EEPROM-from-user.patch | 2 +- ...-use-static-local-variable-in-rtw882.patch | 71 - ...-typo-of-debug-message-in-rtw8723d_i.patch | 39 - ...d-struct-rtw_pwr_track_tbl-for-RTL88.patch | 46 - ...d-rf_base_addr-and-rf_sipi_addr-for-.patch | 32 - ...onstify-some-more-structs-and-arrays.patch | 213 - ...e-RTW_RATE_SECTION_MAX-to-RTW_RATE_S.patch | 227 - ...d-TX-power-stuff-for-3-4-spatial-str.patch | 369 - ...88-Fix-rtw_rx_phy_stat-for-RTL8814AU.patch | 54 - ...d-rtw_phy_config_swing_table-for-RTL.patch | 75 - ...d-rtw_debugfs_get_phy_info-for-RTL88.patch | 86 - ...d-rtw_debugfs_get_tx_pwr_tbl-for-RTL.patch | 65 - ...8-Add-some-definitions-for-RTL8814AU.patch | 200 - ...-rtw88-Add-rtw8814a_table.c-part-1-2.patch | 12573 ---------------- ...-rtw88-Add-rtw8814a_table.c-part-2-2.patch | 11450 -------------- ...8-v6.15-wifi-rtw88-Add-rtw8814a.-c-h.patch | 2343 --- ...089-v6.15-wifi-rtw88-Add-rtw8814ae.c.patch | 50 - ...090-v6.15-wifi-rtw88-Add-rtw8814au.c.patch | 73 - ..._nonstring-annotations-for-untermina.patch | 34 - ...e-the-new-RTL8814AE-RTL8814AU-driver.patch | 130 - ...Remove-redundant-flush_workqueue-cal.patch | 36 - ...emove-redundant-flush_workqueue-call.patch | 44 - ...nable-switching-the-RTL8814AU-to-USB.patch | 32 - ...-Enable-RX-aggregation-for-RTL8814AU.patch | 28 - ...MPDU-factor-to-hardware-for-RTL8814A.patch | 192 - ...-set-SUPPORTS_AMSDU_IN_AMPDU-for-RTL.patch | 169 - ...ix-the-module-names-printed-in-dmesg.patch | 230 - ...map-mgmt-frames-to-queue-TX_DESC_QSE.patch | 36 - ...call-rtw_sdio_indicate_tx_status-unc.patch | 37 - ...t-ignore-hardware-read-error-during-.patch | 32 - ...X-aggregation-settings-for-RTL8723DS.patch | 44 - ...8-Handle-RTL8723D-S-with-blank-efuse.patch | 198 - ...22bu-VID-PID-for-BUFFALO-WI-U2-866DM.patch | 27 - ...educe-control-message-timeout-to-500.patch | 52 - ...Upload-the-firmware-in-bigger-chunks.patch | 214 - ...he-random-error-beacon-valid-message.patch | 73 - ...he-para-buffer-size-to-avoid-reading.patch | 38 - .../110-mac80211_keep_keys_on_stop_ap.patch | 8 +- .../mac80211/patches/subsys/210-ap_scan.patch | 2 +- .../patches/subsys/220-allow-ibss-mixed.patch | 2 +- .../230-avoid-crashing-missing-band.patch | 2 +- ...domize-BA-session-dialog-token-alloc.patch | 2 +- ...crease-quantum-for-airtime-scheduler.patch | 6 +- ...race-period-for-DFS-available-after-.patch | 6 +- ...dd-AQL-support-for-broadcast-packets.patch | 20 +- ...ac80211-Do-not-schedule-stopped-TXQs.patch | 2 +- ...n-t-call-fq_flow_idx-for-management-.patch | 4 +- ...eck-802.11-encaps-offloading-in-ieee.patch | 2 +- ...80211-Update-skb-s-control-block-key.patch | 2 +- ...llow-scanning-while-on-radar-channel.patch | 26 +- ...out-part-of-ieee80211_calc_expected_.patch | 2 +- ...e-expected-throughput-if-not-provide.patch | 6 +- ...-not-offer-a-mesh-path-if-forwarding.patch | 56 - 106 files changed, 266 insertions(+), 31061 deletions(-) delete mode 100644 package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch delete mode 100644 package/kernel/mac80211/patches/ath12k/003-1-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch delete mode 100644 package/kernel/mac80211/patches/ath12k/003-2-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch delete mode 100644 package/kernel/mac80211/patches/ath9k/509-ath9k-use-devm-for-irq-and-ioremap-resource.patch delete mode 100644 package/kernel/mac80211/patches/rt2x00/110-wifi-rt2x00-fix-remove-callback-type-mismatch.patch delete mode 100644 package/kernel/mac80211/patches/rtl/065-v6.15-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch delete mode 100644 package/kernel/mac80211/patches/rtl/066-v6.15-wifi-rtw88-Fix-a-typo-of-debug-message-in-rtw8723d_i.patch delete mode 100644 package/kernel/mac80211/patches/rtl/069-v6.15-wifi-rtw88-Extend-struct-rtw_pwr_track_tbl-for-RTL88.patch delete mode 100644 package/kernel/mac80211/patches/rtl/070-v6.15-wifi-rtw88-Extend-rf_base_addr-and-rf_sipi_addr-for-.patch delete mode 100644 package/kernel/mac80211/patches/rtl/072-v6.15-wifi-rtw88-Constify-some-more-structs-and-arrays.patch delete mode 100644 package/kernel/mac80211/patches/rtl/073-v6.15-wifi-rtw88-Rename-RTW_RATE_SECTION_MAX-to-RTW_RATE_S.patch delete mode 100644 package/kernel/mac80211/patches/rtl/074-v6.15-wifi-rtw88-Extend-TX-power-stuff-for-3-4-spatial-str.patch delete mode 100644 package/kernel/mac80211/patches/rtl/081-v6.15-wifi-rtw88-Fix-rtw_rx_phy_stat-for-RTL8814AU.patch delete mode 100644 package/kernel/mac80211/patches/rtl/082-v6.15-wifi-rtw88-Extend-rtw_phy_config_swing_table-for-RTL.patch delete mode 100644 package/kernel/mac80211/patches/rtl/083-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_phy_info-for-RTL88.patch delete mode 100644 package/kernel/mac80211/patches/rtl/084-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_tx_pwr_tbl-for-RTL.patch delete mode 100644 package/kernel/mac80211/patches/rtl/085-v6.15-wifi-rtw88-Add-some-definitions-for-RTL8814AU.patch delete mode 100644 package/kernel/mac80211/patches/rtl/086-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-1-2.patch delete mode 100644 package/kernel/mac80211/patches/rtl/087-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-2-2.patch delete mode 100644 package/kernel/mac80211/patches/rtl/088-v6.15-wifi-rtw88-Add-rtw8814a.-c-h.patch delete mode 100644 package/kernel/mac80211/patches/rtl/089-v6.15-wifi-rtw88-Add-rtw8814ae.c.patch delete mode 100644 package/kernel/mac80211/patches/rtl/090-v6.15-wifi-rtw88-Add-rtw8814au.c.patch delete mode 100644 package/kernel/mac80211/patches/rtl/091-v6.15-wifi-rtw88-Add-__nonstring-annotations-for-untermina.patch delete mode 100644 package/kernel/mac80211/patches/rtl/092-v6.15-wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch delete mode 100644 package/kernel/mac80211/patches/rtl/093-v6.16-wifi-rtw88-sdio-Remove-redundant-flush_workqueue-cal.patch delete mode 100644 package/kernel/mac80211/patches/rtl/094-v6.16-wifi-rtw88-usb-Remove-redundant-flush_workqueue-call.patch delete mode 100644 package/kernel/mac80211/patches/rtl/095-v6.16-wifi-rtw88-usb-Enable-switching-the-RTL8814AU-to-USB.patch delete mode 100644 package/kernel/mac80211/patches/rtl/096-v6.16-wifi-rtw88-usb-Enable-RX-aggregation-for-RTL8814AU.patch delete mode 100644 package/kernel/mac80211/patches/rtl/097-v6.16-wifi-rtw88-Set-AMPDU-factor-to-hardware-for-RTL8814A.patch delete mode 100644 package/kernel/mac80211/patches/rtl/098-v6.16-wifi-rtw88-Don-t-set-SUPPORTS_AMSDU_IN_AMPDU-for-RTL.patch delete mode 100644 package/kernel/mac80211/patches/rtl/099-v6.16-wifi-rtw88-Fix-the-module-names-printed-in-dmesg.patch delete mode 100644 package/kernel/mac80211/patches/rtl/100-v6.16-wifi-rtw88-sdio-map-mgmt-frames-to-queue-TX_DESC_QSE.patch delete mode 100644 package/kernel/mac80211/patches/rtl/101-v6.16-wifi-rtw88-sdio-call-rtw_sdio_indicate_tx_status-unc.patch delete mode 100644 package/kernel/mac80211/patches/rtl/102-v6.16-wifi-rtw88-do-not-ignore-hardware-read-error-during-.patch delete mode 100644 package/kernel/mac80211/patches/rtl/103-v6.16-wifi-rtw88-Fix-RX-aggregation-settings-for-RTL8723DS.patch delete mode 100644 package/kernel/mac80211/patches/rtl/104-v6.16-wifi-rtw88-Handle-RTL8723D-S-with-blank-efuse.patch delete mode 100644 package/kernel/mac80211/patches/rtl/105-v6.16-wifi-rtw88-rtw8822bu-VID-PID-for-BUFFALO-WI-U2-866DM.patch delete mode 100644 package/kernel/mac80211/patches/rtl/106-v6.16-wifi-rtw88-usb-Reduce-control-message-timeout-to-500.patch delete mode 100644 package/kernel/mac80211/patches/rtl/107-v6.16-wifi-rtw88-usb-Upload-the-firmware-in-bigger-chunks.patch delete mode 100644 package/kernel/mac80211/patches/rtl/108-v6.16-wifi-rtw88-Fix-the-random-error-beacon-valid-message.patch delete mode 100644 package/kernel/mac80211/patches/rtl/109-v6.16-wifi-rtw88-fix-the-para-buffer-size-to-avoid-reading.patch delete mode 100644 package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index 2dcd70f7e1..23f639ee00 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=6.14.11 +PKG_VERSION:=6.16 PKG_RELEASE:=1 PKG_LICENSE:=GPL-2.0-only PKG_LICENSE_FILES:=COPYING PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/ -PKG_HASH:=1f6620485f0b33046e87aa2c6ac04ae529e9b5e83e318652d89939b192c6e348 +PKG_HASH:=67f11320509dd18e5e2c58cb81e9f6c7d19b09f5229baa5880ed4dab71c19052 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION) diff --git a/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch index a7e11679a3..1fb9d50376 100644 --- a/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch +++ b/package/kernel/mac80211/patches/ath10k/921-ath10k_init_devices_synchronously.patch @@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c -@@ -3539,6 +3539,16 @@ int ath10k_core_register(struct ath10k * +@@ -3546,6 +3546,16 @@ int ath10k_core_register(struct ath10k * queue_work(ar->workqueue, &ar->register_work); diff --git a/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch b/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch index ec055b20bf..89d0c5ca37 100644 --- a/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch +++ b/package/kernel/mac80211/patches/ath10k/930-ath10k_add_tpt_led_trigger.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -9934,6 +9934,21 @@ static int ath10k_mac_init_rd(struct ath +@@ -9951,6 +9951,21 @@ static int ath10k_mac_init_rd(struct ath return 0; } @@ -22,7 +22,7 @@ int ath10k_mac_register(struct ath10k *ar) { static const u32 cipher_suites[] = { -@@ -10296,6 +10311,12 @@ int ath10k_mac_register(struct ath10k *a +@@ -10313,6 +10328,12 @@ int ath10k_mac_register(struct ath10k *a ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER; diff --git a/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch b/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch index f6247f092c..938be272ff 100644 --- a/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch +++ b/package/kernel/mac80211/patches/ath10k/975-ath10k-use-tpt-trigger-by-default.patch @@ -40,7 +40,7 @@ Signed-off-by: Mathias Kresin if (ret) --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -10312,7 +10312,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -10329,7 +10329,7 @@ int ath10k_mac_register(struct ath10k *a ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER; #ifdef CPTCFG_MAC80211_LEDS diff --git a/package/kernel/mac80211/patches/ath10k/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch b/package/kernel/mac80211/patches/ath10k/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch index f1770cfbe0..a9765022c4 100644 --- a/package/kernel/mac80211/patches/ath10k/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch +++ b/package/kernel/mac80211/patches/ath10k/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch @@ -28,8 +28,8 @@ Forwarded: no --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -1022,6 +1022,40 @@ static inline int ath10k_vdev_setup_sync - return ar->last_wmi_vdev_start_status; +@@ -1043,6 +1043,40 @@ static inline int ath10k_vdev_delete_syn + return 0; } +static u32 ath10k_get_max_antenna_gain(struct ath10k *ar, @@ -69,7 +69,7 @@ Forwarded: no static int ath10k_monitor_vdev_start(struct ath10k *ar, int vdev_id) { struct cfg80211_chan_def *chandef = NULL; -@@ -1054,7 +1088,8 @@ static int ath10k_monitor_vdev_start(str +@@ -1075,7 +1109,8 @@ static int ath10k_monitor_vdev_start(str arg.channel.min_power = 0; arg.channel.max_power = channel->max_power * 2; arg.channel.max_reg_power = channel->max_reg_power * 2; @@ -79,7 +79,7 @@ Forwarded: no reinit_completion(&ar->vdev_setup_done); reinit_completion(&ar->vdev_delete_done); -@@ -1500,7 +1535,8 @@ static int ath10k_vdev_start_restart(str +@@ -1521,7 +1556,8 @@ static int ath10k_vdev_start_restart(str arg.channel.min_power = 0; arg.channel.max_power = chandef->chan->max_power * 2; arg.channel.max_reg_power = chandef->chan->max_reg_power * 2; @@ -89,7 +89,7 @@ Forwarded: no if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { arg.ssid = arvif->u.ap.ssid; -@@ -3431,7 +3467,8 @@ static int ath10k_update_channel_list(st +@@ -3452,7 +3488,8 @@ static int ath10k_update_channel_list(st ch->min_power = 0; ch->max_power = channel->max_power * 2; ch->max_reg_power = channel->max_reg_power * 2; diff --git a/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch b/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch index beec6a95ea..6cb1038e2b 100644 --- a/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch +++ b/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch @@ -26,7 +26,7 @@ Signed-off-by: Ansuel Smith #include #include #include -@@ -3411,6 +3412,8 @@ static int ath10k_core_probe_fw(struct a +@@ -3418,6 +3419,8 @@ static int ath10k_core_probe_fw(struct a device_get_mac_address(ar->dev, ar->mac_addr); diff --git a/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch b/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch index cfcf5a091a..661fc86e16 100644 --- a/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch +++ b/package/kernel/mac80211/patches/ath10k/988-ath10k-always-use-mac80211-loss-detection.patch @@ -18,7 +18,7 @@ Signed-off-by: David Bauer --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c -@@ -10104,7 +10104,6 @@ int ath10k_mac_register(struct ath10k *a +@@ -10121,7 +10121,6 @@ int ath10k_mac_register(struct ath10k *a ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA); ieee80211_hw_set(ar->hw, QUEUE_CONTROL); ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG); diff --git a/package/kernel/mac80211/patches/ath11k/100-wifi-ath11k-use-unique-QRTR-instance-ID.patch b/package/kernel/mac80211/patches/ath11k/100-wifi-ath11k-use-unique-QRTR-instance-ID.patch index 272876288b..c2f3f737e6 100644 --- a/package/kernel/mac80211/patches/ath11k/100-wifi-ath11k-use-unique-QRTR-instance-ID.patch +++ b/package/kernel/mac80211/patches/ath11k/100-wifi-ath11k-use-unique-QRTR-instance-ID.patch @@ -136,11 +136,11 @@ Signed-off-by: Robert Marko +#define QRTR_INSTANCE_MASK GENMASK(7, 0) + int ath11k_mhi_start(struct ath11k_pci *ar_pci); - void ath11k_mhi_stop(struct ath11k_pci *ar_pci); + void ath11k_mhi_stop(struct ath11k_pci *ar_pci, bool is_suspend); int ath11k_mhi_register(struct ath11k_pci *ar_pci); --- a/drivers/net/wireless/ath/ath11k/pci.c +++ b/drivers/net/wireless/ath/ath11k/pci.c -@@ -374,13 +374,20 @@ static void ath11k_pci_sw_reset(struct a +@@ -376,13 +376,20 @@ static void ath11k_pci_sw_reset(struct a static void ath11k_pci_init_qmi_ce_config(struct ath11k_base *ab) { struct ath11k_qmi_ce_cfg *cfg = &ab->qmi.ce_cfg; diff --git a/package/kernel/mac80211/patches/ath11k/201-wifi-ath11k-Support-setting-bdf-addr-and-caldb-addr-.patch b/package/kernel/mac80211/patches/ath11k/201-wifi-ath11k-Support-setting-bdf-addr-and-caldb-addr-.patch index 40d3b8065c..a1ba8ec7ba 100644 --- a/package/kernel/mac80211/patches/ath11k/201-wifi-ath11k-Support-setting-bdf-addr-and-caldb-addr-.patch +++ b/package/kernel/mac80211/patches/ath11k/201-wifi-ath11k-Support-setting-bdf-addr-and-caldb-addr-.patch @@ -10,7 +10,7 @@ Signed-off-by: Ziyang Huang --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c -@@ -2030,6 +2030,7 @@ static int ath11k_qmi_assign_target_mem_ +@@ -2041,6 +2041,7 @@ static int ath11k_qmi_assign_target_mem_ struct device_node *hremote_node = NULL; struct resource res; u32 host_ddr_sz; @@ -18,30 +18,30 @@ Signed-off-by: Ziyang Huang int i, idx, ret; for (i = 0, idx = 0; i < ab->qmi.mem_seg_count; i++) { -@@ -2069,7 +2070,9 @@ static int ath11k_qmi_assign_target_mem_ +@@ -2080,7 +2081,9 @@ static int ath11k_qmi_assign_target_mem_ idx++; break; case BDF_MEM_REGION_TYPE: - ab->qmi.target_mem[idx].paddr = ab->hw_params.bdf_addr; -+ if(of_property_read_u32(dev->of_node, "qcom,bdf-addr", &addr)) ++ if (of_property_read_u32(dev->of_node, "qcom,bdf-addr", &addr)) + addr = ab->hw_params.bdf_addr; + ab->qmi.target_mem[idx].paddr = addr; - ab->qmi.target_mem[idx].vaddr = NULL; + ab->qmi.target_mem[idx].iaddr = NULL; ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; -@@ -2091,8 +2094,9 @@ static int ath11k_qmi_assign_target_mem_ +@@ -2102,8 +2105,9 @@ static int ath11k_qmi_assign_target_mem_ if (!ab->qmi.target_mem[idx].iaddr) return -EIO; } else { - ab->qmi.target_mem[idx].paddr = - ATH11K_QMI_CALDB_ADDRESS; -+ if(of_property_read_u32(dev->of_node, "qcom,caldb-addr", &addr)) ++ if (of_property_read_u32(dev->of_node, "qcom,caldb-addr", &addr)) + addr = ATH11K_QMI_CALDB_ADDRESS; + ab->qmi.target_mem[idx].paddr = addr; + ab->qmi.target_mem[idx].iaddr = NULL; } } else { - ab->qmi.target_mem[idx].paddr = 0; -@@ -2297,6 +2301,7 @@ static int ath11k_qmi_load_file_target_m +@@ -2309,6 +2313,7 @@ static int ath11k_qmi_load_file_target_m struct qmi_wlanfw_bdf_download_resp_msg_v01 resp; struct qmi_txn txn; const u8 *temp = data; @@ -49,7 +49,7 @@ Signed-off-by: Ziyang Huang void __iomem *bdf_addr = NULL; int ret = 0; u32 remaining = len; -@@ -2308,7 +2313,9 @@ static int ath11k_qmi_load_file_target_m +@@ -2320,7 +2325,9 @@ static int ath11k_qmi_load_file_target_m memset(&resp, 0, sizeof(resp)); if (ab->hw_params.fixed_bdf_addr) { diff --git a/package/kernel/mac80211/patches/ath11k/900-ath11k-control-thermal-support-via-symbol.patch b/package/kernel/mac80211/patches/ath11k/900-ath11k-control-thermal-support-via-symbol.patch index fbc26cd96b..264e9eb4cb 100644 --- a/package/kernel/mac80211/patches/ath11k/900-ath11k-control-thermal-support-via-symbol.patch +++ b/package/kernel/mac80211/patches/ath11k/900-ath11k-control-thermal-support-via-symbol.patch @@ -42,7 +42,7 @@ Signed-off-by: Robert Marko +ath11k-$(CPTCFG_ATH11K_THERMAL) += thermal.o ath11k-$(CPTCFG_ATH11K_SPECTRAL) += spectral.o ath11k-$(CONFIG_PM) += wow.o - + ath11k-$(CONFIG_DEV_COREDUMP) += coredump.o --- a/drivers/net/wireless/ath/ath11k/thermal.h +++ b/drivers/net/wireless/ath/ath11k/thermal.h @@ -26,7 +26,7 @@ struct ath11k_thermal { @@ -62,5 +62,5 @@ Signed-off-by: Robert Marko ATH11K_SPECTRAL= +ATH11K_THERMAL= ATH12K= + ATH12K_AHB= ATH12K_DEBUG= - ATH12K_DEBUGFS= diff --git a/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch b/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch index 4b1bd69863..fa9c005254 100644 --- a/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch +++ b/package/kernel/mac80211/patches/ath11k/903-ath11k-support-setting-FW-memory-mode-via-DT.patch @@ -31,7 +31,7 @@ Signed-off-by: Robert Marko { .hw_rev = ATH11K_HW_IPQ8074, .name = "ipq8074 hw2.0", -@@ -2280,7 +2280,8 @@ static void ath11k_core_reset(struct wor +@@ -2481,7 +2481,8 @@ static void ath11k_core_reset(struct wor static int ath11k_init_hw_params(struct ath11k_base *ab) { const struct ath11k_hw_params *hw_params = NULL; @@ -41,7 +41,7 @@ Signed-off-by: Robert Marko for (i = 0; i < ARRAY_SIZE(ath11k_hw_params); i++) { hw_params = &ath11k_hw_params[i]; -@@ -2296,7 +2297,31 @@ static int ath11k_init_hw_params(struct +@@ -2497,7 +2498,31 @@ static int ath11k_init_hw_params(struct ab->hw_params = *hw_params; diff --git a/package/kernel/mac80211/patches/ath11k/920-wifi-ath11k-add-hw-params-for-QCN6122.patch b/package/kernel/mac80211/patches/ath11k/920-wifi-ath11k-add-hw-params-for-QCN6122.patch index a428684cba..cb173d2c4f 100644 --- a/package/kernel/mac80211/patches/ath11k/920-wifi-ath11k-add-hw-params-for-QCN6122.patch +++ b/package/kernel/mac80211/patches/ath11k/920-wifi-ath11k-add-hw-params-for-QCN6122.patch @@ -92,10 +92,10 @@ Signed-off-by: George Moussalem + }, }; - static inline struct ath11k_pdev *ath11k_core_get_single_pdev(struct ath11k_base *ab) + static const struct dmi_system_id ath11k_pm_quirk_table[] = { --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h -@@ -149,6 +149,7 @@ enum ath11k_hw_rev { +@@ -151,6 +151,7 @@ enum ath11k_hw_rev { ATH11K_HW_IPQ5018_HW10, ATH11K_HW_QCA2066_HW21, ATH11K_HW_QCA6698AQ_HW21, diff --git a/package/kernel/mac80211/patches/ath11k/923-wifi-ath11k-update-hif_and-pci_ops-for-QCN6122.patch b/package/kernel/mac80211/patches/ath11k/923-wifi-ath11k-update-hif_and-pci_ops-for-QCN6122.patch index 07eaf87279..fd4922b8cb 100644 --- a/package/kernel/mac80211/patches/ath11k/923-wifi-ath11k-update-hif_and-pci_ops-for-QCN6122.patch +++ b/package/kernel/mac80211/patches/ath11k/923-wifi-ath11k-update-hif_and-pci_ops-for-QCN6122.patch @@ -68,16 +68,16 @@ Signed-off-by: George Moussalem return -EOPNOTSUPP; --- a/drivers/net/wireless/ath/ath11k/hif.h +++ b/drivers/net/wireless/ath/ath11k/hif.h -@@ -31,6 +31,7 @@ struct ath11k_hif_ops { - void (*ce_irq_enable)(struct ath11k_base *ab); +@@ -32,6 +32,7 @@ struct ath11k_hif_ops { void (*ce_irq_disable)(struct ath11k_base *ab); void (*get_ce_msi_idx)(struct ath11k_base *ab, u32 ce_id, u32 *msi_idx); + void (*coredump_download)(struct ath11k_base *ab); + void (*config_static_window)(struct ath11k_base *ab); }; static inline void ath11k_hif_ce_irq_enable(struct ath11k_base *ab) -@@ -146,4 +147,12 @@ static inline void ath11k_get_ce_msi_idx - *msi_data_idx = ce_id; +@@ -159,4 +160,12 @@ static inline void ath11k_hif_coredump_d + ab->hif.ops->coredump_download(ab); } +static inline void ath11k_hif_config_static_window(struct ath11k_base *ab) @@ -91,7 +91,7 @@ Signed-off-by: George Moussalem #endif /* _HIF_H_ */ --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c -@@ -2189,6 +2189,8 @@ static int ath11k_qmi_request_device_inf +@@ -2201,6 +2201,8 @@ static int ath11k_qmi_request_device_inf if (!ab->hw_params.ce_remap) ab->mem_ce = ab->mem; diff --git a/package/kernel/mac80211/patches/ath11k/924-wifi-ath11k-add-multipd-support-for-QCN6122.patch b/package/kernel/mac80211/patches/ath11k/924-wifi-ath11k-add-multipd-support-for-QCN6122.patch index e73b8da379..e67e4a7e8b 100644 --- a/package/kernel/mac80211/patches/ath11k/924-wifi-ath11k-add-multipd-support-for-QCN6122.patch +++ b/package/kernel/mac80211/patches/ath11k/924-wifi-ath11k-add-multipd-support-for-QCN6122.patch @@ -79,7 +79,7 @@ Signed-off-by: George Moussalem --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h -@@ -45,6 +45,9 @@ +@@ -47,6 +47,9 @@ #define ATH11K_INVALID_HW_MAC_ID 0xFF #define ATH11K_CONNECTION_LOSS_HZ (3 * HZ) @@ -89,7 +89,7 @@ Signed-off-by: George Moussalem /* SMBIOS type containing Board Data File Name Extension */ #define ATH11K_SMBIOS_BDF_EXT_TYPE 0xF8 -@@ -952,6 +955,7 @@ struct ath11k_base { +@@ -966,6 +969,7 @@ struct ath11k_base { struct list_head peers; wait_queue_head_t peer_mapping_wq; u8 mac_addr[ETH_ALEN]; @@ -99,7 +99,7 @@ Signed-off-by: George Moussalem struct ath11k_targ_cap target_caps; --- a/drivers/net/wireless/ath/ath11k/pci.c +++ b/drivers/net/wireless/ath/ath11k/pci.c -@@ -389,6 +389,8 @@ static void ath11k_pci_init_qmi_ce_confi +@@ -391,6 +391,8 @@ static void ath11k_pci_init_qmi_ce_confi } else ab->qmi.service_ins_id = ab->hw_params.qmi_service_ins_id; diff --git a/package/kernel/mac80211/patches/ath11k/931-wifi-ath11k-Support-to-assign-m3-dump-memory.patch b/package/kernel/mac80211/patches/ath11k/931-wifi-ath11k-Support-to-assign-m3-dump-memory.patch index 3339cfc43c..6888b9a364 100644 --- a/package/kernel/mac80211/patches/ath11k/931-wifi-ath11k-Support-to-assign-m3-dump-memory.patch +++ b/package/kernel/mac80211/patches/ath11k/931-wifi-ath11k-Support-to-assign-m3-dump-memory.patch @@ -10,7 +10,7 @@ Signed-off-by: Ziyang Huang --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c -@@ -2106,6 +2106,18 @@ static int ath11k_qmi_assign_target_mem_ +@@ -2118,6 +2118,18 @@ static int ath11k_qmi_assign_target_mem_ ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; idx++; break; diff --git a/package/kernel/mac80211/patches/ath11k/940-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch b/package/kernel/mac80211/patches/ath11k/940-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch index 352e68fcec..1f0b63c81b 100644 --- a/package/kernel/mac80211/patches/ath11k/940-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch +++ b/package/kernel/mac80211/patches/ath11k/940-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch @@ -23,7 +23,7 @@ Signed-off-by: Rameshkumar Sundaram --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c -@@ -4220,7 +4220,9 @@ static int ath11k_install_key(struct ath +@@ -4232,7 +4232,9 @@ static int ath11k_install_key(struct ath return 0; if (cmd == DISABLE_KEY) { diff --git a/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch b/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch deleted file mode 100644 index e93a591b0e..0000000000 --- a/package/kernel/mac80211/patches/ath12k/001-wifi-ath12k-add-11d-scan-offload-support-and-handle-country-code-for-WCN7850.patch +++ /dev/null @@ -1,924 +0,0 @@ -From patchwork Thu Sep 5 02:35:08 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Kang Yang -X-Patchwork-Id: 13791624 -X-Patchwork-Delegate: kvalo@adurom.com -Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com - [205.220.180.131]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by smtp.subspace.kernel.org (Postfix) with ESMTPS id D313D33CFC - for ; Thu, 5 Sep 2024 02:36:17 +0000 (UTC) -Authentication-Results: smtp.subspace.kernel.org; - arc=none smtp.client-ip=205.220.180.131 -ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; - t=1725503779; cv=none; - b=blv4mH95IN2AR7Rt90gw/V7DnZRtr3upgAP50X6ew3jh0CusPG6/OTO9CSJVthJnqHU3Y3GT88jaeMzb9+f2xzqgl7+E35TmwN3uf6dFmbp7CD8LL0W6xu76ZZgFGxzRspv9YoVy/fydZY6I4JRc2faWqI540+n9bHEXdSJTZMM= -ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; - s=arc-20240116; t=1725503779; c=relaxed/simple; - bh=vjzfDc6UXtw2Li6Q3bAgcW0K1rcTpi3dAxkQgbT5ogI=; - h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: - MIME-Version:Content-Type; - b=VMgF0PfIOoXmfB6EARb/O+dooXutjAm/cnemJ0RC7uc8TSIAusH1ffc6jF1XndEp+nPTWnuMQ5/d1cE/bPeIvSTxrtWaUepnKNjQDrNKm4NrqmjR446CT9t0VHG16RZ1cmCmU74qXnfgus4XfTqD093lc1N5Q/YRh/kwmcCzxhY= -ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; - dmarc=pass (p=none dis=none) header.from=quicinc.com; - spf=pass smtp.mailfrom=quicinc.com; - dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com - header.b=E5hktrdm; arc=none smtp.client-ip=205.220.180.131 -Authentication-Results: smtp.subspace.kernel.org; - dmarc=pass (p=none dis=none) header.from=quicinc.com -Authentication-Results: smtp.subspace.kernel.org; - spf=pass smtp.mailfrom=quicinc.com -Authentication-Results: smtp.subspace.kernel.org; - dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com - header.b="E5hktrdm" -Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) - by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id - 484MRZwS008193; - Thu, 5 Sep 2024 02:36:12 GMT -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= - cc:content-transfer-encoding:content-type:date:from:in-reply-to - :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= - No6X3gHpioHamjfMDccV8LJEZBGk/uDqbZ/fuGUTvJM=; b=E5hktrdmmOb3KcP6 - Qi3M5Y06Yd8RxNJTps8WMEoXZ7xzROVuhmRmlG/mw21NjBMTTMgtjcaen/n8Anj3 - Ash1VFK6s7PrLcwoUT/uui6hzleGE+X9Wh8DJXYnZKKWmeQ+8E0yEzNR0kt9FG0n - S+asFc8VYEJHid6QDNAfM9e4JqJgU3NGXYJBTBM2lpdbqeWU7LEYnVTGCqvOPaH2 - K+QDwvNiNeXlqbaxnqCYimUrSDnTbSUoiVxSpTe9/muWWAB+6YuUbXRfTceqgcd1 - xFIOE1KrtAowMOk5mO3tn6Tjl7nJzewVUm9hncBRfynP8k2jt1xosMezL42dmb56 - a9VWLQ== -Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com - [129.46.96.20]) - by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 41bt674mq1-1 - (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); - Thu, 05 Sep 2024 02:36:11 +0000 (GMT) -Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com - [10.47.209.197]) - by NALASPPMTA03.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id - 4852aAdV010181 - (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); - Thu, 5 Sep 2024 02:36:10 GMT -Received: from kangyang.ap.qualcomm.com (10.80.80.8) by - nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server - (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id - 15.2.1544.9; Wed, 4 Sep 2024 19:36:09 -0700 -From: Kang Yang -To: -CC: , -Subject: [PATCH v3 1/4] wifi: ath12k: add configure country code for WCN7850 -Date: Thu, 5 Sep 2024 10:35:08 +0800 -Message-ID: <20240905023511.362-2-quic_kangyang@quicinc.com> -X-Mailer: git-send-email 2.34.1.windows.1 -In-Reply-To: <20240905023511.362-1-quic_kangyang@quicinc.com> -References: <20240905023511.362-1-quic_kangyang@quicinc.com> -Precedence: bulk -X-Mailing-List: linux-wireless@vger.kernel.org -List-Id: -List-Subscribe: -List-Unsubscribe: -MIME-Version: 1.0 -X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To - nalasex01b.na.qualcomm.com (10.47.209.197) -X-QCInternal: smtphost -X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 - signatures=585085 -X-Proofpoint-ORIG-GUID: FzfHe7cZy6IUVu8IKORVKLxkYG9f8WUl -X-Proofpoint-GUID: FzfHe7cZy6IUVu8IKORVKLxkYG9f8WUl -X-Proofpoint-Virus-Version: vendor=baseguard - engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 - definitions=2024-09-05_01,2024-09-04_01,2024-09-02_01 -X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 - malwarescore=0 adultscore=0 - bulkscore=0 mlxscore=0 impostorscore=0 suspectscore=0 phishscore=0 - mlxlogscore=999 lowpriorityscore=0 spamscore=0 clxscore=1015 - priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 - engine=8.19.0-2407110000 definitions=main-2409050018 - -From: Wen Gong - -Add handler to send WMI_SET_CURRENT_COUNTRY_CMDID to firmware, which -is used for WCN7850 to update country code. - -Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 - -Signed-off-by: Wen Gong -Signed-off-by: Kang Yang -Acked-by: Jeff Johnson ---- - drivers/net/wireless/ath/ath12k/wmi.c | 36 +++++++++++++++++++++++++++ - drivers/net/wireless/ath/ath12k/wmi.h | 13 ++++++++++ - 2 files changed, 49 insertions(+) - ---- a/drivers/net/wireless/ath/ath12k/wmi.c -+++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -171,6 +171,8 @@ static const struct ath12k_wmi_tlv_polic - .min_len = sizeof(struct ath12k_wmi_p2p_noa_info) }, - [WMI_TAG_P2P_NOA_EVENT] = { - .min_len = sizeof(struct wmi_p2p_noa_event) }, -+ [WMI_TAG_11D_NEW_COUNTRY_EVENT] = { -+ .min_len = sizeof(struct wmi_11d_new_cc_event) }, - }; - - static __le32 ath12k_wmi_tlv_hdr(u32 cmd, u32 len) -@@ -2531,7 +2533,10 @@ int ath12k_wmi_send_scan_start_cmd(struc - cmd->scan_id = cpu_to_le32(arg->scan_id); - cmd->scan_req_id = cpu_to_le32(arg->scan_req_id); - cmd->vdev_id = cpu_to_le32(arg->vdev_id); -- cmd->scan_priority = cpu_to_le32(arg->scan_priority); -+ if (ar->state_11d == ATH12K_11D_PREPARING) -+ arg->scan_priority = WMI_SCAN_PRIORITY_MEDIUM; -+ else -+ arg->scan_priority = WMI_SCAN_PRIORITY_LOW; - cmd->notify_scan_events = cpu_to_le32(arg->notify_scan_events); - - ath12k_wmi_copy_scan_event_cntrl_flags(cmd, arg); -@@ -3253,6 +3258,110 @@ out: - return ret; - } - -+int ath12k_wmi_send_set_current_country_cmd(struct ath12k *ar, -+ struct wmi_set_current_country_arg *arg) -+{ -+ struct ath12k_wmi_pdev *wmi = ar->wmi; -+ struct wmi_set_current_country_cmd *cmd; -+ struct sk_buff *skb; -+ int ret; -+ -+ skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, sizeof(*cmd)); -+ if (!skb) -+ return -ENOMEM; -+ -+ cmd = (struct wmi_set_current_country_cmd *)skb->data; -+ cmd->tlv_header = -+ ath12k_wmi_tlv_cmd_hdr(WMI_TAG_SET_CURRENT_COUNTRY_CMD, -+ sizeof(*cmd)); -+ -+ cmd->pdev_id = cpu_to_le32(ar->pdev->pdev_id); -+ memcpy(&cmd->new_alpha2, &arg->alpha2, sizeof(arg->alpha2)); -+ ret = ath12k_wmi_cmd_send(wmi, skb, WMI_SET_CURRENT_COUNTRY_CMDID); -+ -+ ath12k_dbg(ar->ab, ATH12K_DBG_WMI, -+ "set current country pdev id %d alpha2 %c%c\n", -+ ar->pdev->pdev_id, -+ arg->alpha2[0], -+ arg->alpha2[1]); -+ -+ if (ret) { -+ ath12k_warn(ar->ab, -+ "failed to send WMI_SET_CURRENT_COUNTRY_CMDID: %d\n", ret); -+ dev_kfree_skb(skb); -+ } -+ -+ return ret; -+} -+ -+int ath12k_wmi_send_11d_scan_start_cmd(struct ath12k *ar, -+ struct wmi_11d_scan_start_arg *arg) -+{ -+ struct ath12k_wmi_pdev *wmi = ar->wmi; -+ struct wmi_11d_scan_start_cmd *cmd; -+ struct sk_buff *skb; -+ int ret; -+ -+ skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, sizeof(*cmd)); -+ if (!skb) -+ return -ENOMEM; -+ -+ cmd = (struct wmi_11d_scan_start_cmd *)skb->data; -+ cmd->tlv_header = -+ ath12k_wmi_tlv_cmd_hdr(WMI_TAG_11D_SCAN_START_CMD, -+ sizeof(*cmd)); -+ -+ cmd->vdev_id = cpu_to_le32(arg->vdev_id); -+ cmd->scan_period_msec = cpu_to_le32(arg->scan_period_msec); -+ cmd->start_interval_msec = cpu_to_le32(arg->start_interval_msec); -+ ret = ath12k_wmi_cmd_send(wmi, skb, WMI_11D_SCAN_START_CMDID); -+ -+ ath12k_dbg(ar->ab, ATH12K_DBG_WMI, -+ "send 11d scan start vdev id %d period %d ms internal %d ms\n", -+ arg->vdev_id, arg->scan_period_msec, -+ arg->start_interval_msec); -+ -+ if (ret) { -+ ath12k_warn(ar->ab, -+ "failed to send WMI_11D_SCAN_START_CMDID: %d\n", ret); -+ dev_kfree_skb(skb); -+ } -+ -+ return ret; -+} -+ -+int ath12k_wmi_send_11d_scan_stop_cmd(struct ath12k *ar, u32 vdev_id) -+{ -+ struct ath12k_wmi_pdev *wmi = ar->wmi; -+ struct wmi_11d_scan_stop_cmd *cmd; -+ struct sk_buff *skb; -+ int ret; -+ -+ skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, sizeof(*cmd)); -+ if (!skb) -+ return -ENOMEM; -+ -+ cmd = (struct wmi_11d_scan_stop_cmd *)skb->data; -+ cmd->tlv_header = -+ ath12k_wmi_tlv_cmd_hdr(WMI_TAG_11D_SCAN_STOP_CMD, -+ sizeof(*cmd)); -+ -+ cmd->vdev_id = cpu_to_le32(vdev_id); -+ ret = ath12k_wmi_cmd_send(wmi, skb, WMI_11D_SCAN_STOP_CMDID); -+ -+ ath12k_dbg(ar->ab, ATH12K_DBG_WMI, -+ "send 11d scan stop vdev id %d\n", -+ cmd->vdev_id); -+ -+ if (ret) { -+ ath12k_warn(ar->ab, -+ "failed to send WMI_11D_SCAN_STOP_CMDID: %d\n", ret); -+ dev_kfree_skb(skb); -+ } -+ -+ return ret; -+} -+ - int - ath12k_wmi_send_twt_enable_cmd(struct ath12k *ar, u32 pdev_id) - { -@@ -5873,6 +5982,50 @@ static void ath12k_wmi_op_ep_tx_credits( - wake_up(&ab->wmi_ab.tx_credits_wq); - } - -+static int ath12k_reg_11d_new_cc_event(struct ath12k_base *ab, struct sk_buff *skb) -+{ -+ const struct wmi_11d_new_cc_event *ev; -+ struct ath12k *ar; -+ struct ath12k_pdev *pdev; -+ const void **tb; -+ int ret, i; -+ -+ tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); -+ if (IS_ERR(tb)) { -+ ret = PTR_ERR(tb); -+ ath12k_warn(ab, "failed to parse tlv: %d\n", ret); -+ return ret; -+ } -+ -+ ev = tb[WMI_TAG_11D_NEW_COUNTRY_EVENT]; -+ if (!ev) { -+ kfree(tb); -+ ath12k_warn(ab, "failed to fetch 11d new cc ev"); -+ return -EPROTO; -+ } -+ -+ spin_lock_bh(&ab->base_lock); -+ memcpy(&ab->new_alpha2, &ev->new_alpha2, REG_ALPHA2_LEN); -+ spin_unlock_bh(&ab->base_lock); -+ -+ ath12k_dbg(ab, ATH12K_DBG_WMI, "wmi 11d new cc %c%c\n", -+ ab->new_alpha2[0], -+ ab->new_alpha2[1]); -+ -+ kfree(tb); -+ -+ for (i = 0; i < ab->num_radios; i++) { -+ pdev = &ab->pdevs[i]; -+ ar = pdev->ar; -+ ar->state_11d = ATH12K_11D_IDLE; -+ complete(&ar->completed_11d_scan); -+ } -+ -+ queue_work(ab->workqueue, &ab->update_11d_work); -+ -+ return 0; -+} -+ - static void ath12k_wmi_htc_tx_complete(struct ath12k_base *ab, - struct sk_buff *skb) - { -@@ -7586,6 +7739,9 @@ static void ath12k_wmi_op_rx(struct ath1 - case WMI_OBSS_COLOR_COLLISION_DETECTION_EVENTID: - /* debug might flood hence silently ignore (no-op) */ - break; -+ case WMI_11D_NEW_COUNTRY_EVENTID: -+ ath12k_reg_11d_new_cc_event(ab, skb); -+ break; - /* TODO: Add remaining events */ - default: - ath12k_dbg(ab, ATH12K_DBG_WMI, "Unknown eventid: 0x%x\n", id); ---- a/drivers/net/wireless/ath/ath12k/wmi.h -+++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -3990,6 +3990,28 @@ struct wmi_init_country_cmd { - } cc_info; - } __packed; - -+struct wmi_11d_scan_start_arg { -+ u32 vdev_id; -+ u32 scan_period_msec; -+ u32 start_interval_msec; -+}; -+ -+struct wmi_11d_scan_start_cmd { -+ __le32 tlv_header; -+ __le32 vdev_id; -+ __le32 scan_period_msec; -+ __le32 start_interval_msec; -+} __packed; -+ -+struct wmi_11d_scan_stop_cmd { -+ __le32 tlv_header; -+ __le32 vdev_id; -+} __packed; -+ -+struct wmi_11d_new_cc_event { -+ __le32 new_alpha2; -+} __packed; -+ - struct wmi_delba_send_cmd { - __le32 tlv_header; - __le32 vdev_id; -@@ -4074,6 +4096,16 @@ struct ath12k_wmi_eht_rate_set_params { - #define REG_ALPHA2_LEN 2 - #define MAX_6G_REG_RULES 5 - -+struct wmi_set_current_country_arg { -+ u8 alpha2[REG_ALPHA2_LEN]; -+}; -+ -+struct wmi_set_current_country_cmd { -+ __le32 tlv_header; -+ __le32 pdev_id; -+ __le32 new_alpha2; -+} __packed; -+ - enum wmi_start_event_param { - WMI_VDEV_START_RESP_EVENT = 0, - WMI_VDEV_RESTART_RESP_EVENT, -@@ -5714,11 +5746,17 @@ int ath12k_wmi_send_bcn_offload_control_ - u32 vdev_id, u32 bcn_ctrl_op); - int ath12k_wmi_send_init_country_cmd(struct ath12k *ar, - struct ath12k_wmi_init_country_arg *arg); -+int -+ath12k_wmi_send_set_current_country_cmd(struct ath12k *ar, -+ struct wmi_set_current_country_arg *arg); - int ath12k_wmi_peer_rx_reorder_queue_setup(struct ath12k *ar, - int vdev_id, const u8 *addr, - dma_addr_t paddr, u8 tid, - u8 ba_window_size_valid, - u32 ba_window_size); -+int ath12k_wmi_send_11d_scan_start_cmd(struct ath12k *ar, -+ struct wmi_11d_scan_start_arg *arg); -+int ath12k_wmi_send_11d_scan_stop_cmd(struct ath12k *ar, u32 vdev_id); - int - ath12k_wmi_rx_reord_queue_remove(struct ath12k *ar, - struct ath12k_wmi_rx_reorder_queue_remove_arg *arg); ---- a/drivers/net/wireless/ath/ath12k/core.c -+++ b/drivers/net/wireless/ath/ath12k/core.c -@@ -1251,6 +1251,7 @@ void ath12k_core_halt(struct ath12k *ar) - cancel_delayed_work_sync(&ar->scan.timeout); - cancel_work_sync(&ar->regd_update_work); - cancel_work_sync(&ab->rfkill_work); -+ cancel_work_sync(&ab->update_11d_work); - - rcu_assign_pointer(ab->pdevs_active[ar->pdev_idx], NULL); - synchronize_rcu(); -@@ -1258,6 +1259,34 @@ void ath12k_core_halt(struct ath12k *ar) - idr_init(&ar->txmgmt_idr); - } - -+static void ath12k_update_11d(struct work_struct *work) -+{ -+ struct ath12k_base *ab = container_of(work, struct ath12k_base, update_11d_work); -+ struct ath12k *ar; -+ struct ath12k_pdev *pdev; -+ struct wmi_set_current_country_arg arg = {}; -+ int ret, i; -+ -+ spin_lock_bh(&ab->base_lock); -+ memcpy(&arg.alpha2, &ab->new_alpha2, 2); -+ spin_unlock_bh(&ab->base_lock); -+ -+ ath12k_dbg(ab, ATH12K_DBG_WMI, "update 11d new cc %c%c\n", -+ arg.alpha2[0], arg.alpha2[1]); -+ -+ for (i = 0; i < ab->num_radios; i++) { -+ pdev = &ab->pdevs[i]; -+ ar = pdev->ar; -+ -+ memcpy(&ar->alpha2, &arg.alpha2, 2); -+ ret = ath12k_wmi_send_set_current_country_cmd(ar, &arg); -+ if (ret) -+ ath12k_warn(ar->ab, -+ "pdev id %d failed set current country code: %d\n", -+ i, ret); -+ } -+} -+ - static void ath12k_core_pre_reconfigure_recovery(struct ath12k_base *ab) - { - struct ath12k_hw_group *ag = ab->ag; -@@ -1283,8 +1312,10 @@ static void ath12k_core_pre_reconfigure_ - ar = &ah->radio[j]; - - ath12k_mac_drain_tx(ar); -+ ar->state_11d = ATH12K_11D_IDLE; -+ complete(&ar->completed_11d_scan); - complete(&ar->scan.started); -- complete(&ar->scan.completed); -+ complete_all(&ar->scan.completed); - complete(&ar->scan.on_channel); - complete(&ar->peer_assoc_done); - complete(&ar->peer_delete_done); -@@ -1953,6 +1984,7 @@ struct ath12k_base *ath12k_core_alloc(st - INIT_WORK(&ab->reset_work, ath12k_core_reset); - INIT_WORK(&ab->rfkill_work, ath12k_rfkill_work); - INIT_WORK(&ab->dump_work, ath12k_coredump_upload); -+ INIT_WORK(&ab->update_11d_work, ath12k_update_11d); - - timer_setup(&ab->rx_replenish_retry, ath12k_ce_rx_replenish_retry, 0); - init_completion(&ab->htc_suspend); ---- a/drivers/net/wireless/ath/ath12k/core.h -+++ b/drivers/net/wireless/ath/ath12k/core.h -@@ -224,6 +224,12 @@ enum ath12k_hw_group_flags { - ATH12K_GROUP_FLAG_UNREGISTER, - }; - -+enum ath12k_11d_state { -+ ATH12K_11D_IDLE, -+ ATH12K_11D_PREPARING, -+ ATH12K_11D_RUNNING, -+}; -+ - enum ath12k_dev_flags { - ATH12K_FLAG_CAC_RUNNING, - ATH12K_FLAG_CRASH_FLUSH, -@@ -361,6 +367,8 @@ struct ath12k_vif_iter { - #define ATH12K_RX_RATE_TABLE_11AX_NUM 576 - #define ATH12K_RX_RATE_TABLE_NUM 320 - -+#define ATH12K_SCAN_TIMEOUT_HZ (20 * HZ) -+ - struct ath12k_rx_peer_rate_stats { - u64 ht_mcs_count[HAL_RX_MAX_MCS_HT + 1]; - u64 vht_mcs_count[HAL_RX_MAX_MCS_VHT + 1]; -@@ -713,6 +721,13 @@ struct ath12k { - - struct wiphy_radio_freq_range freq_range; - -+ /* Protected by wiphy::mtx lock. */ -+ u32 vdev_id_11d_scan; -+ struct completion completed_11d_scan; -+ enum ath12k_11d_state state_11d; -+ u8 alpha2[REG_ALPHA2_LEN]; -+ bool regdom_set_by_user; -+ - bool nlo_enabled; - - struct completion mlo_setup_done; -@@ -985,6 +1000,8 @@ struct ath12k_base { - /* continuous recovery fail count */ - atomic_t fail_cont_count; - unsigned long reset_fail_timeout; -+ struct work_struct update_11d_work; -+ u8 new_alpha2[2]; - struct { - /* protected by data_lock */ - u32 fw_crash_counter; ---- a/drivers/net/wireless/ath/ath12k/mac.c -+++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -3340,6 +3340,11 @@ static void ath12k_bss_assoc(struct ath1 - if (ret) - ath12k_warn(ar->ab, "failed to set vdev %i OBSS PD parameters: %d\n", - arvif->vdev_id, ret); -+ -+ if (test_bit(WMI_TLV_SERVICE_11D_OFFLOAD, ar->ab->wmi_ab.svc_map) && -+ ahvif->vdev_type == WMI_VDEV_TYPE_STA && -+ ahvif->vdev_subtype == WMI_VDEV_SUBTYPE_NONE) -+ ath12k_mac_11d_scan_stop_all(ar->ab); - } - - static void ath12k_bss_disassoc(struct ath12k *ar, -@@ -4094,7 +4099,7 @@ void __ath12k_mac_scan_finish(struct ath - fallthrough; - case ATH12K_SCAN_STARTING: - cancel_delayed_work(&ar->scan.timeout); -- complete(&ar->scan.completed); -+ complete_all(&ar->scan.completed); - wiphy_work_queue(ar->ah->hw->wiphy, &ar->scan.vdev_clean_wk); - break; - } -@@ -4438,7 +4443,12 @@ static int ath12k_mac_op_hw_scan(struct - - ret = ath12k_start_scan(ar, arg); - if (ret) { -- ath12k_warn(ar->ab, "failed to start hw scan: %d\n", ret); -+ if (ret == -EBUSY) -+ ath12k_dbg(ar->ab, ATH12K_DBG_MAC, -+ "scan engine is busy 11d state %d\n", ar->state_11d); -+ else -+ ath12k_warn(ar->ab, "failed to start hw scan: %d\n", ret); -+ - spin_lock_bh(&ar->data_lock); - ar->scan.state = ATH12K_SCAN_IDLE; - spin_unlock_bh(&ar->data_lock); -@@ -4465,6 +4475,11 @@ exit: - kfree(arg); - } - -+ if (ar->state_11d == ATH12K_11D_PREPARING && -+ ahvif->vdev_type == WMI_VDEV_TYPE_STA && -+ ahvif->vdev_subtype == WMI_VDEV_SUBTYPE_NONE) -+ ath12k_mac_11d_scan_start(ar, arvif->vdev_id); -+ - return ret; - } - -@@ -7383,7 +7398,7 @@ static int ath12k_mac_start(struct ath12 - - /* TODO: Do we need to enable ANI? */ - -- ath12k_reg_update_chan_list(ar); -+ ath12k_reg_update_chan_list(ar, false); - - ar->num_started_vdevs = 0; - ar->num_created_vdevs = 0; -@@ -7564,6 +7579,9 @@ static void ath12k_mac_stop(struct ath12 - wiphy_work_cancel(ath12k_ar_to_hw(ar)->wiphy, &ar->scan.vdev_clean_wk); - cancel_work_sync(&ar->regd_update_work); - cancel_work_sync(&ar->ab->rfkill_work); -+ cancel_work_sync(&ar->ab->update_11d_work); -+ ar->state_11d = ATH12K_11D_IDLE; -+ complete(&ar->completed_11d_scan); - - spin_lock_bh(&ar->data_lock); - list_for_each_entry_safe(ppdu_stats, tmp, &ar->ppdu_stats_info, list) { -@@ -7857,6 +7875,117 @@ static void ath12k_mac_op_update_vif_off - ath12k_mac_update_vif_offload(&ahvif->deflink); - } - -+static bool ath12k_mac_vif_ap_active_any(struct ath12k_base *ab) -+{ -+ struct ath12k *ar; -+ struct ath12k_pdev *pdev; -+ struct ath12k_link_vif *arvif; -+ int i; -+ -+ for (i = 0; i < ab->num_radios; i++) { -+ pdev = &ab->pdevs[i]; -+ ar = pdev->ar; -+ list_for_each_entry(arvif, &ar->arvifs, list) { -+ if (arvif->is_up && arvif->ahvif->vdev_type == WMI_VDEV_TYPE_AP) -+ return true; -+ } -+ } -+ return false; -+} -+ -+void ath12k_mac_11d_scan_start(struct ath12k *ar, u32 vdev_id) -+{ -+ struct wmi_11d_scan_start_arg arg; -+ int ret; -+ -+ lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -+ -+ if (ar->regdom_set_by_user) -+ goto fin; -+ -+ if (ar->vdev_id_11d_scan != ATH12K_11D_INVALID_VDEV_ID) -+ goto fin; -+ -+ if (!test_bit(WMI_TLV_SERVICE_11D_OFFLOAD, ar->ab->wmi_ab.svc_map)) -+ goto fin; -+ -+ if (ath12k_mac_vif_ap_active_any(ar->ab)) -+ goto fin; -+ -+ arg.vdev_id = vdev_id; -+ arg.start_interval_msec = 0; -+ arg.scan_period_msec = ATH12K_SCAN_11D_INTERVAL; -+ -+ ath12k_dbg(ar->ab, ATH12K_DBG_MAC, -+ "mac start 11d scan for vdev %d\n", vdev_id); -+ -+ ret = ath12k_wmi_send_11d_scan_start_cmd(ar, &arg); -+ if (ret) { -+ ath12k_warn(ar->ab, "failed to start 11d scan vdev %d ret: %d\n", -+ vdev_id, ret); -+ } else { -+ ar->vdev_id_11d_scan = vdev_id; -+ if (ar->state_11d == ATH12K_11D_PREPARING) -+ ar->state_11d = ATH12K_11D_RUNNING; -+ } -+ -+fin: -+ if (ar->state_11d == ATH12K_11D_PREPARING) { -+ ar->state_11d = ATH12K_11D_IDLE; -+ complete(&ar->completed_11d_scan); -+ } -+} -+ -+void ath12k_mac_11d_scan_stop(struct ath12k *ar) -+{ -+ int ret; -+ u32 vdev_id; -+ -+ lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -+ -+ if (!test_bit(WMI_TLV_SERVICE_11D_OFFLOAD, ar->ab->wmi_ab.svc_map)) -+ return; -+ -+ ath12k_dbg(ar->ab, ATH12K_DBG_MAC, "mac stop 11d for vdev %d\n", -+ ar->vdev_id_11d_scan); -+ -+ if (ar->state_11d == ATH12K_11D_PREPARING) { -+ ar->state_11d = ATH12K_11D_IDLE; -+ complete(&ar->completed_11d_scan); -+ } -+ -+ if (ar->vdev_id_11d_scan != ATH12K_11D_INVALID_VDEV_ID) { -+ vdev_id = ar->vdev_id_11d_scan; -+ -+ ret = ath12k_wmi_send_11d_scan_stop_cmd(ar, vdev_id); -+ if (ret) { -+ ath12k_warn(ar->ab, -+ "failed to stopt 11d scan vdev %d ret: %d\n", -+ vdev_id, ret); -+ } else { -+ ar->vdev_id_11d_scan = ATH12K_11D_INVALID_VDEV_ID; -+ ar->state_11d = ATH12K_11D_IDLE; -+ complete(&ar->completed_11d_scan); -+ } -+ } -+} -+ -+void ath12k_mac_11d_scan_stop_all(struct ath12k_base *ab) -+{ -+ struct ath12k *ar; -+ struct ath12k_pdev *pdev; -+ int i; -+ -+ ath12k_dbg(ab, ATH12K_DBG_MAC, "mac stop soc 11d scan\n"); -+ -+ for (i = 0; i < ab->num_radios; i++) { -+ pdev = &ab->pdevs[i]; -+ ar = pdev->ar; -+ -+ ath12k_mac_11d_scan_stop(ar); -+ } -+} -+ - int ath12k_mac_vdev_create(struct ath12k *ar, struct ath12k_link_vif *arvif) - { - struct ath12k_hw *ah = ar->ah; -@@ -7991,6 +8120,7 @@ int ath12k_mac_vdev_create(struct ath12k - arvif->vdev_id, ret); - goto err_peer_del; - } -+ ath12k_mac_11d_scan_stop_all(ar->ab); - break; - case WMI_VDEV_TYPE_STA: - param_id = WMI_STA_PS_PARAM_RX_WAKE_POLICY; -@@ -8029,6 +8159,13 @@ int ath12k_mac_vdev_create(struct ath12k - arvif->vdev_id, ret); - goto err_peer_del; - } -+ -+ if (test_bit(WMI_TLV_SERVICE_11D_OFFLOAD, ab->wmi_ab.svc_map) && -+ ahvif->vdev_type == WMI_VDEV_TYPE_STA && -+ ahvif->vdev_subtype == WMI_VDEV_SUBTYPE_NONE) { -+ reinit_completion(&ar->completed_11d_scan); -+ ar->state_11d = ATH12K_11D_PREPARING; -+ } - break; - default: - break; -@@ -8821,6 +8958,11 @@ ath12k_mac_vdev_start_restart(struct ath - return ret; - } - -+ if (test_bit(WMI_TLV_SERVICE_11D_OFFLOAD, ab->wmi_ab.svc_map) && -+ ahvif->vdev_type == WMI_VDEV_TYPE_STA && -+ ahvif->vdev_subtype == WMI_VDEV_SUBTYPE_NONE) -+ ath12k_mac_11d_scan_stop(ar); -+ - if (ahvif->vdev_type == WMI_VDEV_TYPE_AP) { - arg.ssid = ahvif->u.ap.ssid; - arg.ssid_len = ahvif->u.ap.ssid_len; -@@ -9395,6 +9537,14 @@ ath12k_mac_op_unassign_vif_chanctx(struc - ar->num_started_vdevs == 1 && ar->monitor_vdev_created) - ath12k_mac_monitor_stop(ar); - -+ if (test_bit(WMI_TLV_SERVICE_11D_OFFLOAD, ab->wmi_ab.svc_map) && -+ ahvif->vdev_type == WMI_VDEV_TYPE_STA && -+ ahvif->vdev_subtype == WMI_VDEV_SUBTYPE_NONE && -+ ar->state_11d != ATH12K_11D_PREPARING) { -+ reinit_completion(&ar->completed_11d_scan); -+ ar->state_11d = ATH12K_11D_PREPARING; -+ } -+ - ath12k_mac_remove_link_interface(hw, arvif); - ath12k_mac_unassign_link_vif(arvif); - } -@@ -9958,6 +10108,14 @@ ath12k_mac_op_reconfig_complete(struct i - ath12k_warn(ar->ab, "pdev %d successfully recovered\n", - ar->pdev->pdev_id); - -+ if (ar->ab->hw_params->current_cc_support && -+ ar->alpha2[0] != 0 && ar->alpha2[1] != 0) { -+ struct wmi_set_current_country_arg arg = {}; -+ -+ memcpy(&arg.alpha2, ar->alpha2, 2); -+ ath12k_wmi_send_set_current_country_cmd(ar, &arg); -+ } -+ - if (ab->is_reset) { - recovery_count = atomic_inc_return(&ab->recovery_count); - -@@ -11173,6 +11331,9 @@ static void ath12k_mac_setup(struct ath1 - - wiphy_work_init(&ar->wmi_mgmt_tx_work, ath12k_mgmt_over_wmi_tx_work); - skb_queue_head_init(&ar->wmi_mgmt_tx_queue); -+ -+ ar->vdev_id_11d_scan = ATH12K_11D_INVALID_VDEV_ID; -+ init_completion(&ar->completed_11d_scan); - } - - static int __ath12k_mac_mlo_setup(struct ath12k *ar) ---- a/drivers/net/wireless/ath/ath12k/mac.h -+++ b/drivers/net/wireless/ath/ath12k/mac.h -@@ -66,6 +66,13 @@ struct ath12k_mac_get_any_chanctx_conf_a - - extern const struct htt_rx_ring_tlv_filter ath12k_mac_mon_status_filter_default; - -+#define ATH12K_SCAN_11D_INTERVAL 600000 -+#define ATH12K_11D_INVALID_VDEV_ID 0xFFFF -+ -+void ath12k_mac_11d_scan_start(struct ath12k *ar, u32 vdev_id); -+void ath12k_mac_11d_scan_stop(struct ath12k *ar); -+void ath12k_mac_11d_scan_stop_all(struct ath12k_base *ab); -+ - void ath12k_mac_destroy(struct ath12k_hw_group *ag); - void ath12k_mac_unregister(struct ath12k_hw_group *ag); - int ath12k_mac_register(struct ath12k_hw_group *ag); ---- a/drivers/net/wireless/ath/ath12k/reg.c -+++ b/drivers/net/wireless/ath/ath12k/reg.c -@@ -48,6 +48,7 @@ ath12k_reg_notifier(struct wiphy *wiphy, - { - struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); - struct ath12k_wmi_init_country_arg arg; -+ struct wmi_set_current_country_arg current_arg = {}; - struct ath12k_hw *ah = ath12k_hw_to_ah(hw); - struct ath12k *ar = ath12k_ah_to_ar(ah, 0); - int ret, i; -@@ -77,27 +78,38 @@ ath12k_reg_notifier(struct wiphy *wiphy, - return; - } - -- /* Set the country code to the firmware and wait for -- * the WMI_REG_CHAN_LIST_CC EVENT for updating the -- * reg info -- */ -- arg.flags = ALPHA_IS_SET; -- memcpy(&arg.cc_info.alpha2, request->alpha2, 2); -- arg.cc_info.alpha2[2] = 0; -- - /* Allow fresh updates to wiphy regd */ - ah->regd_updated = false; - - /* Send the reg change request to all the radios */ - for_each_ar(ah, ar, i) { -- ret = ath12k_wmi_send_init_country_cmd(ar, &arg); -- if (ret) -- ath12k_warn(ar->ab, -- "INIT Country code set to fw failed : %d\n", ret); -+ if (ar->ab->hw_params->current_cc_support) { -+ memcpy(¤t_arg.alpha2, request->alpha2, 2); -+ memcpy(&ar->alpha2, ¤t_arg.alpha2, 2); -+ ret = ath12k_wmi_send_set_current_country_cmd(ar, ¤t_arg); -+ if (ret) -+ ath12k_warn(ar->ab, -+ "failed set current country code: %d\n", ret); -+ } else { -+ arg.flags = ALPHA_IS_SET; -+ memcpy(&arg.cc_info.alpha2, request->alpha2, 2); -+ arg.cc_info.alpha2[2] = 0; -+ -+ ret = ath12k_wmi_send_init_country_cmd(ar, &arg); -+ if (ret) -+ ath12k_warn(ar->ab, -+ "failed set INIT Country code: %d\n", ret); -+ } -+ -+ wiphy_lock(wiphy); -+ ath12k_mac_11d_scan_stop(ar); -+ wiphy_unlock(wiphy); -+ -+ ar->regdom_set_by_user = true; - } - } - --int ath12k_reg_update_chan_list(struct ath12k *ar) -+int ath12k_reg_update_chan_list(struct ath12k *ar, bool wait) - { - struct ieee80211_supported_band **bands; - struct ath12k_wmi_scan_chan_list_arg *arg; -@@ -106,7 +118,35 @@ int ath12k_reg_update_chan_list(struct a - struct ath12k_wmi_channel_arg *ch; - enum nl80211_band band; - int num_channels = 0; -- int i, ret; -+ int i, ret, left; -+ -+ if (wait && ar->state_11d != ATH12K_11D_IDLE) { -+ left = wait_for_completion_timeout(&ar->completed_11d_scan, -+ ATH12K_SCAN_TIMEOUT_HZ); -+ if (!left) { -+ ath12k_dbg(ar->ab, ATH12K_DBG_REG, -+ "failed to receive 11d scan complete: timed out\n"); -+ ar->state_11d = ATH12K_11D_IDLE; -+ } -+ ath12k_dbg(ar->ab, ATH12K_DBG_REG, -+ "reg 11d scan wait left time %d\n", left); -+ } -+ -+ if (wait && -+ (ar->scan.state == ATH12K_SCAN_STARTING || -+ ar->scan.state == ATH12K_SCAN_RUNNING)) { -+ left = wait_for_completion_timeout(&ar->scan.completed, -+ ATH12K_SCAN_TIMEOUT_HZ); -+ if (!left) -+ ath12k_dbg(ar->ab, ATH12K_DBG_REG, -+ "failed to receive hw scan complete: timed out\n"); -+ -+ ath12k_dbg(ar->ab, ATH12K_DBG_REG, -+ "reg hw scan wait left time %d\n", left); -+ } -+ -+ if (ar->ah->state == ATH12K_HW_STATE_RESTARTING) -+ return 0; - - bands = hw->wiphy->bands; - for (band = 0; band < NUM_NL80211_BANDS; band++) { -@@ -295,7 +335,7 @@ int ath12k_regd_update(struct ath12k *ar - */ - for_each_ar(ah, ar, i) { - ab = ar->ab; -- ret = ath12k_reg_update_chan_list(ar); -+ ret = ath12k_reg_update_chan_list(ar, true); - if (ret) - goto err; - } ---- a/drivers/net/wireless/ath/ath12k/reg.h -+++ b/drivers/net/wireless/ath/ath12k/reg.h -@@ -1,7 +1,7 @@ - /* SPDX-License-Identifier: BSD-3-Clause-Clear */ - /* - * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. -- * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. -+ * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. - */ - - #ifndef ATH12K_REG_H -@@ -96,6 +96,6 @@ struct ieee80211_regdomain *ath12k_reg_b - struct ath12k_reg_info *reg_info, - bool intersect); - int ath12k_regd_update(struct ath12k *ar, bool init); --int ath12k_reg_update_chan_list(struct ath12k *ar); -+int ath12k_reg_update_chan_list(struct ath12k *ar, bool wait); - - #endif ---- a/drivers/net/wireless/ath/ath12k/hw.c -+++ b/drivers/net/wireless/ath/ath12k/hw.c -@@ -928,6 +928,7 @@ static const struct ath12k_hw_params ath - .iova_mask = 0, - - .supports_aspm = false, -+ .current_cc_support = false, - }, - { - .name = "wcn7850 hw2.0", -@@ -1008,6 +1009,7 @@ static const struct ath12k_hw_params ath - .iova_mask = ATH12K_PCIE_MAX_PAYLOAD_SIZE - 1, - - .supports_aspm = true, -+ .current_cc_support = true, - }, - { - .name = "qcn9274 hw2.0", -@@ -1084,6 +1086,7 @@ static const struct ath12k_hw_params ath - .iova_mask = 0, - - .supports_aspm = false, -+ .current_cc_support = false, - }, - }; - ---- a/drivers/net/wireless/ath/ath12k/hw.h -+++ b/drivers/net/wireless/ath/ath12k/hw.h -@@ -190,6 +190,7 @@ struct ath12k_hw_params { - bool reoq_lut_support:1; - bool supports_shadow_regs:1; - bool supports_aspm:1; -+ bool current_cc_support:1; - - u32 num_tcl_banks; - u32 max_tx_ring; diff --git a/package/kernel/mac80211/patches/ath12k/003-1-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch b/package/kernel/mac80211/patches/ath12k/003-1-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch deleted file mode 100644 index 78dea13a49..0000000000 --- a/package/kernel/mac80211/patches/ath12k/003-1-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch +++ /dev/null @@ -1,53 +0,0 @@ -From b1b01e46a3db5ad44d1e4691ba37c1e0832cd5cf Mon Sep 17 00:00:00 2001 -From: Suraj P Kizhakkethil -Date: Tue, 4 Mar 2025 15:23:14 +0530 -Subject: [PATCH 1/2] wifi: ath12k: Pass correct values of center freq1 and - center freq2 for 160 MHz - -Currently, for 160 MHz bandwidth, center frequency1 and -center frequency2 are not passed correctly to the firmware. -Set center frequency1 as the center frequency -of the primary 80 MHz channel segment and center frequency2 as -the center frequency of the 160 MHz channel and pass the values -to the firmware. - -Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 - -Signed-off-by: Suraj P Kizhakkethil -Reviewed-by: Aditya Kumar Singh -Link: https://patch.msgid.link/20250304095315.3050325-2-quic_surapk@quicinc.com -Signed-off-by: Jeff Johnson ---- - drivers/net/wireless/ath/ath12k/wmi.c | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) - ---- a/drivers/net/wireless/ath/ath12k/wmi.c -+++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -1000,14 +1000,24 @@ int ath12k_wmi_vdev_down(struct ath12k * - static void ath12k_wmi_put_wmi_channel(struct ath12k_wmi_channel_params *chan, - struct wmi_vdev_start_req_arg *arg) - { -+ u32 center_freq1 = arg->band_center_freq1; -+ - memset(chan, 0, sizeof(*chan)); - - chan->mhz = cpu_to_le32(arg->freq); -- chan->band_center_freq1 = cpu_to_le32(arg->band_center_freq1); -- if (arg->mode == MODE_11AC_VHT80_80) -+ chan->band_center_freq1 = cpu_to_le32(center_freq1); -+ if (arg->mode == MODE_11BE_EHT160) { -+ if (arg->freq > center_freq1) -+ chan->band_center_freq1 = cpu_to_le32(center_freq1 + 40); -+ else -+ chan->band_center_freq1 = cpu_to_le32(center_freq1 - 40); -+ -+ chan->band_center_freq2 = cpu_to_le32(center_freq1); -+ } else if (arg->mode == MODE_11BE_EHT80_80) { - chan->band_center_freq2 = cpu_to_le32(arg->band_center_freq2); -- else -+ } else { - chan->band_center_freq2 = 0; -+ } - - chan->info |= le32_encode_bits(arg->mode, WMI_CHAN_INFO_MODE); - if (arg->passive) diff --git a/package/kernel/mac80211/patches/ath12k/003-2-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch b/package/kernel/mac80211/patches/ath12k/003-2-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch deleted file mode 100644 index 3f7f05e9ac..0000000000 --- a/package/kernel/mac80211/patches/ath12k/003-2-v6.16-wifi-ath12k-Pass-correct-values-of-center-freq1-and-.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 5e44b181bec8e2fe3826033360fc1a42bb432191 Mon Sep 17 00:00:00 2001 -From: Sriram R -Date: Tue, 4 Mar 2025 15:23:15 +0530 -Subject: [PATCH 2/2] wifi: ath12k: Pass correct values of center freq1 and - center freq2 for 320 MHz - -Currently, for 320 MHz bandwidth, center frequency1 and -center frequency2 are not passed correctly to the firmware. -Set center frequency1 as the center frequency of the -primary 160 MHz channel segment and center frequency2 as the center -frequency of the 320 MHz channel and pass the values -to the firmware. - -Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 - -Signed-off-by: Sriram R -Signed-off-by: Suraj P Kizhakkethil -Reviewed-by: Aditya Kumar Singh -Link: https://patch.msgid.link/20250304095315.3050325-3-quic_surapk@quicinc.com -Signed-off-by: Jeff Johnson ---- - drivers/net/wireless/ath/ath12k/wmi.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - ---- a/drivers/net/wireless/ath/ath12k/wmi.c -+++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -1006,7 +1006,15 @@ static void ath12k_wmi_put_wmi_channel(s - - chan->mhz = cpu_to_le32(arg->freq); - chan->band_center_freq1 = cpu_to_le32(center_freq1); -- if (arg->mode == MODE_11BE_EHT160) { -+ if (arg->mode == MODE_11BE_EHT320) { -+ if (arg->freq > center_freq1) -+ chan->band_center_freq1 = cpu_to_le32(center_freq1 + 80); -+ else -+ chan->band_center_freq1 = cpu_to_le32(center_freq1 - 80); -+ -+ chan->band_center_freq2 = cpu_to_le32(center_freq1); -+ -+ } else if (arg->mode == MODE_11BE_EHT160) { - if (arg->freq > center_freq1) - chan->band_center_freq1 = cpu_to_le32(center_freq1 + 40); - else diff --git a/package/kernel/mac80211/patches/ath12k/102-wifi-ath12k-limit-WMI_SCAN_CHAN_LIST_CMDID-arg.patch b/package/kernel/mac80211/patches/ath12k/102-wifi-ath12k-limit-WMI_SCAN_CHAN_LIST_CMDID-arg.patch index 398f4d4451..9bbc75247d 100644 --- a/package/kernel/mac80211/patches/ath12k/102-wifi-ath12k-limit-WMI_SCAN_CHAN_LIST_CMDID-arg.patch +++ b/package/kernel/mac80211/patches/ath12k/102-wifi-ath12k-limit-WMI_SCAN_CHAN_LIST_CMDID-arg.patch @@ -130,7 +130,7 @@ Best regards, --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -2743,6 +2743,9 @@ int ath12k_wmi_send_scan_chan_list_cmd(s +@@ -2832,6 +2832,9 @@ int ath12k_wmi_send_scan_chan_list_cmd(s max_chan_limit = (wmi->wmi_ab->max_msg_len[ar->pdev_idx] - len) / sizeof(*chan_info); @@ -142,7 +142,7 @@ Best regards, arg->nallchans -= num_send_chans; --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -3873,6 +3873,8 @@ struct wmi_stop_scan_cmd { +@@ -3947,6 +3947,8 @@ struct wmi_stop_scan_cmd { __le32 pdev_id; } __packed; diff --git a/package/kernel/mac80211/patches/ath12k/103-wifi-ath12k-fix-5GHz-operation-on-wideband-QCN.patch b/package/kernel/mac80211/patches/ath12k/103-wifi-ath12k-fix-5GHz-operation-on-wideband-QCN.patch index a8aa752db3..71b8f86eed 100644 --- a/package/kernel/mac80211/patches/ath12k/103-wifi-ath12k-fix-5GHz-operation-on-wideband-QCN.patch +++ b/package/kernel/mac80211/patches/ath12k/103-wifi-ath12k-fix-5GHz-operation-on-wideband-QCN.patch @@ -124,14 +124,14 @@ Best regards, --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -6432,9 +6432,7 @@ static void ath12k_mac_setup_ht_vht_cap( +@@ -6985,9 +6985,7 @@ static void ath12k_mac_setup_ht_vht_cap( rate_cap_rx_chainmask); } -- if (cap->supported_bands & WMI_HOST_WLAN_5G_CAP && +- if (cap->supported_bands & WMI_HOST_WLAN_5GHZ_CAP && - (ar->ab->hw_params->single_pdev_only || - !ar->supports_6ghz)) { -+ if (cap->supported_bands & WMI_HOST_WLAN_5G_CAP) { ++ if (cap->supported_bands & WMI_HOST_WLAN_5GHZ_CAP) { band = &ar->mac.sbands[NL80211_BAND_5GHZ]; ht_cap = cap->band[NL80211_BAND_5GHZ].ht_cap_info; if (ht_cap_info) diff --git a/package/kernel/mac80211/patches/ath12k/104-1-wifi-ath12k-push-HE-MU-MIMO-params-to-hardware.patch b/package/kernel/mac80211/patches/ath12k/104-1-wifi-ath12k-push-HE-MU-MIMO-params-to-hardware.patch index 0ab44b54a5..9fdc89960d 100644 --- a/package/kernel/mac80211/patches/ath12k/104-1-wifi-ath12k-push-HE-MU-MIMO-params-to-hardware.patch +++ b/package/kernel/mac80211/patches/ath12k/104-1-wifi-ath12k-push-HE-MU-MIMO-params-to-hardware.patch @@ -131,8 +131,8 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -3215,6 +3215,125 @@ static int ath12k_setup_peer_smps(struct - ath12k_smps_map[smps]); +@@ -3173,6 +3173,125 @@ static u32 ath12k_mac_ieee80211_sta_bw_t + return bw; } +static int ath12k_mac_set_he_txbf_conf(struct ath12k_link_vif *arvif) @@ -257,7 +257,7 @@ Acked-by: Jeff Johnson static void ath12k_bss_assoc(struct ath12k *ar, struct ath12k_link_vif *arvif, struct ieee80211_bss_conf *bss_conf) -@@ -3229,6 +3348,7 @@ static void ath12k_bss_assoc(struct ath1 +@@ -3187,6 +3306,7 @@ static void ath12k_bss_assoc(struct ath1 struct ath12k_sta *ahsta; struct ath12k_peer *peer; bool is_auth = false; @@ -265,7 +265,7 @@ Acked-by: Jeff Johnson int ret; lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -@@ -3272,8 +3392,26 @@ static void ath12k_bss_assoc(struct ath1 +@@ -3230,8 +3350,26 @@ static void ath12k_bss_assoc(struct ath1 ath12k_peer_assoc_prepare(ar, arvif, arsta, peer_arg, false); @@ -292,7 +292,7 @@ Acked-by: Jeff Johnson ret = ath12k_wmi_send_peer_assoc_cmd(ar, peer_arg); if (ret) { ath12k_warn(ar->ab, "failed to run peer assoc for %pM vdev %i: %d\n", -@@ -3677,6 +3815,13 @@ static void ath12k_mac_bss_info_changed( +@@ -3850,6 +3988,13 @@ static void ath12k_mac_bss_info_changed( ether_addr_copy(arvif->bssid, info->bssid); if (changed & BSS_CHANGED_BEACON_ENABLED) { @@ -306,7 +306,7 @@ Acked-by: Jeff Johnson ath12k_control_beaconing(arvif, info); if (arvif->is_up && info->he_support && -@@ -6598,11 +6743,14 @@ static void ath12k_mac_copy_he_cap(struc +@@ -7151,11 +7296,14 @@ static void ath12k_mac_copy_he_cap(struc he_cap_elem->mac_cap_info[1] &= IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_MASK; @@ -324,7 +324,7 @@ Acked-by: Jeff Johnson he_cap_elem->phy_cap_info[5] |= num_tx_chains - 1; switch (iftype) { -@@ -7734,72 +7882,6 @@ static int ath12k_mac_setup_vdev_create_ +@@ -8454,72 +8602,6 @@ static int ath12k_mac_setup_vdev_create_ return 0; } @@ -336,7 +336,7 @@ Acked-by: Jeff Johnson - u32 *hecap_phy_ptr = NULL; - u32 hemode; - -- if (pdev->cap.supported_bands & WMI_HOST_WLAN_2G_CAP) +- if (pdev->cap.supported_bands & WMI_HOST_WLAN_2GHZ_CAP) - cap_band = &pdev_cap->band[NL80211_BAND_2GHZ]; - else - cap_band = &pdev_cap->band[NL80211_BAND_5GHZ]; @@ -397,7 +397,7 @@ Acked-by: Jeff Johnson static void ath12k_mac_update_vif_offload(struct ath12k_link_vif *arvif) { struct ath12k_vif *ahvif = arvif->ahvif; -@@ -8978,14 +9060,6 @@ ath12k_mac_vdev_start_restart(struct ath +@@ -9706,14 +9788,6 @@ ath12k_mac_vdev_start_restart(struct ath spin_unlock_bh(&ab->base_lock); /* TODO: Notify if secondary 80Mhz also needs radar detection */ @@ -414,9 +414,9 @@ Acked-by: Jeff Johnson arg.passive |= !!(chandef->chan->flags & IEEE80211_CHAN_NO_IR); --- a/drivers/net/wireless/ath/ath12k/mac.h +++ b/drivers/net/wireless/ath/ath12k/mac.h -@@ -51,6 +51,21 @@ struct ath12k_generic_iter { - #define ATH12K_DEFAULT_SCAN_LINK IEEE80211_MLD_MAX_NUM_LINKS - #define ATH12K_NUM_MAX_LINKS (IEEE80211_MLD_MAX_NUM_LINKS + 1) +@@ -56,6 +56,21 @@ struct ath12k_generic_iter { + + #define ATH12K_NUM_MAX_ACTIVE_LINKS_PER_DEVICE 2 +#define HECAP_PHY_SUBFMR_GET(hecap_phy) \ + u8_get_bits(hecap_phy[3], IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER) @@ -438,7 +438,7 @@ Acked-by: Jeff Johnson ATH12K_BW_40 = 1, --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -3079,31 +3079,6 @@ struct ath12k_wmi_rx_reorder_queue_remov +@@ -3131,31 +3131,6 @@ struct ath12k_wmi_rx_reorder_queue_remov #define WMI_VDEV_PARAM_TXBF_SU_TX_BFER BIT(2) #define WMI_VDEV_PARAM_TXBF_MU_TX_BFER BIT(3) @@ -470,7 +470,7 @@ Acked-by: Jeff Johnson #define HE_MODE_SU_TX_BFEE BIT(0) #define HE_MODE_SU_TX_BFER BIT(1) #define HE_MODE_MU_TX_BFEE BIT(2) -@@ -3115,8 +3090,11 @@ struct ath12k_wmi_rx_reorder_queue_remov +@@ -3167,8 +3142,11 @@ struct ath12k_wmi_rx_reorder_queue_remov #define HE_DL_MUOFDMA_ENABLE 1 #define HE_UL_MUOFDMA_ENABLE 1 #define HE_DL_MUMIMO_ENABLE 1 diff --git a/package/kernel/mac80211/patches/ath12k/104-2-wifi-ath12k-push-EHT-MU-MIMO-params-to-hardware.patch b/package/kernel/mac80211/patches/ath12k/104-2-wifi-ath12k-push-EHT-MU-MIMO-params-to-hardware.patch index d733b5be23..d11e94f8db 100644 --- a/package/kernel/mac80211/patches/ath12k/104-2-wifi-ath12k-push-EHT-MU-MIMO-params-to-hardware.patch +++ b/package/kernel/mac80211/patches/ath12k/104-2-wifi-ath12k-push-EHT-MU-MIMO-params-to-hardware.patch @@ -131,7 +131,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -3334,6 +3334,58 @@ static int ath12k_mac_vif_recalc_sta_he_ +@@ -3292,6 +3292,58 @@ static int ath12k_mac_vif_recalc_sta_he_ return 0; } @@ -190,7 +190,7 @@ Acked-by: Jeff Johnson static void ath12k_bss_assoc(struct ath12k *ar, struct ath12k_link_vif *arvif, struct ieee80211_bss_conf *bss_conf) -@@ -3821,6 +3873,12 @@ static void ath12k_mac_bss_info_changed( +@@ -3994,6 +4046,12 @@ static void ath12k_mac_bss_info_changed( ath12k_warn(ar->ab, "failed to set HE TXBF config for vdev: %d\n", arvif->vdev_id); @@ -205,7 +205,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -1152,6 +1152,7 @@ enum wmi_tlv_vdev_param { +@@ -1176,6 +1176,7 @@ enum wmi_tlv_vdev_param { WMI_VDEV_PARAM_BSS_COLOR, WMI_VDEV_PARAM_SET_HEMU_MODE, WMI_VDEV_PARAM_HEOPS_0_31 = 0x8003, @@ -213,7 +213,7 @@ Acked-by: Jeff Johnson }; enum wmi_tlv_peer_flags { -@@ -3096,6 +3097,26 @@ struct ath12k_wmi_rx_reorder_queue_remov +@@ -3148,6 +3149,26 @@ struct ath12k_wmi_rx_reorder_queue_remov #define HE_MU_BFER_ENABLE 1 #define HE_SU_BFER_ENABLE 1 diff --git a/package/kernel/mac80211/patches/ath12k/104-3-wifi-ath12k-move-HE-MCS-mapper-to-a-separate-function.patch b/package/kernel/mac80211/patches/ath12k/104-3-wifi-ath12k-move-HE-MCS-mapper-to-a-separate-function.patch index ee0f20fe17..bf72cefca2 100644 --- a/package/kernel/mac80211/patches/ath12k/104-3-wifi-ath12k-move-HE-MCS-mapper-to-a-separate-function.patch +++ b/package/kernel/mac80211/patches/ath12k/104-3-wifi-ath12k-move-HE-MCS-mapper-to-a-separate-function.patch @@ -130,7 +130,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -6786,12 +6786,24 @@ static __le16 ath12k_mac_setup_he_6ghz_c +@@ -7339,12 +7339,24 @@ static __le16 ath12k_mac_setup_he_6ghz_c return cpu_to_le16(bcap->he_6ghz_capa); } @@ -156,7 +156,7 @@ Acked-by: Jeff Johnson he_cap->has_he = true; memcpy(he_cap_elem->mac_cap_info, band_cap->he_cap_info, -@@ -6829,13 +6841,7 @@ static void ath12k_mac_copy_he_cap(struc +@@ -7384,13 +7396,7 @@ static void ath12k_mac_copy_he_cap(struc break; } diff --git a/package/kernel/mac80211/patches/ath12k/104-4-wifi-ath12k-generate-rx-and-tx-mcs-maps-for-supported-HE-mcs.patch b/package/kernel/mac80211/patches/ath12k/104-4-wifi-ath12k-generate-rx-and-tx-mcs-maps-for-supported-HE-mcs.patch index 848fd412f9..d85077af3f 100644 --- a/package/kernel/mac80211/patches/ath12k/104-4-wifi-ath12k-generate-rx-and-tx-mcs-maps-for-supported-HE-mcs.patch +++ b/package/kernel/mac80211/patches/ath12k/104-4-wifi-ath12k-generate-rx-and-tx-mcs-maps-for-supported-HE-mcs.patch @@ -128,7 +128,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -6786,20 +6786,40 @@ static __le16 ath12k_mac_setup_he_6ghz_c +@@ -7339,20 +7339,40 @@ static __le16 ath12k_mac_setup_he_6ghz_c return cpu_to_le16(bcap->he_6ghz_capa); } @@ -177,7 +177,7 @@ Acked-by: Jeff Johnson int iftype, u8 num_tx_chains, struct ieee80211_sta_he_cap *he_cap) { -@@ -6841,7 +6861,7 @@ static void ath12k_mac_copy_he_cap(struc +@@ -7396,7 +7416,7 @@ static void ath12k_mac_copy_he_cap(struc break; } @@ -186,7 +186,7 @@ Acked-by: Jeff Johnson memset(he_cap->ppe_thres, 0, sizeof(he_cap->ppe_thres)); if (he_cap_elem->phy_cap_info[6] & IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) -@@ -7030,7 +7050,7 @@ static int ath12k_mac_copy_sband_iftype_ +@@ -7586,7 +7606,7 @@ static int ath12k_mac_copy_sband_iftype_ data[idx].types_mask = BIT(i); diff --git a/package/kernel/mac80211/patches/ath12k/104-5-wifi-ath12k-fix-TX-and-RX-MCS-rate-configurations-in-HE-mode.patch b/package/kernel/mac80211/patches/ath12k/104-5-wifi-ath12k-fix-TX-and-RX-MCS-rate-configurations-in-HE-mode.patch index dae1682ead..49ef320c25 100644 --- a/package/kernel/mac80211/patches/ath12k/104-5-wifi-ath12k-fix-TX-and-RX-MCS-rate-configurations-in-HE-mode.patch +++ b/package/kernel/mac80211/patches/ath12k/104-5-wifi-ath12k-fix-TX-and-RX-MCS-rate-configurations-in-HE-mode.patch @@ -127,7 +127,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -2266,8 +2266,8 @@ int ath12k_wmi_send_peer_assoc_cmd(struc +@@ -2333,8 +2333,8 @@ int ath12k_wmi_send_peer_assoc_cmd(struc he_mcs->tlv_header = ath12k_wmi_tlv_cmd_hdr(WMI_TAG_HE_RATE_SET, sizeof(*he_mcs)); @@ -140,7 +140,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -4083,7 +4083,9 @@ struct ath12k_wmi_vht_rate_set_params { +@@ -4157,7 +4157,9 @@ struct ath12k_wmi_vht_rate_set_params { struct ath12k_wmi_he_rate_set_params { __le32 tlv_header; diff --git a/package/kernel/mac80211/patches/ath12k/104-6-wifi-ath12k-add-support-for-setting-fixed-HE-rate-GI-LTF.patch b/package/kernel/mac80211/patches/ath12k/104-6-wifi-ath12k-add-support-for-setting-fixed-HE-rate-GI-LTF.patch index 3f63eb08d1..b7ad233e2e 100644 --- a/package/kernel/mac80211/patches/ath12k/104-6-wifi-ath12k-add-support-for-setting-fixed-HE-rate-GI-LTF.patch +++ b/package/kernel/mac80211/patches/ath12k/104-6-wifi-ath12k-add-support-for-setting-fixed-HE-rate-GI-LTF.patch @@ -127,7 +127,7 @@ Signed-off-by: Pradeep Kumar Chitrapu --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -518,6 +518,18 @@ ath12k_mac_max_vht_nss(const u16 *vht_mc +@@ -521,6 +521,18 @@ ath12k_mac_max_vht_nss(const u16 *vht_mc return 1; } @@ -146,7 +146,7 @@ Signed-off-by: Pradeep Kumar Chitrapu static u8 ath12k_parse_mpdudensity(u8 mpdudensity) { /* From IEEE Std 802.11-2020 defined values for "Minimum MPDU Start Spacing": -@@ -2135,9 +2147,15 @@ static void ath12k_peer_assoc_h_ht(struc +@@ -2053,9 +2065,15 @@ static void ath12k_peer_assoc_h_ht(struc arg->peer_rate_caps |= WMI_HOST_RC_CW40_FLAG; } @@ -165,7 +165,7 @@ Signed-off-by: Pradeep Kumar Chitrapu arg->peer_rate_caps |= WMI_HOST_RC_SGI_FLAG; } -@@ -2260,11 +2278,12 @@ static void ath12k_peer_assoc_h_vht(stru +@@ -2178,11 +2196,12 @@ static void ath12k_peer_assoc_h_vht(stru struct ieee80211_link_sta *link_sta; struct cfg80211_chan_def def; enum nl80211_band band; @@ -180,7 +180,7 @@ Signed-off-by: Pradeep Kumar Chitrapu lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -@@ -2317,6 +2336,25 @@ static void ath12k_peer_assoc_h_vht(stru +@@ -2235,6 +2254,25 @@ static void ath12k_peer_assoc_h_vht(stru if (link_sta->bandwidth == IEEE80211_STA_RX_BW_160) arg->bw_160 = true; @@ -206,7 +206,7 @@ Signed-off-by: Pradeep Kumar Chitrapu /* Calculate peer NSS capability from VHT capabilities if STA * supports VHT. */ -@@ -2356,6 +2394,72 @@ static void ath12k_peer_assoc_h_vht(stru +@@ -2274,6 +2312,72 @@ static void ath12k_peer_assoc_h_vht(stru /* TODO: rxnss_override */ } @@ -279,7 +279,7 @@ Signed-off-by: Pradeep Kumar Chitrapu static void ath12k_peer_assoc_h_he(struct ath12k *ar, struct ath12k_link_vif *arvif, struct ath12k_link_sta *arsta, -@@ -2366,18 +2470,28 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2284,18 +2388,28 @@ static void ath12k_peer_assoc_h_he(struc const struct ieee80211_sta_he_cap *he_cap; struct ieee80211_bss_conf *link_conf; struct ieee80211_link_sta *link_sta; @@ -310,7 +310,7 @@ Signed-off-by: Pradeep Kumar Chitrapu return; } -@@ -2392,6 +2506,12 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2310,6 +2424,12 @@ static void ath12k_peer_assoc_h_he(struc if (!he_cap->has_he) return; @@ -323,7 +323,7 @@ Signed-off-by: Pradeep Kumar Chitrapu arg->he_flag = true; support_160 = !!(he_cap->he_cap_elem.phy_cap_info[0] & -@@ -2497,25 +2617,47 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2415,25 +2535,47 @@ static void ath12k_peer_assoc_h_he(struc if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ) arg->twt_requester = true; @@ -373,7 +373,7 @@ Signed-off-by: Pradeep Kumar Chitrapu fallthrough; default: -@@ -2523,11 +2665,36 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2441,11 +2583,36 @@ static void ath12k_peer_assoc_h_he(struc arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v; v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80); @@ -410,7 +410,7 @@ Signed-off-by: Pradeep Kumar Chitrapu } static void ath12k_peer_assoc_h_he_6ghz(struct ath12k *ar, -@@ -2863,6 +3030,7 @@ static void ath12k_peer_assoc_h_phymode( +@@ -2781,6 +2948,7 @@ static void ath12k_peer_assoc_h_phymode( enum nl80211_band band; const u8 *ht_mcs_mask; const u16 *vht_mcs_mask; @@ -418,7 +418,7 @@ Signed-off-by: Pradeep Kumar Chitrapu enum wmi_phy_mode phymode = MODE_UNKNOWN; lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -@@ -2876,6 +3044,7 @@ static void ath12k_peer_assoc_h_phymode( +@@ -2794,6 +2962,7 @@ static void ath12k_peer_assoc_h_phymode( band = def.chan->band; ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; @@ -426,7 +426,7 @@ Signed-off-by: Pradeep Kumar Chitrapu link_sta = ath12k_mac_get_link_sta(arsta); if (!link_sta) { -@@ -2891,7 +3060,8 @@ static void ath12k_peer_assoc_h_phymode( +@@ -2809,7 +2978,8 @@ static void ath12k_peer_assoc_h_phymode( phymode = MODE_11BE_EHT40_2G; else phymode = MODE_11BE_EHT20_2G; @@ -436,7 +436,7 @@ Signed-off-by: Pradeep Kumar Chitrapu if (link_sta->bandwidth == IEEE80211_STA_RX_BW_80) phymode = MODE_11AX_HE80_2G; else if (link_sta->bandwidth == IEEE80211_STA_RX_BW_40) -@@ -2921,7 +3091,8 @@ static void ath12k_peer_assoc_h_phymode( +@@ -2839,7 +3009,8 @@ static void ath12k_peer_assoc_h_phymode( /* Check EHT first */ if (link_sta->eht_cap.has_eht) { phymode = ath12k_mac_get_phymode_eht(ar, link_sta); @@ -446,7 +446,7 @@ Signed-off-by: Pradeep Kumar Chitrapu phymode = ath12k_mac_get_phymode_he(ar, link_sta); } else if (link_sta->vht_cap.vht_supported && !ath12k_peer_assoc_h_vht_masked(vht_mcs_mask)) { -@@ -4190,10 +4361,13 @@ static struct ath12k_link_vif *ath12k_ma +@@ -3623,10 +3794,13 @@ static void ath12k_mac_init_arvif(struct for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) { arvif->bitrate_mask.control[i].legacy = 0xffffffff; @@ -459,8 +459,8 @@ Signed-off-by: Pradeep Kumar Chitrapu + sizeof(arvif->bitrate_mask.control[i].he_mcs)); } - /* Allocate Default Queue now and reassign during actual vdev create */ -@@ -5083,6 +5257,20 @@ ath12k_mac_bitrate_mask_num_vht_rates(st + /* Handle MLO related assignments */ +@@ -5282,6 +5456,20 @@ ath12k_mac_bitrate_mask_num_vht_rates(st } static int @@ -481,7 +481,7 @@ Signed-off-by: Pradeep Kumar Chitrapu ath12k_mac_set_peer_vht_fixed_rate(struct ath12k_link_vif *arvif, struct ath12k_link_sta *arsta, const struct cfg80211_bitrate_mask *mask, -@@ -5128,6 +5316,60 @@ ath12k_mac_set_peer_vht_fixed_rate(struc +@@ -5327,6 +5515,60 @@ ath12k_mac_set_peer_vht_fixed_rate(struc return ret; } @@ -542,7 +542,7 @@ Signed-off-by: Pradeep Kumar Chitrapu static int ath12k_mac_station_assoc(struct ath12k *ar, struct ath12k_link_vif *arvif, struct ath12k_link_sta *arsta, -@@ -5140,7 +5382,7 @@ static int ath12k_mac_station_assoc(stru +@@ -5339,7 +5581,7 @@ static int ath12k_mac_station_assoc(stru struct cfg80211_chan_def def; enum nl80211_band band; struct cfg80211_bitrate_mask *mask; @@ -551,7 +551,7 @@ Signed-off-by: Pradeep Kumar Chitrapu u8 link_id = arvif->link_id; lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -@@ -5180,9 +5422,10 @@ static int ath12k_mac_station_assoc(stru +@@ -5379,9 +5621,10 @@ static int ath12k_mac_station_assoc(stru } num_vht_rates = ath12k_mac_bitrate_mask_num_vht_rates(ar, band, mask); @@ -564,8 +564,8 @@ Signed-off-by: Pradeep Kumar Chitrapu * fixed param. * Note that all other rates and NSS will be disabled for this peer. */ -@@ -5193,8 +5436,9 @@ static int ath12k_mac_station_assoc(stru - } +@@ -5397,8 +5640,9 @@ static int ath12k_mac_station_assoc(stru + spin_unlock_bh(&ar->data_lock); if (link_sta->vht_cap.vht_supported && num_vht_rates == 1) { - ret = ath12k_mac_set_peer_vht_fixed_rate(arvif, arsta, mask, @@ -576,7 +576,7 @@ Signed-off-by: Pradeep Kumar Chitrapu if (ret) return ret; } -@@ -5258,8 +5502,9 @@ static void ath12k_sta_rc_update_wk(stru +@@ -5462,8 +5706,9 @@ static void ath12k_sta_rc_update_wk(stru enum nl80211_band band; const u8 *ht_mcs_mask; const u16 *vht_mcs_mask; @@ -588,7 +588,7 @@ Signed-off-by: Pradeep Kumar Chitrapu const struct cfg80211_bitrate_mask *mask; enum wmi_phy_mode peer_phymode; struct ath12k_link_sta *arsta; -@@ -5279,6 +5524,7 @@ static void ath12k_sta_rc_update_wk(stru +@@ -5483,6 +5728,7 @@ static void ath12k_sta_rc_update_wk(stru band = def.chan->band; ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs; vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs; @@ -596,7 +596,7 @@ Signed-off-by: Pradeep Kumar Chitrapu spin_lock_bh(&ar->data_lock); -@@ -5293,8 +5539,10 @@ static void ath12k_sta_rc_update_wk(stru +@@ -5497,8 +5743,10 @@ static void ath12k_sta_rc_update_wk(stru spin_unlock_bh(&ar->data_lock); nss = max_t(u32, 1, nss); @@ -609,7 +609,7 @@ Signed-off-by: Pradeep Kumar Chitrapu struct ath12k_wmi_peer_assoc_arg *peer_arg __free(kfree) = kzalloc(sizeof(*peer_arg), GFP_KERNEL); -@@ -5377,6 +5625,8 @@ static void ath12k_sta_rc_update_wk(stru +@@ -5581,6 +5829,8 @@ static void ath12k_sta_rc_update_wk(stru mask = &arvif->bitrate_mask; num_vht_rates = ath12k_mac_bitrate_mask_num_vht_rates(ar, band, mask); @@ -618,7 +618,7 @@ Signed-off-by: Pradeep Kumar Chitrapu /* Peer_assoc_prepare will reject vht rates in * bitrate_mask if its not available in range format and -@@ -5399,11 +5649,24 @@ static void ath12k_sta_rc_update_wk(stru +@@ -5603,11 +5853,24 @@ static void ath12k_sta_rc_update_wk(stru if (link_sta->vht_cap.vht_supported && num_vht_rates == 1) { ath12k_mac_set_peer_vht_fixed_rate(arvif, arsta, mask, band); @@ -645,7 +645,7 @@ Signed-off-by: Pradeep Kumar Chitrapu ath12k_peer_assoc_prepare(ar, arvif, arsta, peer_arg, true); -@@ -9903,19 +10166,40 @@ ath12k_mac_has_single_legacy_rate(struct +@@ -11036,19 +11299,40 @@ ath12k_mac_has_single_legacy_rate(struct if (ath12k_mac_bitrate_mask_num_vht_rates(ar, band, mask)) return false; @@ -686,7 +686,7 @@ Signed-off-by: Pradeep Kumar Chitrapu int i; /* No need to consider legacy here. Basic rates are always present -@@ -9942,7 +10226,24 @@ ath12k_mac_bitrate_mask_get_single_nss(s +@@ -11075,7 +11359,24 @@ ath12k_mac_bitrate_mask_get_single_nss(s return false; } @@ -712,7 +712,7 @@ Signed-off-by: Pradeep Kumar Chitrapu return false; if (ht_nss_mask == 0) -@@ -9989,54 +10290,182 @@ ath12k_mac_get_single_legacy_rate(struct +@@ -11122,54 +11423,182 @@ ath12k_mac_get_single_legacy_rate(struct return 0; } @@ -914,7 +914,7 @@ Signed-off-by: Pradeep Kumar Chitrapu return 0; } -@@ -10065,6 +10494,31 @@ ath12k_mac_vht_mcs_range_present(struct +@@ -11198,6 +11627,31 @@ ath12k_mac_vht_mcs_range_present(struct return true; } @@ -946,7 +946,7 @@ Signed-off-by: Pradeep Kumar Chitrapu static void ath12k_mac_set_bitrate_mask_iter(void *data, struct ieee80211_sta *sta) { -@@ -10073,7 +10527,10 @@ static void ath12k_mac_set_bitrate_mask_ +@@ -11206,7 +11660,10 @@ static void ath12k_mac_set_bitrate_mask_ struct ath12k_link_sta *arsta; struct ath12k *ar = arvif->ar; @@ -958,7 +958,7 @@ Signed-off-by: Pradeep Kumar Chitrapu if (!arsta || arsta->arvif != arvif) return; -@@ -10111,6 +10568,61 @@ static void ath12k_mac_disable_peer_fixe +@@ -11244,6 +11701,61 @@ static void ath12k_mac_disable_peer_fixe arsta->addr, ret); } @@ -1020,7 +1020,7 @@ Signed-off-by: Pradeep Kumar Chitrapu static int ath12k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw, struct ieee80211_vif *vif, -@@ -10123,13 +10635,17 @@ ath12k_mac_op_set_bitrate_mask(struct ie +@@ -11256,13 +11768,17 @@ ath12k_mac_op_set_bitrate_mask(struct ie enum nl80211_band band; const u8 *ht_mcs_mask; const u16 *vht_mcs_mask; @@ -1039,7 +1039,7 @@ Signed-off-by: Pradeep Kumar Chitrapu lockdep_assert_wiphy(hw->wiphy); -@@ -10144,14 +10660,18 @@ ath12k_mac_op_set_bitrate_mask(struct ie +@@ -11277,14 +11793,18 @@ ath12k_mac_op_set_bitrate_mask(struct ie band = def.chan->band; ht_mcs_mask = mask->control[band].ht_mcs; vht_mcs_mask = mask->control[band].vht_mcs; @@ -1059,7 +1059,7 @@ Signed-off-by: Pradeep Kumar Chitrapu /* mac80211 doesn't support sending a fixed HT/VHT MCS alone, rather it * requires passing at least one of used basic rates along with them. * Fixed rate setting across different preambles(legacy, HT, VHT) is -@@ -10168,18 +10688,31 @@ ath12k_mac_op_set_bitrate_mask(struct ie +@@ -11301,18 +11821,31 @@ ath12k_mac_op_set_bitrate_mask(struct ie arvif->vdev_id, ret); goto out; } @@ -1095,7 +1095,7 @@ Signed-off-by: Pradeep Kumar Chitrapu /* If multiple rates across different preambles are given * we can reconfigure this info with all peers using PEER_ASSOC -@@ -10211,9 +10744,21 @@ ath12k_mac_op_set_bitrate_mask(struct ie +@@ -11344,9 +11877,21 @@ ath12k_mac_op_set_bitrate_mask(struct ie */ ath12k_warn(ar->ab, "Setting more than one MCS Value in bitrate mask not supported\n"); @@ -1118,7 +1118,7 @@ Signed-off-by: Pradeep Kumar Chitrapu ieee80211_iterate_stations_mtx(hw, ath12k_mac_disable_peer_fixed_rate, arvif); -@@ -10224,9 +10769,10 @@ ath12k_mac_op_set_bitrate_mask(struct ie +@@ -11357,9 +11902,10 @@ ath12k_mac_op_set_bitrate_mask(struct ie arvif); } @@ -1133,8 +1133,8 @@ Signed-off-by: Pradeep Kumar Chitrapu --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -220,6 +220,22 @@ enum WMI_HOST_WLAN_BAND { - WMI_HOST_WLAN_2G_5G_CAP = 3, +@@ -222,6 +222,22 @@ enum WMI_HOST_WLAN_BAND { + WMI_HOST_WLAN_2GHZ_5GHZ_CAP = 3, }; +/* Parameters used for WMI_VDEV_PARAM_AUTORATE_MISC_CFG command. @@ -1156,7 +1156,7 @@ Signed-off-by: Pradeep Kumar Chitrapu enum wmi_cmd_group { /* 0 to 2 are reserved */ WMI_GRP_START = 0x3, -@@ -1145,7 +1161,9 @@ enum wmi_tlv_vdev_param { +@@ -1169,7 +1185,9 @@ enum wmi_tlv_vdev_param { WMI_VDEV_PARAM_HE_RANGE_EXT, WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE, WMI_VDEV_PARAM_FILS_MAX_CHANNEL_GUARD_TIME, @@ -1166,7 +1166,7 @@ Signed-off-by: Pradeep Kumar Chitrapu WMI_VDEV_PARAM_SET_HE_SOUNDING_MODE = 0x87, WMI_VDEV_PARAM_6GHZ_PARAMS = 0x99, WMI_VDEV_PARAM_PROTOTYPE = 0x8000, -@@ -3579,6 +3597,15 @@ struct wmi_force_fw_hang_cmd { +@@ -3631,6 +3649,15 @@ struct wmi_force_fw_hang_cmd { __le32 delay_time_ms; } __packed; diff --git a/package/kernel/mac80211/patches/ath12k/104-7-wifi-ath12k-clean-up-80P80-support.patch b/package/kernel/mac80211/patches/ath12k/104-7-wifi-ath12k-clean-up-80P80-support.patch index 922cdf17fd..55c9aa94f6 100644 --- a/package/kernel/mac80211/patches/ath12k/104-7-wifi-ath12k-clean-up-80P80-support.patch +++ b/package/kernel/mac80211/patches/ath12k/104-7-wifi-ath12k-clean-up-80P80-support.patch @@ -124,7 +124,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -207,7 +207,7 @@ ath12k_phymodes[NUM_NL80211_BANDS][ATH12 +@@ -209,7 +209,7 @@ ath12k_phymodes[NUM_NL80211_BANDS][ATH12 [NL80211_CHAN_WIDTH_40] = MODE_11BE_EHT40, [NL80211_CHAN_WIDTH_80] = MODE_11BE_EHT80, [NL80211_CHAN_WIDTH_160] = MODE_11BE_EHT160, @@ -133,7 +133,7 @@ Acked-by: Jeff Johnson [NL80211_CHAN_WIDTH_320] = MODE_11BE_EHT320, }, [NL80211_BAND_6GHZ] = { -@@ -218,7 +218,7 @@ ath12k_phymodes[NUM_NL80211_BANDS][ATH12 +@@ -220,7 +220,7 @@ ath12k_phymodes[NUM_NL80211_BANDS][ATH12 [NL80211_CHAN_WIDTH_40] = MODE_11BE_EHT40, [NL80211_CHAN_WIDTH_80] = MODE_11BE_EHT80, [NL80211_CHAN_WIDTH_160] = MODE_11BE_EHT160, @@ -142,7 +142,7 @@ Acked-by: Jeff Johnson [NL80211_CHAN_WIDTH_320] = MODE_11BE_EHT320, }, -@@ -2638,17 +2638,6 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2556,17 +2556,6 @@ static void ath12k_peer_assoc_h_he(struc switch (link_sta->bandwidth) { case IEEE80211_STA_RX_BW_160: @@ -160,7 +160,7 @@ Acked-by: Jeff Johnson v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160); arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v; -@@ -2935,16 +2924,11 @@ static enum wmi_phy_mode ath12k_mac_get_ +@@ -2853,16 +2842,11 @@ static enum wmi_phy_mode ath12k_mac_get_ struct ieee80211_link_sta *link_sta) { if (link_sta->bandwidth == IEEE80211_STA_RX_BW_160) { @@ -181,7 +181,7 @@ Acked-by: Jeff Johnson } if (link_sta->bandwidth == IEEE80211_STA_RX_BW_80) -@@ -2966,11 +2950,8 @@ static enum wmi_phy_mode ath12k_mac_get_ +@@ -2884,11 +2868,8 @@ static enum wmi_phy_mode ath12k_mac_get_ if (link_sta->he_cap.he_cap_elem.phy_cap_info[0] & IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G) return MODE_11AX_HE160; @@ -195,7 +195,7 @@ Acked-by: Jeff Johnson } if (link_sta->bandwidth == IEEE80211_STA_RX_BW_80) -@@ -2998,14 +2979,10 @@ static enum wmi_phy_mode ath12k_mac_get_ +@@ -2916,14 +2897,10 @@ static enum wmi_phy_mode ath12k_mac_get_ IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G) return MODE_11BE_EHT160; @@ -211,7 +211,7 @@ Acked-by: Jeff Johnson } if (link_sta->bandwidth == IEEE80211_STA_RX_BW_80) -@@ -7077,8 +7054,6 @@ static void ath12k_mac_set_hemcsmap(stru +@@ -7630,8 +7607,6 @@ static void ath12k_mac_set_hemcsmap(stru mcs_nss->tx_mcs_80 = cpu_to_le16(txmcs_map & 0xffff); mcs_nss->rx_mcs_160 = cpu_to_le16(rxmcs_map & 0xffff); mcs_nss->tx_mcs_160 = cpu_to_le16(txmcs_map & 0xffff); @@ -220,7 +220,7 @@ Acked-by: Jeff Johnson } static void ath12k_mac_copy_he_cap(struct ath12k *ar, -@@ -7100,6 +7075,7 @@ static void ath12k_mac_copy_he_cap(struc +@@ -7653,6 +7628,7 @@ static void ath12k_mac_copy_he_cap(struc IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G | IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G | IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G; @@ -228,7 +228,7 @@ Acked-by: Jeff Johnson he_cap_elem->phy_cap_info[0] &= ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G; he_cap_elem->phy_cap_info[5] &= -@@ -10176,10 +10152,6 @@ static __le16 +@@ -11309,10 +11285,6 @@ static __le16 ath12k_mac_get_tx_mcs_map(const struct ieee80211_sta_he_cap *he_cap) { if (he_cap->he_cap_elem.phy_cap_info[0] & @@ -241,7 +241,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -1021,8 +1021,6 @@ static void ath12k_wmi_put_wmi_channel(s +@@ -1066,8 +1066,6 @@ static void ath12k_wmi_put_wmi_channel(s chan->band_center_freq1 = cpu_to_le32(center_freq1 - 40); chan->band_center_freq2 = cpu_to_le32(center_freq1); @@ -252,7 +252,7 @@ Acked-by: Jeff Johnson } --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -3726,7 +3726,6 @@ struct wmi_vdev_install_key_arg { +@@ -3798,7 +3798,6 @@ struct wmi_vdev_install_key_arg { #define WMI_HOST_MAX_HE_RATE_SET 3 #define WMI_HECAP_TXRX_MCS_NSS_IDX_80 0 #define WMI_HECAP_TXRX_MCS_NSS_IDX_160 1 diff --git a/package/kernel/mac80211/patches/ath12k/104-8-wifi-ath12k-add-support-for-160-MHz-bandwidth.patch b/package/kernel/mac80211/patches/ath12k/104-8-wifi-ath12k-add-support-for-160-MHz-bandwidth.patch index 24114e92ac..aeaeefeeb0 100644 --- a/package/kernel/mac80211/patches/ath12k/104-8-wifi-ath12k-add-support-for-160-MHz-bandwidth.patch +++ b/package/kernel/mac80211/patches/ath12k/104-8-wifi-ath12k-add-support-for-160-MHz-bandwidth.patch @@ -139,7 +139,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/core.h +++ b/drivers/net/wireless/ath/ath12k/core.h -@@ -789,6 +789,8 @@ struct ath12k_pdev_cap { +@@ -879,6 +879,8 @@ struct ath12k_pdev_cap { struct ath12k_band_cap band[NUM_NL80211_BANDS]; u32 eml_cap; u32 mld_cap; @@ -150,7 +150,7 @@ Acked-by: Jeff Johnson struct mlo_timestamp { --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -2267,6 +2267,34 @@ ath12k_peer_assoc_h_vht_limit(u16 tx_mcs +@@ -2185,6 +2185,34 @@ ath12k_peer_assoc_h_vht_limit(u16 tx_mcs return tx_mcs_set; } @@ -185,7 +185,7 @@ Acked-by: Jeff Johnson static void ath12k_peer_assoc_h_vht(struct ath12k *ar, struct ath12k_link_vif *arvif, struct ath12k_link_sta *arsta, -@@ -2284,6 +2312,7 @@ static void ath12k_peer_assoc_h_vht(stru +@@ -2202,6 +2230,7 @@ static void ath12k_peer_assoc_h_vht(stru u8 max_nss, vht_mcs; int i, vht_nss, nss_idx; bool user_rate_valid = true; @@ -193,7 +193,7 @@ Acked-by: Jeff Johnson lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy); -@@ -2388,10 +2417,24 @@ static void ath12k_peer_assoc_h_vht(stru +@@ -2306,10 +2335,24 @@ static void ath12k_peer_assoc_h_vht(stru /* TODO: Check */ arg->tx_max_mcs_nss = 0xFF; @@ -221,7 +221,7 @@ Acked-by: Jeff Johnson } static int ath12k_mac_get_max_he_mcs_map(u16 mcs_map, int nss) -@@ -2484,6 +2527,7 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2402,6 +2445,7 @@ static void ath12k_peer_assoc_h_he(struc u16 he_tx_mcs = 0, v = 0; int he_nss, nss_idx; bool user_rate_valid = true; @@ -229,7 +229,7 @@ Acked-by: Jeff Johnson if (WARN_ON(ath12k_mac_vif_link_chan(vif, link_id, &def))) return; -@@ -2681,9 +2725,25 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2599,9 +2643,25 @@ static void ath12k_peer_assoc_h_he(struc max_nss = min(max_nss, ar->num_tx_chains); arg->peer_nss = min(link_sta->rx_nss, max_nss); @@ -257,7 +257,7 @@ Acked-by: Jeff Johnson } static void ath12k_peer_assoc_h_he_6ghz(struct ath12k *ar, -@@ -2924,10 +2984,13 @@ static enum wmi_phy_mode ath12k_mac_get_ +@@ -2842,10 +2902,13 @@ static enum wmi_phy_mode ath12k_mac_get_ struct ieee80211_link_sta *link_sta) { if (link_sta->bandwidth == IEEE80211_STA_RX_BW_160) { @@ -273,7 +273,7 @@ Acked-by: Jeff Johnson return MODE_11AC_VHT160; } -@@ -6826,10 +6889,8 @@ ath12k_create_vht_cap(struct ath12k *ar, +@@ -7379,10 +7442,8 @@ ath12k_create_vht_cap(struct ath12k *ar, ath12k_set_vht_txbf_cap(ar, &vht_cap.cap); @@ -286,19 +286,19 @@ Acked-by: Jeff Johnson rxmcs_map = 0; txmcs_map = 0; -@@ -11437,7 +11498,8 @@ ath12k_mac_setup_radio_iface_comb(struct - comb[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) | - BIT(NL80211_CHAN_WIDTH_20) | - BIT(NL80211_CHAN_WIDTH_40) | -- BIT(NL80211_CHAN_WIDTH_80); -+ BIT(NL80211_CHAN_WIDTH_80) | -+ BIT(NL80211_CHAN_WIDTH_160); +@@ -12654,7 +12715,8 @@ ath12k_mac_setup_radio_iface_comb(struct + comb[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) | + BIT(NL80211_CHAN_WIDTH_20) | + BIT(NL80211_CHAN_WIDTH_40) | +- BIT(NL80211_CHAN_WIDTH_80); ++ BIT(NL80211_CHAN_WIDTH_80) | ++ BIT(NL80211_CHAN_WIDTH_160); + } return 0; - } -@@ -11811,6 +11873,9 @@ static int ath12k_mac_hw_register(struct - ieee80211_hw_set(hw, SUPPORTS_TX_FRAG); +@@ -13031,6 +13093,9 @@ static int ath12k_mac_hw_register(struct ieee80211_hw_set(hw, REPORTS_LOW_ACK); + ieee80211_hw_set(hw, NO_VIRTUAL_MONITOR); + if (cap->nss_ratio_enabled) + ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW); @@ -308,7 +308,7 @@ Acked-by: Jeff Johnson ieee80211_hw_set(hw, TX_AMPDU_SETUP_IN_HW); --- a/drivers/net/wireless/ath/ath12k/mac.h +++ b/drivers/net/wireless/ath/ath12k/mac.h -@@ -38,6 +38,8 @@ struct ath12k_generic_iter { +@@ -41,6 +41,8 @@ struct ath12k_generic_iter { #define IEEE80211_DISABLE_VHT_MCS_SUPPORT_0_11 BIT(24) #define ATH12K_CHAN_WIDTH_NUM 14 @@ -319,7 +319,7 @@ Acked-by: Jeff Johnson #define ATH12K_TX_POWER_MIN_VAL 0 --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c -@@ -525,6 +525,10 @@ ath12k_pull_mac_phy_cap_svc_ready_ext(st +@@ -537,6 +537,10 @@ ath12k_pull_mac_phy_cap_svc_ready_ext(st pdev_cap->he_mcs = le32_to_cpu(mac_caps->he_supp_mcs_5g); pdev_cap->tx_chain_mask = le32_to_cpu(mac_caps->tx_chain_mask_5g); pdev_cap->rx_chain_mask = le32_to_cpu(mac_caps->rx_chain_mask_5g); @@ -330,7 +330,7 @@ Acked-by: Jeff Johnson } else { return -EINVAL; } -@@ -1014,7 +1018,8 @@ static void ath12k_wmi_put_wmi_channel(s +@@ -1059,7 +1063,8 @@ static void ath12k_wmi_put_wmi_channel(s chan->band_center_freq2 = cpu_to_le32(center_freq1); @@ -342,7 +342,7 @@ Acked-by: Jeff Johnson else --- a/drivers/net/wireless/ath/ath12k/wmi.h +++ b/drivers/net/wireless/ath/ath12k/wmi.h -@@ -2290,6 +2290,21 @@ enum wmi_direct_buffer_module { +@@ -2328,6 +2328,21 @@ enum wmi_direct_buffer_module { WMI_DIRECT_BUF_MAX }; @@ -364,7 +364,7 @@ Acked-by: Jeff Johnson struct ath12k_wmi_pdev_band_arg { u32 pdev_id; u32 start_freq; -@@ -2606,6 +2621,12 @@ struct ath12k_wmi_hw_mode_cap_params { +@@ -2647,6 +2662,12 @@ struct ath12k_wmi_hw_mode_cap_params { } __packed; #define WMI_MAX_HECAP_PHY_SIZE (3) @@ -377,17 +377,3 @@ Acked-by: Jeff Johnson /* pdev_id is present in lower 16 bits of pdev_and_hw_link_ids in * ath12k_wmi_mac_phy_caps_params & ath12k_wmi_caps_ext_params. -@@ -2647,6 +2668,13 @@ struct ath12k_wmi_mac_phy_caps_params { - __le32 he_cap_info_2g_ext; - __le32 he_cap_info_5g_ext; - __le32 he_cap_info_internal; -+ __le32 wireless_modes; -+ __le32 low_2ghz_chan_freq; -+ __le32 high_2ghz_chan_freq; -+ __le32 low_5ghz_chan_freq; -+ __le32 high_5ghz_chan_freq; -+ __le32 nss_ratio; -+ - } __packed; - - struct ath12k_wmi_hal_reg_caps_ext_params { diff --git a/package/kernel/mac80211/patches/ath12k/104-9-wifi-ath12k-add-extended-NSS-bandwidth-support-for-160-MHz.patch b/package/kernel/mac80211/patches/ath12k/104-9-wifi-ath12k-add-extended-NSS-bandwidth-support-for-160-MHz.patch index fbace1f705..fd618f784f 100644 --- a/package/kernel/mac80211/patches/ath12k/104-9-wifi-ath12k-add-extended-NSS-bandwidth-support-for-160-MHz.patch +++ b/package/kernel/mac80211/patches/ath12k/104-9-wifi-ath12k-add-extended-NSS-bandwidth-support-for-160-MHz.patch @@ -132,7 +132,7 @@ Acked-by: Jeff Johnson --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c -@@ -2726,8 +2726,10 @@ static void ath12k_peer_assoc_h_he(struc +@@ -2644,8 +2644,10 @@ static void ath12k_peer_assoc_h_he(struc arg->peer_nss = min(link_sta->rx_nss, max_nss); if (arg->peer_phymode == MODE_11AX_HE160) { @@ -144,7 +144,7 @@ Acked-by: Jeff Johnson arg->peer_bw_rxnss_override = ATH12K_BW_NSS_MAP_ENABLE; if (!rx_nss) { -@@ -6912,6 +6914,12 @@ ath12k_create_vht_cap(struct ath12k *ar, +@@ -7465,6 +7467,12 @@ ath12k_create_vht_cap(struct ath12k *ar, vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(rxmcs_map); vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(txmcs_map); @@ -157,7 +157,7 @@ Acked-by: Jeff Johnson return vht_cap; } -@@ -7092,11 +7100,12 @@ static void ath12k_mac_set_hemcsmap(stru +@@ -7645,11 +7653,12 @@ static void ath12k_mac_set_hemcsmap(stru struct ieee80211_sta_he_cap *he_cap) { struct ieee80211_he_mcs_nss_supp *mcs_nss = &he_cap->he_mcs_nss_supp; @@ -173,7 +173,7 @@ Acked-by: Jeff Johnson for (i = 0; i < 8; i++) { if (i < ar->num_tx_chains && (ar->cfg_tx_chainmask >> cap->tx_chain_mask_shift) & BIT(i)) -@@ -7109,12 +7118,24 @@ static void ath12k_mac_set_hemcsmap(stru +@@ -7662,12 +7671,24 @@ static void ath12k_mac_set_hemcsmap(stru rxmcs_map |= IEEE80211_HE_MCS_SUPPORT_0_11 << (i * 2); else rxmcs_map |= IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2); diff --git a/package/kernel/mac80211/patches/ath12k/200-Revert-wifi-ath12k-convert-tasklet-to-BH-workqueue-f.patch b/package/kernel/mac80211/patches/ath12k/200-Revert-wifi-ath12k-convert-tasklet-to-BH-workqueue-f.patch index fb9cfd8891..9f435f92df 100644 --- a/package/kernel/mac80211/patches/ath12k/200-Revert-wifi-ath12k-convert-tasklet-to-BH-workqueue-f.patch +++ b/package/kernel/mac80211/patches/ath12k/200-Revert-wifi-ath12k-convert-tasklet-to-BH-workqueue-f.patch @@ -12,7 +12,7 @@ This reverts commit cdad737160571a98cc4933a62c9f2728e965ab27. --- a/drivers/net/wireless/ath/ath12k/ce.h +++ b/drivers/net/wireless/ath/ath12k/ce.h -@@ -148,7 +148,7 @@ struct ath12k_ce_pipe { +@@ -159,7 +159,7 @@ struct ath12k_ce_pipe { void (*send_cb)(struct ath12k_ce_pipe *pipe); void (*recv_cb)(struct ath12k_base *ab, struct sk_buff *skb); @@ -44,7 +44,7 @@ This reverts commit cdad737160571a98cc4933a62c9f2728e965ab27. return IRQ_HANDLED; } -@@ -683,7 +683,7 @@ static int ath12k_pci_config_irq(struct +@@ -684,7 +684,7 @@ static int ath12k_pci_config_irq(struct irq_idx = ATH12K_PCI_IRQ_CE0_OFFSET + i; @@ -53,7 +53,7 @@ This reverts commit cdad737160571a98cc4933a62c9f2728e965ab27. ret = request_irq(irq, ath12k_pci_ce_interrupt_handler, ab_pci->irq_flags, irq_name[irq_idx], -@@ -970,7 +970,7 @@ static void ath12k_pci_aspm_restore(stru +@@ -967,7 +967,7 @@ static void ath12k_pci_aspm_restore(stru PCI_EXP_LNKCTL_ASPMC); } @@ -62,7 +62,7 @@ This reverts commit cdad737160571a98cc4933a62c9f2728e965ab27. { int i; -@@ -980,7 +980,7 @@ static void ath12k_pci_cancel_workqueue( +@@ -977,7 +977,7 @@ static void ath12k_pci_cancel_workqueue( if (ath12k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR) continue; @@ -71,7 +71,7 @@ This reverts commit cdad737160571a98cc4933a62c9f2728e965ab27. } } -@@ -988,7 +988,7 @@ static void ath12k_pci_ce_irq_disable_sy +@@ -985,7 +985,7 @@ static void ath12k_pci_ce_irq_disable_sy { ath12k_pci_ce_irqs_disable(ab); ath12k_pci_sync_ce_irqs(ab); diff --git a/package/kernel/mac80211/patches/ath9k/509-ath9k-use-devm-for-irq-and-ioremap-resource.patch b/package/kernel/mac80211/patches/ath9k/509-ath9k-use-devm-for-irq-and-ioremap-resource.patch deleted file mode 100644 index 864238912a..0000000000 --- a/package/kernel/mac80211/patches/ath9k/509-ath9k-use-devm-for-irq-and-ioremap-resource.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 454255e44bf48d8498ac3413389513138ab57bf6 Mon Sep 17 00:00:00 2001 -From: Rosen Penev -Date: Sat, 4 Jan 2025 14:24:46 -0800 -Subject: [PATCH] wifi: ath9k: ahb: do ioremap resource in one step - -Simplifies probe slightly and adds extra error codes. - -Switching from devm_ioremap to the platform variant ends up calling -devm_request_mem_region, which reserves the memory region for the -various wmacs. Per board, there is only one wmac and after some fairly -thorough analysis, there are no overlapping memory regions between wmacs -and other devices on the ahb. - -Tested on a TP-Link Archer C7v2. - -Signed-off-by: Rosen Penev ---- - drivers/net/wireless/ath/ath9k/ahb.c | 13 +++---------- - 1 file changed, 3 insertions(+), 10 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/ahb.c -+++ b/drivers/net/wireless/ath/ath9k/ahb.c -@@ -74,7 +74,6 @@ static int ath_ahb_probe(struct platform - void __iomem *mem; - struct ath_softc *sc; - struct ieee80211_hw *hw; -- struct resource *res; - const struct platform_device_id *id = platform_get_device_id(pdev); - int irq; - int ret = 0; -@@ -86,16 +85,10 @@ static int ath_ahb_probe(struct platform - return -EINVAL; - } - -- res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -- if (res == NULL) { -- dev_err(&pdev->dev, "no memory resource found\n"); -- return -ENXIO; -- } -- -- mem = devm_ioremap(&pdev->dev, res->start, resource_size(res)); -- if (mem == NULL) { -+ mem = devm_platform_ioremap_resource(pdev, 0); -+ if (IS_ERR(mem)) { - dev_err(&pdev->dev, "ioremap failed\n"); -- return -ENOMEM; -+ return PTR_ERR(mem); - } - - irq = platform_get_irq(pdev, 0); diff --git a/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch index 4149e86e45..b92c19849e 100644 --- a/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch +++ b/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -845,6 +845,9 @@ static inline int ath9k_dump_btcoex(stru +@@ -844,6 +844,9 @@ static inline int ath9k_dump_btcoex(stru #ifdef CPTCFG_MAC80211_LEDS void ath_init_leds(struct ath_softc *sc); void ath_deinit_leds(struct ath_softc *sc); @@ -10,7 +10,7 @@ #else static inline void ath_init_leds(struct ath_softc *sc) { -@@ -981,6 +984,13 @@ void ath_ant_comb_scan(struct ath_softc +@@ -980,6 +983,13 @@ void ath_ant_comb_scan(struct ath_softc #define ATH9K_NUM_CHANCTX 2 /* supports 2 operating channels */ @@ -24,7 +24,7 @@ struct ath_softc { struct ieee80211_hw *hw; struct device *dev; -@@ -1036,9 +1046,8 @@ struct ath_softc { +@@ -1035,9 +1045,8 @@ struct ath_softc { spinlock_t chan_lock; #ifdef CPTCFG_MAC80211_LEDS diff --git a/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch b/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch index d7fe5b79f0..7b0dd850b1 100644 --- a/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch +++ b/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau #include "common.h" #include "debug.h" -@@ -1048,6 +1050,10 @@ struct ath_softc { +@@ -1047,6 +1049,10 @@ struct ath_softc { #ifdef CPTCFG_MAC80211_LEDS const char *led_default_trigger; struct list_head leds; diff --git a/package/kernel/mac80211/patches/brcm/860-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch b/package/kernel/mac80211/patches/brcm/860-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch index fe471923d2..9992ccfe37 100644 --- a/package/kernel/mac80211/patches/brcm/860-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch +++ b/package/kernel/mac80211/patches/brcm/860-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch @@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -984,8 +984,36 @@ static struct wireless_dev *brcmf_cfg802 +@@ -983,8 +983,36 @@ static struct wireless_dev *brcmf_cfg802 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_pub *drvr = cfg->pub; struct wireless_dev *wdev; diff --git a/package/kernel/mac80211/patches/brcm/870-02-rpi-6.12-brcmfmac-Prefer-a-ccode-from-OTP-over-nvram-file.patch b/package/kernel/mac80211/patches/brcm/870-02-rpi-6.12-brcmfmac-Prefer-a-ccode-from-OTP-over-nvram-file.patch index b9907f6129..9063bba847 100644 --- a/package/kernel/mac80211/patches/brcm/870-02-rpi-6.12-brcmfmac-Prefer-a-ccode-from-OTP-over-nvram-file.patch +++ b/package/kernel/mac80211/patches/brcm/870-02-rpi-6.12-brcmfmac-Prefer-a-ccode-from-OTP-over-nvram-file.patch @@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell #include #include #include -@@ -8215,31 +8216,45 @@ static void brcmf_cfg80211_reg_notifier( +@@ -8223,31 +8224,45 @@ static void brcmf_cfg80211_reg_notifier( struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0); struct brcmf_pub *drvr = cfg->pub; struct brcmf_fil_country_le ccreq; diff --git a/package/kernel/mac80211/patches/brcm/870-03-rpi-6.12-brcmfmac-Increase-power-saving-delay-to-2s.patch b/package/kernel/mac80211/patches/brcm/870-03-rpi-6.12-brcmfmac-Increase-power-saving-delay-to-2s.patch index a05171be48..089c0ea158 100644 --- a/package/kernel/mac80211/patches/brcm/870-03-rpi-6.12-brcmfmac-Increase-power-saving-delay-to-2s.patch +++ b/package/kernel/mac80211/patches/brcm/870-03-rpi-6.12-brcmfmac-Increase-power-saving-delay-to-2s.patch @@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -3342,6 +3342,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip +@@ -3343,6 +3343,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip bphy_err(drvr, "error (%d)\n", err); } diff --git a/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch b/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch index 54cf073229..74a373ec62 100644 --- a/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch +++ b/package/kernel/mac80211/patches/brcm/870-04-rpi-6.12-brcmfmac-non-upstream-support-DS1-exit-firmware-re-download.patch @@ -121,9 +121,9 @@ JIRA: SWWLAN-136577 { struct brcmf_bus *bus_if = dev_get_drvdata(dev); struct brcmf_pub *drvr = bus_if->drvr; -@@ -1363,10 +1363,13 @@ int brcmf_attach(struct device *dev) - brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG, - brcmf_psm_watchdog_notify); +@@ -1365,10 +1365,13 @@ int brcmf_attach(struct device *dev) + + brcmf_fwvid_get_cfg80211_ops(drvr); - ret = brcmf_bus_started(drvr, drvr->ops); - if (ret != 0) { @@ -151,17 +151,17 @@ JIRA: SWWLAN-136577 #undef pr_fmt --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h -@@ -94,7 +94,8 @@ struct brcmf_cfg80211_info; - BRCMF_ENUM_DEF(FIFO_CREDIT_MAP, 74) \ - BRCMF_ENUM_DEF(ACTION_FRAME_RX, 75) \ - BRCMF_ENUM_DEF(TDLS_PEER_EVENT, 92) \ -- BRCMF_ENUM_DEF(BCMC_CREDIT_SUPPORT, 127) -+ BRCMF_ENUM_DEF(BCMC_CREDIT_SUPPORT, 127) \ +@@ -98,7 +98,8 @@ struct brcmf_cfg80211_info; + BRCMF_ABSTRACT_ENUM_DEF(EXT_AUTH_REQ, 0) \ + BRCMF_ABSTRACT_ENUM_DEF(EXT_AUTH_FRAME_RX, 1) \ + BRCMF_ABSTRACT_ENUM_DEF(MGMT_FRAME_TXSTATUS, 2) \ +- BRCMF_ABSTRACT_ENUM_DEF(MGMT_FRAME_OFFCHAN_DONE, 3) ++ BRCMF_ABSTRACT_ENUM_DEF(MGMT_FRAME_OFFCHAN_DONE, 3) \ + BRCMF_ENUM_DEF(ULP, 146) #define BRCMF_ENUM_DEF(id, val) \ BRCMF_E_##id = (val), -@@ -102,6 +103,12 @@ struct brcmf_cfg80211_info; +@@ -106,6 +107,12 @@ struct brcmf_cfg80211_info; /* firmware event codes sent by the dongle */ enum brcmf_fweh_event_code { BRCMF_FWEH_EVENT_ENUM_DEFLIST @@ -174,7 +174,7 @@ JIRA: SWWLAN-136577 }; #undef BRCMF_ENUM_DEF -@@ -280,6 +287,28 @@ struct brcmf_if_event { +@@ -284,6 +291,28 @@ struct brcmf_if_event { u8 role; }; @@ -692,7 +692,7 @@ JIRA: SWWLAN-136577 #endif /* BRCMFMAC_SDIO_H */ --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c -@@ -1202,7 +1202,7 @@ static void brcmf_usb_probe_phase2(struc +@@ -1211,7 +1211,7 @@ static void brcmf_usb_probe_phase2(struc goto error; /* Attach to the common driver interface */ @@ -701,7 +701,7 @@ JIRA: SWWLAN-136577 if (ret) goto error; -@@ -1282,7 +1282,7 @@ static int brcmf_usb_probe_cb(struct brc +@@ -1291,7 +1291,7 @@ static int brcmf_usb_probe_cb(struct brc ret = brcmf_alloc(devinfo->dev, devinfo->settings); if (ret) goto fail; diff --git a/package/kernel/mac80211/patches/brcm/870-05-rpi-6.12-brcmfmac-Fix-interoperating-DPP-and-other-encryption.patch b/package/kernel/mac80211/patches/brcm/870-05-rpi-6.12-brcmfmac-Fix-interoperating-DPP-and-other-encryption.patch index 285eb99fac..23a9c62b18 100644 --- a/package/kernel/mac80211/patches/brcm/870-05-rpi-6.12-brcmfmac-Fix-interoperating-DPP-and-other-encryption.patch +++ b/package/kernel/mac80211/patches/brcm/870-05-rpi-6.12-brcmfmac-Fix-interoperating-DPP-and-other-encryption.patch @@ -25,7 +25,7 @@ Signed-off-by: Chi-hsien Lin --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2495,43 +2495,50 @@ brcmf_cfg80211_connect(struct wiphy *wip +@@ -2496,43 +2496,50 @@ brcmf_cfg80211_connect(struct wiphy *wip goto done; } diff --git a/package/kernel/mac80211/patches/brcm/871-brcmfmac-disable-dump_survey-on-bcm2835.patch b/package/kernel/mac80211/patches/brcm/871-brcmfmac-disable-dump_survey-on-bcm2835.patch index be9e39e71a..8bd63cd2d5 100644 --- a/package/kernel/mac80211/patches/brcm/871-brcmfmac-disable-dump_survey-on-bcm2835.patch +++ b/package/kernel/mac80211/patches/brcm/871-brcmfmac-disable-dump_survey-on-bcm2835.patch @@ -9,7 +9,7 @@ Signed-off-by: Álvaro Fernández Rojas --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -7994,6 +7994,7 @@ static s32 brcmf_translate_country_code( +@@ -8002,6 +8002,7 @@ static s32 brcmf_translate_country_code( return 0; } @@ -17,7 +17,7 @@ Signed-off-by: Álvaro Fernández Rojas static int brcmf_parse_dump_obss(char *buf, struct brcmf_dump_survey *survey) { -@@ -8216,6 +8217,7 @@ exit: +@@ -8224,6 +8225,7 @@ exit: brcmf_set_mpc(ifp, 1); return err; } @@ -25,7 +25,7 @@ Signed-off-by: Álvaro Fernández Rojas static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy, struct regulatory_request *req) -@@ -8382,8 +8384,10 @@ struct brcmf_cfg80211_info *brcmf_cfg802 +@@ -8390,8 +8392,10 @@ struct brcmf_cfg80211_info *brcmf_cfg802 if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_WOWL_GTK)) ops->set_rekey_data = brcmf_cfg80211_set_rekey_data; #endif diff --git a/package/kernel/mac80211/patches/build/100-backports-drop-QRTR-and-MHI.patch b/package/kernel/mac80211/patches/build/100-backports-drop-QRTR-and-MHI.patch index 52060f434b..c9cac8284f 100644 --- a/package/kernel/mac80211/patches/build/100-backports-drop-QRTR-and-MHI.patch +++ b/package/kernel/mac80211/patches/build/100-backports-drop-QRTR-and-MHI.patch @@ -54,7 +54,7 @@ Signed-off-by: Robert Marko + depends on MHI_BUS + depends on QRTR + depends on QRTR_MHI - select PCI_PWRCTL_PWRSEQ if HAVE_PWRCTL + select PCI_PWRCTRL_PWRSEQ if HAVE_PWRCTRL help This module adds support for PCIE bus --- a/local-symbols diff --git a/package/kernel/mac80211/patches/build/140-trace_backport.patch b/package/kernel/mac80211/patches/build/140-trace_backport.patch index 2d25f1c5c3..6721128587 100644 --- a/package/kernel/mac80211/patches/build/140-trace_backport.patch +++ b/package/kernel/mac80211/patches/build/140-trace_backport.patch @@ -634,7 +634,7 @@ TP_printk("%s", __get_str(msg)) --- a/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h -@@ -87,7 +87,11 @@ static inline void trace_ ## name(proto) +@@ -88,7 +88,11 @@ static inline void trace_ ## name(proto) #endif #define DEV_ENTRY __string(dev, dev_name(dev)) diff --git a/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch b/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch index 2c5235e49f..c296c34671 100644 --- a/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch +++ b/package/kernel/mac80211/patches/build/150-ath_iommu_paging_domain_revert.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c -@@ -1635,10 +1635,10 @@ static int ath10k_fw_init(struct ath10k +@@ -1638,10 +1638,10 @@ static int ath10k_fw_init(struct ath10k ar_snoc->fw.dev = &pdev->dev; diff --git a/package/kernel/mac80211/patches/build/200-iwlwifi_thermal_backport.patch b/package/kernel/mac80211/patches/build/200-iwlwifi_thermal_backport.patch index a8ffce1e30..4180682e81 100644 --- a/package/kernel/mac80211/patches/build/200-iwlwifi_thermal_backport.patch +++ b/package/kernel/mac80211/patches/build/200-iwlwifi_thermal_backport.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c -@@ -638,8 +638,13 @@ static int iwl_mvm_tzone_get_temp(struct +@@ -626,8 +626,13 @@ static int iwl_mvm_tzone_get_temp(struct return 0; } @@ -14,7 +14,7 @@ { struct iwl_mvm *mvm = thermal_zone_device_priv(device); -@@ -682,13 +687,23 @@ static void iwl_mvm_thermal_zone_registe +@@ -670,13 +675,23 @@ static void iwl_mvm_thermal_zone_registe for (i = 0 ; i < IWL_MAX_DTS_TRIPS; i++) { mvm->tz_device.trips[i].temperature = THERMAL_TEMP_INVALID; mvm->tz_device.trips[i].type = THERMAL_TRIP_PASSIVE; diff --git a/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch b/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch index 031cc183ca..9e027fecb6 100644 --- a/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch +++ b/package/kernel/mac80211/patches/build/210-wireless_netns_local_backport.patch @@ -1,43 +1,54 @@ --- a/net/wireless/core.c +++ b/net/wireless/core.c -@@ -162,11 +162,15 @@ int cfg80211_switch_netns(struct cfg8021 +@@ -162,11 +162,19 @@ int cfg80211_switch_netns(struct cfg8021 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { if (!wdev->netdev) continue; -+#if LINUX_VERSION_IS_GEQ(6,12,0) - wdev->netdev->netns_local = false; +- wdev->netdev->netns_immutable = false; ++#if LINUX_VERSION_IS_GEQ(6,15,0) ++ wdev->netdev->netns_immutable = true; ++#elif LINUX_VERSION_IS_GEQ(6,12,0) ++ wdev->netdev->netns_local = true; +#endif err = dev_change_net_namespace(wdev->netdev, net, "wlan%d"); if (err) break; -+#if LINUX_VERSION_IS_GEQ(6,12,0) - wdev->netdev->netns_local = true; ++#if LINUX_VERSION_IS_GEQ(6,15,0) + wdev->netdev->netns_immutable = true; ++#elif LINUX_VERSION_IS_GEQ(6,12,0) ++ wdev->netdev->netns_local = true; +#endif } if (err) { -@@ -178,11 +182,15 @@ int cfg80211_switch_netns(struct cfg8021 +@@ -178,11 +186,19 @@ int cfg80211_switch_netns(struct cfg8021 list) { if (!wdev->netdev) continue; -+#if LINUX_VERSION_IS_GEQ(6,12,0) - wdev->netdev->netns_local = false; ++#if LINUX_VERSION_IS_GEQ(6,15,0) + wdev->netdev->netns_immutable = false; ++#elif LINUX_VERSION_IS_GEQ(6,12,0) ++ wdev->netdev->netns_local = false; +#endif err = dev_change_net_namespace(wdev->netdev, net, "wlan%d"); WARN_ON(err); -+#if LINUX_VERSION_IS_GEQ(6,12,0) - wdev->netdev->netns_local = true; ++#if LINUX_VERSION_IS_GEQ(6,15,0) + wdev->netdev->netns_immutable = true; ++#elif LINUX_VERSION_IS_GEQ(6,12,0) ++ wdev->netdev->netns_local = true; +#endif } return err; -@@ -1520,7 +1528,9 @@ static int cfg80211_netdev_notifier_call +@@ -1521,7 +1537,11 @@ static int cfg80211_netdev_notifier_call SET_NETDEV_DEVTYPE(dev, &wiphy_type); wdev->netdev = dev; /* can only change netns with wiphy */ -+#if LINUX_VERSION_IS_GEQ(6,12,0) - dev->netns_local = true; ++#if LINUX_VERSION_IS_GEQ(6,15,0) + dev->netns_immutable = true; ++#elif LINUX_VERSION_IS_GEQ(6,12,0) ++ dev->netns_local = true; +#endif cfg80211_init_wdev(wdev); diff --git a/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch b/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch index 1a093a77d9..1453bdaa15 100644 --- a/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch +++ b/package/kernel/mac80211/patches/build/220-brcmfmac_usb_driver_backport.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c -@@ -1579,7 +1579,11 @@ static int brcmf_usb_reset_device(struct +@@ -1588,7 +1588,11 @@ static int brcmf_usb_reset_device(struct void brcmf_usb_exit(void) { diff --git a/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch b/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch index 73a082a10c..ea6461dccc 100644 --- a/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch +++ b/package/kernel/mac80211/patches/build/230-fix-init_vqs-build-error-on-kernel-6.6.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/virtual/mac80211_hwsim.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim.c -@@ -6670,6 +6670,7 @@ static void hwsim_virtio_rx_done(struct +@@ -6672,6 +6672,7 @@ static void hwsim_virtio_rx_done(struct static int init_vqs(struct virtio_device *vdev) { @@ -8,7 +8,7 @@ struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = { [HWSIM_VQ_TX] = { "tx", hwsim_virtio_tx_done }, [HWSIM_VQ_RX] = { "rx", hwsim_virtio_rx_done }, -@@ -6677,6 +6678,19 @@ static int init_vqs(struct virtio_device +@@ -6679,6 +6680,19 @@ static int init_vqs(struct virtio_device return virtio_find_vqs(vdev, HWSIM_NUM_VQS, hwsim_vqs, vqs_info, NULL); diff --git a/package/kernel/mac80211/patches/build/240-realtek-rtw88-BH-workqueue.patch b/package/kernel/mac80211/patches/build/240-realtek-rtw88-BH-workqueue.patch index 0fb34e83cb..53631859f0 100644 --- a/package/kernel/mac80211/patches/build/240-realtek-rtw88-BH-workqueue.patch +++ b/package/kernel/mac80211/patches/build/240-realtek-rtw88-BH-workqueue.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c -@@ -909,7 +909,11 @@ static int rtw_usb_init_rx(struct rtw_de +@@ -965,7 +965,11 @@ static int rtw_usb_init_rx(struct rtw_de struct sk_buff *rx_skb; int i; diff --git a/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch b/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch index 523b5c67f4..1e1b03514b 100644 --- a/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch +++ b/package/kernel/mac80211/patches/build/300-backports-handle-genlmsg_multicast_allns-upstream-ba.patch @@ -17,8 +17,8 @@ Signed-off-by: Christian Marangi --- a/backport-include/net/genetlink.h +++ b/backport-include/net/genetlink.h -@@ -172,4 +172,15 @@ static inline int genlmsg_parse(const st - } +@@ -192,4 +192,15 @@ int backport_genlmsg_multicast_allns(con + #define genlmsg_multicast_allns LINUX_BACKPORT(genlmsg_multicast_allns) #endif /* LINUX_VERSION_IS_LESS(5,2,0) */ +#if LINUX_VERSION_IN_RANGE(5,15,0,5,15,169) || \ diff --git a/package/kernel/mac80211/patches/build/410-mac80211-convert-short-fops-to-debugfs-files.patch b/package/kernel/mac80211/patches/build/410-mac80211-convert-short-fops-to-debugfs-files.patch index dcaa086cf5..838f0ffeee 100644 --- a/package/kernel/mac80211/patches/build/410-mac80211-convert-short-fops-to-debugfs-files.patch +++ b/package/kernel/mac80211/patches/build/410-mac80211-convert-short-fops-to-debugfs-files.patch @@ -173,7 +173,7 @@ .llseek = generic_file_llseek, \ } -@@ -448,8 +450,9 @@ STA_OPS_RW(agg_status); +@@ -442,8 +444,9 @@ STA_OPS_RW(agg_status); /* link sta attributes */ #define LINK_STA_OPS(name) \ diff --git a/package/kernel/mac80211/patches/mwl/801-libertas-configure-sysfs-links.patch b/package/kernel/mac80211/patches/mwl/801-libertas-configure-sysfs-links.patch index e6111871c0..4a4a9b293d 100644 --- a/package/kernel/mac80211/patches/mwl/801-libertas-configure-sysfs-links.patch +++ b/package/kernel/mac80211/patches/mwl/801-libertas-configure-sysfs-links.patch @@ -11,7 +11,7 @@ err_wiphy_new: --- a/drivers/net/wireless/marvell/libertas/main.c +++ b/drivers/net/wireless/marvell/libertas/main.c -@@ -935,6 +935,7 @@ struct lbs_private *lbs_add_card(void *c +@@ -852,6 +852,7 @@ struct lbs_private *lbs_add_card(void *c goto err_adapter; } diff --git a/package/kernel/mac80211/patches/mwl/950-mwifiex-Print-stringified-name-of-command-in-error-l.patch b/package/kernel/mac80211/patches/mwl/950-mwifiex-Print-stringified-name-of-command-in-error-l.patch index 1a3be12de0..fc57ff0b77 100644 --- a/package/kernel/mac80211/patches/mwl/950-mwifiex-Print-stringified-name-of-command-in-error-l.patch +++ b/package/kernel/mac80211/patches/mwl/950-mwifiex-Print-stringified-name-of-command-in-error-l.patch @@ -105,7 +105,7 @@ Signed-off-by: Pali Rohár /* * This function initializes a command node. * -@@ -193,8 +272,8 @@ static int mwifiex_dnld_cmd_to_fw(struct +@@ -191,8 +270,8 @@ static int mwifiex_dnld_cmd_to_fw(struct cmd_code != HostCmd_CMD_FUNC_SHUTDOWN && cmd_code != HostCmd_CMD_FUNC_INIT) { mwifiex_dbg(adapter, ERROR, @@ -116,7 +116,7 @@ Signed-off-by: Pali Rohár mwifiex_recycle_cmd_node(adapter, cmd_node); queue_work(adapter->workqueue, &adapter->main_work); return -1; -@@ -655,8 +734,8 @@ int mwifiex_send_cmd(struct mwifiex_priv +@@ -651,8 +730,8 @@ int mwifiex_send_cmd(struct mwifiex_priv /* Return error, since the command preparation failed */ if (ret) { mwifiex_dbg(adapter, ERROR, @@ -127,19 +127,7 @@ Signed-off-by: Pali Rohár mwifiex_insert_cmd_to_free_q(adapter, cmd_node); return -1; } -@@ -904,8 +983,9 @@ int mwifiex_process_cmdresp(struct mwifi - if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) { - if (ret) { - mwifiex_dbg(adapter, ERROR, -- "%s: cmd %#x failed during\t" -- "initialization\n", __func__, cmdresp_no); -+ "%s: cmd %s (%#x) failed during\t" -+ "initialization\n", __func__, -+ mwifiex_cmd_to_str(cmdresp_no), cmdresp_no); - mwifiex_init_fw_complete(adapter); - return -1; - } else if (adapter->last_init_cmd == cmdresp_no) -@@ -1287,8 +1367,8 @@ mwifiex_process_sleep_confirm_resp(struc +@@ -1262,8 +1341,8 @@ mwifiex_process_sleep_confirm_resp(struc if (command != HostCmd_CMD_802_11_PS_MODE_ENH) { mwifiex_dbg(adapter, ERROR, @@ -152,7 +140,7 @@ Signed-off-by: Pali Rohár --- a/drivers/net/wireless/marvell/mwifiex/main.h +++ b/drivers/net/wireless/marvell/mwifiex/main.h -@@ -1096,6 +1096,8 @@ void mwifiex_cancel_all_pending_cmd(stru +@@ -1090,6 +1090,8 @@ void mwifiex_cancel_all_pending_cmd(stru void mwifiex_cancel_pending_scan_cmd(struct mwifiex_adapter *adapter); void mwifiex_cancel_scan(struct mwifiex_adapter *adapter); diff --git a/package/kernel/mac80211/patches/rt2x00/110-wifi-rt2x00-fix-remove-callback-type-mismatch.patch b/package/kernel/mac80211/patches/rt2x00/110-wifi-rt2x00-fix-remove-callback-type-mismatch.patch deleted file mode 100644 index 0c9bb76cb5..0000000000 --- a/package/kernel/mac80211/patches/rt2x00/110-wifi-rt2x00-fix-remove-callback-type-mismatch.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: Felix Fietkau -Date: Sun, 6 Jul 2025 11:15:13 +0200 -Subject: [PATCH] wifi: rt2x00: fix remove callback type mismatch - -The function is used as remove callback for a platform driver. -It was missed during the conversion from int to void - -Fixes: 0edb555a65d1 ("platform: Make platform_driver::remove() return void") -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00soc.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00soc.c -@@ -108,7 +108,7 @@ exit_free_device: - } - EXPORT_SYMBOL_GPL(rt2x00soc_probe); - --int rt2x00soc_remove(struct platform_device *pdev) -+void rt2x00soc_remove(struct platform_device *pdev) - { - struct ieee80211_hw *hw = platform_get_drvdata(pdev); - struct rt2x00_dev *rt2x00dev = hw->priv; -@@ -119,8 +119,6 @@ int rt2x00soc_remove(struct platform_dev - rt2x00lib_remove_dev(rt2x00dev); - rt2x00soc_free_reg(rt2x00dev); - ieee80211_free_hw(hw); -- -- return 0; - } - EXPORT_SYMBOL_GPL(rt2x00soc_remove); - ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00soc.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00soc.h -@@ -17,7 +17,7 @@ - * SoC driver handlers. - */ - int rt2x00soc_probe(struct platform_device *pdev, const struct rt2x00_ops *ops); --int rt2x00soc_remove(struct platform_device *pdev); -+void rt2x00soc_remove(struct platform_device *pdev); - #ifdef CONFIG_PM - int rt2x00soc_suspend(struct platform_device *pdev, pm_message_t state); - int rt2x00soc_resume(struct platform_device *pdev); diff --git a/package/kernel/mac80211/patches/rt2x00/602-01-wifi-rt2x00-Add-support-for-loading-EEPROM-from-user.patch b/package/kernel/mac80211/patches/rt2x00/602-01-wifi-rt2x00-Add-support-for-loading-EEPROM-from-user.patch index 957da81d05..39d8edb998 100644 --- a/package/kernel/mac80211/patches/rt2x00/602-01-wifi-rt2x00-Add-support-for-loading-EEPROM-from-user.patch +++ b/package/kernel/mac80211/patches/rt2x00/602-01-wifi-rt2x00-Add-support-for-loading-EEPROM-from-user.patch @@ -21,7 +21,7 @@ Signed-off-by: Christian Marangi --- a/local-symbols +++ b/local-symbols -@@ -334,6 +334,7 @@ RT2X00_LIB_FIRMWARE= +@@ -336,6 +336,7 @@ RT2X00_LIB_FIRMWARE= RT2X00_LIB_CRYPTO= RT2X00_LIB_LEDS= RT2X00_LIB_DEBUGFS= 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 deleted file mode 100644 index ff04eead91..0000000000 --- a/package/kernel/mac80211/patches/rtl/065-v6.15-wifi-rtw88-Don-t-use-static-local-variable-in-rtw882.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 0d1d165eff9d6cfad51113e18d9d8c9a8de27d6d Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index a2404bafe8..0000000000 --- a/package/kernel/mac80211/patches/rtl/066-v6.15-wifi-rtw88-Fix-a-typo-of-debug-message-in-rtw8723d_i.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 105dc94233e48ff30e572a50fb39d7e3dec810fa Mon Sep 17 00:00:00 2001 -From: Andrew Kreimer -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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/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 deleted file mode 100644 index dec5d5986e..0000000000 --- a/package/kernel/mac80211/patches/rtl/069-v6.15-wifi-rtw88-Extend-struct-rtw_pwr_track_tbl-for-RTL88.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 62f726848da42554e6d270dfda17ed19bfa3456f Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -@@ -1131,14 +1131,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 deleted file mode 100644 index 393c75453f..0000000000 --- a/package/kernel/mac80211/patches/rtl/070-v6.15-wifi-rtw88-Extend-rf_base_addr-and-rf_sipi_addr-for-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d80e7d9b6ba38102f92559dbb647330216ea290b Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -@@ -1240,8 +1240,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/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 deleted file mode 100644 index fe16a7ec20..0000000000 --- a/package/kernel/mac80211/patches/rtl/072-v6.15-wifi-rtw88-Constify-some-more-structs-and-arrays.patch +++ /dev/null @@ -1,213 +0,0 @@ -From e66f3b5c7535bb508e9c561a047b32de4ddc1cda Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -@@ -881,7 +881,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 deleted file mode 100644 index 4a6d512154..0000000000 --- a/package/kernel/mac80211/patches/rtl/073-v6.15-wifi-rtw88-Rename-RTW_RATE_SECTION_MAX-to-RTW_RATE_S.patch +++ /dev/null @@ -1,227 +0,0 @@ -From ad815f3920035a0c5b6ffe45bddc9fb308194b49 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index fc9aa3b971..0000000000 --- a/package/kernel/mac80211/patches/rtl/074-v6.15-wifi-rtw88-Extend-TX-power-stuff-for-3-4-spatial-str.patch +++ /dev/null @@ -1,369 +0,0 @@ -From 0f98a59596579b34932c06aec7d52c1e835fa1f0 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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/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 deleted file mode 100644 index a1ca98f8b6..0000000000 --- a/package/kernel/mac80211/patches/rtl/081-v6.15-wifi-rtw88-Fix-rtw_rx_phy_stat-for-RTL8814AU.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 053a7aace0207593776c729f229d87f1be464b98 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 2ac27f39e7..0000000000 --- a/package/kernel/mac80211/patches/rtl/082-v6.15-wifi-rtw88-Extend-rtw_phy_config_swing_table-for-RTL.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 8b42c46cf6656ef3c2f6d1ec0f113753c6875712 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index d34d72a0fb..0000000000 --- a/package/kernel/mac80211/patches/rtl/083-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_phy_info-for-RTL88.patch +++ /dev/null @@ -1,86 +0,0 @@ -From cfebabdd351e9cbafdc99cb198db482208ec5ad9 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 75fff03ed4..0000000000 --- a/package/kernel/mac80211/patches/rtl/084-v6.15-wifi-rtw88-Extend-rtw_debugfs_get_tx_pwr_tbl-for-RTL.patch +++ /dev/null @@ -1,65 +0,0 @@ -From c374281f828545b3698cf936b584249c2f9e40c5 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index d14f1eae4e..0000000000 --- a/package/kernel/mac80211/patches/rtl/085-v6.15-wifi-rtw88-Add-some-definitions-for-RTL8814AU.patch +++ /dev/null @@ -1,200 +0,0 @@ -From 679ec431477cdb68d1cab068c008da0de7f842ef Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 6f42855c21..0000000000 --- a/package/kernel/mac80211/patches/rtl/086-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-1-2.patch +++ /dev/null @@ -1,12573 +0,0 @@ -From f4debfcb1b3c14a28ec157a41e0b98be72e554a0 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 56402a4ad3..0000000000 --- a/package/kernel/mac80211/patches/rtl/087-v6.15-wifi-rtw88-Add-rtw8814a_table.c-part-2-2.patch +++ /dev/null @@ -1,11450 +0,0 @@ -From e38246889cc9f8497c8d7413b73856ae1634322d Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 3d8ccd8d28..0000000000 --- a/package/kernel/mac80211/patches/rtl/088-v6.15-wifi-rtw88-Add-rtw8814a.-c-h.patch +++ /dev/null @@ -1,2343 +0,0 @@ -From 1a75457846424b77978d0ba1feb836913ed60637 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -+#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 "); -+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 deleted file mode 100644 index 0aa9a90360..0000000000 --- a/package/kernel/mac80211/patches/rtl/089-v6.15-wifi-rtw88-Add-rtw8814ae.c.patch +++ /dev/null @@ -1,50 +0,0 @@ -From dad8e879310211c1e02f09c35f169388bccbfa42 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -+#include -+#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 "); -+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 deleted file mode 100644 index b83174d73e..0000000000 --- a/package/kernel/mac80211/patches/rtl/090-v6.15-wifi-rtw88-Add-rtw8814au.c.patch +++ /dev/null @@ -1,73 +0,0 @@ -From bad060e8a425182809bfc2586a2e7f5ccd1a994d Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -+#include -+#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 "); -+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 deleted file mode 100644 index 4bb3253d50..0000000000 --- a/package/kernel/mac80211/patches/rtl/091-v6.15-wifi-rtw88-Add-__nonstring-annotations-for-untermina.patch +++ /dev/null @@ -1,34 +0,0 @@ -From d58ad77d5cc2a6d04db622a898e54d93fc7002a2 Mon Sep 17 00:00:00 2001 -From: Kees Cook -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 -Cc: Johannes Berg -Cc: linux-wireless@vger.kernel.org -Signed-off-by: Kees Cook -Signed-off-by: Ping-Ke Shih -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/092-v6.15-wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch b/package/kernel/mac80211/patches/rtl/092-v6.15-wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch deleted file mode 100644 index 0b7d5d7204..0000000000 --- a/package/kernel/mac80211/patches/rtl/092-v6.15-wifi-rtw88-Enable-the-new-RTL8814AE-RTL8814AU-driver.patch +++ /dev/null @@ -1,130 +0,0 @@ -From deb3ddeb18652118956fb581a39ac299e1ee5623 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -@@ -1138,6 +1138,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 -@@ -1183,6 +1186,12 @@ 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 ---- 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 -@@ -375,6 +375,7 @@ RTW88_8821C= - RTW88_88XXA= - RTW88_8821A= - RTW88_8812A= -+RTW88_8814A= - RTW88_8822BE= - RTW88_8822BS= - RTW88_8822BU= -@@ -390,6 +391,8 @@ RTW88_8821CS= - RTW88_8821CU= - RTW88_8821AU= - RTW88_8812AU= -+RTW88_8814AE= -+RTW88_8814AU= - RTW88_DEBUG= - RTW88_DEBUGFS= - RTW88_LEDS= 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 deleted file mode 100644 index 9852bdff94..0000000000 --- a/package/kernel/mac80211/patches/rtl/093-v6.16-wifi-rtw88-sdio-Remove-redundant-flush_workqueue-cal.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 5c4cf36c538bb2714e43654e365cb77b19c4a93e Mon Sep 17 00:00:00 2001 -From: Chen Ni -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 -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index f819b8d955..0000000000 --- a/package/kernel/mac80211/patches/rtl/094-v6.16-wifi-rtw88-usb-Remove-redundant-flush_workqueue-call.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 625fbc16524a45488f6eb8561d98b3328efe79cd Mon Sep 17 00:00:00 2001 -From: Chen Ni -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 -Signed-off-by: Ping-Ke Shih -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 -@@ -952,7 +952,6 @@ static void rtw_usb_deinit_rx(struct rtw - - skb_queue_purge(&rtwusb->rx_queue); - -- flush_workqueue(rtwusb->rxwq); - destroy_workqueue(rtwusb->rxwq); - - skb_queue_purge(&rtwusb->rx_free_queue); -@@ -981,7 +980,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 deleted file mode 100644 index f4d79bdae3..0000000000 --- a/package/kernel/mac80211/patches/rtl/095-v6.16-wifi-rtw88-usb-Enable-switching-the-RTL8814AU-to-USB.patch +++ /dev/null @@ -1,32 +0,0 @@ -From bf1103654df99d50724a022c8b9fca8908a86f50 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -@@ -1096,7 +1096,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 deleted file mode 100644 index ef5c3db77a..0000000000 --- a/package/kernel/mac80211/patches/rtl/096-v6.16-wifi-rtw88-usb-Enable-RX-aggregation-for-RTL8814AU.patch +++ /dev/null @@ -1,28 +0,0 @@ -From dcbb7bb3a364f218411761e2e5ee2f6818d9bdfc Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 -@@ -866,6 +866,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 deleted file mode 100644 index bdac02c8c6..0000000000 --- a/package/kernel/mac80211/patches/rtl/097-v6.16-wifi-rtw88-Set-AMPDU-factor-to-hardware-for-RTL8814A.patch +++ /dev/null @@ -1,192 +0,0 @@ -From 0d2a88690e583168effb03c64fd217a323b2c444 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 1b030761d3..0000000000 --- a/package/kernel/mac80211/patches/rtl/098-v6.16-wifi-rtw88-Don-t-set-SUPPORTS_AMSDU_IN_AMPDU-for-RTL.patch +++ /dev/null @@ -1,169 +0,0 @@ -From b8d49bb8d16ae7dde8e05b275d6e3b8bbf27f011 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 5082d77c5e..0000000000 --- a/package/kernel/mac80211/patches/rtl/099-v6.16-wifi-rtw88-Fix-the-module-names-printed-in-dmesg.patch +++ /dev/null @@ -1,230 +0,0 @@ -From 581cf3a9cb61daae1009c2380b228f40177046d8 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index ae2d2f5cff..0000000000 --- a/package/kernel/mac80211/patches/rtl/100-v6.16-wifi-rtw88-sdio-map-mgmt-frames-to-queue-TX_DESC_QSE.patch +++ /dev/null @@ -1,36 +0,0 @@ -From b2effcdc237979dcc533d446a792fc54fd0e1213 Mon Sep 17 00:00:00 2001 -From: Zhen XIN -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 -Reviewed-by: Martin Blumenstingl -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index aa85137ae2..0000000000 --- a/package/kernel/mac80211/patches/rtl/101-v6.16-wifi-rtw88-sdio-call-rtw_sdio_indicate_tx_status-unc.patch +++ /dev/null @@ -1,37 +0,0 @@ -From fc5f5a0ec463ae6a07850428bd3082947e01d276 Mon Sep 17 00:00:00 2001 -From: Zhen XIN -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 -Reviewed-by: Martin Blumenstingl -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 87d72bf88b..0000000000 --- a/package/kernel/mac80211/patches/rtl/102-v6.16-wifi-rtw88-do-not-ignore-hardware-read-error-during-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 20d3c19bd8f9b498173c198eadf54580c8caa336 Mon Sep 17 00:00:00 2001 -From: Dmitry Antipov -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 -Signed-off-by: Dmitry Antipov -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 901e471508..0000000000 --- a/package/kernel/mac80211/patches/rtl/103-v6.16-wifi-rtw88-Fix-RX-aggregation-settings-for-RTL8723DS.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0ffa1ba81b35ba147c9df6206a61499a156b0128 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index d994a6aa69..0000000000 --- a/package/kernel/mac80211/patches/rtl/104-v6.16-wifi-rtw88-Handle-RTL8723D-S-with-blank-efuse.patch +++ /dev/null @@ -1,198 +0,0 @@ -From 2c17afde9ff6713f3e080ed1ea1a4bd7480be9aa Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 8321ca8c94..0000000000 --- a/package/kernel/mac80211/patches/rtl/105-v6.16-wifi-rtw88-rtw8822bu-VID-PID-for-BUFFALO-WI-U2-866DM.patch +++ /dev/null @@ -1,27 +0,0 @@ -From b7f0cc647e52296a3d4dd727b6479dcd6d7e364e Mon Sep 17 00:00:00 2001 -From: Yuuki NAGAO -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index 9ed1162ab8..0000000000 --- a/package/kernel/mac80211/patches/rtl/106-v6.16-wifi-rtw88-usb-Reduce-control-message-timeout-to-500.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 490340faddea461319652ce36dbc7c1b4482c35e Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 deleted file mode 100644 index d3d660edb9..0000000000 --- a/package/kernel/mac80211/patches/rtl/107-v6.16-wifi-rtw88-usb-Upload-the-firmware-in-bigger-chunks.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 80fe0bc1659c0ccc79d082e426fa376be5df9c04 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Acked-by: Ping-Ke Shih -Signed-off-by: Ping-Ke Shih -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 - #include - #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) { -@@ -892,6 +946,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 deleted file mode 100644 index adf585e004..0000000000 --- a/package/kernel/mac80211/patches/rtl/108-v6.16-wifi-rtw88-Fix-the-random-error-beacon-valid-message.patch +++ /dev/null @@ -1,73 +0,0 @@ -From f24d0d8c3cd7e4237f802c4d2f3bd4ac04572948 Mon Sep 17 00:00:00 2001 -From: Bitterblue Smith -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 -Signed-off-by: Ping-Ke Shih -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 -@@ -1466,7 +1466,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; -@@ -1478,6 +1478,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 { -@@ -1491,6 +1493,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; -@@ -1521,6 +1526,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 deleted file mode 100644 index 11b73128db..0000000000 --- a/package/kernel/mac80211/patches/rtl/109-v6.16-wifi-rtw88-fix-the-para-buffer-size-to-avoid-reading.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4c2c372de2e108319236203cce6de44d70ae15cd Mon Sep 17 00:00:00 2001 -From: Alexey Kodanev -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], ¶[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 -Signed-off-by: Ping-Ke Shih -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; - diff --git a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch index d6cc085722..23a4254ec7 100644 --- a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch +++ b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch @@ -9,7 +9,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnect --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -1677,12 +1677,6 @@ static int ieee80211_stop_ap(struct wiph +@@ -1691,12 +1691,6 @@ static int ieee80211_stop_ap(struct wiph __sta_info_flush(sdata, true, link_id, NULL); @@ -19,6 +19,6 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnect - ieee80211_free_key_list(local, &keys); - } - - link_conf->enable_beacon = false; - sdata->beacon_rate_set = false; - sdata->vif.cfg.ssid_len = 0; + ieee80211_stop_mbssid(sdata); + RCU_INIT_POINTER(link_conf->tx_bss_conf, NULL); + diff --git a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch index f11a60fd4e..1d56827d0c 100644 --- a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch +++ b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch @@ -8,7 +8,7 @@ Subject: [PATCH] mac80211: allow scans in access point mode (for site survey) --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2891,6 +2891,8 @@ static int ieee80211_scan(struct wiphy * +@@ -2925,6 +2925,8 @@ static int ieee80211_scan(struct wiphy * */ fallthrough; case NL80211_IFTYPE_AP: diff --git a/package/kernel/mac80211/patches/subsys/220-allow-ibss-mixed.patch b/package/kernel/mac80211/patches/subsys/220-allow-ibss-mixed.patch index ea8fb0c6b3..6ef7fb2777 100644 --- a/package/kernel/mac80211/patches/subsys/220-allow-ibss-mixed.patch +++ b/package/kernel/mac80211/patches/subsys/220-allow-ibss-mixed.patch @@ -16,7 +16,7 @@ and we should ignore this. --- a/net/wireless/core.c +++ b/net/wireless/core.c -@@ -671,21 +671,6 @@ int wiphy_verify_iface_combinations(stru +@@ -679,21 +679,6 @@ int wiphy_verify_iface_combinations(stru c->limits[j].max > 1)) return -EINVAL; diff --git a/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch b/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch index e85207cb6b..2de9bec093 100644 --- a/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch +++ b/package/kernel/mac80211/patches/subsys/230-avoid-crashing-missing-band.patch @@ -18,7 +18,7 @@ Signed-off-by: David Bauer --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -2474,6 +2474,13 @@ static void sta_stats_decode_rate(struct +@@ -2468,6 +2468,13 @@ static void sta_stats_decode_rate(struct sband = local->hw.wiphy->bands[band]; diff --git a/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch b/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch index f7690c89c7..86504c4748 100644 --- a/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch +++ b/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch @@ -28,7 +28,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -583,6 +583,7 @@ __sta_info_alloc(struct ieee80211_sub_if +@@ -582,6 +582,7 @@ __sta_info_alloc(struct ieee80211_sub_if spin_lock_init(&sta->ps_lock); INIT_WORK(&sta->drv_deliver_wk, sta_deliver_ps_frames); wiphy_work_init(&sta->ampdu_mlme.work, ieee80211_ba_session_work); diff --git a/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch b/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch index d329ad7b6f..17e2151d3c 100644 --- a/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch +++ b/package/kernel/mac80211/patches/subsys/305-mac80211-increase-quantum-for-airtime-scheduler.patch @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -4083,7 +4083,7 @@ struct ieee80211_txq *ieee80211_next_txq +@@ -4066,7 +4066,7 @@ struct ieee80211_txq *ieee80211_next_txq if (deficit < 0) sta->airtime[txqi->txq.ac].deficit += @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau if (deficit < 0 || !aql_check) { list_move_tail(&txqi->schedule_order, -@@ -4226,7 +4226,8 @@ bool ieee80211_txq_may_transmit(struct i +@@ -4209,7 +4209,8 @@ bool ieee80211_txq_may_transmit(struct i } sta = container_of(iter->txq.sta, struct sta_info, sta); if (ieee80211_sta_deficit(sta, ac) < 0) @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau list_move_tail(&iter->schedule_order, &local->active_txqs[ac]); } -@@ -4234,7 +4235,7 @@ bool ieee80211_txq_may_transmit(struct i +@@ -4217,7 +4218,7 @@ bool ieee80211_txq_may_transmit(struct i if (sta->airtime[ac].deficit >= 0) goto out; diff --git a/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch b/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch index d264c33f13..8197b069f6 100644 --- a/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch +++ b/package/kernel/mac80211/patches/subsys/310-cfg80211-allow-grace-period-for-DFS-available-after-.patch @@ -52,7 +52,7 @@ Signed-off-by: Felix Fietkau --- a/net/wireless/chan.c +++ b/net/wireless/chan.c -@@ -648,6 +648,8 @@ void cfg80211_set_dfs_state(struct wiphy +@@ -643,6 +643,8 @@ void cfg80211_set_dfs_state(struct wiphy c->dfs_state = dfs_state; c->dfs_state_entered = jiffies; @@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau } } -@@ -995,6 +997,53 @@ bool cfg80211_any_wiphy_oper_chan(struct +@@ -990,6 +992,53 @@ bool cfg80211_any_wiphy_oper_chan(struct return false; } @@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau { --- a/net/wireless/core.h +++ b/net/wireless/core.h -@@ -475,6 +475,8 @@ void cfg80211_set_dfs_state(struct wiphy +@@ -474,6 +474,8 @@ void cfg80211_set_dfs_state(struct wiphy enum nl80211_dfs_state dfs_state); void cfg80211_dfs_channels_update_work(struct work_struct *work); diff --git a/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch b/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch index 6599d1b5e8..f8751b30ae 100644 --- a/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch +++ b/package/kernel/mac80211/patches/subsys/320-mac80211-add-AQL-support-for-broadcast-packets.patch @@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -3438,6 +3438,7 @@ enum wiphy_params_flags { +@@ -3437,6 +3437,7 @@ enum wiphy_params_flags { /* The per TXQ device queue limit in airtime */ #define IEEE80211_DEFAULT_AQL_TXQ_LIMIT_L 5000 #define IEEE80211_DEFAULT_AQL_TXQ_LIMIT_H 12000 @@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1360,10 +1360,12 @@ struct ieee80211_local { +@@ -1377,10 +1377,12 @@ struct ieee80211_local { spinlock_t handle_wake_tx_queue_lock; u16 airtime_flags; @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau spin_lock_init(&local->active_txq_lock[i]); --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -2388,13 +2388,28 @@ EXPORT_SYMBOL(ieee80211_sta_recalc_aggre +@@ -2382,13 +2382,28 @@ EXPORT_SYMBOL(ieee80211_sta_recalc_aggre void ieee80211_sta_update_pending_airtime(struct ieee80211_local *local, struct sta_info *sta, u8 ac, @@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau atomic_add(tx_airtime, --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -2555,7 +2555,7 @@ static u16 ieee80211_store_ack_skb(struc +@@ -2539,7 +2539,7 @@ static u16 ieee80211_store_ack_skb(struc spin_lock_irqsave(&local->ack_status_lock, flags); id = idr_alloc(&local->ack_status_frames, ack_skb, @@ -136,7 +136,7 @@ Signed-off-by: Felix Fietkau spin_unlock_irqrestore(&local->ack_status_lock, flags); if (id >= 0) { -@@ -3984,20 +3984,20 @@ begin: +@@ -3967,20 +3967,20 @@ begin: encap_out: info->control.vif = vif; @@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau } return skb; -@@ -4049,6 +4049,7 @@ struct ieee80211_txq *ieee80211_next_txq +@@ -4032,6 +4032,7 @@ struct ieee80211_txq *ieee80211_next_txq struct ieee80211_txq *ret = NULL; struct txq_info *txqi = NULL, *head = NULL; bool found_eligible_txq = false; @@ -175,7 +175,7 @@ Signed-off-by: Felix Fietkau spin_lock_bh(&local->active_txq_lock[ac]); -@@ -4072,26 +4073,26 @@ struct ieee80211_txq *ieee80211_next_txq +@@ -4055,26 +4056,26 @@ struct ieee80211_txq *ieee80211_next_txq if (!head) head = txqi; @@ -214,7 +214,7 @@ Signed-off-by: Felix Fietkau if (txqi->schedule_round == local->schedule_round[ac]) goto out; -@@ -4156,7 +4157,8 @@ bool ieee80211_txq_airtime_check(struct +@@ -4139,7 +4140,8 @@ bool ieee80211_txq_airtime_check(struct return true; if (!txq->sta) @@ -224,7 +224,7 @@ Signed-off-by: Felix Fietkau if (unlikely(txq->tid == IEEE80211_NUM_TIDS)) return true; -@@ -4205,15 +4207,15 @@ bool ieee80211_txq_may_transmit(struct i +@@ -4188,15 +4190,15 @@ bool ieee80211_txq_may_transmit(struct i spin_lock_bh(&local->active_txq_lock[ac]); @@ -245,7 +245,7 @@ Signed-off-by: Felix Fietkau if (iter == txqi) --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -1237,8 +1237,8 @@ struct ieee80211_tx_info { +@@ -1245,8 +1245,8 @@ struct ieee80211_tx_info { status_data_idr:1, status_data:13, hw_queue:4, diff --git a/package/kernel/mac80211/patches/subsys/330-wifi-mac80211-Do-not-schedule-stopped-TXQs.patch b/package/kernel/mac80211/patches/subsys/330-wifi-mac80211-Do-not-schedule-stopped-TXQs.patch index 668315477a..78240650d1 100644 --- a/package/kernel/mac80211/patches/subsys/330-wifi-mac80211-Do-not-schedule-stopped-TXQs.patch +++ b/package/kernel/mac80211/patches/subsys/330-wifi-mac80211-Do-not-schedule-stopped-TXQs.patch @@ -23,7 +23,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -4116,7 +4116,9 @@ void __ieee80211_schedule_txq(struct iee +@@ -4099,7 +4099,9 @@ void __ieee80211_schedule_txq(struct iee spin_lock_bh(&local->active_txq_lock[txq->ac]); diff --git a/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-Don-t-call-fq_flow_idx-for-management-.patch b/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-Don-t-call-fq_flow_idx-for-management-.patch index e0c27a9225..b33bf5ca18 100644 --- a/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-Don-t-call-fq_flow_idx-for-management-.patch +++ b/package/kernel/mac80211/patches/subsys/331-wifi-mac80211-Don-t-call-fq_flow_idx-for-management-.patch @@ -14,7 +14,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -1444,7 +1444,7 @@ static void ieee80211_txq_enqueue(struct +@@ -1428,7 +1428,7 @@ static void ieee80211_txq_enqueue(struct { struct fq *fq = &local->fq; struct fq_tin *tin = &txqi->tin; @@ -23,7 +23,7 @@ Signed-off-by: Johannes Berg ieee80211_set_skb_enqueue_time(skb); -@@ -1460,6 +1460,7 @@ static void ieee80211_txq_enqueue(struct +@@ -1444,6 +1444,7 @@ static void ieee80211_txq_enqueue(struct IEEE80211_TX_INTCFL_NEED_TXPROCESSING; __skb_queue_tail(&txqi->frags, skb); } else { diff --git a/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-Check-802.11-encaps-offloading-in-ieee.patch b/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-Check-802.11-encaps-offloading-in-ieee.patch index ac6f67bc35..8ff0982266 100644 --- a/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-Check-802.11-encaps-offloading-in-ieee.patch +++ b/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-Check-802.11-encaps-offloading-in-ieee.patch @@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -622,6 +622,12 @@ ieee80211_tx_h_select_key(struct ieee802 +@@ -612,6 +612,12 @@ ieee80211_tx_h_select_key(struct ieee802 else tx->key = NULL; diff --git a/package/kernel/mac80211/patches/subsys/333-Reapply-wifi-mac80211-Update-skb-s-control-block-key.patch b/package/kernel/mac80211/patches/subsys/333-Reapply-wifi-mac80211-Update-skb-s-control-block-key.patch index ba7d0b6bc4..5ef6d25e22 100644 --- a/package/kernel/mac80211/patches/subsys/333-Reapply-wifi-mac80211-Update-skb-s-control-block-key.patch +++ b/package/kernel/mac80211/patches/subsys/333-Reapply-wifi-mac80211-Update-skb-s-control-block-key.patch @@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -3900,6 +3900,7 @@ begin: +@@ -3883,6 +3883,7 @@ begin: * The key can be removed while the packet was queued, so need to call * this here to get the current key. */ diff --git a/package/kernel/mac80211/patches/subsys/350-mac80211-allow-scanning-while-on-radar-channel.patch b/package/kernel/mac80211/patches/subsys/350-mac80211-allow-scanning-while-on-radar-channel.patch index 4c8531d328..33ca9fe335 100644 --- a/package/kernel/mac80211/patches/subsys/350-mac80211-allow-scanning-while-on-radar-channel.patch +++ b/package/kernel/mac80211/patches/subsys/350-mac80211-allow-scanning-while-on-radar-channel.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -3525,6 +3525,27 @@ static int ieee80211_set_bitrate_mask(st +@@ -3559,6 +3559,27 @@ static int ieee80211_set_bitrate_mask(st return 0; } @@ -28,7 +28,7 @@ static int ieee80211_start_radar_detection(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef, -@@ -3538,7 +3559,7 @@ static int ieee80211_start_radar_detecti +@@ -3572,7 +3593,7 @@ static int ieee80211_start_radar_detecti lockdep_assert_wiphy(local->hw.wiphy); @@ -37,7 +37,7 @@ return -EBUSY; link_data = sdata_dereference(sdata->link[link_id], sdata); -@@ -4030,7 +4051,7 @@ __ieee80211_channel_switch(struct wiphy +@@ -4064,7 +4085,7 @@ __ieee80211_channel_switch(struct wiphy lockdep_assert_wiphy(local->hw.wiphy); @@ -77,7 +77,7 @@ --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1958,6 +1958,12 @@ int ieee80211_mesh_finish_csa(struct iee +@@ -1975,6 +1975,12 @@ int ieee80211_mesh_finish_csa(struct iee u64 *changed); /* scan/BSS handling */ @@ -90,7 +90,7 @@ void ieee80211_scan_work(struct wiphy *wiphy, struct wiphy_work *work); int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, const u8 *ssid, u8 ssid_len, -@@ -1996,6 +2002,7 @@ void ieee80211_sched_scan_stopped_work(s +@@ -2013,6 +2019,7 @@ void ieee80211_sched_scan_stopped_work(s /* off-channel/mgmt-tx */ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local); void ieee80211_offchannel_return(struct ieee80211_local *local); @@ -98,7 +98,7 @@ void ieee80211_roc_setup(struct ieee80211_local *local); void ieee80211_start_next_roc(struct ieee80211_local *local); void ieee80211_reconfig_roc(struct ieee80211_local *local); -@@ -2640,6 +2647,8 @@ bool ieee80211_chandef_s1g_oper(const st +@@ -2660,6 +2667,8 @@ bool ieee80211_chandef_s1g_oper(const st struct cfg80211_chan_def *chandef); void ieee80211_chandef_downgrade(struct cfg80211_chan_def *chandef, struct ieee80211_conn_settings *conn); @@ -107,7 +107,7 @@ static inline void ieee80211_chanreq_downgrade(struct ieee80211_chan_req *chanreq, struct ieee80211_conn_settings *conn) -@@ -2696,7 +2705,7 @@ void ieee80211_recalc_chanctx_min_def(st +@@ -2716,7 +2725,7 @@ void ieee80211_recalc_chanctx_min_def(st struct ieee80211_chanctx *ctx, struct ieee80211_link_data *rsvd_for, bool check_reserved); @@ -189,7 +189,7 @@ list_add_tail(&roc->list, &local->roc_list); --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c -@@ -571,36 +571,83 @@ static int ieee80211_start_sw_scan(struc +@@ -586,36 +586,83 @@ static int ieee80211_start_sw_scan(struc return 0; } @@ -282,7 +282,7 @@ return false; if (sdata->vif.type == NL80211_IFTYPE_STATION && -@@ -612,15 +659,22 @@ static bool ieee80211_can_scan(struct ie +@@ -627,15 +674,22 @@ static bool ieee80211_can_scan(struct ie void ieee80211_run_deferred_scan(struct ieee80211_local *local) { @@ -310,7 +310,7 @@ return; wiphy_delayed_work_queue(local->hw.wiphy, &local->scan_work, -@@ -703,6 +757,7 @@ static int __ieee80211_start_scan(struct +@@ -718,6 +772,7 @@ static int __ieee80211_start_scan(struct { struct ieee80211_local *local = sdata->local; bool hw_scan = local->ops->hw_scan; @@ -318,7 +318,7 @@ int rc; lockdep_assert_wiphy(local->hw.wiphy); -@@ -717,10 +772,11 @@ static int __ieee80211_start_scan(struct +@@ -732,10 +787,11 @@ static int __ieee80211_start_scan(struct !(sdata->vif.active_links & BIT(req->tsf_report_link_id))) return -EINVAL; @@ -360,7 +360,7 @@ * the suspend->resume cycle. Since we can't check each caller --- a/net/wireless/util.c +++ b/net/wireless/util.c -@@ -2907,6 +2907,9 @@ bool cfg80211_radio_chandef_valid(const +@@ -2955,6 +2955,9 @@ bool cfg80211_radio_chandef_valid(const { u32 freq, width; @@ -368,5 +368,5 @@ + return false; + freq = ieee80211_chandef_to_khz(chandef); - width = nl80211_chan_width_to_mhz(chandef->width); + width = cfg80211_chandef_get_width(chandef); if (!ieee80211_radio_freq_range_valid(radio, freq, width)) diff --git a/package/kernel/mac80211/patches/subsys/360-mac80211-factor-out-part-of-ieee80211_calc_expected_.patch b/package/kernel/mac80211/patches/subsys/360-mac80211-factor-out-part-of-ieee80211_calc_expected_.patch index b5d5a72f87..bffb66dfe7 100644 --- a/package/kernel/mac80211/patches/subsys/360-mac80211-factor-out-part-of-ieee80211_calc_expected_.patch +++ b/package/kernel/mac80211/patches/subsys/360-mac80211-factor-out-part-of-ieee80211_calc_expected_.patch @@ -126,7 +126,7 @@ Signed-off-by: Felix Fietkau } --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -2756,6 +2756,11 @@ u8 *ieee80211_get_bssid(struct ieee80211 +@@ -2776,6 +2776,11 @@ u8 *ieee80211_get_bssid(struct ieee80211 extern const struct ethtool_ops ieee80211_ethtool_ops; diff --git a/package/kernel/mac80211/patches/subsys/361-mac80211-estimate-expected-throughput-if-not-provide.patch b/package/kernel/mac80211/patches/subsys/361-mac80211-estimate-expected-throughput-if-not-provide.patch index 81cff9e7e8..cc860b7519 100644 --- a/package/kernel/mac80211/patches/subsys/361-mac80211-estimate-expected-throughput-if-not-provide.patch +++ b/package/kernel/mac80211/patches/subsys/361-mac80211-estimate-expected-throughput-if-not-provide.patch @@ -12,9 +12,9 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c -@@ -2621,6 +2621,29 @@ static inline u64 sta_get_stats_bytes(st - return value; +@@ -2648,6 +2648,29 @@ static void sta_set_mesh_sinfo(struct st } + #endif +static u32 sta_estimate_expected_throughput(struct sta_info *sta, + struct station_info *sinfo) @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo, bool tidstats) { -@@ -2865,6 +2888,8 @@ void sta_set_sinfo(struct sta_info *sta, +@@ -2871,6 +2894,8 @@ void sta_set_sinfo(struct sta_info *sta, sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_TDLS_PEER); thr = sta_get_expected_throughput(sta); diff --git a/package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch b/package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch deleted file mode 100644 index 71ae00e016..0000000000 --- a/package/kernel/mac80211/patches/subsys/400-v6.16-wifi-mac80211-do-not-offer-a-mesh-path-if-forwarding.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 0d47666f48a084363ee54f389bec2865de4934b8 Mon Sep 17 00:00:00 2001 -From: Benjamin Berg -Date: Wed, 30 Apr 2025 20:25:38 +0200 -Subject: [PATCH] wifi: mac80211: do not offer a mesh path if forwarding is - disabled - -When processing a PREQ the code would always check whether we have a -mesh path locally and reply accordingly. However, when forwarding is -disabled then we should not reply with this information as we will not -forward data packets down that path. - -Move the check for dot11MeshForwarding up in the function and skip the -mesh path lookup in that case. In the else block, set forward to false -so that the rest of the function becomes a no-op and the -dot11MeshForwarding check does not need to be duplicated. - -This explains an effect observed in the Freifunk community where mesh -forwarding is disabled. In that case a mesh with three STAs and only bad -links in between them, individual STAs would occionally have indirect -mpath entries. This should not have happened. - -Signed-off-by: Benjamin Berg -Reviewed-by: Rouven Czerwinski ---- - net/mac80211/mesh_hwmp.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/net/mac80211/mesh_hwmp.c -+++ b/net/mac80211/mesh_hwmp.c -@@ -636,7 +636,7 @@ static void hwmp_preq_frame_process(stru - mesh_path_add_gate(mpath); - } - rcu_read_unlock(); -- } else { -+ } else if (ifmsh->mshcfg.dot11MeshForwarding) { - rcu_read_lock(); - mpath = mesh_path_lookup(sdata, target_addr); - if (mpath) { -@@ -654,6 +654,8 @@ static void hwmp_preq_frame_process(stru - } - } - rcu_read_unlock(); -+ } else { -+ forward = false; - } - - if (reply) { -@@ -671,7 +673,7 @@ static void hwmp_preq_frame_process(stru - } - } - -- if (forward && ifmsh->mshcfg.dot11MeshForwarding) { -+ if (forward) { - u32 preq_id; - u8 hopcount; - -- 2.30.2