public inbox for ecos-patches@sourceware.org
 help / color / mirror / Atom feed
* MPC555 serial exception fix
@ 2008-05-13 13:39 Steven Clugston
  2008-05-21 22:02 ` Andrew Lunn
  2008-09-02  5:58 ` Andrew Lunn
  0 siblings, 2 replies; 4+ messages in thread
From: Steven Clugston @ 2008-05-13 13:39 UTC (permalink / raw)
  To: ecos-patches

[-- Attachment #1: Type: text/plain, Size: 7300 bytes --]

A small fix to prevent an exception occuring when buffer overrun /
parity / line noise / frame error(s) occur.
The scsr register should be treated as read-only and is cleared by
reading the data register, not by attempting to clear any set bits.

I've also added line status callback support, although nothing other
than PPPd seems to use it, and only then for modem carrier dectection.

I've submitted a copyright assignment form to assign@gnu.org, in case it
is needed, and am awaiting a reply.

Regards,

Steven Clugston

Mechanical and Systems Engineering
Newcastle University
Stephenson Building
Claremont Road
Newcastle-upon-Tyne
NE1 7RU
UK

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	13 May
2008 13:19:14 -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_power
pc_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	13 May 2008 13:19:14 -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_se
rial_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	13 May 2008 13:19:14 -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	13 May 2008 13:19:29
-0000
@@ -1,3 +1,7 @@
+2008-05-13  Steven Clugston  <steven.clugston@ncl.ac.uk>
+
+	* tests/ser_test_protocol.inl : Add mpc555 generic platform
+  
 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/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	13 May
2008 13:19:29 -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.

[-- Attachment #2: mpc555_serial.diff --]
[-- Type: application/octet-stream, Size: 6448 bytes --]

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	13 May 2008 13:19:14 -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	13 May 2008 13:19:14 -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	13 May 2008 13:19:14 -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	13 May 2008 13:19:29 -0000
@@ -1,3 +1,7 @@
+2008-05-13  Steven Clugston  <steven.clugston@ncl.ac.uk>
+
+	* tests/ser_test_protocol.inl : Add mpc555 generic platform
+  
 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/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	13 May 2008 13:19:29 -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.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: MPC555 serial exception fix
  2008-05-13 13:39 MPC555 serial exception fix Steven Clugston
@ 2008-05-21 22:02 ` Andrew Lunn
  2008-05-22 10:36   ` Steven Clugston
  2008-09-02  5:58 ` Andrew Lunn
  1 sibling, 1 reply; 4+ messages in thread
From: Andrew Lunn @ 2008-05-21 22:02 UTC (permalink / raw)
  To: Steven Clugston; +Cc: ecos-patches

On Tue, May 13, 2008 at 02:37:38PM +0100, Steven Clugston wrote:
> I've also added line status callback support, although nothing other
> than PPPd seems to use it, and only then for modem carrier dectection.

Hi Steve

This part does not compile:

> +    if(scsr & MPC555_SERIAL_SCxSR_NF)
> +    {
> +      stat.which = CYGNUM_SERIAL_STATUS_NOISEERR;
> +      (chan->callbacks->indicate_status)(chan, &stat);
> +    } 

I guess you changed serialio.h as well? Please could you submit that
change as well?

       Thanks
           Andrew

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: MPC555 serial exception fix
  2008-05-21 22:02 ` Andrew Lunn
@ 2008-05-22 10:36   ` Steven Clugston
  0 siblings, 0 replies; 4+ messages in thread
From: Steven Clugston @ 2008-05-22 10:36 UTC (permalink / raw)
  To: ecos-patches

[-- Attachment #1: Type: text/plain, Size: 8059 bytes --]


>Hi Steve
>
>This part does not compile:
>
>> +    if(scsr & MPC555_SERIAL_SCxSR_NF)
>> +    {
>> +      stat.which = CYGNUM_SERIAL_STATUS_NOISEERR;
>> +      (chan->callbacks->indicate_status)(chan, &stat);
>> +    }
>
>I guess you changed serialio.h as well? Please could you 
>submit that change as well?
>
>       Thanks
>           Andrew
>

Sorry, serialio.h slipped through the net.

I've rediffed the diff (including the previous changes).

Also I've received the assignment paperwork from GNU/FSF so I'll try and
get somebody with the legal clout to read through it and sign it off
asap.

Steve

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_power
pc_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_se
rial_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.

[-- Attachment #2: mpc555_serial.diff --]
[-- Type: application/octet-stream, Size: 7227 bytes --]

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.

[-- Attachment #3: ChangeLog --]
[-- Type: application/octet-stream, Size: 50194 bytes --]

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
	init flag. Pointed out by Rainer Arndt.

	
2008-01-30  Rainer Arndt <Arndt-ADT@kieback-peter.de>

	* src/common/termiostty.c (ecosbaud2posixbaud[]): Add missing
	B1800 entry.

2006-08-31  Ilija Koco  <ilijak@siva.com.mk>
	    Andrew Lunn <andrew.lunn@ascom.ch>
	
	* cdl/termios.cdl: 
	  src/common/termiostty.c: added Termios TTY channel #3
	* cdl/tty.cdl: 
	  src/common/tty.c: added TTY mode channel #3


2006-08-22  Peter Csordas <csordas@mit.bme.hu>

        * include/serialio.h (cyg_serial_baud_rate_t): Adding baud rate
	defines for 460800 and 921600 baud. 

2006-08-25  Gary Thomas  <gary@mlbassoc.com>

	* cdl/io_serial.cdl:  Set parent for more intuitive ConfigTool layout.

2006-05-09  Andrew Lunn  <andrew.lunn@ascom.ch>

	* src/common/tty.c (tty_init): Fix compiler warning with
	diag_printf() arguments.

2005-09-02  Sebastien Couret <sebastien.couret@elios-informatique.fr>

	* src/common/termiostty.c and 
	* tests/serial_echo.c : Fix compiler warning on a signedness 
	argument
	
2005-07-22  Andrew Lunn  <andrew.lunn@ascom.ch>

	* src/common/tty.c (tty_write): 
	* src/common/haldiag.c (haldiag_getc): Fixed pointer signness to
	avoid compiler warnings.
	* tests/*.c msglen should by an unsigned int to avoid compiler
	warnings.
	
2005-07-21  Andrew Lunn  <andrew.lunn@ascom.ch>

	* src/common/termiostty.c: Removed errbuf from priv. It was never
	being used after being allocated and never freed.

2005-06-27  Andrew Lunn <andrew.lunn@ascom.ch>

	* src/common/serial.c (serial_select): Swap the DSR locks and
	mutex locks around to avoid deadlocks with the rest of the code
	which uses this order.
	
2005-06-17  Andreas Gaer <andreas.gaer@baslerweb.com>

	* src/common/serial.c (serial_select): Lock DSRs inside
	serial_select() as the serial DSR calls functions manipulating the
	cbuf structs, leading to a race condition. Also use the mutex to
	avoid races between different threads.

2005-05-13  Peter Korsgaard  <jacmet@sunsite.dk>

	* src/common/serial.c (serial_init): Fix compiler warnings about
	formats strings for diag_printf.	

2004-11-30  Jani Monoses <jani@iv.ro>

	 * cdl/io_serial.cdl : CYGPKG_IO_SERIAL_SELECT_SUPPORT requires 
	 CYGFUN_IO_FILEIO_SELECT specifically not just CYGPKG_FILEIO. The 
	 latter provides select support only in kernel configurations.
	 
2004-04-22  Jani Monoses <jani@iv.ro>

	 * cdl/io_serial.cdl :
	 Invoke tail with stricter syntax that works in latest coreutils. 

2004-01-12  Dan Jakubiec <djakubiec@yahoo.com>

	* src/common/serial.c: serial_write() was returning an incorrect
	result code in non-blocking mode when output was blocked.  The
	previous code would return ENOERR with 0 bytes written.  This
	was fixed to return EAGAIN.

2003-08-18  Jay Foster <jay@systech.com>

	* src/common/serial.c: Fixed bug for XON/XOFF flow control that
	would cause multiple XON (or XOFF) characters to be sent for a
	single flow control state transition.
	Fixed bug in serial_write() that would cause output data to be
	discarded if using polled mode with flow control, and output
	was blocked due to flow control.
	Fixed bug in serial_data_xmt_req() that would not stop sending
	data when output was flow controlled off (hardware flow control).

2003-09-02  Eric Doenges <Eric.Doenges@DynaPel.com>

	* src/common/tty.c: Make tty_select prototype match implementation.
	* src/common/termiostty.c: Make termios_select prototype match 
	implementation.

2003-09-02  Jonathan Larmour  <jifl@eCosCentric.com>

	* src/common/serial.c: Make serial_select prototype match
	implementation.

2003-06-09  Nick Garnett  <nickg@balti.calivar.com>

	* src/common/serial.c: Changed all calls to cyg_drv_cond_signal()
	to cyg_drv_cond_broadcast(). Removed comment asking whether this
	matters: it does.

	* include/serialio.h: Added includes of pkgconf files so that the
	ifdefs in this file work properly.
	
	* include/serial.h: Added include of devtab.h to fix compile
	error.

2003-05-21  Gary Thomas  <gary@mlbassoc.com> 	

	* src/common/serial.c (serial_get_config): Restart receiver 
	after input queue flush if it had been throttled.  Inspired
	by David Marqvar <DAM@tt.dk>

2003-03-25  Jonathan Larmour  <jifl@eCosCentric.com>

	* src/common/serial.c (serial_get_config): For both INPUT_FLUSH
	and OUTPUT_FLUSH keys, pass down to the hardware driver as well
	to allow it to flush FIFOs.
	Based on patch from Roland Cassebohm.

2003-03-20  Gary Thomas  <gary@mlbassoc.com>

	* src/common/serial.c: Only return -EAGAIN if no data moved.

2003-03-11  Gary Thomas  <gary@mlbassoc.com>

	* src/common/termiostty.c (termios_read): VMIN handling still wasn't
	quite correct.  When VMIN > 0, at least VMIN characters should be
	read.

2003-02-24  Jonathan Larmour  <jifl@eCosCentric.com>

	* cdl/io_serial.cdl: Fix doc link.

2003-02-14  Jonathan Larmour  <jifl@eCosCentric.com>

	* src/common/termiostty.c: Support VMIN > 0 properly.

2002-12-10  Gary Thomas  <gthomas@ecoscentric.com>

	* src/common/tty.c (tty_write): Only return number of characters
	in original string which were written - don't include any CR/LF
	expansion characters.

2002-04-23  Jesper Skov  <jskov@redhat.com>

	* tests/serial3.c (serial_test): Use 19200 baud rate when board
	cannot handle 38400.
	* tests/serial5.c (serial_test): Same.

2002-02-19  Jesper Skov  <jskov@redhat.com>

	* cdl/io_serial.cdl: Removed termiostty.c build rule.

	* cdl/termios.cdl: Make termiostty.c building depending on actual
	requirements for its content.

2002-02-15  Jesper Skov  <jskov@redhat.com>

	* tests/flow1.c: Also try DSR/DTR flow control (presently
	unsupported by Linux though).
	* tests/flow2.c: Same.

2002-01-11  Jonathan Larmour  <jlarmour@redhat.com>

	* src/common/termiostty.c (termios_read): Don't return after VMIN,
	this was a stupid thing to do and decreases performance a lot.

2001-08-15  Gary Thomas  <gthomas@redhat.com>

	* tests/ser_test_protocol.inl: Change NONE in 'cyg_verbosity_level_t'
	to be _NONE [unused] to avoid name clash with <kernel/kapi.h>.

2000-12-08  Jonathan Larmour  <jlarmour@redhat.com>

	* src/common/serial.c: Fix CYGOPT_IO_SERIAL_FLOW_CONTROL_HW ->
	CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS typo when declaring callbacks
	Thanks to Brian Danilko for reporting.

2000-11-22  Jesper Skov  <jskov@redhat.com>

	* src/common/serial.c: Changed #ifdef to #if used on an interface
	option.

2000-11-06  Jonathan Larmour  <jlarmour@redhat.com>

	* src/common/tty.c (tty_write): Check buffer size appropriately
	since when doing \r\n expansion "size" may have been double
	incremented as a result.
	Thanks to Alex Mathews of Crosstor for the fix.

2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>

	* src/common/serial.c: Include cyg/infra/cyg_ass.h for assertion
	support since we have assertions here!

2000-10-12  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Moved most testing parameters into
	device driver CDL.

	* cdl/io_serial.cdl: Added comment.

2000-10-06  Jesper Skov  <jskov@redhat.com>

	* src/common/serial.c (serial_rcv_char): Register overruns.
	
	* src/common/serial.c: Made block request functions return cause
	of failure. Necessary for the device driver to be able to
	fall-back to other transfer method efficiently.
	* include/serial.h: Added enum with failure types.

2000-10-03  Jesper Skov  <jskov@redhat.co.uk>

	* tests/ser_test_protocol.inl: Moved testing parameters to device
	driver CDL for SH targets.

2000-09-29  Jesper Skov  <jskov@redhat.com>

	* include/serialio.h: Fix compiler warning and errors due to
	non-default flow control config.

2000-09-27  Jesper Skov  <jskov@redhat.com>

	* src/common/serial.c (serial_data_rcv_done,
	serial_data_xmt_done): Buffer pointers updated in _done instead of
	in _req to avoid race in xmt. Same change in rcv for consistency.
	* include/serial.h: Changed prototype accordingly.

2000-09-18  Jesper Skov  <jskov@redhat.com>

	* cdl/io_serial.cdl: Added interfaces to allow test tweaking.
	* tests/ser_test_protocol.inl: Use interfaces. Moved PID details
	to PID serial package.

2000-09-15  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Allow drivers to define testing
	parameters via CDL.

2000-09-13  Jesper Skov  <jskov@redhat.com>

	* include/serial.h (SERIAL_CALLBACKS): Fix typo.

2000-09-06  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Renamed some option names due to SH
	serial driver reorg.

2000-08-09  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/common/serial.c (serial_indicate_status): Treat flow control
	case conditionally

2000-08-08  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/common/serial.c (serial_data_rcv_req): Adjust nb in correct
	direction

2000-08-04  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* cdl/io_serial.cdl: Default software flow control to on (but keep
	flow control overall default off)

	* tests/flow1.c (cyg_start): Fix N_A_MSG -> NA_MSG typo
	* tests/flow2.c (cyg_start): Ditto

2000-08-03  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* cdl/io_serial.cdl: Should default flow control to off

	* src/common/serial.c (serial_data_xmt_req): Update cbuf->nb
	(serial_data_rcv_req): Update cbuf->nb

2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* cdl/io_serial.cdl: Add support for line status queries,
	software flow control, hardware flow control and POSIX termios
	* include/serial.h: Likewise. Also change prototype for set_config
	hardware operations to use keys to be more flexible.
	* include/serialio.h: Add lots of types and constants to support
	new line status and flow control config key queries
	
	* src/common/haldiag.c (haldiag_set_config): Use keys to be more
	flexible.

	* src/common/serial.c: Many changes to support software/hardware
	flow control (with low and high water points), line status and
	fix some omissions with select. Also fix bugs in block transfer
	functions resulting from EL/IX merge.

	* tests/flow1.c, tests/flow2.c: New tests for flow control

	* cdl/termios.cdl: Add to configure termios
	* src/termios.c: Add new POSIX Termios API
	* src/termiostty.c: Add POSIX Termios tty driver

	* tests/ser_test_protocol.inl (change_config): Add support for
	hardware and software flow control testing, indicated to the 
	host by an extra CONFIG argument.

	* tests/serial3.c: Add flow control config
	* tests/serial5.c: Add flow control config

2000-07-31  Nick Garnett  <nickg@cygnus.co.uk>

	* src/common/serial.c: Changed BLOCKING control definitions to
	generic versions.

2000-07-03  Jesper Skov  <jskov@redhat.com>

	* src/common/serial.c (serial_data_rcv_req): Fix off-by-1 bug.

2000-06-23  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Added cq7708 definitions.

2000-06-19  Nick Garnett  <nickg@cygnus.co.uk>

	* include/serial.h:
	* src/common/serial.c:
	Added nb field to cbuf_t structure. This keeps track of the number of
	bytes currently in the buffer. Without this counter, there is no
	way to distinguish a totally full buffer from one that is totally
	empty, since in both cases put==get.

2000-06-15  Nick Garnett  <nickg@cygnus.co.uk>

	* include/serial.h: Added selinfo field to cbuf structure when
	select support is enabled.

	* src/common/serial.c:
	* src/common/tty.c:
	Added select support.

	* cdl/io_serial.cdl: Added CYGPKG_IO_SERIAL_SELECT_SUPPORT to
	enable select() support. Defaults to on.
	Also added component for loopback driver.

	* tests/ser_test_protocol.inl: Added test setup for loopback
	driver.

2000-05-28  Gary Thomas  <gthomas@redhat.com>

	* tests/ser_test_protocol.inl: Rename NEC V85x drivers.

2000-05-25  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Added rules for REF4955.

2000-05-08  Jesper Skov  <jskov@redhat.com>

    	* cdl/io_serial.cdl: active_if CYGPKG_IO

2000-05-05  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/common/serial.c (serial_get_config): Tidy below change a little

2000-05-05  Grant Edwards  <grante@visi.com>

	* src/common/serial.c (serial_get_config): Support
	CYG_IO_GET_CONFIG_SERIAL_BUFFER_INFO key to get buffer information

	* include/serialio.h: Add cyg_serial_buf_info_t

2000-05-04  Jesper Skov  <jskov@redhat.com>

	* cdl/io_serial.cdl: Only build tests when drivers enabled.

2000-05-02  Jesper Skov  <jskov@redhat.com>

	* src/common/serial.c (serial_set_config): Set proper parity for
	blocking options.
	(serial_get_config): Fix copy'n'paste buglet.
	
2000-05-01  Jesper Skov  <jskov@redhat.com>

	* src/common/serial.c: Added non-blocking config and operation for
	read/write calls.
	Added block transfer rcv/xmt callbacks.
	Added (disabled for now) check for rcv overflow. [need to add
	handling]
	
	* include/serial.h: Added non-blocking callbacks.

	* cdl/io_serial.cdl: Added non-blocking option. Added block
	transfer interface.

2000-04-17  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/PKGconf.mak: remove; it's obsolete.

2000-04-13  Gary Thomas  <gthomas@redhat.com>

	* src/common/serial.c (serial_write): Make safer - only call
	'start_xmit' with DSRs disabled.

2000-04-11  Hugo Tyson  <hmt@cygnus.co.uk>

	* cdl/io_serial.cdl (CYGPKG_IO_SERIAL_DEVICES): New package which
	is a container and control for the real device drivers.

2000-04-11  Jesper Skov  <jskov@redhat.com>

	* cdl/io_serial.cdl: Bad hack to build separate test.
	* tests/serial_echo.c: Added.

2000-04-11  Hugo Tyson  <hmt@cygnus.co.uk>

	* cdl/ser_.... (driver-specific cdl files):
	Remove all these; they are no longer needed following the change
	below.  They do exist in devs/serial/ARCH/PLATFORM/VERSION/cdl/
	directories various instead.

2000-04-07  Hugo Tyson  <hmt@cygnus.co.uk>

	* ecos.db: Re-organize device packages.  This is a massive change
	involving deleting all the sources for serial and ethernet drivers
	from where they used to live in
	    packages/io/serial/current/src/ARCH/PLATFORM.[ch]
	    packages/net/drivers/eth/PLATFORM/current/src/...
	and reinstating them in
	    packages/devs/serial/ARCH/PLATFORM/current/src/...
	    packages/devs/eth/ARCH/PLATFORM/current/src/...

	All these new packages are properly defined in ecos.db, and are
	all of type "hardware" so that a "target" can grab them.
	
	This directory layout is descriptive of the devices we have right
	now, arch and platform are separate levels just to make it easier
	to navigate in the filesystem and similar to the HAL structure in
	the filesystem.

	It is *not* prescriptive of future work; for example, the mythical
	common highly-portable 16550 serial driver which works on many
	targets would be called "devs/serial/s16550/current", or a serial
	device for a particular board (cogent springs to mind) that can
	work with different CPUs fitted is "devs/serial/cogent/current".

	Changelogs have been preserved and replicated over all the new
	packages, so that no history is lost.

	The contents of individual source files are unchanged; they build
	in just the same emvironment except for a very few cases where the
	config file name changed in this movement.

	Targets in ecos.db have been redefined to bring in all relevant
	hardware packages including net and serial drivers (but the newly
	included packages are only active if their desired parent is
	available.)
	
	The names of CDL options (and their #defines of course) stay the
	same for the serial drivers, for backward compatibility.

	* templates/*/current.ect: these have had CYGPKG_IO_SERIAL added
	rather than it being in (almost) all target definitions.
	
2000-04-07  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/common/tty.c (tty_read): Correct handling of modes with newlines

2000-04-05  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/common/tty.c (tty_read): CRLF conversion should use \r\n not \n\r
	(tty_write): Similarly

	* include/ttyio.h: Update CYG_TTY_IN_FLAGS_CRLF and
	CYG_TTY_IN_FLAGS_CRLF to match

2000-03-31  Jesper Skov  <jskov@redhat.com>

	* cdl/ser_sh_edk7708.cdl: Limit legal baud rate range.
	* src/sh/sh_sci_serial.c: Use baud rate macro instead of hardwired
	constants.

2000-03-28  John Dallaway  <jld@cygnus.co.uk>

	* cdl/io_serial.cdl,
	  cdl/ser_arm_aeb.cdl,
	  cdl/ser_arm_cma230.cdl,
	  cdl/ser_arm_edb7xxx.cdl,
	  cdl/ser_arm_pid.cdl,
	  cdl/ser_i386_pc.cdl,
	  cdl/ser_mips_jmr3904.cdl,
	  cdl/ser_mips_vrc4373.cdl,
	  cdl/ser_mn10300.cdl,
	  cdl/ser_powerpc_cogent.cdl,
	  cdl/ser_quicc_smc.cdl,
	  cdl/ser_sh_edk7708.cdl,
	  cdl/ser_sparclite_sleb.cdl,
	  cdl/tty.cdl:

	Adjust documentation URLs.

2000-03-07  Jesper Skov  <jskov@redhat.com>

	* cdl/ser_mips_jmr3904.cdl: Rename devices to match CDL naming.

2000-02-29  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* include/serialio.h: Correct baud rate typo: 230400 rather than
	234000. Thanks to Grant Edwards for the report.

2000-02-28  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/powerpc/quicc_smc_serial.c: Use standard 'diag_dump_buf()'.

2000-02-28  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Allow 115200 baud on Cogent
	again. Fixed interrupt problem.

2000-02-22  Jesper Skov  <jskov@redhat.com>

	* tests/ser_test_protocol.inl: Don't use 115200 baud on
	Cogent. Our slower boards can't keep up.

2000-02-17  Gary Thomas  <gthomas@cygnus.co.uk>

	* cdl/ser_powerpc_cogent.cdl: Fix incorrect dependency.

2000-02-16  Nick Garnett  <nickg@cygnus.co.uk>

	* include/pkgconf/io_serial.h:
	Added configury for PC serial device drivers.

	* cdl/ser_i386_pc.cdl:
	* src/i386/pc_serial.c:
	* src/i386/pc_serial.h:
	Added these files to implement PC serial line drivers.

	* cdl/io_serial.cdl:
	Added CYGPKG_IO_SERIAL_I386_PC.

	* tests/ser_test_protocol.inl:
	Added support for PC serial line testing.
	
2000-02-11  Jesper Skov  <jskov@redhat.com>

	* src/sh/sh_sci_7708.inl (DEVTAB_ENTRY): 
	* src/sparclite/sleb_sdtr.c: 
	serial_devio => cyg_io_serial_devio

2000-02-10  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/mn10300/mn10300_serial.c: Ensure all CYG_HAL_MN10300_*
	preprocessor conditionals use the correct CYGPKG_HAL_MN10300_AM3* form
	now.	

2000-02-03  Jesper Skov  <jskov@redhat.com>

	* src/powerpc/quicc_smc_serial.c: CYG_HAL_POWERPC_x->CYGPKG_...

2000-02-02  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* src/arm/aeb_serial.h: Rename lower case register macros to REG_ upper
	case macros

	* src/arm/aeb_serial.c: Update to reflect above

2000-01-31 Simon FitzMaurice  <sdf@cygnus.co.uk>
  * cdl/*.cdl:

  Adjust help URLs in line with new doc layout.
  
2000-01-28 Simon FitzMaurice  <sdf@cygnus.co.uk>
  * cdl/*.cdl:

  Adjust help URLs in line with new doc layout.
  
2000-01-28  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/common/tty.c (tty_read): Fix problem with backspace at start
	of line (size must be 'signed' for compare to work).

2000-01-19  Hugo Tyson  <hmt@cygnus.co.uk>

	* cdl/*.cdl: Add descriptions to a number of options &c which were
	lacking same, also tidied up other typos as noticed en passant.

2000-01-17  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/common/tty.c (tty_read): Avoid echoing "backspace/erase" at
	start of line.

2000-01-05  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/common/serial.c (serial_write): Avoid potential deadlock if
	transmit start actually sends enough characters to signal cond wait.

2000-01-03  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/serial.h: Fix namespace pollution - 
	serial_devio => cyg_io_serial_devio
	serial_callbacks => cyg_io_serial_callbacks

	* src/mips/tx3904_serial.c: 
	* src/mips/vrc4373_serial.c: 
	* src/mn10300/mn10300_serial.c: 
	* src/powerpc/quicc_smc_serial.c: 
	* src/powerpc/cogent_serial_with_ints.c: 
	* src/sparclite/sleb_sdtr.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: 
	* src/arm/edb7xxx_serial.c: 
	* src/arm/cma230_serial.c: 
	* src/arm/ebsa285_serial.c: 
	* src/common/haldiag.c: 
	* src/common/serial.c: Fix namespace pollution - 
	serial_devio => cyg_io_serial_devio

1999-12-06  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/pid_serial_with_ints.c (pid_serial_DSR): Add loop to handle
	case where an interrupt represents multiple events.

1999-11-19  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/powerpc/quicc_smc_serial.c: Channel select for SMC2 was wrong.

1999-11-18  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Remove mention of 7209/7212.

1999-11-03  John Dallaway  <jld@cygnus.co.uk>

	* cdl/io_serial.cdl: Define build options.

1999-10-26  Jesper Skov  <jskov@cygnus.co.uk>
	* tests/serial5.c (serial_test): Reduce speed in thumb mode.

	* src/arm/pid_serial.h: Added BE support.

	* src/PKGconf.mak: Use CYGPKG_<> instead of CYG_<> to control what
	needs to be compiled.

1999-10-25  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/pid_serial.h (ISR_RxTO): Define - character received but
	not handled "promptly".

	* src/arm/pid_serial_with_ints.c (pid_serial_DSR): Handle rcv interrupts
	properly (can't ignore them even with TO bit set).

	* src/arm/cl7211_serial.c (cl7211_serial_rx_DSR): Need to handle all
	input (empty input FIFO) otherwise characters get dropped.

1999-10-15  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Removed AEB rev C change. Was bogus.

1999-10-11  Nick Garnett  <nickg@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Added configury for VR4300 testing.

	* src/mips/vrc4373_serial.c: Added Bi-endian support.

	* include/pkgconf/io_serial.h: Adjusted default baud rates to
	38400.

1999-10-06  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Run tests on AEB rev C as well.

1999-09-28  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/powerpc/quicc_smc_serial.c (quicc_smc_serial_init): Correct
	value supplied for interrupt priority - it may be unused, but it
	is asserted for range.  Initialize the diagnostic channel if on an
	MBX and if NOT using SMC1 ourselves, to ensure that diag output
	and built-in stubs work correctly; otherwise reset the quicc and
	ignore SMC1 as before.  Fix various warnings, mostly about
	casting/arg-passing/assigning away volatile.

1999-08-31  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Define dummy crash ID.

1999-08-30  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Added crash information which
	should help track down repeating errors.

1999-08-20  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/README: Added.

1999-08-18  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/tty1.c: 
	* tests/tty2.c: 
	* tests/serial1.c: 
	* tests/serial2.c: 
	* tests/serial3.c: 
	* tests/serial4.c: 
	* tests/serial5.c: 
	* tests/PKGconf.mak:
	Require kernel and kernel C API.
	
1999-08-17  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mn10300/mn10300_serial.c: Added a simple implementation of a
	receive FIFO to try and reduce the overhead of receiving bytes.

1999-08-16  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* src/PKGconf.mak:
	* src/mn10300/mn10300_serial.c:
	* tests/ser_test_protocol.inl:
	Rename all am32 -> am31

1999-08-12  Nick Garnett  <nickg@cygnus.co.uk>

	Imported following changes from development branch:
	
    1999-08-11  Nick Garnett  <nickg@cygnus.co.uk>

	* tests/serial5.c: Modified config test for boards that need a lower
	speed for this test.

	* tests/ser_test_protocol.inl: Removed 14400 baud tests for all
	MN10300 variants. The MN10300 cannot currently do this speed.

	* src/mn10300/mn10300_serial.c: Tidied up the transmit interrupt
	enable/disable code to be variant specific.

	* include/pkgconf/io_serial.h: Undid Jonathan's change, since the
	same options are used for all MN10300 variants.
	
    1999-08-10  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* include/pkgconf/io_serial.h:
        Reparent CYGPKG_IO_SERIAL_MN10300 from under CYGPKG_HAL_MN10300 to
        CYGPKG_HAL_MN10300_AM32_STDEVAL1 since it's stdeval1 specific

    1999-08-04  Nick Garnett  <nickg@cygnus.co.uk>

	* tests/ser_test_protocol.inl:
	Changed names of MN10300 defines tested. Added AM33 definitions.

	* src/mn10300/mn10300_serial.c:
	Modified driver to work on am33 too. This simply requires some
	alternate definitions of things like register addresses and some
	bits in them plus some extra parameterization of some register
	values.

	* src/PKGconf.mak:
	Added am33 to list of architectures supporting serial lines.
	
1999-07-28  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Update descriptions to be more
 	generic (CL7x11 instead of CL7211).

1999-07-28  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Correct typos in CDL description
	for serial port 2 driver

1999-07-26  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/arm/ebsa285_serial.c: New file: device driver for the serial
	device of the Intel StrongARM EBSA-285 evaluation board.

	* include/pkgconf/io_serial.h (CYGPKG_IO_SERIAL_ARM_EBSA285):
	Config for it.

	* src/PKGconf.mak (EXTRAS_COMPILE): Compile it.

	* tests/ser_test_protocol.inl (TEST_SER_DEV): Enable testing of it.

1999-07-08  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl (change_config): Changed implementation.

1999-06-27  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/powerpc/quicc_smc_serial.c (quicc_smc_serial_init): More robust
	initialization, with data cache disabled.  This seems to fix the
	random failures described below.

	* tests/ser_test_protocol.inl: Add configuration for QUICC/MBX860.
	Added some delays in the configuration change code to make QUICC
	happy [didn't help much although the manual says they are required].

	* src/powerpc/quicc_smc_serial.h (UART_BITRATE): Rewrote macro to 
	match what the Linux driver uses - still doesn't work well, though.

	* src/powerpc/quicc_smc_serial.c: Lots of changes trying to get the
	serial driver working and robust.  At this point it works quite well,
	using the default buffer sizes.  Changing from the defaults seem to
	easily break it though, certainly on input.  Also, changing the baud
	rate seems to not work reliably.

	* src/common/serial.c: Add some tracing/debug info to try and debug
	problems with QUICC serial driver.  These are hard disabled with
	"XX_" prepended to "CYGDBG_DIAG_BUF".  Enabling them gives information
	about how/when data are delivered from the serial driver.

	* include/pkgconf/io_serial.h: Adjust limits and defaults on number and
	size of buffers with values that seem to work.

1999-06-21  Jesper Skov  <jskov@cygnus.co.uk>

	* src/sh/sh_sci_serial.c: Rearranged inclusion of .inl file a bit
	to avoid compiler warnings.

1999-06-21  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Fix CDL for number of buffers.

	* src/powerpc/quicc_smc_serial.c: Force number of buffers = 1.

1999-06-20  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Some clean up (removed commented
	obsolete CDL parenting structure).
	Add support for Motorola PowerPC QUICC/SMC.

	* src/arm/cma230_serial.c: 
	* src/arm/cl7211_serial.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: Use #include to get 'diag_printf()'
	prototypes.

1999-06-17  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/cl7211_serial.c (cl7211_serial_start_xmit): Fix race which
	cause xmitter to get stuck.

1999-06-16  Jesper Skov  <jskov@cygnus.co.uk>

	* src/sh/sh_serial.c:          [removed]
	* src/sh/sh_sci_serial.c:      [added]
	* src/sh/sh_sci_7708.inl:      [added]
	* include/pkgconf/io_serial.h: 
	* src/PKGconf.mak (EXTRAS_COMPILE): 
	* tests/ser_test_protocol.inl: 
	Renamed CDL options and restructered driver.
	Fixed CDL typo.
	
1999-06-04  Jesper Skov  <jskov@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Fixed CDL string for BAUD rate option.

1999-06-04  Gary Thomas  <gthomas@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Disable testing at 115200
	for Cogent CMA230 (ARM).

	* src/arm/cma230_serial.c: Fix interrupt for port B.

1999-05-31  Jesper Skov  <jskov@cygnus.co.uk>

	* src/sh/sh_serial.c: Fixed receive interrupts and added handler for
	error interrupts.

1999-05-28  Jesper Skov  <jskov@cygnus.co.uk>

	* io/serial/current/src/PKGconf.mak:
	* io/serial/current/tests/ser_test_protocol.inl:
	* include/pkgconf/io_serial.h: 
	Renamed SH platform package to edk7708.

1999-05-27  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Added ability to change options in
	host software.

1999-05-27  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* src/mn10300/mn10300_serial.c (mn10300_serial_config_port): 
	Wait for the serial device to become acquiescent before disabling
	it. This prevents cygmon's outgoing characters getting corrupted
	due to transmission being disabled.
	Fix for PR 20047
	
1999-05-26  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: 
	* tests/ser_test_protocol.inl: Add Cogent CMA230 setup.
	
	* src/arm/cma230_serial.c: Make names compatible with Cogent
	PowerPC board.

1999-05-26  Gary Thomas  <gthomas@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Add Cirrus Logic CL7211 setup.
1999-05-26  Jesper Skov  <jskov@cygnus.co.uk>

	* src/sh/sh_serial.c: Added more baud rate values. Disabled
	interrupt driven receive. Fixed config_port to enable proper
	interrupt flags.

1999-05-25  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* tests/ser_test_protocol.inl: 
	Change all mentions of CYGPKG_HAL_TX39_JMR3904 to
	CYGPKG_HAL_MIPS_TX39_JMR3904

1999-05-25  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* src/PKGconf.mak (EXTRAS_COMPILE): Change CYG_HAL_TX39 to
	CYG_HAL_MIPS_TX39
1999-05-25  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Added sh entry.

1999-05-24  Jesper Skov  <jskov@cygnus.co.uk>

	* src/PKGconf.mak:
	* include/pkgconf/io_serial.h: 
	* src/sh/sh_serial.c: 
	Added sh driver.

1999-05-18  Jesper Skov  <jskov@cygnus.co.uk>
        PR 19926
	* src/sparclite/sleb_sdtr.c (sleb_sdtr_rx_DSR): Only read chan if
	there is one.

1999-05-18  Jesper Skov  <jskov@cygnus.co.uk>
        PR 19926
	* src/arm/cl7211_serial.c (cl7211_serial_rx_DSR): Only read char
	if there is one.

1999-05-16  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/cl7211_serial.c: Clean up, first working version.

1999-05-14  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Removed workaround for spurious
	Cogent reads.

	* src/arm/aeb_serial.c:
	* src/arm/aeb_serial.h: 
	* src/arm/pid_serial_with_ints.c: 
	* src/arm/pid_serial.h: 
	* src/powerpc/cogent_serial.h: 
	* src/powerpc/cogent_serial_with_ints.c:
	Check for receive interrupt before reading.

1999-05-13  Nick Garnett  <nickg@cygnus.co.uk>

	The follow changes were made in a branch an have now been merged:

    1999-04-21  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/mips/vrc4373_serial.c: Small changes to get working with
	interrupts.
	
    1999-04-20  John Dallaway  <jld@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Fix CYGPKG_IO_SERIAL_TX39_JMR3904
	parent attribute.

1999-05-11  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/cl7211_serial.c: Fix compile problems from merged code.

1999-05-05  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Tidied up a bit and added
	description of protocol.

1999-05-05  Jesper Skov  <jskov@cygnus.co.uk>

	* src/common/serial.c (serial_write, serial_read): Clear abort
	flag at entry.

1999-05-05  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/serial4.c (serial_test): Handle config fails correctly.

	* tests/ser_test_protocol.inl: Better change_config
	handling. Simple recovery and negotiation isn't timing
	dependant. 

1999-05-05  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/timeout.inl: Updated with the below changes.

1999-05-05  Gary Thomas  <gthomas@cygnus.co.uk>

	* misc/timeout.inl (timeout): Timeouts are relative, but alarms 
	need absolute time values.

1999-05-04  Jesper Skov  <jskov@cygnus.co.uk>
        PR 20018
	* tests/serial1.c (serial_test): Always PASS, regardless of
	configuration.

1999-05-04  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Reverse order of configurations -
	run tests with slow baud rate first.
	Only check CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT for SLEB on RAM startup.

1999-05-04  Jesper Skov  <jskov@cygnus.co.uk>
 	* src/mn10300/mn10300_serial.c:
 	Use interrupt enable/disable feature of serial port2 to allow
 	coexistence with CygMon/hal_diag.
 
 	* tests/ser_test_protocol.inl: Use port2 for MN10300.

1999-04-28  Bart Veer  <bartv@cygnus.co.uk>

	* src/PKGconf.mak (EXTRAS_COMPILE):
	Use the new rules for generating libextras.a

1999-04-26  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Add support for Cirrus Logic CL7211.


1999-04-20  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: Fix default baud rate if unbuffered.
1999-04-20  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Added some comments. Disabled 38400
	for SLEB. Only run test on SLEB if CygMon isn't used for diag
	output.
	
1999-04-15  Jesper Skov  <jskov@cygnus.co.uk>
        PR 19752
	* tests/serial3.c:
	* tests/serial5.c:
	Run these tests at a lower baud rate on ARM AEB.
	
1999-04-14  Jesper Skov  <jskov@cygnus.co.uk>
        PR 19839
	* src/mn10300/mn10300_serial.c: 
	Fix compiler warnings.

1999-04-14  Bart Veer  <bartv@cygnus.co.uk>

	* include/pkgconf/io_serial.h:
	Reparent the board-specific serial devices below the actual boards.
	
1999-04-13  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl:
	NA when run from simulator.

1999-04-12  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl:
	Disabled 115200 for MN10300.
	Reclaim interrupt vectors from CygMon when testing on SLEB.

1999-04-09  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/serial.h: Change SERIAL_CHANNEL setup so all channels
	have serial callbacks, regardless of buffering.

1999-04-09  Jesper Skov  <jskov@cygnus.co.uk>

	* src/common/tty.c: 
	* include/pkgconf/io_serial.h:
	Added new ttydiag device layered on top of haldiag, so that tty0
	can be layered on top of ser0.

1999-04-08  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/tty1.c:                [added]
	* tests/tty2.c:                [added]
	* tests/PKGconf.mak: 
	* tests/ser_test_protocol.inl:
	Added two simple TTY tests.

1999-04-07  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/sparclite/sleb_sdtr.h: Include cyg/hal/hal_io.h for I/O
	macros instead of hal_diag.h where they had evolved before.

1999-04-06  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/serial4.c (serial_test): 
	* tests/serial3.c (serial_test): 
	Reduce packet sizes.

1999-03-31  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Added remaining targets to the
	test.

1999-03-31  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/sparclite/sleb_sdtr.c (sleb_sdtr_start_xmit): Fix timing race
	when enabling xmit interrupts.

1999-03-26  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/sparclite/sleb_sdtr.c: Change how the port is set up.  The transmitter
	is now always enabled, just the interrupts are masked/unmasked to control it.
	This lets the serial driver cooperate with Cygmon on the port used for GDB.
	Note that currently serial input does not work for CON1 since Cygmon is
	taking all of the receive interrupts for itself.
	(sleb_sdtr_tx_DSR): Need to keep track whether xmit interrupt should be
 	enabled - otherwise it can get enabled incorrectly and we get interrupted
	to death!

1999-03-26  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Send a DONE message after a no-echo
	binary packet.

1999-03-26  Hugo Tyson  <hmt@cygnus.co.uk>

	* tests/serial5.c: 
	* tests/serial4.c:
	* tests/serial3.c:
	* tests/serial2.c:
	* tests/serial1.c:
	Make these build when no kernel present; include of testcase
	was the wrong side of the ifdef.

1999-03-26  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/serial5.c:
	* tests/serial4.c:
	* tests/serial3.c:
	* tests/serial2.c:
	* tests/serial1.c:
	Moved NOP check to ser_test_protocol open call.
	
	* tests/ser_test_protocol.inl: Make sure the proper device is
	selected for testing. Do NOP check in open call.

1999-03-25  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: 
	* misc/console.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: 
	* src/common/tty.c: 
	* src/mips/tx3904_serial.c: 
	* src/mn10300/mn10300_serial.c: 
	* src/powerpc/cogent_serial_with_ints.c: 
	* src/sparclite/sleb_sdtr.c: Update CDL to follow naming conventions.

	* src/mips/tx3904_serial.c (tx3904_serial_config_port): 
	Make sure port is enabled (CDL) before using it.

	* src/mn10300/mn10300_serial.c (mn10300_serial_config_port): 
	* src/powerpc/cogent_serial_with_ints.c (cogent_serial_config_port): 
	* src/arm/aeb_serial.c (aeb_serial_config_port): 
	* src/arm/pid_serial_with_ints.c (pid_serial_config_port): Change so that
	the physical port is not modified unless the provided configuration is valid.

	* src/sparclite/sleb_sdtr.c (sleb_sdtr_config_port): 
	Using wrong config data.

	* include/serialio.h: Add macros to support baud rate from CDL.

	* include/pkgconf/io_serial.h: 
	* src/mn10300/mn10300_serial.c: 
	* src/mips/tx3904_serial.c (tx3904_serial_ISR): 
	* src/sparclite/sleb_sdtr.c: 
	* src/powerpc/cogent_serial_with_ints.c: 
	* src/arm/pid_serial_with_ints.c: 
	* src/arm/aeb_serial.c: Add configury for baud rate and buffer size.

1999-03-24  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mips/tx3904_serial.c:
	Now uses CYGHWR_HAL_MIPS_CPU_FREQ_ACTUAL to get CPU
	frequency. This is a little more accurate than using
	CYGHWR_HAL_MIPS_CPU_FREQ.

1999-03-24  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/serialio.h (CYGNUM_SERIAL_BAUD_MIN/MAX): Add for completeness.

	* src/arm/aeb_serial.c (aeb_serial_stop_xmit): 
	* src/arm/pid_serial_with_ints.c (pid_serial_stop_xmit): Fix typo in comment.

1999-03-24  Jesper Skov  <jskov@cygnus.co.uk>

	* tests/ser_test_protocol.inl: Weeded out configs TX39 doesn't
	like.

	* src/powerpc/cogent_serial.h: 
	Added copyright header.
	
	* tests/ser_test_protocol.inl: 
	* tests/serial1.c: 
	* tests/serial2.c: 
	* tests/serial3.c: 
	* tests/serial4.c: 
	* tests/serial5.c: 
	Don't try to run tests when no IO device has been specified.
	
1999-03-23  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial1.c, misc/serial2.c, misc/serial3.c, misc/serial4.c,
	* misc/serial5.c, misc/ser_test_protocol.inl
	Deleted.

1999-03-23  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/PKGconf.mak: 
	* tests/timeout.inl: 
	* tests/PKGconf.mak:
	* tests/serial1.c: 
	* tests/serial2.c: 
	* tests/serial3.c: 
	* tests/serial4.c: 
	* tests/serial5.c: 
	* tests/ser_test_protocol.inl:
	Moved the serial tests from the misc directory to the tests
	directory.

1999-03-23  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mn10300/mn10300_serial.c: Now initially mask TX interrupts
	at initialization and unmask/remask in start/stop xmit
	routines. This has no real effect on the hardware, but the
	simulator does not implement the LCR_TXE bit properly, resulting
	in spurious TX interrupts during diagnostic output.
	This was the cause of the slow output reported in PR 19559.

1999-03-23  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Fix "display" strings to have appropriate
	case - mostly lower case.

1999-03-22  Hugo Tyson  <hmt@cygnus.co.uk>

	* misc/console.c: 
	* misc/serial.c: 
	* misc/serial1.c: 
	* misc/serial2.c: 
	* misc/serial3.c: 
	* misc/serial4.c: 
	* misc/serial5.c: 
	Use CYGNUM_HAL_STACK_SIZE_TYPICAL for the stack size instead of
	CYGNUM_HAL_MINIMUM_STACK_SIZE.

1999-03-22  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/mn10300/mn10300_serial.c: 
	* src/mips/tx3904_serial.c: Add CDL configury.

	* include/pkgconf/io_serial.h: Update CDL to add device name
	configurability for all devices.

	* src/sparclite/sleb_sdtr.c: 
	* src/powerpc/cogent_serial_with_ints.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: Use CDL configured device names.

1999-03-22  Jesper Skov  <jskov@lassi.cygnus.co.uk>

	* misc/serial1.c:
	* misc/serial2.c:
	* misc/serial3.c:
	* misc/serial4.c:
	* misc/serial5.c:
	Requires kernel as well.

1999-03-22  Jesper Skov  <jskov@cygnus.co.uk>

	* src/sparclite/sleb_sdtr.c:
	Moved include statement to avoid warnings.

1999-03-19  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/ser_test_protocol.inl:
	* misc/serial5.c:
	* misc/PKGconf.mak:
	Replace complex and not very stable duplex test with a simpler
	test that works better.
	Added serial5 using that test.
	
1999-03-19  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/PKGconf.mak:
	* misc/serial1.c:
	* misc/serial2.c: 
	Added API test and made serial2 do simple string output.
	
1999-03-19  Jesper Skov  <jskov@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: Changed ToDo comment.

1999-03-19  Jesper Skov  <jskov@lassi.cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: 
	Moved include statement to avoid warnings.

1999-03-19  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: More CDL problems.

1999-03-18  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Add CDL for SPARClite SLEB.

	* src/powerpc/cogent_serial_with_ints.c: 
	* src/arm/pid_serial_with_ints.c: 
	* src/arm/aeb_serial.c: Update device names to match CDL.

	* include/pkgconf/io_serial.h: Change names for serial ports to
	be CYGPKG_IO_SERIAL_<arch>_<platform>_<port>.

1999-03-18  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/ser_test_protocol.inl: 
	* misc/serial2.c: 
	First stab at the duplex binary test. Still much fun to be had...

1999-03-18  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/ser_test_protocol.inl: Added timeout for PING.

1999-03-18  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/common/serial.c: Change ABORT functionality to be DSR safe.
	(serial_get_config): Fix typo!

	* include/pkgconf/io_serial.h: Small change in CDL to make serial
	devices tied to the platform and not the serial I/O package.  This
	means that only the devices appropriate to a given platform can be
	enabled.

	* misc/serial.c: Better use of alarms - only trigger at the time of
	the next timeout.  Moved timeout functions to new file "timeout.inl".

	* src/common/serial.c (serial_get_config): Add support for
 	CYG_IO_GET_CONFIG_SERIAL_INPUT_FLUSH and CYG_IO_GET_CONFIG_SERIAL_ABORT.
	
	* misc/serial.c: Add simple timeout mechanisms.

1999-03-17  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: Conditionalize based on CDL.

	* include/pkgconf/io_serial.h: Add some CDL configury - not perfect
	because of current ~CDL limitations.

1999-03-17  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c: Cleaned up a bit. Used for hacking new tests.

1999-03-17  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/PKGconf.mak: 
	* misc/ser_test_protocol.inl:
	* misc/serial2.c:
	* misc/serial3.c:
	* misc/serial4.c:
	Put testing protocol implementation in a separate file. Split the
	tests in serial2 into separate files.

1999-03-16  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mn10300/mn10300_serial.c:	Fixed some compiler warnings.

1999-03-15  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Change default configurations.
	No serial drivers enabled for PID port A or AEB.

	* src/sparclite/sleb_sdtr.c: 
	* src/powerpc/cogent_serial_with_ints.c: 
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: 
	* src/common/haldiag.c: 
	* src/common/tty.c: 
	* src/common/serial.c: Add 'CYGDBG_IO_INIT' for control of init 
	messages.

	* src/powerpc/cogent_serial_with_ints.c: 
	* src/sparclite/sleb_sdtr.c:
	* src/arm/aeb_serial.c: 
	* src/arm/pid_serial_with_ints.c: Don't include <cyg/kernel/kapi.h>

1999-03-15  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c (serial_test): Fix use of strlen. Fix DONE part
	of binary protocol.

1999-03-12  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c: Play a bit with timing. Think I broke it :(
	Added DONE to BINARY packet.
	Proper call to DRAIN.

1999-03-12  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mips/tx3904_serial.c: Tidied away some debugging code.

1999-03-12  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c: Removed bogus config changes.

1999-03-12  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c (serial_test): Check for ser_filter on host (PING
	packet).

1999-03-11  Jesper Skov  <jskov@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: Added note.

	* misc/serial2.c: 
	Added (almost) proper configuration handling.
	Run tests on varying configurations.

1999-03-11  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mips/tx3904_serial.c:
	Many changes to get working.

	* misc/console.c (console_test): Fixed compiler warning.

	* misc/serial2.c:
	Added device name for TX39 testing.
	Fixed some bugs in Tcyg_io_write() macro.

1999-03-10  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c: Added target specific test device name.

1999-03-10  John Dallaway  <jld@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Correct CDL description spelling.

1999-03-10  Jesper Skov  <jskov@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: 
	* misc/console.c: 
	Fixed compiler warnings.

1999-03-10  Gary Thomas  <gthomas@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Improve CDL descriptions.

1999-03-10  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c (serial_test): Do some more tests with changed
	baud rates.

1999-03-09  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c (serial_test): Added workaround for spurious byte
	problem. Added a few more tests to run.

	* src/powerpc/cogent_serial_with_ints.c
	(cogent_serial_config_port): Remove interrupt enabling.

1999-03-09  Nick Garnett  <nickg@cygnus.co.uk>

	* src/PKGconf.mak: 
	* src/mips/tx3904_serial.c:
	Added initial version of TX39 device driver. Currently untested
	but eliminates PR19445.

1999-03-09  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c: DRAIN function works now.

1999-03-09  Jesper Skov  <jskov@cygnus.co.uk>

	* include/pkgconf/io_serial.h: Only enable one serial driver per
	default.

1999-03-08  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial2.c (serial_test): Be a bit more aggressive.

	* src/powerpc/cogent_serial_with_ints.c: Check that configuration
	is sensible.

1999-03-08  Jesper Skov  <jskov@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: 
	Added support for both ports.

	* include/pkgconf/io_serial.h: Added simple defines for cogent
	serial ports. No CDL yet.

1999-03-08  Jesper Skov  <jskov@cygnus.co.uk>

	* misc/serial.c: Removed PID references. Fixed compiler warnings.

1999-03-08  Jesper Skov  <jskov@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c: Cleaned up a
	bit. Actually works now.

1999-03-08  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/common/serial.c: Change in cyg_drv_cond_wait() behaviour
	means DSR lock should be left alone.

1999-03-08  Jesper Skov  <jskov@cygnus.co.uk>
        PR 19400
	* src/powerpc/cogent_serial_with_ints.c (cogent_serial_init): Set
	valid interrupt priority.

1999-03-05  Nick Garnett  <nickg@cygnus.co.uk>

	* src/mn10300/mn10300_serial.c (mn10300_serial_init):
	Added extra test to avoid initializing serial 2 when CYGMON is
	present.
	Include hal_intr.h explicitly for use in non-kernel
	configurations.

	* src/common/serial.c:
	Added extra test before calls to cyg_drv_cond_wait() to avoid race
	condition. This is not, however, a complete solution to this
	problem. A better solution will be forthcoming.

	* include/serial.h:
	Changed include files used to permit non-kernel configurations to
	be built.	

1999-03-05  Jesper Skov  <jskov@cygnus.co.uk>

	* src/common/haldiag.c: Removed diag_printf declaration.

1999-03-05  Jonathan Larmour  <jlarmour@cygnus.co.uk>

       * src/mn10300/mn10300_serial.c:
       Change CYG_VECTOR_* to CYGNUM_HAL_INTERRUPT_* to get it to compile!

1999-03-05  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/powerpc/cogent_serial_with_ints.c (cogent_serial_config_port): 
	Fix renaming of interrupt vectors.

1999-03-05  Gary Thomas  <gthomas@cygnus.co.uk>

	* src/arm/pid_serial_with_ints.c: Fix interrupt vectors.

1999-03-03  Gary Thomas  <gthomas@cygnus.co.uk>

	* serial/current/src/arm/pid_serial_with_ints.c: 
	New [somewhat] configurable drivers for PID.

//===========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// 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####
//===========================================================================

[-- Attachment #4: serialio.h --]
[-- Type: application/octet-stream, Size: 7617 bytes --]

#ifndef CYGONCE_SERIALIO_H
#define CYGONCE_SERIALIO_H
// ====================================================================
//
//      serialio.h
//
//      Device I/O 
//
// ====================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// 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####
// ====================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s):   gthomas
// Contributors:        gthomas
// Date:        1999-02-04
// Purpose:     Special support for serial I/O devices
// Description:
//
//####DESCRIPTIONEND####
//
// ====================================================================

// This file contains the user-level visible I/O interfaces

#include <pkgconf/system.h>
#include <pkgconf/io_serial.h>
#include <pkgconf/hal.h>
#include <cyg/infra/cyg_type.h>
#include <cyg/io/config_keys.h>

#ifdef __cplusplus
extern "C" {
#endif

// Supported baud rates
typedef enum {
    CYGNUM_SERIAL_BAUD_50 = 1,
    CYGNUM_SERIAL_BAUD_75,
    CYGNUM_SERIAL_BAUD_110,
    CYGNUM_SERIAL_BAUD_134_5,
    CYGNUM_SERIAL_BAUD_150,
    CYGNUM_SERIAL_BAUD_200,
    CYGNUM_SERIAL_BAUD_300,
    CYGNUM_SERIAL_BAUD_600,
    CYGNUM_SERIAL_BAUD_1200,
    CYGNUM_SERIAL_BAUD_1800,
    CYGNUM_SERIAL_BAUD_2400,
    CYGNUM_SERIAL_BAUD_3600,
    CYGNUM_SERIAL_BAUD_4800,
    CYGNUM_SERIAL_BAUD_7200,
    CYGNUM_SERIAL_BAUD_9600,
    CYGNUM_SERIAL_BAUD_14400,
    CYGNUM_SERIAL_BAUD_19200,
    CYGNUM_SERIAL_BAUD_38400,
    CYGNUM_SERIAL_BAUD_57600,
    CYGNUM_SERIAL_BAUD_115200,
    CYGNUM_SERIAL_BAUD_230400,
    CYGNUM_SERIAL_BAUD_460800,
    CYGNUM_SERIAL_BAUD_921600
} cyg_serial_baud_rate_t;
#define CYGNUM_SERIAL_BAUD_MIN CYGNUM_SERIAL_BAUD_50
#define CYGNUM_SERIAL_BAUD_MAX CYGNUM_SERIAL_BAUD_921600

// Note: two levels of macro are required to get proper expansion.
#define _CYG_SERIAL_BAUD_RATE(n) CYGNUM_SERIAL_BAUD_##n
#define CYG_SERIAL_BAUD_RATE(n) _CYG_SERIAL_BAUD_RATE(n)

// Stop bit selections
typedef enum {
    CYGNUM_SERIAL_STOP_1 = 1,
    CYGNUM_SERIAL_STOP_1_5,
    CYGNUM_SERIAL_STOP_2
} cyg_serial_stop_bits_t;

// Parity modes
typedef enum {
    CYGNUM_SERIAL_PARITY_NONE = 0,
    CYGNUM_SERIAL_PARITY_EVEN,
    CYGNUM_SERIAL_PARITY_ODD,
    CYGNUM_SERIAL_PARITY_MARK,
    CYGNUM_SERIAL_PARITY_SPACE
} cyg_serial_parity_t;

// Word length
typedef enum {
    CYGNUM_SERIAL_WORD_LENGTH_5 = 5,
    CYGNUM_SERIAL_WORD_LENGTH_6,
    CYGNUM_SERIAL_WORD_LENGTH_7,
    CYGNUM_SERIAL_WORD_LENGTH_8
} cyg_serial_word_length_t;

typedef struct {
    cyg_serial_baud_rate_t   baud;
    cyg_serial_stop_bits_t   stop;
    cyg_serial_parity_t      parity;
    cyg_serial_word_length_t word_length;
    cyg_uint32               flags;
} cyg_serial_info_t;

// cyg_serial_info_t flags
#define CYGNUM_SERIAL_FLOW_NONE              (0)
// receive flow control, send xon/xoff when necessary:
#define CYGNUM_SERIAL_FLOW_XONXOFF_RX        (1<<0)  
// transmit flow control, act on received xon/xoff:
#define CYGNUM_SERIAL_FLOW_XONXOFF_TX        (1<<1)
// receive flow control, send RTS when necessary:
#define CYGNUM_SERIAL_FLOW_RTSCTS_RX         (1<<2)
// transmit flow control, act when not CTS:
#define CYGNUM_SERIAL_FLOW_RTSCTS_TX         (1<<3)
// receive flow control, send DTR when necessary:
#define CYGNUM_SERIAL_FLOW_DSRDTR_RX         (1<<4)
// transmit flow control, act when not DSR:
#define CYGNUM_SERIAL_FLOW_DSRDTR_TX         (1<<5)

// arguments for CYG_IO_SET_CONFIG_SERIAL_FLOW_CONTROL_FORCE
#define CYGNUM_SERIAL_FLOW_THROTTLE_RX       0
#define CYGNUM_SERIAL_FLOW_RESTART_RX        1
#define CYGNUM_SERIAL_FLOW_THROTTLE_TX       2
#define CYGNUM_SERIAL_FLOW_RESTART_TX        3

// arguments for CYG_IO_SET_CONFIG_SERIAL_HW_RX_FLOW_THROTTLE
#define CYGNUM_SERIAL_FLOW_HW_UNTHROTTLE     0
#define CYGNUM_SERIAL_FLOW_HW_THROTTLE       0
#define CYGNUM_SERIAL_FLOW_HW_UNTHROTTLE     0

typedef struct {  
    cyg_int32 rx_bufsize;
    cyg_int32 rx_count;
    cyg_int32 tx_bufsize;
    cyg_int32 tx_count;
} cyg_serial_buf_info_t;

#define CYG_SERIAL_INFO_INIT(_baud,_stop,_parity,_word_length,_flags) \
  { _baud, _stop, _parity, _word_length, _flags}

#ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS

# define CYGNUM_SERIAL_STATUS_FLOW          0
# define CYGNUM_SERIAL_STATUS_BREAK         1
# define CYGNUM_SERIAL_STATUS_FRAMEERR      2
# define CYGNUM_SERIAL_STATUS_PARITYERR     3
# 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
    cyg_uint32 value;        // and its value
} cyg_serial_line_status_t;

typedef void (*cyg_serial_line_status_callback_fn_t)(
                                                 cyg_serial_line_status_t *s,
                                                 CYG_ADDRWORD priv );
typedef struct {
    cyg_serial_line_status_callback_fn_t fn;
    CYG_ADDRWORD priv;
} cyg_serial_line_status_callback_t;

#endif // ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS

// Default configuration
#define CYG_SERIAL_BAUD_DEFAULT        CYGNUM_SERIAL_BAUD_38400
#define CYG_SERIAL_STOP_DEFAULT        CYGNUM_SERIAL_STOP_1
#define CYG_SERIAL_PARITY_DEFAULT      CYGNUM_SERIAL_PARITY_NONE
#define CYG_SERIAL_WORD_LENGTH_DEFAULT CYGNUM_SERIAL_WORD_LENGTH_8

#ifdef CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT_XONXOFF
# define CYG_SERIAL_FLAGS_DEFAULT      (CYGNUM_SERIAL_FLOW_XONXOFF_RX|CYGNUM_SERIAL_FLOW_XONXOFF_TX)
#elif defined(CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT_RTSCTS)
# define CYG_SERIAL_FLAGS_DEFAULT      (CYGNUM_SERIAL_FLOW_RTSCTS_RX|CYGNUM_SERIAL_FLOW_RTSCTS_TX)
#elif defined(CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT_DSRDTR)
# define CYG_SERIAL_FLAGS_DEFAULT      (CYGNUM_SERIAL_FLOW_DSRDTR_RX|CYGNUM_SERIAL_FLOW_DSRDTR_TX)
#else 
# define CYG_SERIAL_FLAGS_DEFAULT      0
#endif

#ifdef __cplusplus
}
#endif

#endif  /* CYGONCE_SERIALIO_H */
/* EOF serialio.h */

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: MPC555 serial exception fix
  2008-05-13 13:39 MPC555 serial exception fix Steven Clugston
  2008-05-21 22:02 ` Andrew Lunn
@ 2008-09-02  5:58 ` Andrew Lunn
  1 sibling, 0 replies; 4+ messages in thread
From: Andrew Lunn @ 2008-09-02  5:58 UTC (permalink / raw)
  To: Steven Clugston; +Cc: ecos-patches

On Tue, May 13, 2008 at 02:37:38PM +0100, Steven Clugston wrote:
> A small fix to prevent an exception occuring when buffer overrun /
> parity / line noise / frame error(s) occur.
> The scsr register should be treated as read-only and is cleared by
> reading the data register, not by attempting to clear any set bits.
> 
> I've also added line status callback support, although nothing other
> than PPPd seems to use it, and only then for modem carrier dectection.

Hi Steven

Your patch finally made it in.

You said you wanted to work on the serial driver some more. If you
have patches you want included let me have them.

     Andrew

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-09-02  5:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-13 13:39 MPC555 serial exception fix Steven Clugston
2008-05-21 22:02 ` Andrew Lunn
2008-05-22 10:36   ` Steven Clugston
2008-09-02  5:58 ` Andrew Lunn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).