diff --git a/esphome/components/ethernet/__init__.py b/esphome/components/ethernet/__init__.py index 3d21d6e7da..ba80af74db 100644 --- a/esphome/components/ethernet/__init__.py +++ b/esphome/components/ethernet/__init__.py @@ -234,21 +234,22 @@ def _is_framework_spi_polling_mode_supported() -> bool: return False -def _validate_spi_interface(config: ConfigType) -> None: +def _validate_spi_interface(config): """Set default SPI interface or validate user choice against the variant.""" - from esphome.components.esp32 import get_esp32_variant + if not CORE.is_esp32: + return config + from esphome.components.esp32 import VARIANT_ESP32, get_esp32_variant from esphome.components.spi import get_hw_interface_list has_spi3 = "spi3" in sum(get_hw_interface_list(), []) if CONF_INTERFACE not in config: - # Match the original C++ variant-based defaults: # Only classic ESP32 defaults to spi3; all others default to spi2 - variant = get_esp32_variant() - from esphome.components.esp32 import VARIANT_ESP32 - - config[CONF_INTERFACE] = "spi3" if variant == VARIANT_ESP32 else "spi2" + config[CONF_INTERFACE] = ( + "spi3" if get_esp32_variant() == VARIANT_ESP32 else "spi2" + ) elif config[CONF_INTERFACE] == "spi3" and not has_spi3: raise cv.Invalid("Interface 'spi3' is not available on this variant.") + return config def _validate(config):