Skip to content

Commit e06cba0

Browse files
committed
stm32/eth: Fix N6 missing ETH1MAC clock enable.
The N6 requires 4 clocks (ETH1, ETH1MAC, ETH1TX, ETH1RX) but the reference PR only enabled ETH1_CLK. This caused all register writes to be lost and registers to read as 0x00000000, preventing ethernet from functioning. Fixed in: - eth_init(): Added MAC clock enable with verification - eth_mac_deinit(): Added MAC clock disable - eth_low_power_mode(): Added MAC clock disable This matches the H7 implementation which enables ETH1MAC_CLK. Signed-off-by: Andrew Leech <[email protected]>
1 parent aa119e7 commit e06cba0

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

ports/stm32/eth.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,14 @@ int eth_init(eth_t *self, int mac_idx, uint32_t phy_addr, int phy_type) {
278278
__HAL_RCC_ETH1RX_CLK_ENABLE();
279279
#elif defined(STM32N6)
280280
__HAL_RCC_ETH1_CLK_ENABLE();
281+
__HAL_RCC_ETH1MAC_CLK_ENABLE();
281282
__HAL_RCC_ETH1TX_CLK_ENABLE();
282283
__HAL_RCC_ETH1RX_CLK_ENABLE();
284+
mp_printf(&mp_plat_print, "ETH: N6 clocks enabled: ETH1=%d MAC=%d TX=%d RX=%d\n",
285+
(int)__HAL_RCC_ETH1_IS_CLK_ENABLED(),
286+
(int)__HAL_RCC_ETH1MAC_IS_CLK_ENABLED(),
287+
(int)__HAL_RCC_ETH1TX_IS_CLK_ENABLED(),
288+
(int)__HAL_RCC_ETH1RX_IS_CLK_ENABLED());
283289
#else
284290
__HAL_RCC_ETH_CLK_ENABLE();
285291
#endif
@@ -658,6 +664,9 @@ static void eth_mac_deinit(eth_t *self) {
658664
__HAL_RCC_ETH1_FORCE_RESET();
659665
__HAL_RCC_ETH1_RELEASE_RESET();
660666
__HAL_RCC_ETH1_CLK_DISABLE();
667+
__HAL_RCC_ETH1MAC_CLK_DISABLE();
668+
__HAL_RCC_ETH1TX_CLK_DISABLE();
669+
__HAL_RCC_ETH1RX_CLK_DISABLE();
661670
#else
662671
__HAL_RCC_ETHMAC_FORCE_RESET();
663672
__HAL_RCC_ETHMAC_RELEASE_RESET();
@@ -1234,6 +1243,9 @@ void eth_low_power_mode(eth_t *self, bool enable) {
12341243
__HAL_RCC_ETH1MAC_CLK_DISABLE();
12351244
#elif defined(STM32N6)
12361245
__HAL_RCC_ETH1_CLK_DISABLE();
1246+
__HAL_RCC_ETH1MAC_CLK_DISABLE();
1247+
__HAL_RCC_ETH1TX_CLK_DISABLE();
1248+
__HAL_RCC_ETH1RX_CLK_DISABLE();
12371249
#else
12381250
__HAL_RCC_ETH_CLK_DISABLE();
12391251
#endif

0 commit comments

Comments
 (0)