This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Generic 16x5x and LPC2xxx serial driver fixes


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 <aaganichev@gmail.com>
+
+	* cdl/ser_arm_lpc2xxx.cdl:
+	Added requirement of
+	CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME option.
+
2004-11-15  Jani Monoses <jani@iv.ro>

	* 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  <aaganichev@gmail.com>
+
+	* 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  <jifl@eCosCentric.com>

	* 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]