- status: open --> closed
- assigned_to: Jochen Küpper
- Group: -->
I'm using the driver for communcations on a single wire
serial port. In the arbitration phase it is possible,
that collisions between two senders are occures. If
this happens, the uart chip hanges in rare cases! A
remove of the module and the rt_com driver module
followed up by an insmod does not solve the problem!
Never receive a byte! I tried to "insmod" the original
serial driver and "rmmod" it without any use. Then I
reactivated my rtl module and the rt_com driver and now
it works again. This suggest me, that an initialization
problem exists. I took a look to the original serial
driver source in verification with the rt_com source
and find a missing dummy read out of the data register.
I'm not so conform with things like diff etc, becaus
I'm a newbee of linux programming....
Here are the code, that I've inserted and that works
well!
int rt_com_setup( unsigned int com, int baud, unsigned
int parity,
unsigned int stopbits, unsigned int wordlength )
{
.....
p->error = 0; //!! init. last error code
// --------------------
/* disable FIFO's */
outb(0x06, base + RT_COM_FCR);
(void)inb(base+ RT_COM_RXB); /* read data port to
reset things */
// --------------
if( 0 == baud ) {
/* return */
......
}
------- snip ------
Greetings
Thomas