diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2008-05-26 13:23:11 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2008-05-26 13:23:11 +0000 |
commit | 90b16f78c2157f9a25f9790024e0f9aa507ded7a (patch) | |
tree | 3038111fb30befdc1af01aafe58aaca0cd826612 | |
parent | 04a68710857b5583d3704c65cf74ff7bf9b59d6e (diff) | |
download | ChibiOS-90b16f78c2157f9a25f9790024e0f9aa507ded7a.tar.gz ChibiOS-90b16f78c2157f9a25f9790024e0f9aa507ded7a.tar.bz2 ChibiOS-90b16f78c2157f9a25f9790024e0f9aa507ded7a.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@308 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r-- | ports/ARM7-AT91SAM7X/sam7x_emac.c | 8 | ||||
-rw-r--r-- | ports/ARM7-AT91SAM7X/sam7x_emac.h | 6 |
2 files changed, 7 insertions, 7 deletions
diff --git a/ports/ARM7-AT91SAM7X/sam7x_emac.c b/ports/ARM7-AT91SAM7X/sam7x_emac.c index 2ace89608..a8f7bf0a8 100644 --- a/ports/ARM7-AT91SAM7X/sam7x_emac.c +++ b/ports/ARM7-AT91SAM7X/sam7x_emac.c @@ -315,12 +315,12 @@ BufDescriptorEntry *EMACGetTransmitBuffer(void) { void EMACTransmit(BufDescriptorEntry *cptr, size_t size) {
chDbgAssert(size <= EMAC_TRANSMIT_BUFFERS_SIZE, "sam7x_emac.c, EMACTransmit");
-
- cptr->w2 &= ~W2_R_LENGTH_MASK;
- cptr->w2 |= size;
chSysLock();
- cptr->w2 &= ~(W2_T_USED | W2_T_LOCKED);
+ if (cptr < &tent[EMAC_TRANSMIT_BUFFERS - 1])
+ cptr->w2 = size | W2_T_LAST_BUFFER;
+ else
+ cptr->w2 = size | W2_T_LAST_BUFFER | W2_T_WRAP;
AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_TSTART;
chSysUnlock();
}
diff --git a/ports/ARM7-AT91SAM7X/sam7x_emac.h b/ports/ARM7-AT91SAM7X/sam7x_emac.h index 6eac41b00..599549c35 100644 --- a/ports/ARM7-AT91SAM7X/sam7x_emac.h +++ b/ports/ARM7-AT91SAM7X/sam7x_emac.h @@ -50,9 +50,9 @@ typedef struct { #define W2_T_LENGTH_MASK 0x000007FF
#define W2_T_LOCKED 0x00000800 /* Not an EMAC flag, used by the driver */
#define W2_T_RFU1 0x00003000
-#define W2_T_LAST_BUFFER 0x00004000
-#define W2_T_NO_CRC 0x00008000
-#define W2_T_RFU2 0x07FF0000
+#define W2_T_LAST_BUFFER 0x00008000
+#define W2_T_NO_CRC 0x00010000
+#define W2_T_RFU2 0x07FE0000
#define W2_T_BUFFERS_EXHAUSTED 0x08000000
#define W2_T_TRANSMIT_UNDERRUN 0x10000000
#define W2_T_RETRY_LIMIT_EXC 0x20000000
|