aboutsummaryrefslogtreecommitdiffstats
path: root/ports
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2008-05-26 13:23:11 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2008-05-26 13:23:11 +0000
commit90b16f78c2157f9a25f9790024e0f9aa507ded7a (patch)
tree3038111fb30befdc1af01aafe58aaca0cd826612 /ports
parent04a68710857b5583d3704c65cf74ff7bf9b59d6e (diff)
downloadChibiOS-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
Diffstat (limited to 'ports')
-rw-r--r--ports/ARM7-AT91SAM7X/sam7x_emac.c8
-rw-r--r--ports/ARM7-AT91SAM7X/sam7x_emac.h6
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