changeset 1639:73b71f156116

* New package which implements serial for the AIM711
author asl
date Fri, 14 May 2004 14:51:28 +0000
parents 8986eb86c6a6
children b958d883e5f5
files packages/devs/serial/arm/aim711/current/ChangeLog packages/devs/serial/arm/aim711/current/cdl/ser_arm_aim711.cdl packages/devs/serial/arm/aim711/current/cdl/ser_arm_aim711_16x5x.cdl packages/devs/serial/arm/aim711/current/cdl/ser_arm_aim711_s3c4510.cdl packages/devs/serial/arm/aim711/current/include/ser_arm_aim711_16x5x.inl packages/devs/serial/arm/aim711/current/include/ser_arm_aim711_s3c4510.inl
diffstat 6 files changed, 752 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/arm/aim711/current/ChangeLog
@@ -0,0 +1,38 @@
+2003-10-30  Roland Cassebohm  <roland.cassebohm@visionsystems.de>
+
+	* New package.
+
+//===========================================================================
+//####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####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/arm/aim711/current/cdl/ser_arm_aim711.cdl
@@ -0,0 +1,96 @@
+# ====================================================================
+#
+#      ser_arm_aim711.cdl
+#
+#      eCos serial ARM Industrial Module AIM 711 configuration data
+#
+# ====================================================================
+#####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):      Lars.Lindqvist@combitechsystems.com
+# Contributors:   jlarmour
+# Date:           2001-10-19
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+
+cdl_package CYGPKG_IO_SERIAL_ARM_AIM711 {
+    display       "ARM Industrial Module AIM 711 serial device drivers"
+
+    parent        CYGPKG_IO_SERIAL_DEVICES
+    active_if     CYGPKG_IO_SERIAL
+
+    include_dir   cyg/io
+    include_files ; # none _exported_ whatsoever
+    description   "
+           This package contains serial device drivers for the
+           ARM Industrial Module AIM 711."
+
+    define_proc {
+        puts $::cdl_system_header "/***** serial driver proc output start *****/"
+        puts $::cdl_system_header "#ifndef CYGDAT_IO_SERIAL_DEVICE_HEADER"
+        puts $::cdl_system_header "#define CYGDAT_IO_SERIAL_DEVICE_HEADER <pkgconf/io_serial_arm_aim711.h>"
+        puts $::cdl_system_header "#endif"
+        puts $::cdl_system_header "/*****  serial driver proc output end  *****/"
+        puts $::cdl_header "#include <pkgconf/system.h>";
+        puts $::cdl_header "#include <pkgconf/io_serial_arm_s3c4510.h>";
+        puts $::cdl_header "#include <pkgconf/io_serial_generic_16x5x.h>";
+        puts $::cdl_header "#include CYGDAT_IO_SERIAL_ARM_S3C4510_CFG";
+        puts $::cdl_header "#include CYGDAT_IO_SERIAL_GENERIC_16X5X_CFG";
+    }
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_AIM711_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"arm16x5x\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty2\""
+        }
+    }
+}
+
+# EOF ser_arm_aim711.cdl
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/arm/aim711/current/cdl/ser_arm_aim711_16x5x.cdl
@@ -0,0 +1,156 @@
+# ====================================================================
+#
+#      ser_arm_aim711_16x5x.cdl
+#
+#      eCos serial ARM Industrial Module AIM 711 configuration data
+#      for the 16550 serial driver
+#
+# ====================================================================
+#####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):      Lars.Lindqvist@combitechsystems.com
+# Contributors:   jlarmour
+# Date:           2001-10-19
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+
+cdl_package CYGPKG_IO_SERIAL_ARM_AIM711_16X5X {
+    display       "ARM Industrial Module AIM 711 16x5x serial device drivers"
+
+    parent        CYGPKG_IO_SERIAL_DEVICES
+    active_if     CYGPKG_IO_SERIAL
+    active_if     CYGPKG_HAL_ARM_AIM711
+
+    requires      CYGPKG_ERROR
+    include_dir   cyg/io
+    description   "
+           This package contains serial device drivers for the
+           ARM Industrial Module AIM 711 for the 16550 serial
+           interface on board."
+
+    # FIXME: This really belongs in the GENERIC_16X5X package
+    cdl_interface CYGINT_IO_SERIAL_GENERIC_16X5X_REQUIRED {
+        display   "Generic 16x5x serial driver required"
+    }
+
+    define_proc {
+        puts $::cdl_system_header "/***** serial driver proc output start *****/"
+        puts $::cdl_system_header "#define CYGDAT_IO_SERIAL_GENERIC_16X5X_INL <cyg/io/ser_arm_aim711_16x5x.inl>"
+        puts $::cdl_system_header "#define CYGDAT_IO_SERIAL_GENERIC_16X5X_CFG <pkgconf/io_serial_arm_aim711_16x5x.h>"
+        puts $::cdl_system_header "/*****  serial driver proc output end  *****/"
+    }
+
+cdl_component CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0 {
+    display       "AIM 711 16X5X serial port 0 driver (COM1)"
+    flavor        bool
+    default_value 1
+    description   "
+        This option includes the serial device driver for the AIM 711 16X5X 
+        port 0, which is COM1 on the AIM 711."
+
+    implements    CYGINT_IO_SERIAL_GENERIC_16X5X_REQUIRED
+    implements    CYGINT_IO_SERIAL_FLOW_CONTROL_HW
+    implements    CYGINT_IO_SERIAL_LINE_STATUS_HW
+
+    cdl_option CYGDAT_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_NAME {
+        display       "Device name for the AIM 711 16X5X serial port 0 driver (COM1)"
+        flavor        data
+        default_value {"\"/dev/ser1\""}
+        description   "
+            This option sets the name of the serial device for the AIM 711 
+            16X5X port 0 (COM1)."
+    }
+
+    cdl_option CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BAUD {
+        display       "Baud rate for the AIM 711 16X5X serial port 0 driver"
+        flavor        data
+        legal_values  { 50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
+                      4800 7200 9600 14400 19200 38400 57600 115200 230400
+        }
+        default_value 38400
+        description   "
+            This option specifies the default baud rate (speed) for the 
+            AIM 711 16X5X port 0."
+    }
+
+    cdl_option CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BUFSIZE {
+        display       "Buffer size for the AIM 711 16X5X serial port 0 driver"
+        flavor        data
+        legal_values  0 to 8192
+        default_value 128
+        description   "
+            This option specifies the size of the internal buffers used for
+            the AIM 711 16X5X port 0."
+    }
+}
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_OPTIONS {
+        display "Serial device driver build options"
+        flavor  none
+        description   "
+	    Package specific build options including control over
+	    compiler flags used only in building this package,
+	    and details of which tests are built."
+
+
+        cdl_option CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_CFLAGS_ADD {
+            display "Additional compiler flags"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option modifies the set of compiler flags for
+                building these serial device drivers. These flags are used in addition
+                to the set of global flags."
+        }
+
+        cdl_option CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_CFLAGS_REMOVE {
+            display "Suppressed compiler flags"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option modifies the set of compiler flags for
+                building these serial device drivers. These flags are removed from
+                the set of global flags if present."
+        }
+    }
+}
+
+# EOF ser_arm_aim711_16x5x.cdl
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/arm/aim711/current/cdl/ser_arm_aim711_s3c4510.cdl
@@ -0,0 +1,196 @@
+# ====================================================================
+#
+#      ser_arm_aim711_s3c4510.cdl
+#
+#      eCos serial ARM Industrial Module AIM 711 configuration data
+#      for the internal ARM/S3C4510 serial driver
+#
+# ====================================================================
+#####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):      Lars.Lindqvist@combitechsystems.com
+# Contributors:   jlarmour
+# Date:           2001-10-19
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+
+cdl_package CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510 {
+    display       "ARM Industrial Module AIM 711 S3C4510 serial device drivers"
+
+    parent        CYGPKG_IO_SERIAL_DEVICES
+    active_if     CYGPKG_IO_SERIAL
+    active_if     CYGPKG_HAL_ARM_AIM711
+
+    requires      CYGPKG_ERROR
+    include_dir   cyg/io
+    description   "
+           This package contains serial device drivers for the
+           ARM Industrial Module AIM 711 for the internal serial
+           interface of the S3C4510."
+
+    # FIXME: This really belongs in the SERIAL_ARM_S3C4510 package
+    cdl_interface CYGINT_IO_SERIAL_ARM_S3C4510_REQUIRED {
+        display   "Generic s3c4510 serial driver required"
+    }
+
+    define_proc {
+        puts $::cdl_system_header "/***** serial driver proc output start *****/"
+        puts $::cdl_system_header "#define CYGDAT_IO_SERIAL_ARM_S3C4510_INL <cyg/io/ser_arm_aim711_s3c4510.inl>"
+        puts $::cdl_system_header "#define CYGDAT_IO_SERIAL_ARM_S3C4510_CFG <pkgconf/io_serial_arm_aim711_s3c4510.h>"
+        puts $::cdl_system_header "/*****  serial driver proc output end  *****/"
+    }
+
+cdl_component CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0 {
+    display       "AIM 711 S3C4510 serial port 0 driver (service adapter)"
+    flavor        bool
+    default_value 1
+    description   "
+        This option includes the serial device driver for the AIM 711 S3C4510 
+        port 0, which is on the AIM 711 the port on the service adapter."
+
+    implements    CYGINT_IO_SERIAL_ARM_S3C4510_REQUIRED
+
+    cdl_option CYGDAT_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_NAME {
+        display       "Device name for the AIM 711 S3C4510 serial port 0 driver (service adapter)"
+        flavor        data
+        default_value {"\"/dev/ser0\""}
+        description   "
+            This option sets the name of the serial device for the AIM 711 
+            S3C4510 port 0 (service adapter)."
+    }
+
+    cdl_option CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BAUD {
+        display       "Baud rate for the AIM 711 S3C4510 serial port 0 driver"
+        flavor        data
+        legal_values  { 50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
+                      4800 7200 9600 14400 19200 38400 57600 115200 230400
+        }
+        default_value 38400
+        description   "
+            This option specifies the default baud rate (speed) for the 
+            AIM 711 S3C4510 port 0."
+    }
+
+    cdl_option CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE {
+        display       "Buffer size for the AIM 711 S3C4510 serial port 0 driver"
+        flavor        data
+        legal_values  0 to 8192
+        default_value 128
+        description   "
+            This option specifies the size of the internal buffers used for
+            the AIM 711 S3C4510 port 0."
+    }
+}
+
+cdl_component CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1 {
+    display       "AIM 711 S3C4510 serial port 1 driver (COM2)"
+    flavor        bool
+    default_value 1
+    description   "
+        This option includes the serial device driver for the AIM 711 
+        S3C4510 port 1, which is the COM2 on the AIM 711."
+
+    implements    CYGINT_IO_SERIAL_ARM_S3C4510_REQUIRED
+
+    cdl_option CYGDAT_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_NAME {
+        display       "Device name for the AIM 711 S3C4510 serial port 1 driver (COM2)"
+        flavor        data
+        default_value {"\"/dev/ser2\""}
+        description   "
+            This option specifies the name of serial device for the 
+            AIM 711 S3C4510 port 1 (COM2)."
+    }
+
+    cdl_option CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BAUD {
+        display       "Baud rate for the AIM 711 S3C4510 serial port 1 driver"
+        flavor        data
+        legal_values  { 50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
+                      4800 7200 9600 14400 19200 38400 57600 115200 230400
+        }
+        default_value 38400
+        description   "
+            This option specifies the default baud rate (speed) for the 
+            AIM 711 S3C4510 port 1."
+    }
+
+    cdl_option CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE {
+        display       "Buffer size for the AIM 711 S3C4510 serial port 1 driver"
+        flavor        data
+        legal_values  0 to 8192
+        default_value 128
+        description   "
+            This option specifies the size of the internal buffers used 
+            for the AIM 711 S3C4510 port 1."
+    }
+}
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_OPTIONS {
+        display "Serial device driver build options"
+        flavor  none
+        description   "
+	    Package specific build options including control over
+	    compiler flags used only in building this package,
+	    and details of which tests are built."
+
+
+        cdl_option CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_CFLAGS_ADD {
+            display "Additional compiler flags"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option modifies the set of compiler flags for
+                building these serial device drivers. These flags are used in addition
+                to the set of global flags."
+        }
+
+        cdl_option CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_CFLAGS_REMOVE {
+            display "Suppressed compiler flags"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option modifies the set of compiler flags for
+                building these serial device drivers. These flags are removed from
+                the set of global flags if present."
+        }
+    }
+}
+
+# EOF ser_arm_aim711_s3c4510.cdl
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/arm/aim711/current/include/ser_arm_aim711_16x5x.inl
@@ -0,0 +1,125 @@
+//==========================================================================
+//
+//      ser_arm_aim711_16x5x.inl
+//
+//      ARM Industrial Module AIM 711 Serial I/O Interface Module
+//      (interrupt driven) for use with 16x5x driver.
+//
+//==========================================================================
+//####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):    jlarmour
+// Contributors: 
+// Date:         2001-06-08
+// Purpose:      Serial I/O module (interrupt driven version)
+// Description: 
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <cyg/hal/hal_intr.h>
+
+//-----------------------------------------------------------------------------
+// Baud rate specification, based on raw 7.3728 MHz clock
+
+static unsigned short select_baud[] = {
+    0,    // Unused
+    9216, // 50
+    6144, // 75
+    4189, // 110
+    3426, // 134.5
+    3072, // 150
+    2304, // 200
+    1537, // 300
+    768,  // 600
+    384,  // 1200
+    256,  // 1800
+    192,  // 2400
+    128,  // 3600
+    96,   // 4800
+    64,   // 7200
+    48,   // 9600
+    32,   // 14400
+    24,   // 19200
+    12,   // 38400
+    8,    // 57600
+    4,    // 115200
+    2,    // 230400
+    1,    // 460800
+};
+
+#ifdef CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0
+static pc_serial_info aim711_16x5x_serial_info0 = {0x7fd0008,
+                                         CYGNUM_HAL_INTERRUPT_EXT0};
+#if CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BUFSIZE > 0
+static unsigned char aim711_16x5x_serial_out_buf0[CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BUFSIZE];
+static unsigned char aim711_16x5x_serial_in_buf0[CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BUFSIZE];
+
+static SERIAL_CHANNEL_USING_INTERRUPTS(aim711_16x5x_serial_channel0,
+                                       pc_serial_funs, 
+                                       aim711_16x5x_serial_info0,
+                                       CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BAUD),
+                                       CYG_SERIAL_STOP_DEFAULT,
+                                       CYG_SERIAL_PARITY_DEFAULT,
+                                       CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                                       CYG_SERIAL_FLAGS_DEFAULT,
+                                       &aim711_16x5x_serial_out_buf0[0], sizeof(aim711_16x5x_serial_out_buf0),
+                                       &aim711_16x5x_serial_in_buf0[0], sizeof(aim711_16x5x_serial_in_buf0)
+    );
+#else
+static SERIAL_CHANNEL(aim711_16x5x_serial_channel0,
+                      pc_serial_funs, 
+                      aim711_16x5x_serial_info0,
+                      CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_BAUD),
+                      CYG_SERIAL_STOP_DEFAULT,
+                      CYG_SERIAL_PARITY_DEFAULT,
+                      CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                      CYG_SERIAL_FLAGS_DEFAULT
+    );
+#endif
+
+DEVTAB_ENTRY(aim711_16x5x_serial_io0, 
+             CYGDAT_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0_NAME,
+             0,                     // Does not depend on a lower level interface
+             &cyg_io_serial_devio, 
+             pc_serial_init, 
+             pc_serial_lookup,     // Serial driver may need initializing
+             &aim711_16x5x_serial_channel0
+    );
+#endif //  CYGPKG_IO_SERIAL_ARM_AIM711_16X5X_SERIAL0
+
+// EOF ser_arm_aim711_16x5x.inl
new file mode 100644
--- /dev/null
+++ b/packages/devs/serial/arm/aim711/current/include/ser_arm_aim711_s3c4510.inl
@@ -0,0 +1,141 @@
+// ====================================================================
+//
+//      ser_arm_aim711_s3c4510.inl
+//
+//      ARM Industrial Module AIM 711 Serial I/O Interface Module 
+//      (interrupt driven) for use with s3c4510 driver.
+//
+// ====================================================================
+//####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):    Lars.Lindqvist@combitechsystems.com
+// Contributors: jlarmour
+// Date:         2001-10-19
+// Purpose:      Internal interfaces for serial I/O drivers
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+// ====================================================================
+
+#include <pkgconf/hal.h>        // Value CYGNUM_HAL_ARM_S3C4510_CLOCK_SPEED needed
+#include <cyg/hal/hal_intr.h>
+
+#define CYGNUM_HAL_ARM_S3C4510_CLOCK_SPEED CYGNUM_HAL_CPUCLOCK
+
+#ifdef CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0
+static s3c4510_serial_info s3c4510_serial_info0 = {0x07FFd000, 
+                                           CYGNUM_HAL_INTERRUPT_UART0_TX,
+                                           CYGNUM_HAL_INTERRUPT_UART0_RX};
+#if CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE > 0
+static unsigned char s3c4510_serial_out_buf0[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE];
+static unsigned char s3c4510_serial_in_buf0[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE];
+
+static SERIAL_CHANNEL_USING_INTERRUPTS(s3c4510_serial_channel0,
+                                       s3c4510_serial_funs, 
+                                       s3c4510_serial_info0,
+                                       CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BAUD),
+                                       CYG_SERIAL_STOP_DEFAULT,
+                                       CYG_SERIAL_PARITY_DEFAULT,
+                                       CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                                       CYG_SERIAL_FLAGS_DEFAULT,
+                                       &s3c4510_serial_out_buf0[0], sizeof(s3c4510_serial_out_buf0),
+                                       &s3c4510_serial_in_buf0[0], sizeof(s3c4510_serial_in_buf0)
+    );
+#else
+static SERIAL_CHANNEL(s3c4510_serial_channel0,
+                      s3c4510_serial_funs, 
+                      s3c4510_serial_info0,
+                      CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BAUD),
+                      CYG_SERIAL_STOP_DEFAULT,
+                      CYG_SERIAL_PARITY_DEFAULT,
+                      CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                      CYG_SERIAL_FLAGS_DEFAULT
+    );
+#endif
+
+DEVTAB_ENTRY(s3c4510_serial_io0, 
+             CYGDAT_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_NAME,
+             0,                     // Does not depend on a lower level interface
+             &cyg_io_serial_devio, 
+             s3c4510_serial_init, 
+             s3c4510_serial_lookup,     // Serial driver may need initializing
+             &s3c4510_serial_channel0
+    );
+#endif //  CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0
+
+#ifdef CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1
+static s3c4510_serial_info s3c4510_serial_info1 = {0x07FFe000,
+                                           CYGNUM_HAL_INTERRUPT_UART1_TX,
+                                           CYGNUM_HAL_INTERRUPT_UART1_RX};
+#if CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE > 0
+static unsigned char s3c4510_serial_out_buf1[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE];
+static unsigned char s3c4510_serial_in_buf1[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE];
+
+static SERIAL_CHANNEL_USING_INTERRUPTS(s3c4510_serial_channel1,
+                                       s3c4510_serial_funs, 
+                                       s3c4510_serial_info1,
+                                       CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BAUD),
+                                       CYG_SERIAL_STOP_DEFAULT,
+                                       CYG_SERIAL_PARITY_DEFAULT,
+                                       CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                                       CYG_SERIAL_FLAGS_DEFAULT,
+                                       &s3c4510_serial_out_buf1[0], sizeof(s3c4510_serial_out_buf1),
+                                       &s3c4510_serial_in_buf1[0], sizeof(s3c4510_serial_in_buf1)
+    );
+#else
+static SERIAL_CHANNEL(s3c4510_serial_channel1,
+                      s3c4510_serial_funs, 
+                      s3c4510_serial_info1,
+                      CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BAUD),
+                      CYG_SERIAL_STOP_DEFAULT,
+                      CYG_SERIAL_PARITY_DEFAULT,
+                      CYG_SERIAL_WORD_LENGTH_DEFAULT,
+                      CYG_SERIAL_FLAGS_DEFAULT
+    );
+#endif
+
+DEVTAB_ENTRY(s3c4510_serial_io1, 
+             CYGDAT_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_NAME,
+             0,                     // Does not depend on a lower level interface
+             &cyg_io_serial_devio, 
+             s3c4510_serial_init, 
+             s3c4510_serial_lookup,     // Serial driver may need initializing
+             &s3c4510_serial_channel1
+    );
+#endif //  CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1
+
+// EOF ser_arm_aim711_s3c4510.inl