diff packages/devs/serial/powerpc/quicc/current/src/quicc_smc_serial.c @ 143:6b5f480c6929 ecos-sw-2000-12-08

Merge from eCos master repository on 2000-12-08-02:09:36-GMT
author jlarmour
date Fri, 08 Dec 2000 03:30:06 +0000
parents 0ae0bc38e387
children 2e9a636d9de9
line wrap: on
line diff
--- a/packages/devs/serial/powerpc/quicc/current/src/quicc_smc_serial.c
+++ b/packages/devs/serial/powerpc/quicc/current/src/quicc_smc_serial.c
@@ -97,7 +97,6 @@ typedef struct quicc_smc_serial_info {
     int                   txsize, rxsize;            // Length of individual buffers
     cyg_interrupt         serial_interrupt;
     cyg_handle_t          serial_interrupt_handle;
-    bool                  tx_enabled;
 } quicc_smc_serial_info;
 
 static bool quicc_smc_serial_init(struct cyg_devtab_entry *tab);
@@ -452,8 +451,7 @@ quicc_smc_serial_init(struct cyg_devtab_
                                  &smc_chan->serial_interrupt_handle,
                                  &smc_chan->serial_interrupt);
         cyg_drv_interrupt_attach(smc_chan->serial_interrupt_handle);
-        cyg_drv_interrupt_mask(smc_chan->int_num);
-        smc_chan->tx_enabled = false;
+        cyg_drv_interrupt_unmask(smc_chan->int_num);
     }
     quicc_smc_serial_config_port(chan, &chan->config, true);
     if (cache_state)
@@ -577,18 +575,16 @@ static void
 quicc_smc_serial_start_xmit(serial_channel *chan)
 {
     quicc_smc_serial_info *smc_chan = (quicc_smc_serial_info *)chan->dev_priv;
+    cyg_drv_dsr_lock();
     if (smc_chan->txbd->length == 0) {
         // See if there is anything to put in this buffer, just to get it going
-        cyg_drv_dsr_lock();
         (chan->callbacks->xmt_char)(chan);
-        cyg_drv_dsr_unlock();
     }
     if (smc_chan->txbd->length != 0) {
         // Make sure it gets started
         quicc_smc_serial_flush(smc_chan);
     }
-    smc_chan->tx_enabled = true;
-    cyg_drv_interrupt_unmask(smc_chan->int_num);
+    cyg_drv_dsr_unlock();
 }
 
 // Disable the transmitter on the device
@@ -599,11 +595,7 @@ quicc_smc_serial_stop_xmit(serial_channe
     // If anything is in the last buffer, need to get it started
     if (smc_chan->txbd->length != 0) {
         quicc_smc_serial_flush(smc_chan);
-        // Note: interrupt will get masked after this buffer finishes
-    } else {
-        cyg_drv_interrupt_mask(smc_chan->int_num);
     }
-    smc_chan->tx_enabled = false;
 }
 
 // Serial I/O - low level interrupt handler (ISR)