Index: ecos/packages/devs/serial/powerpc/mpc555/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/powerpc/mpc555/current/ChangeLog,v
retrieving revision 1.1
diff -u -r1.1 ChangeLog
--- ecos/packages/devs/serial/powerpc/mpc555/current/ChangeLog	6 May 2008 19:04:21 -0000	1.1
+++ ecos/packages/devs/serial/powerpc/mpc555/current/ChangeLog	22 May 2008 10:27:42 -0000
@@ -1,3 +1,9 @@
+2008-05-13  Steven Clugston  <steven.clugston@ncl.ac.uk>
+  * cdl/ser_powerpc_mpc555.cdl: Add line status
+  * src/mpc555_serial_with_ints.c: 
+    Fixed exception caused by attempt to clear scsr bits.
+    Add line status callbacks
+
 2008-04-06  Steven Clugston <steven.clugston@ncl.ac.uk>
 
 	* Refactored cme555 package to more generic mpc555
Index: ecos/packages/devs/serial/powerpc/mpc555/current/cdl/ser_powerpc_mpc555.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/powerpc/mpc555/current/cdl/ser_powerpc_mpc555.cdl,v
retrieving revision 1.1
diff -u -r1.1 ser_powerpc_mpc555.cdl
--- ecos/packages/devs/serial/powerpc/mpc555/current/cdl/ser_powerpc_mpc555.cdl	6 May 2008 19:04:21 -0000	1.1
+++ ecos/packages/devs/serial/powerpc/mpc555/current/cdl/ser_powerpc_mpc555.cdl	22 May 2008 10:27:42 -0000
@@ -32,6 +32,9 @@
 ##
 ## This exception does not invalidate any other reasons why a work based on
 ## this file might be covered by the GNU General Public License.
+##
+## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+## at http://sources.redhat.com/ecos/ecos-license/
 ## -------------------------------------------
 #####ECOSGPLCOPYRIGHTEND####
 # ====================================================================
@@ -72,6 +75,7 @@
     display       "mpc555 PowerPC serial port A driver"
     flavor        bool
     default_value 0
+    implements    CYGINT_IO_SERIAL_LINE_STATUS_HW
     description   "
         This option includes the serial device driver for the mpc555
         PowerPC port A."
@@ -110,6 +114,7 @@
     display       "mpc555 PowerPC serial port B driver"
     flavor        bool
     default_value 1
+    implements    CYGINT_IO_SERIAL_LINE_STATUS_HW
     description   "
         This option includes the serial device driver for the mpc555
         PowerPC port B."
Index: ecos/packages/devs/serial/powerpc/mpc555/current/src/mpc555_serial_with_ints.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/powerpc/mpc555/current/src/mpc555_serial_with_ints.c,v
retrieving revision 1.1
diff -u -r1.1 mpc555_serial_with_ints.c
--- ecos/packages/devs/serial/powerpc/mpc555/current/src/mpc555_serial_with_ints.c	6 May 2008 19:04:21 -0000	1.1
+++ ecos/packages/devs/serial/powerpc/mpc555/current/src/mpc555_serial_with_ints.c	22 May 2008 10:27:42 -0000
@@ -32,6 +32,9 @@
 //
 // This exception does not invalidate any other reasons why a work based on
 // this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
 // -------------------------------------------
 //####ECOSGPLCOPYRIGHTEND####
 //==========================================================================
@@ -609,14 +612,38 @@
   cyg_uint16 scdr;
   cyg_uint16 scsr;
 
-  // Allways read out the received character, in order to clear receiver flags
-  HAL_READ_UINT16(port + MPC555_SERIAL_SCxDR, scdr);
+#ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
+  cyg_serial_line_status_t stat;
+#endif
 
   HAL_READ_UINT16(port + MPC555_SERIAL_SCxSR, scsr);
