mirror of https://github.com/ARMmbed/mbed-os.git
SiLabs: serial_api: Unblock sleep correctly on TX side
Previous commit that added _intern versions of abort functions did not change calls of TX abort, so sleep would never unblock.pull/1501/head
parent
96ff20491c
commit
ff494c4000
|
@ -1908,7 +1908,7 @@ int serial_tx_irq_handler_asynch(serial_t *obj)
|
||||||
}
|
}
|
||||||
}else if (obj->serial.periph.leuart->IF & LEUART_IF_TXC){
|
}else if (obj->serial.periph.leuart->IF & LEUART_IF_TXC){
|
||||||
/* Last byte has been successfully transmitted. Stop the procedure */
|
/* Last byte has been successfully transmitted. Stop the procedure */
|
||||||
serial_tx_abort_asynch(obj);
|
serial_tx_abort_asynch_intern(obj, 1);
|
||||||
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1925,7 +1925,7 @@ int serial_tx_irq_handler_asynch(serial_t *obj)
|
||||||
}
|
}
|
||||||
} else if (obj->serial.periph.uart->IF & USART_IF_TXC) {
|
} else if (obj->serial.periph.uart->IF & USART_IF_TXC) {
|
||||||
/* Last byte has been successfully transmitted. Stop the procedure */
|
/* Last byte has been successfully transmitted. Stop the procedure */
|
||||||
serial_tx_abort_asynch(obj);
|
serial_tx_abort_asynch_intern(obj, 1);
|
||||||
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2099,13 +2099,13 @@ int serial_irq_handler_asynch(serial_t *obj)
|
||||||
if(LEUART_REF_VALID(obj->serial.periph.leuart)) {
|
if(LEUART_REF_VALID(obj->serial.periph.leuart)) {
|
||||||
/* Clean up */
|
/* Clean up */
|
||||||
serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false;
|
serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false;
|
||||||
serial_tx_abort_asynch(obj);
|
serial_tx_abort_asynch_intern(obj, 1);
|
||||||
/* Notify CPP land of completion */
|
/* Notify CPP land of completion */
|
||||||
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
||||||
}else{
|
}else{
|
||||||
/* Clean up */
|
/* Clean up */
|
||||||
serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false;
|
serial_dma_irq_fired[obj->serial.dmaOptionsTX.dmaChannel] = false;
|
||||||
serial_tx_abort_asynch(obj);
|
serial_tx_abort_asynch_intern(obj, 1);
|
||||||
/* Notify CPP land of completion */
|
/* Notify CPP land of completion */
|
||||||
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
return SERIAL_EVENT_TX_COMPLETE & obj->serial.events;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue