Sistema l'errore da me commesso in fase di conversione...
[bertos.git] / drv / ser_dsp56k.c
old mode 100755 (executable)
new mode 100644 (file)
index 901362d..ce865b9
@@ -1,8 +1,8 @@
-/*!
+/**
  * \file
  * <!--
  * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
- * This file is part of DevLib - See devlib/README for information.
+ * This file is part of DevLib - See README.devlib for information.
  * -->
  *
  * \version $Id$
 
 /*#*
  *#* $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 +55,7 @@
 #include "ser.h"
 #include "ser_p.h"
 #include <drv/irq.h>
-#include <debug.h>
+#include <cfg/debug.h>
 #include <hw.h>
 #include <DSP56F807.h>
 
@@ -109,33 +124,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 +236,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 +309,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 +320,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 */