This is the mail archive of the
ecos-patches@sourceware.org
mailing list for the eCos project.
Generic 16x5x and LPC2xxx serial driver fixes
- From: "Alexander Aganichev" <aaganichev at gmail dot com>
- To: ecos-patches at ecos dot sourceware dot org
- Date: Fri, 22 Jun 2007 14:31:42 +0400
- Subject: Generic 16x5x and LPC2xxx serial driver fixes
- Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=V+6YPKtZxAKUKixEH0SlW7L89MNT7ufrjyqxGkESsZwBVUF8DeV6gb/HN7jyn1p4h3A1acPxgodD9XXjWUdvDynmceKv6+Q3P+xo4jzriLa/mibGMRqDOJmYCDu9ft0ISd38U2HjfhAjbTiBtt4rN873u2FxFaJD7CVCknnWTZ8=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=Aphl5NAGhhOvDk+Cbpvvx+FuABwdsbMP+qLDtyNOsU+an1slf47WYwuxC5j3KRis5DvZ+03d+JtPfZoVQr3qLgk76SA7FFcZbUNkrAOi614Ce69GuYycdLzxIhogQM1qc7XLj5gcs/xVQ1CVQea9l7dlC9WEa0j9wgsu0ecRBpI=
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