From fc91fdd727ff5eb5e68e5486851a7b3872c058c5 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 10 Dec 2011 22:26:04 +0000 Subject: [PATCH] Add Ethernet start-up logic git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4159 42af7a65-404d-4744-a932-0658087f49c3 --- arch/arm/src/stm32/stm32_eth.c | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/arch/arm/src/stm32/stm32_eth.c b/arch/arm/src/stm32/stm32_eth.c index 79d0fd9dd1..1e9f6933b2 100755 --- a/arch/arm/src/stm32/stm32_eth.c +++ b/arch/arm/src/stm32/stm32_eth.c @@ -1775,9 +1775,63 @@ static int stm32_macconfig(FAR struct stm32_ethmac_s *priv) static int stm32_macenable(FAR struct stm32_ethmac_s *priv) { + uint32_t regval; + int i; + + /* Enable Ethernet Rx interrrupt */ + + for (i = 0; i < CONFIG_STM32_ETH_RXNBUFFERS; i++) + { + /* Enable the DMA Rx Desc receive interrupt */ + + priv->rxtable[i].rdes1 &= ~ETH_RDES1_DIC; + } + +#ifdef CHECKSUM_BY_HARDWARE + /* Enable the checksum insertion for the Tx frames */ + + for (i = 0; i < CONFIG_STM32_ETH_TXNBUFFERS; i++) + { + /* Set the selected DMA Tx desc checksum insertion control */ + + priv->txtable[i].tdes0 |= ETH_TDES0_CIC_ALL; + } +#endif + /* Enable RX and TX */ #warning "Missing Logic" + /* Enable transmit state machine of the MAC for transmission on the MII */ + + regval = getreg32(STM32_ETH_MACCR); + regval |= ETH_MACCR_TE; + putreg32(regval, STM32_ETH_MACCR); + + /* Flush Transmit FIFO */ + + regval = getreg32(STM32_ETH_DMAOMR); + regval |= ETH_DMAOMR_FTF; + putreg32(regval, STM32_ETH_DMAOMR); + + /* Enable receive state machine of the MAC for reception from the MII */ + + /* Enables or disables the MAC reception. */ + + regval = getreg32(STM32_ETH_MACCR); + regval |= ETH_MACCR_RE; + putreg32(regval, STM32_ETH_MACCR); + + /* Start DMA transmission */ + + regval = getreg32(STM32_ETH_DMAOMR); + regval |= ETH_DMAOMR_ST; + putreg32(regval, STM32_ETH_DMAOMR); + + /* Start DMA reception */ + + regval = getreg32(STM32_ETH_DMAOMR); + regval |= ETH_DMAOMR_SR; + putreg32(regval, STM32_ETH_DMAOMR); /* Enable Ethernet DMA interrupts. *