These patches fixes problem with use of generic 16x5x driver in
combination with LPC2xxx where enabling THRE interrupt does not
generate interrupt unless at least two bytes was written into the TX
FIFO.

Index: packages/devs/serial/arm/lpc2xxx/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/arm/lpc2xxx/current/ChangeLog,v
retrieving revision 1.2
diff -u -r1.2 ChangeLog
--- packages/devs/serial/arm/lpc2xxx/current/ChangeLog  15 Nov 2004
09:20:25 -0000  1.2
+++ packages/devs/serial/arm/lpc2xxx/current/ChangeLog  22 Jun 2007
09:57:34 -0000
@@ -1,3 +1,9 @@
+2007-06-22  Alexander Aganichev <[EMAIL PROTECTED]>
+
+       * cdl/ser_arm_lpc2xxx.cdl:
+       Added requirement of
+       CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME option.
+
2004-11-15  Jani Monoses <[EMAIL PROTECTED]>

        * include/arm_lpc2xxx_ser.inl:
Index: packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl
===================================================================
RCS file: 
/cvs/ecos/ecos/packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl,v
retrieving revision 1.1
diff -u -r1.1 ser_arm_lpc2xxx.cdl
--- packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl    14
Nov 2004 14:12:13 -0000 1.1
+++ packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl    22
Jun 2007 10:22:28 -0000
@@ -69,6 +69,7 @@
        puts $::cdl_header "#define CYGPRI_IO_SERIAL_GENERIC_16X5X_STEP 4"
    }

+    requires { CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME == "1" }

    define_proc {
        puts $::cdl_system_header "/***** serial driver proc output
start *****/"
Index: packages/devs/serial/generic/16x5x/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/devs/serial/generic/16x5x/current/ChangeLog,v
retrieving revision 1.15
diff -u -r1.15 ChangeLog
--- packages/devs/serial/generic/16x5x/current/ChangeLog        27 Nov 2006
13:59:50 -0000  1.15
+++ packages/devs/serial/generic/16x5x/current/ChangeLog        22 Jun 2007
09:45:57 -0000
@@ -1,3 +1,13 @@
+2007-06-22  Alexander Aganichev  <[EMAIL PROTECTED]>
+
+       * cdl/ser_generic_16x5x.cdl
+       (CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME): New option.
+
+       * src/ser_16x5x.c (pc_serial_start_xmit): Allow platform to define
+       CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME if enabling THRE
+       interrupt does not generate interrupt unless bytes are posted to the
+       FIFO.
+
2006-11-27  Jonathan Larmour  <[EMAIL PROTECTED]>

        * src/ser_16x5x.c (serial_config_port): Add
Index: packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl
===================================================================
RCS file: 
/cvs/ecos/ecos/packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl,v
retrieving revision 1.7
diff -u -r1.7 ser_generic_16x5x.cdl
--- packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl        
8
Feb 2006 10:28:04 -0000 1.7
+++ packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl        
22
Jun 2007 10:22:10 -0000
@@ -77,6 +77,15 @@
        puts $::cdl_header "#include CYGDAT_IO_SERIAL_GENERIC_16X5X_CFG";
    }

+    cdl_option CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME {
+        display       "Transmission require priming"
+        flavor        bool
+        default_value 0
+        description   "
+            This option should be switched on when enabling THRE interrupt
+            does not generate interrupt unless bytes are posted to the FIFO."
+    }
+
    cdl_component CYGPKG_IO_SERIAL_GENERIC_16X5X_FIFO {
        display       "16x5x FIFO support"
        flavor        bool
Index: packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c
===================================================================
RCS file: 
/cvs/ecos/ecos/packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c,v
retrieving revision 1.14
diff -u -r1.14 ser_16x5x.c
--- packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c  27 Nov
2006 13:59:50 -0000     1.14
+++ packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c  22 Jun
2007 10:27:43 -0000
@@ -516,6 +516,9 @@
    HAL_READ_UINT8(base+REG_ier, _ier);
    _ier |= IER_XMT;                    // Enable xmit interrupt
    HAL_WRITE_UINT8(base+REG_ier, _ier);
+#ifdef CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME
+    (chan->callbacks->xmt_char)(chan);
+#endif
}

// Disable the transmitter on the device

--
WBR, Alexander

Reply via email to