drivers: ethernet: stm32: Add transmit callbacks

These callbacks are also used by the stm32cube HAL driver

Signed-off-by: Bjarne von Horn <B.von_horn@wzl.rwth-aachen.de>
diff --git a/drivers/ethernet/eth_stm32_hal.c b/drivers/ethernet/eth_stm32_hal.c
index 23214b0..4df48f7 100644
--- a/drivers/ethernet/eth_stm32_hal.c
+++ b/drivers/ethernet/eth_stm32_hal.c
@@ -155,6 +155,27 @@
 		*pEnd = header;
 	}
 }
+
+/* Called by HAL_ETH_ReleaseTxPacket */
+void HAL_ETH_TxFreeCallback(uint32_t *buff)
+{
+	__ASSERT_NO_MSG(buff != NULL);
+
+	/* buff is the user context in tx_config.pData */
+	struct eth_stm32_tx_context *ctx = (struct eth_stm32_tx_context *)buff;
+	struct eth_stm32_tx_buffer_header *buffer_header =
+		&dma_tx_buffer_header[ctx->first_tx_buffer_index];
+
+	while (buffer_header != NULL) {
+		buffer_header->used = false;
+		if (buffer_header->tx_buff.next != NULL) {
+			buffer_header = CONTAINER_OF(buffer_header->tx_buff.next,
+				struct eth_stm32_tx_buffer_header, tx_buff);
+		} else {
+			buffer_header = NULL;
+		}
+	}
+}
 #endif /* CONFIG_ETH_STM32_HAL_API_V2 */
 
 #if defined(CONFIG_SOC_SERIES_STM32H7X) || defined(CONFIG_ETH_STM32_HAL_API_V2)
@@ -166,12 +187,12 @@
 						uint32_t PHYReg,
 						uint32_t *RegVal)
 {
-#if defined(CONFIG_SOC_SERIES_STM32H7X)
+#if defined(CONFIG_SOC_SERIES_STM32H7X) || defined(CONFIG_ETH_STM32_HAL_API_V2)
 	return HAL_ETH_ReadPHYRegister(heth, PHYAddr, PHYReg, RegVal);
 #else
 	ARG_UNUSED(PHYAddr);
 	return HAL_ETH_ReadPHYRegister(heth, PHYReg, RegVal);
-#endif /* CONFIG_SOC_SERIES_STM32H7X */
+#endif /* CONFIG_SOC_SERIES_STM32H7X || CONFIG_ETH_STM32_HAL_API_V2 */
 }
 
 static inline void disable_mcast_filter(ETH_HandleTypeDef *heth)
@@ -237,6 +258,17 @@
 
 	return true;
 }
+#if defined(CONFIG_ETH_STM32_HAL_API_V2)
+void HAL_ETH_TxPtpCallback(uint32_t *buff, ETH_TimeStampTypeDef *timestamp)
+{
+	struct eth_stm32_tx_context *ctx = (struct eth_stm32_tx_context *)buff;
+
+	ctx->pkt->timestamp.second = timestamp->TimeStampHigh;
+	ctx->pkt->timestamp.nanosecond = timestamp->TimeStampLow;
+
+	net_if_add_tx_timestamp(ctx->pkt);
+}
+#endif /* CONFIG_ETH_STM32_HAL_API_V2 */
 #endif /* CONFIG_PTP_CLOCK_STM32_HAL */
 
 static int eth_tx(const struct device *dev, struct net_pkt *pkt)
@@ -755,7 +787,7 @@
 
 	HAL_ETH_IRQHandler(heth);
 }
-#ifdef CONFIG_SOC_SERIES_STM32H7X
+#if defined(CONFIG_SOC_SERIES_STM32H7X) || defined(CONFIG_ETH_STM32_HAL_API_V2)
 void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth_handle)
 {
 	__ASSERT_NO_MSG(heth_handle != NULL);
@@ -768,6 +800,9 @@
 	k_sem_give(&dev_data->tx_int_sem);
 
 }
+#endif /* CONFIG_SOC_SERIES_STM32H7X || CONFIG_ETH_STM32_HAL_API_V2 */
+
+#ifdef CONFIG_SOC_SERIES_STM32H7X
 /* DMA and MAC errors callback only appear in H7 series */
 void HAL_ETH_DMAErrorCallback(ETH_HandleTypeDef *heth_handle)
 {