@@ -148,7 +148,51 @@ void ETHClass::setTaskStackSize(size_t size) {
148
148
_task_stack_size = size;
149
149
}
150
150
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 = \
158
+ { \
159
+ .mdc_num = 31 , \
160
+ .mdio_num = 52 \
161
+ }, \
162
+ .interface = EMAC_DATA_INTERFACE_RMII, \
163
+ .clock_config = \
164
+ { \
165
+ .rmii = \
166
+ { \
167
+ .clock_mode = EMAC_CLK_EXT_IN, \
168
+ .clock_gpio = (emac_rmii_clock_gpio_t ) ETH_RMII_CLK \
169
+ } \
170
+ }, \
171
+ .dma_burst_len = ETH_DMA_BURST_LEN_32, \
172
+ .intr_priority = 0 , \
173
+ .emac_dataif_gpio = \
174
+ { \
175
+ .rmii = \
176
+ { \
177
+ .tx_en_num = ETH_RMII_TX_EN, \
178
+ .txd0_num = ETH_RMII_TX0, \
179
+ .txd1_num = ETH_RMII_TX1, \
180
+ .crs_dv_num = ETH_RMII_CRS_DV, \
181
+ .rxd0_num = ETH_RMII_RX0, \
182
+ .rxd1_num = ETH_RMII_RX1_EN \
183
+ } \
184
+ }, \
185
+ .clock_config_out_in = \
186
+ { \
187
+ .rmii = \
188
+ { \
189
+ .clock_mode = EMAC_CLK_EXT_IN, \
190
+ .clock_gpio = (emac_rmii_clock_gpio_t ) -1 \
191
+ } \
192
+ }, \
193
+ }
194
+ #endif
195
+
152
196
bool ETHClass::begin (eth_phy_type_t type, int32_t phy_addr, int mdc, int mdio, int power, eth_clock_mode_t clock_mode) {
153
197
esp_err_t ret = ESP_OK;
154
198
if (_eth_index > 2 ) {
@@ -177,12 +221,16 @@ bool ETHClass::begin(eth_phy_type_t type, int32_t phy_addr, int mdc, int mdio, i
177
221
#define DEFAULT_RMII_CLK_GPIO (emac_rmii_clock_gpio_t )(CONFIG_ETH_RMII_CLK_IN_GPIO)
178
222
#endif
179
223
180
- eth_esp32_emac_config_t mac_config = ETH_ESP32_EMAC_DEFAULT_CONFIG ();
224
+ eth_esp32_emac_config_t mac_config = ETH_EMAC_DEFAULT_CONFIG ();
225
+ #if CONFIG_IDF_TARGET_ESP32
181
226
mac_config.clock_config .rmii .clock_mode = (clock_mode) ? EMAC_CLK_OUT : EMAC_CLK_EXT_IN;
182
227
mac_config.clock_config .rmii .clock_gpio = (1 == clock_mode) ? EMAC_APPL_CLK_OUT_GPIO
183
228
: (2 == clock_mode) ? EMAC_CLK_OUT_GPIO
184
229
: (3 == clock_mode) ? EMAC_CLK_OUT_180_GPIO
185
230
: EMAC_CLK_IN_GPIO;
231
+ #elif CONFIG_IDF_TARGET_ESP32P4
232
+ mac_config.clock_config .rmii .clock_mode = (emac_rmii_clock_mode_t )clock_mode;
233
+ #endif
186
234
mac_config.smi_gpio .mdc_num = digitalPinToGPIONumber (mdc);
187
235
mac_config.smi_gpio .mdio_num = digitalPinToGPIONumber (mdio);
188
236
0 commit comments