Fix NUC472 Ethernet wrong INT status in RX_Action

pull/2590/head
cyliangtw 2016-08-25 15:06:52 +08:00 committed by 0xc0170
parent 68334bcf18
commit c65465fbfe
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;
} }