This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: Question to 16x5x driver users
- From: "Alexander Aganichev" <aaganichev at gmail dot com>
- To: ecos-discuss at ecos dot sourceware dot org
- Date: Tue, 19 Jun 2007 10:34:30 +0400
- Subject: [ECOS] Re: Question to 16x5x driver users
- References: <c25335bc0706180611l36818bfbn77e052427f313a92@mail.gmail.com> <c25335bc0706182246k1661f33fwa96b617284b44896@mail.gmail.com>
Just browsed through the mailing list archive and found lots people
did the same on LPC2XXX. How about patching tree with something like
that?
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 19 Jun 2007
06:17:31 -0000
@@ -1,3 +1,8 @@
+2007-06-19 Alexander Aganichev <aaganichev@gmail.com>
+
+ * cdl/ser_arm_lpc2xxx.cdl:
+ Added CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PUSH 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 19
Jun 2007 06:29:26 -0000
@@ -74,6 +74,7 @@
puts $::cdl_system_header "/***** serial driver proc output
start *****/"
puts $::cdl_system_header "#define
CYGDAT_IO_SERIAL_GENERIC_16X5X_INL <cyg/io/arm_lpc2xxx_ser.inl>"
puts $::cdl_system_header "#define
CYGDAT_IO_SERIAL_GENERIC_16X5X_CFG <pkgconf/io_serial_arm_lpc2xxx.h>"
+ puts $::cdl_system_header "#define
CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PUSH"
puts $::cdl_system_header "/***** serial driver proc output
end *****/"
}
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 19 Jun 2007
06:12:27 -0000
@@ -1,3 +1,10 @@
+2007-06-19 Alexander Aganichev <aaganichev@gmail.com>
+
+ * src/ser_16x5x.c (pc_serial_start_xmit): Allow platform to define
+ CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PUSH 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/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 19 Jun
2007 06:05:47 -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_PUSH
+ (chan->callbacks->xmt_char)(chan);
+#endif
}
// Disable the transmitter on the device
On 6/19/07, Alexander Aganichev <aaganichev@gmail.com> wrote:
Sorry, posted to the wrong list initially.
---------- Forwarded message ----------
From: Alexander Aganichev <aaganichev@gmail.com>
To: ecos-devel@ecos.sourceware.org
I found that driver not transmit anything in interrupt driving mode
unless I made the following patch:
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 18 Jun
2007 12:21:30 -0000
@@ -516,6 +516,7 @@
HAL_READ_UINT8(base+REG_ier, _ier);
_ier |= IER_XMT; // Enable xmit interrupt
HAL_WRITE_UINT8(base+REG_ier, _ier);
+ (chan->callbacks->xmt_char)(chan); // <<<<<<
}
// Disable the transmitter on the device
Am I right to make this change or I just missed another process that
should call xmt_char? I'm using LPC2294 based board and use this
driver for the UART1.
--
WBR, Alexander
--
WBR, Alexander
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss