fix(esp_phy): Allow WiFi/USB interference workaround option only on supported targets

"Enable USB when phy init" Kconfig option would call esp_phy function
`phy_bbpll_en_usb()` that is not implemented for all targets.
Selecting this option for unsupported target results in linking error.

The necessity of this workaround is now defined soc_caps.h rather than
in the Kconfig.

Closes https://github.com/espressif/esp-idf/issues/12185
This commit is contained in:
Tomas Rezucha 2023-11-23 12:05:43 +01:00 committed by BOT
parent e78e9a9558
commit 2f89804e5c
7 changed files with 27 additions and 5 deletions

View File

@ -106,13 +106,20 @@ menu "PHY"
When brownout reset occurs, reduce PHY TX power to keep the code running.
config ESP_PHY_ENABLE_USB
bool "Enable USB when phy init"
depends on SOC_USB_OTG_SUPPORTED || ESP_CONSOLE_USB_SERIAL_JTAG || ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG
default y if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3
bool "Keep the USB PHY enabled when initializing WiFi"
depends on SOC_WIFI_PHY_NEEDS_USB_WORKAROUND
default y if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 \
|| ESP_CONSOLE_USB_SERIAL_JTAG || ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG
default n
help
When using USB Serial/JTAG/OTG/CDC, PHY should enable USB, otherwise USB module
can not work properly. Notice: Enabling this configuration option will slightly impact wifi performance.
On some ESP targets, the USB PHY can interfere with WiFi thus lowering WiFi performance. As a result, on
those affected ESP targets, the ESP PHY library's initialization will automatically disable the USB PHY to
get best WiFi performance. This option controls whether or not the ESP PHY library will keep the USB PHY
enabled on initialization.
Note: This option can be disabled to increase WiFi performance. However, disabling this option will also
mean that the USB PHY cannot be used while WiFi is enabled.
config ESP_PHY_ENABLE_CERT_TEST
bool "Enable RF certification test functions"

View File

@ -655,6 +655,10 @@ config SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW
bool
default y
config SOC_WIFI_PHY_NEEDS_USB_WORKAROUND
bool
default y
config SOC_BLE_SUPPORTED
bool
default y

View File

@ -311,6 +311,7 @@
#define SOC_WIFI_HW_TSF (1) /*!< Support hardware TSF */
#define SOC_WIFI_FTM_SUPPORT (1) /*!< Support FTM */
#define SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW (1) /*!< Support delta early time for rf phy on/off */
#define SOC_WIFI_PHY_NEEDS_USB_WORKAROUND (1) /*!< SoC has WiFi and USB PHYs interference, needs a workaround */
/*---------------------------------- Bluetooth CAPS ----------------------------------*/
#define SOC_BLE_SUPPORTED (1) /*!< Support Bluetooth Low Energy hardware */

View File

@ -971,6 +971,10 @@ config SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW
bool
default y
config SOC_WIFI_PHY_NEEDS_USB_WORKAROUND
bool
default y
config SOC_BLE_SUPPORTED
bool
default y

View File

@ -422,6 +422,7 @@
#define SOC_WIFI_CSI_SUPPORT (1) /*!< Support CSI */
#define SOC_WIFI_MESH_SUPPORT (1) /*!< Support WIFI MESH */
#define SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW (1) /*!< Support delta early time for rf phy on/off */
#define SOC_WIFI_PHY_NEEDS_USB_WORKAROUND (1) /*!< SoC has WiFi and USB PHYs interference, needs a workaround */
/*---------------------------------- Bluetooth CAPS ----------------------------------*/
#define SOC_BLE_SUPPORTED (1) /*!< Support Bluetooth Low Energy hardware */

View File

@ -1247,6 +1247,10 @@ config SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW
bool
default y
config SOC_WIFI_PHY_NEEDS_USB_WORKAROUND
bool
default y
config SOC_BLE_SUPPORTED
bool
default y

View File

@ -508,6 +508,7 @@
#define SOC_WIFI_CSI_SUPPORT (1) /*!< Support CSI */
#define SOC_WIFI_MESH_SUPPORT (1) /*!< Support WIFI MESH */
#define SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW (1) /*!< Support delta early time for rf phy on/off */
#define SOC_WIFI_PHY_NEEDS_USB_WORKAROUND (1) /*!< SoC has WiFi and USB PHYs interference, needs a workaround */
/*---------------------------------- Bluetooth CAPS ----------------------------------*/
#define SOC_BLE_SUPPORTED (1) /*!< Support Bluetooth Low Energy hardware */