@@ -851,7 +851,46 @@ static void RISAF_Config(void)
851
851
}
852
852
#endif
853
853
854
- #if defined(CONFIG_ETH_STM32_HAL_API_V2 )
854
+ #if defined(CONFIG_ETH_STM32_HAL_API_V1 )
855
+ static int eth_init_api_v1 (const struct device * dev )
856
+ {
857
+ HAL_StatusTypeDef hal_ret = HAL_OK ;
858
+ struct eth_stm32_hal_dev_data * dev_data = dev -> data ;
859
+ ETH_HandleTypeDef * heth = & dev_data -> heth ;
860
+
861
+ if (!ETH_STM32_AUTO_NEGOTIATION_ENABLE ) {
862
+ struct phy_link_state state ;
863
+
864
+ phy_get_link_state (eth_stm32_phy_dev , & state );
865
+
866
+ heth -> Init .DuplexMode = PHY_LINK_IS_FULL_DUPLEX (state .speed ) ? ETH_MODE_FULLDUPLEX
867
+ : ETH_MODE_HALFDUPLEX ;
868
+ heth -> Init .Speed =
869
+ PHY_LINK_IS_SPEED_100M (state .speed ) ? ETH_SPEED_100M : ETH_SPEED_10M ;
870
+ }
871
+
872
+ hal_ret = HAL_ETH_Init (heth );
873
+ if (hal_ret == HAL_TIMEOUT ) {
874
+ /* HAL Init time out. This could be linked to
875
+ * a recoverable error. Log the issue and continue
876
+ * driver initialization.
877
+ */
878
+ LOG_WRN ("HAL_ETH_Init timed out (cable not connected?)" );
879
+ } else if (hal_ret != HAL_OK ) {
880
+ LOG_ERR ("HAL_ETH_Init failed: %d" , hal_ret );
881
+ return - EINVAL ;
882
+ }
883
+
884
+ /* Initialize semaphores */
885
+ k_mutex_init (& dev_data -> tx_mutex );
886
+ k_sem_init (& dev_data -> rx_int_sem , 0 , K_SEM_MAX_LIMIT );
887
+
888
+ HAL_ETH_DMATxDescListInit (heth , dma_tx_desc_tab , & dma_tx_buffer [0 ][0 ], ETH_TXBUFNB );
889
+ HAL_ETH_DMARxDescListInit (heth , dma_rx_desc_tab , & dma_rx_buffer [0 ][0 ], ETH_RXBUFNB );
890
+
891
+ return 0 ;
892
+ }
893
+ #elif defined(CONFIG_ETH_STM32_HAL_API_V2 )
855
894
static int eth_init_api_v2 (const struct device * dev )
856
895
{
857
896
HAL_StatusTypeDef hal_ret = HAL_OK ;
@@ -960,46 +999,16 @@ static int eth_initialize(const struct device *dev)
960
999
heth -> Init .MACAddr = dev_data -> mac_addr ;
961
1000
962
1001
#if defined(CONFIG_ETH_STM32_HAL_API_V1 )
963
- HAL_StatusTypeDef hal_ret = HAL_OK ;
964
-
965
- if (!ETH_STM32_AUTO_NEGOTIATION_ENABLE ) {
966
- struct phy_link_state state ;
967
-
968
- phy_get_link_state (eth_stm32_phy_dev , & state );
969
-
970
- heth -> Init .DuplexMode = PHY_LINK_IS_FULL_DUPLEX (state .speed ) ? ETH_MODE_FULLDUPLEX
971
- : ETH_MODE_HALFDUPLEX ;
972
- heth -> Init .Speed =
973
- PHY_LINK_IS_SPEED_100M (state .speed ) ? ETH_SPEED_100M : ETH_SPEED_10M ;
974
- }
975
-
976
- hal_ret = HAL_ETH_Init (heth );
977
- if (hal_ret == HAL_TIMEOUT ) {
978
- /* HAL Init time out. This could be linked to */
979
- /* a recoverable error. Log the issue and continue */
980
- /* driver initialisation */
981
- LOG_WRN ("HAL_ETH_Init timed out (cable not connected?)" );
982
- } else if (hal_ret != HAL_OK ) {
983
- LOG_ERR ("HAL_ETH_Init failed: %d" , hal_ret );
984
- return - EINVAL ;
985
- }
986
-
987
- /* Initialize semaphores */
988
- k_mutex_init (& dev_data -> tx_mutex );
989
- k_sem_init (& dev_data -> rx_int_sem , 0 , K_SEM_MAX_LIMIT );
990
-
991
- HAL_ETH_DMATxDescListInit (heth , dma_tx_desc_tab ,
992
- & dma_tx_buffer [0 ][0 ], ETH_TXBUFNB );
993
- HAL_ETH_DMARxDescListInit (heth , dma_rx_desc_tab ,
994
- & dma_rx_buffer [0 ][0 ], ETH_RXBUFNB );
995
-
1002
+ ret = eth_init_api_v1 (dev );
996
1003
#elif defined(CONFIG_ETH_STM32_HAL_API_V2 )
997
1004
ret = eth_init_api_v2 (dev );
1005
+ #else
1006
+ ret = 0 ;
1007
+ #endif /* CONFIG_ETH_STM32_HAL_API_V1 */
998
1008
999
1009
if (ret != 0 ) {
1000
1010
return ret ;
1001
1011
}
1002
- #endif /* CONFIG_ETH_STM32_HAL_API_V1 */
1003
1012
1004
1013
LOG_DBG ("MAC %02x:%02x:%02x:%02x:%02x:%02x" ,
1005
1014
dev_data -> mac_addr [0 ], dev_data -> mac_addr [1 ],
0 commit comments