@@ -148,7 +148,27 @@ void ETHClass::setTaskStackSize(size_t size) {
148148 _task_stack_size = size;
149149}
150150
151- #if (CONFIG_ETH_USE_ESP32_EMAC && !defined(CONFIG_IDF_TARGET_ESP32P4))
151+ #if CONFIG_ETH_USE_ESP32_EMAC
152+ #if CONFIG_IDF_TARGET_ESP32
153+ #define ETH_EMAC_DEFAULT_CONFIG () ETH_ESP32_EMAC_DEFAULT_CONFIG()
154+ #elif CONFIG_IDF_TARGET_ESP32P4
155+ #define ETH_EMAC_DEFAULT_CONFIG () \
156+ { \
157+ .smi_gpio = {.mdc_num = 31 , .mdio_num = 52 }, .interface = EMAC_DATA_INTERFACE_RMII, \
158+ .clock_config = {.rmii = {.clock_mode = EMAC_CLK_EXT_IN, .clock_gpio = (emac_rmii_clock_gpio_t )ETH_RMII_CLK}}, .dma_burst_len = ETH_DMA_BURST_LEN_32, \
159+ .intr_priority = 0 , \
160+ .emac_dataif_gpio = \
161+ {.rmii = \
162+ {.tx_en_num = ETH_RMII_TX_EN, \
163+ .txd0_num = ETH_RMII_TX0, \
164+ .txd1_num = ETH_RMII_TX1, \
165+ .crs_dv_num = ETH_RMII_CRS_DV, \
166+ .rxd0_num = ETH_RMII_RX0, \
167+ .rxd1_num = ETH_RMII_RX1_EN}}, \
168+ .clock_config_out_in = {.rmii = {.clock_mode = EMAC_CLK_EXT_IN, .clock_gpio = (emac_rmii_clock_gpio_t ) - 1 }}, \
169+ }
170+ #endif
171+
152172bool ETHClass::begin (eth_phy_type_t type, int32_t phy_addr, int mdc, int mdio, int power, eth_clock_mode_t clock_mode) {
153173 esp_err_t ret = ESP_OK;
154174 if (_eth_index > 2 ) {
@@ -177,12 +197,16 @@ bool ETHClass::begin(eth_phy_type_t type, int32_t phy_addr, int mdc, int mdio, i
177197#define DEFAULT_RMII_CLK_GPIO (emac_rmii_clock_gpio_t )(CONFIG_ETH_RMII_CLK_IN_GPIO)
178198#endif
179199
180- eth_esp32_emac_config_t mac_config = ETH_ESP32_EMAC_DEFAULT_CONFIG ();
200+ eth_esp32_emac_config_t mac_config = ETH_EMAC_DEFAULT_CONFIG ();
201+ #if CONFIG_IDF_TARGET_ESP32
181202 mac_config.clock_config .rmii .clock_mode = (clock_mode) ? EMAC_CLK_OUT : EMAC_CLK_EXT_IN;
182203 mac_config.clock_config .rmii .clock_gpio = (1 == clock_mode) ? EMAC_APPL_CLK_OUT_GPIO
183204 : (2 == clock_mode) ? EMAC_CLK_OUT_GPIO
184205 : (3 == clock_mode) ? EMAC_CLK_OUT_180_GPIO
185206 : EMAC_CLK_IN_GPIO;
207+ #elif CONFIG_IDF_TARGET_ESP32P4
208+ mac_config.clock_config .rmii .clock_mode = (emac_rmii_clock_mode_t )clock_mode;
209+ #endif
186210 mac_config.smi_gpio .mdc_num = digitalPinToGPIONumber (mdc);
187211 mac_config.smi_gpio .mdio_num = digitalPinToGPIONumber (mdio);
188212
0 commit comments