<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=us-ascii">
  <title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
<font size="2" face="Arial">This is a patch to fix a problem that
occurs at high baud rates in the cpm uart interrupt handling.<br>
<br>
In</font><b> <font size="2" face="Arial">cpm_uart_int()</font></b><font
 size="2" face="Arial">,
the existing code reads the event register, processes the events, and
then clears bits in the event register before returning. The problem
here is that sometimes event processing generates new events quite
quickly (i.e. at higher baud rates, the transmit interrupt handler puts
another character into an SCC's transmit buffer and the SCC clears the
READY bit almost immediately). In this case, the second interrupt can
be missed because the scc_scce event register gets cleared after
processing the first. The port can get hung.</font>
<p><font size="2" face="Arial">The fix adds a while loop. It reads the
event register saving its value in the local variable 'events' (as
before) then clears the event register in the device immediately. It
processes the events and tests the event register again handling new
events that might get generated during handling.<br>
</font></p>
<p><font size="2" face="Arial">Any comment ?<br>
</font></p>
<p><font size="2" face="Arial">Guillaume.<br>
</font></p>
-- <br>
<pre class="moz-signature" cols="72">=======================================
Guillaume Autran
Senior Software Engineer
MRV Communications, Inc.
Tel: (978) 952-4932 office
E-mail: <a class="moz-txt-link-abbreviated" href="mailto:gautran@mrv.com">gautran@mrv.com</a>
======================================= </pre>
</body>
</html>