Merge pull request #2541 from cyliangtw/master

Fix NUC472 Ethernet wrong INT status in RX_Action
pull/2557/head
Sam Grove 2016-08-26 09:26:51 -05:00 committed by GitHub
commit 9d3557fbcc
1 changed files with 6 additions and 6 deletions

View File

@ -252,15 +252,15 @@ void ETH_halt(void)
EMAC->CTL &= ~(EMAC_CTL_RXON_Msk | EMAC_CTL_TXON_Msk); EMAC->CTL &= ~(EMAC_CTL_RXON_Msk | EMAC_CTL_TXON_Msk);
} }
unsigned int m_status;
void EMAC_RX_IRQHandler(void) void EMAC_RX_IRQHandler(void)
{ {
unsigned int cur_entry, status; unsigned int cur_entry, status;
status = EMAC->INTSTS & 0xFFFF; m_status = EMAC->INTSTS & 0xFFFF;
EMAC->INTSTS = status; EMAC->INTSTS = m_status;
if (status & EMAC_INTSTS_RXBEIF_Msk) { if (m_status & EMAC_INTSTS_RXBEIF_Msk) {
// Shouldn't goes here, unless descriptor corrupted // Shouldn't goes here, unless descriptor corrupted
printf("RX descriptor corrupted \r\n"); printf("RX descriptor corrupted \r\n");
//return; //return;
@ -275,7 +275,7 @@ void EMAC_RX_Action(void)
cur_entry = EMAC->CRXDSA; cur_entry = EMAC->CRXDSA;
if ((cur_entry == (u32_t)cur_rx_desc_ptr) && (!(status & EMAC_INTSTS_RDUIF_Msk))) // cur_entry may equal to cur_rx_desc_ptr if RDU occures if ((cur_entry == (u32_t)cur_rx_desc_ptr) && (!(m_status & EMAC_INTSTS_RDUIF_Msk))) // cur_entry may equal to cur_rx_desc_ptr if RDU occures
break; break;
status = cur_rx_desc_ptr->status1; status = cur_rx_desc_ptr->status1;
@ -344,4 +344,4 @@ int ETH_link_ok()
if(mdio_read(CONFIG_PHY_ADDR, MII_BMSR) & BMSR_LSTATUS) if(mdio_read(CONFIG_PHY_ADDR, MII_BMSR) & BMSR_LSTATUS)
return 1; return 1;
return 0; return 0;
} }