+  // Always read out the received character, in order to clear receiver flags
+  HAL_READ_UINT16(port + MPC555_SERIAL_SCxDR, scdr);
+  
   if(scsr & (cyg_uint16)MPC555_SERIAL_SCxSR_ERRORS)
   {
-    scsr &= ~((cyg_uint16)MPC555_SERIAL_SCxSR_ERRORS);
-    HAL_WRITE_UINT16(port + MPC555_SERIAL_SCxSR, scsr);
+#ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
+    if(scsr & MPC555_SERIAL_SCxSR_OR)
+    {
+      stat.which = CYGNUM_SERIAL_STATUS_OVERRUNERR;
+      (chan->callbacks->indicate_status)(chan, &stat);
+    } 
+    if(scsr & MPC555_SERIAL_SCxSR_NF)
+    {
+      stat.which = CYGNUM_SERIAL_STATUS_NOISEERR;
+      (chan->callbacks->indicate_status)(chan, &stat);
+    } 
+    if(scsr & MPC555_SERIAL_SCxSR_FE)
+    {
+      stat.which = CYGNUM_SERIAL_STATUS_FRAMEERR;
+      (chan->callbacks->indicate_status)(chan, &stat);
+    } 
+    if(scsr & MPC555_SERIAL_SCxSR_PF)
+    {
+      stat.which = CYGNUM_SERIAL_STATUS_PARITYERR;
+      (chan->callbacks->indicate_status)(chan, &stat);
+    }
+#endif
   }
   else
   {
Index: ecos/packages/io/serial/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/serial/current/ChangeLog,v
retrieving revision 1.72
diff -u -r1.72 ChangeLog
--- ecos/packages/io/serial/current/ChangeLog	30 Jan 2008 18:39:11 -0000	1.72
+++ ecos/packages/io/serial/current/ChangeLog	22 May 2008 10:28:02 -0000
@@ -1,3 +1,8 @@
+2008-05-13  Steven Clugston  <steven.clugston@ncl.ac.uk>
+
+	* tests/ser_test_protocol.inl : Add mpc555 generic platform
+	* include/serialio.h : Add noise error define to line status
+  
 2008-01-30  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* src/common/termiostty.c (termios_lookup): Add missing set of
Index: ecos/packages/io/serial/current/include/serialio.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/serial/current/include/serialio.h,v
retrieving revision 1.11
diff -u -r1.11 serialio.h
--- ecos/packages/io/serial/current/include/serialio.h	1 Sep 2006 11:15:01 -0000	1.11
+++ ecos/packages/io/serial/current/include/serialio.h	22 May 2008 10:28:02 -0000
@@ -174,6 +174,7 @@
 # define CYGNUM_SERIAL_STATUS_OVERRUNERR    4
 # define CYGNUM_SERIAL_STATUS_CARRIERDETECT 5
 # define CYGNUM_SERIAL_STATUS_RINGINDICATOR 6
+# define CYGNUM_SERIAL_STATUS_NOISEERR      7
 
 typedef struct {
     cyg_uint32 which;        // one of CYGNUM_SERIAL_STATUS_* above
Index: ecos/packages/io/serial/current/tests/ser_test_protocol.inl
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/serial/current/tests/ser_test_protocol.inl,v
retrieving revision 1.31
diff -u -r1.31 ser_test_protocol.inl
--- ecos/packages/io/serial/current/tests/ser_test_protocol.inl	3 Aug 2005 21:00:34 -0000	1.31
+++ ecos/packages/io/serial/current/tests/ser_test_protocol.inl	22 May 2008 10:28:02 -0000
@@ -113,6 +113,15 @@
 #  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
 # endif
 #endif
+#if defined(CYGPKG_HAL_POWERPC_MPC5xx)                \
+    && defined(CYGPKG_IO_SERIAL_POWERPC_MPC555)                \
+    && defined(CYGPKG_IO_SERIAL_POWERPC_MPC555_SERIAL_A)
+# define TEST_CRASH_ID "mpc555"
+# define TEST_SER_DEV CYGDAT_IO_SERIAL_POWERPC_MPC555_SERIAL_A_NAME
+# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
+#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
+# endif
+#endif
 
 // We can't rely on haldiag for ser_filter detection - it may not define
 // a working character reading function.
