# HG changeset patch # User gthomas # Date 1182512509 0 # Node ID 55aa7418e249c8d89617b0a0b7dcb4e42f2aa2fc # Parent 6f68e28560d34a4ab61fd414f9fd3a3dcd5a4d25 Add option to 'prime' UART Tx - on behalf of Alexander Aganichev diff --git a/packages/devs/serial/arm/lpc2xxx/current/ChangeLog b/packages/devs/serial/arm/lpc2xxx/current/ChangeLog --- a/packages/devs/serial/arm/lpc2xxx/current/ChangeLog +++ b/packages/devs/serial/arm/lpc2xxx/current/ChangeLog @@ -1,3 +1,9 @@ +2007-06-22 Alexander Aganichev + + * cdl/ser_arm_lpc2xxx.cdl: + Added requirement of + CYGPKG_IO_SERIAL_GENERIC_16X5X_XMIT_REQUIRE_PRIME option. + 2004-11-15 Jani Monoses * include/arm_lpc2xxx_ser.inl: diff --git a/packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl b/packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl --- a/packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl +++ b/packages/devs/serial/arm/lpc2xxx/current/cdl/ser_arm_lpc2xxx.cdl @@ -69,6 +69,7 @@ cdl_package CYGPKG_IO_SERIAL_ARM_LPC2XXX 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 *****/" diff --git a/packages/devs/serial/generic/16x5x/current/ChangeLog b/packages/devs/serial/generic/16x5x/current/ChangeLog --- a/packages/devs/serial/generic/16x5x/current/ChangeLog +++ b/packages/devs/serial/generic/16x5x/current/ChangeLog @@ -1,3 +1,13 @@ +2007-06-22 Alexander Aganichev + + * 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 * src/ser_16x5x.c (serial_config_port): Add diff --git a/packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl b/packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl --- a/packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl +++ b/packages/devs/serial/generic/16x5x/current/cdl/ser_generic_16x5x.cdl @@ -77,6 +77,15 @@ cdl_package CYGPKG_IO_SERIAL_GENERIC_16X 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 diff --git a/packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c b/packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c --- a/packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c +++ b/packages/devs/serial/generic/16x5x/current/src/ser_16x5x.c @@ -516,6 +516,9 @@ pc_serial_start_xmit(serial_channel *cha 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