This is the mail archive of the
ecos-patches@sourceware.org
mailing list for the eCos project.
Re: Remove CYG_FAIL from AT91 serial driver
Hi Jim
Attached is the patch which got committed.
Andrew
Index: devs/serial/arm/at91/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/arm/at91/current/ChangeLog,v
retrieving revision 1.15
diff -u -r1.15 ChangeLog
--- devs/serial/arm/at91/current/ChangeLog 13 Mar 2006 07:46:36 -0000 1.15
+++ devs/serial/arm/at91/current/ChangeLog 2 Jun 2007 17:19:36 -0000
@@ -1,3 +1,9 @@
+2007-06-01 Jim Seymour <jim@cipher.com>
+
+ * src/at91_serial.c (at91_serial_DSR): Remove CYG_FAIL if receive
+ buffer fills up; eliminate compiler warning when setting "end"
+ pointer.
+
2006-03-05 Oliver Munz <munz@speag.ch>
* src/at91_serial.c (at91_serial_ISR): Only call the DSR if there
Index: devs/serial/arm/at91/current/src/at91_serial.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/arm/at91/current/src/at91_serial.c,v
retrieving revision 1.13
diff -u -r1.13 at91_serial.c
--- devs/serial/arm/at91/current/src/at91_serial.c 13 Mar 2006 07:46:37 -0000 1.13
+++ devs/serial/arm/at91/current/src/at91_serial.c 2 Jun 2007 17:19:37 -0000
@@ -571,10 +571,12 @@
if (stat & (AT91_US_IER_ENDRX | AT91_US_IER_TIMEOUT)) {
const cyg_uint8 cb = at91_chan->curbuf, nb = cb ^ 0x01;
const cyg_uint8 * p = at91_chan->rcv_buffer[cb], * end;
+ cyg_uint32 temp_word;
at91_chan->curbuf = nb;
HAL_WRITE_UINT32(base + AT91_US_RCR, 0);
- HAL_READ_UINT32(base + AT91_US_RPR, (CYG_ADDRESS) end);
+ HAL_READ_UINT32(base + AT91_US_RPR, temp_word);
+ end = (const cyg_uint8 *)temp_word;
HAL_WRITE_UINT32(base + AT91_US_RTO, RCV_TIMEOUT);
HAL_WRITE_UINT32(base + AT91_US_CR, AT91_US_CR_RSTATUS | AT91_US_CR_STTTO);
HAL_WRITE_UINT32(base + AT91_US_RPR, (CYG_ADDRESS) at91_chan->rcv_buffer[nb]);
@@ -609,7 +611,6 @@
default:
// Buffer full or unknown error, can't do anything about it
// Discard data
- CYG_FAIL("Serial receiver buffer overflow");
p = end;
break;
}