Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ add_library(WiFiDriver
src/FrameParser.h
src/HalModule.cpp
src/HalModule.h
src/Iqk8812a.cpp
src/Iqk8812a.h
src/ParsedRadioPacket.cpp
src/PhyTableLoader.cpp
src/PhyTableLoader.h
Expand Down
6 changes: 6 additions & 0 deletions src/EepromManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ class EepromManager {
* no factory-calibrated reference temperature to compute delta
* against. */
uint8_t GetEepromThermalMeter() const { return eeprom_thermal_meter; }
/* External PA presence flags from EFUSE — read by IQK to pick the
* right AFE setup table. `ExternalPA_2G` is exposed as a public
* field on the class; the 5G equivalent lives in the private
* section to maintain backwards compatibility with existing
* callers. */
uint8_t GetExternalPa5G() const { return external_pa_5g; }

/* 8814AU only: read EFUSE and populate rfe_type, PA/LNA types, crystal cap,
* etc. Must be called AFTER firmware download (pre-fwdl EFUSE access
Expand Down
10 changes: 10 additions & 0 deletions src/HalModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,16 @@ bool HalModule::rtl8812au_hal_init() {
* the channel-set path + RtlJaguarDevice background thread. */
_radioManagementModule->InitPwrTrack();

/* Arm I/Q calibration so the initial channel-set runs a full IQK
* (TX-tone + RX-tone, ~50-100 ms). Mirrors upstream where
* `phy_iq_calibrate_8812a` is triggered from the post-init
* channel-set callback. Without this, BB 0xc90 + IQK output
* registers stay at the BB-init seed instead of the calibrated
* IQ-imbalance correction. */
if (_eepromManager->version_id.ICType == CHIP_8812) {
_radioManagementModule->ArmIQKOnNextChannelSet();
}

if (_eepromManager->version_id.RFType == RF_TYPE_1T1R) {
PHY_BB8812_Config_1T();
}
Expand Down
Loading
Loading