diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2013-09-27 13:12:04 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2013-09-27 13:12:04 -0600 |
commit | 4686e08c8931ffe4f02137ec203000fbf339515d (patch) | |
tree | 149b141f22d8e0502ffe1267054134568147cc4f /nuttx/arch/arm/src/sama5/sam_emac.c | |
parent | cbdb77a10a33626f51bc3402a6893c04c686d2d1 (diff) | |
download | px4-nuttx-4686e08c8931ffe4f02137ec203000fbf339515d.tar.gz px4-nuttx-4686e08c8931ffe4f02137ec203000fbf339515d.tar.bz2 px4-nuttx-4686e08c8931ffe4f02137ec203000fbf339515d.zip |
SAMA5 GMAC and GMII support is code complete and ready for test
Diffstat (limited to 'nuttx/arch/arm/src/sama5/sam_emac.c')
-rw-r--r-- | nuttx/arch/arm/src/sama5/sam_emac.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/nuttx/arch/arm/src/sama5/sam_emac.c b/nuttx/arch/arm/src/sama5/sam_emac.c index 1c5198020..ea81bfd01 100644 --- a/nuttx/arch/arm/src/sama5/sam_emac.c +++ b/nuttx/arch/arm/src/sama5/sam_emac.c @@ -1307,7 +1307,7 @@ static int sam_emac_interrupt(int irq, void *context) tsr = sam_getreg(priv, SAM_EMAC_TSR); imr = sam_getreg(priv, SAM_EMAC_IMR); - pending = isr & ~(imr | 0xffc300); + pending = isr & ~(imr | EMAC_INT_UNUSED); nllvdbg("isr: %08x pending: %08x\n", isr, pending); /* Check for the completion of a transmission. This should be done before @@ -2159,10 +2159,12 @@ static int sam_autonegotiate(struct sam_emac_s *priv) nllvdbg("PHYID2: %04x PHY address: %02x\n", phyid2, priv->phyaddr); if (phyid1 == MII_OUI_MSB && - ((phyid2 & MII_PHYID2_OUI) >> 10) == MII_OUI_LSB) + ((phyid2 & MII_PHYID2_OUI_MASK) >> MII_PHYID2_OUI_SHIFT) == MII_OUI_LSB) { - nllvdbg(" Vendor Model Number: %04x\n", ((phyid2 >> 4) & 0x3f)); - nllvdbg(" Model Revision Number: %04x\n", (phyid2 & 7)); + nllvdbg(" Vendor Model Number: %04x\n", + (phyid2 & MII_PHYID2_MODEL_MASK) >> MII_PHYID2_MODEL_SHIFT); + nllvdbg(" Model Revision Number: %04x\n", + (phyid2 & MII_PHYID2_REV_MASK) >> MII_PHYID2_REV_SHIFT); } else { @@ -2570,6 +2572,12 @@ static void sam_txreset(struct sam_emac_s *priv) txdesc[CONFIG_SAMA5_EMAC_NTXBUFFERS - 1].status = EMACTXD_STA_USED | EMACTXD_STA_WRAP; + /* Flush the entire TX descriptor table to RAM */ + + cp15_clean_dcache((uintptr_t)txdesc, + (uintptr_t)txdesc + + CONFIG_SAMA5_EMAC_NTXBUFFERS * sizeof(struct emac_txdesc_s)); + /* Set the Transmit Buffer Queue Pointer Register */ physaddr = sam_physramaddr((uintptr_t)txdesc); |