X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fser_dsp56k.c;h=d98c9030a3e8fccb808c74c947b89474c3db9ad9;hb=9c6545aacf8bb77445e7c19e41117d2318d752cc;hp=901362d8b7394bd0a4e94e86fc9975f9fa9e76d5;hpb=acc5c0c27b6946a710af309d400a9748c98c6ecc;p=bertos.git diff --git a/drv/ser_dsp56k.c b/drv/ser_dsp56k.c old mode 100755 new mode 100644 index 901362d8..d98c9030 --- a/drv/ser_dsp56k.c +++ b/drv/ser_dsp56k.c @@ -1,8 +1,33 @@ -/*! +/** * \file * * * \version $Id$ @@ -15,6 +40,21 @@ /*#* *#* $Log$ + *#* Revision 1.14 2006/07/19 12:56:26 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.13 2005/11/04 16:20:02 bernie + *#* Fix reference to README.devlib in header. + *#* + *#* Revision 1.12 2005/04/11 19:10:27 bernie + *#* Include top-level headers from cfg/ subdir. + *#* + *#* Revision 1.11 2005/01/25 07:42:04 bernie + *#* Simplify. + *#* + *#* Revision 1.10 2005/01/14 00:48:33 aleph + *#* Rename callbacks; SerialHardwareVT.txSending: New callback. + *#* *#* Revision 1.9 2004/12/08 09:42:55 bernie *#* Add support for multiplexed serial ports. *#* @@ -40,7 +80,7 @@ #include "ser.h" #include "ser_p.h" #include -#include +#include #include #include @@ -109,33 +149,36 @@ static inline void disable_rx_irq_bare(volatile struct REG_SCI_STRUCT* regs) static inline void disable_tx_irq(struct SerialHardware* _hw) { struct SCI* hw = (struct SCI*)_hw; - volatile struct REG_SCI_STRUCT* regs = hw->regs; - disable_tx_irq_bare(regs); + disable_tx_irq_bare(hw->regs); } static inline void disable_rx_irq(struct SerialHardware* _hw) { struct SCI* hw = (struct SCI*)_hw; - volatile struct REG_SCI_STRUCT* regs = hw->regs; - disable_rx_irq_bare(regs); + disable_rx_irq_bare(hw->regs); } static inline void enable_tx_irq(struct SerialHardware* _hw) { struct SCI* hw = (struct SCI*)_hw; - volatile struct REG_SCI_STRUCT* regs = hw->regs; - enable_tx_irq_bare(regs); + enable_tx_irq_bare(hw->regs); } static inline void enable_rx_irq(struct SerialHardware* _hw) { struct SCI* hw = (struct SCI*)_hw; - volatile struct REG_SCI_STRUCT* regs = hw->regs; - enable_rx_irq_bare(regs); + enable_rx_irq_bare(hw->regs); +} + +static inline bool tx_irq_enabled(struct SerialHardware* _hw) +{ + struct SCI* hw = (struct SCI*)_hw; + + return (hw->regs->CR & REG_SCI_CR_TEIE); } static void tx_isr(const struct SCI *hw) @@ -218,16 +261,12 @@ static void cleanup(struct SerialHardware* _hw) { struct SCI* hw = (struct SCI*)_hw; - // Wait until we finish sending everything - ser_drain(hw->serial); - ser_purge(hw->serial); - // Uninstall the ISRs disable_rx_irq(_hw); disable_tx_irq(_hw); irq_uninstall(hw->irq_tx); irq_uninstall(hw->irq_rx); -} +} static void setbaudrate(struct SerialHardware* _hw, unsigned long rate) { @@ -295,9 +334,10 @@ static const struct SerialHardwareVT SCI_VT = { .init = init, .cleanup = cleanup, - .setbaudrate = setbaudrate, - .setparity = setparity, - .enabletxirq = enable_tx_irq, + .setBaudrate = setbaudrate, + .setParity = setparity, + .txStart = enable_tx_irq, + .txSending = tx_irq_enabled, }; #if CONFIG_SER_MULTI @@ -305,9 +345,10 @@ static const struct SerialHardwareVT SCI_MULTI_VT = { .init = init_lock, .cleanup = cleanup_unlock, - .setbaudrate = setbaudrate, - .setparity = setparity, - .enabletxirq = enable_tx_irq, + .setBaudrate = setbaudrate, + .setParity = setparity, + .txStart = enable_tx_irq, + .txSending = tx_irq_enabled, }; #endif /* CONFIG_SER_MULTI */