feat(esp_eth): added PTP EMAC PPS0 support on ESP32P4v3

feat(esp_eth): added options to configure PTP module

feat(esp_eth): removed all PTP ioctl commands and created API
This commit is contained in:
Ondrej Kosta
2026-01-13 12:16:21 +01:00
parent b685c0e733
commit b27da510ff
23 changed files with 544 additions and 130 deletions
+13 -3
View File
@@ -1,16 +1,25 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "soc/emac_periph.h"
#include "soc/io_mux_reg.h"
/**
* In emac_periph terms, `SIG_GPIO_OUT_IDX` indicates that the EMAC signal cannot be connected
* via the GPIO Matrix (i.e. such connection doesn't exist for the function), so it should
* stay in the default "unconnected state".
*
* Note: `SIG_GPIO_OUT_IDX` is defined for all targets and is usually used to signify "disconnect
* from peripheral signal" (a default unconnected peripheral state).
*/
const emac_io_info_t emac_io_idx = {
.mdc_idx = EMAC_MDC_O_IDX,
.mdo_idx = EMAC_MDO_O_IDX,
.mdi_idx = EMAC_MDI_I_IDX,
.mii_tx_clk_i_idx = SIG_GPIO_OUT_IDX, // indicates EMAC signal cannot be connected via GPIO Matrix on the target
.mii_tx_clk_i_idx = SIG_GPIO_OUT_IDX,
.mii_tx_en_o_idx = SIG_GPIO_OUT_IDX,
.mii_txd0_o_idx = SIG_GPIO_OUT_IDX,
.mii_txd1_o_idx = SIG_GPIO_OUT_IDX,
@@ -27,7 +36,8 @@ const emac_io_info_t emac_io_idx = {
.mii_tx_er_o_idx = SIG_GPIO_OUT_IDX,
.mii_rx_er_i_idx = SIG_GPIO_OUT_IDX,
.rmii_refclk_i_idx = SIG_GPIO_OUT_IDX,
.rmii_refclk_o_idx = SIG_GPIO_OUT_IDX
.rmii_refclk_o_idx = SIG_GPIO_OUT_IDX,
.ptp_pps_idx = SIG_GPIO_OUT_IDX,
};
static const emac_iomux_info_t emac_rmii_iomux_clki[] = {
@@ -145,6 +145,7 @@ typedef struct emac_dma_dev_s {
uint32_t dmarxcurrdesc; /*The address of the current receive descriptor list. Cleared on Reset.Pointer updated by the DMA during operation.*/
uint32_t dmatxcurraddr_buf; /*The address of the current receive descriptor list. Cleared on Reset.Pointer updated by the DMA during operation.*/
uint32_t dmarxcurraddr_buf; /*The address of the current receive descriptor list. Cleared on Reset.Pointer updated by the DMA during operation.*/
uint32_t hwfeat; /*Hardware features*/
} emac_dma_dev_t;
extern emac_dma_dev_t EMAC_DMA;