Blackfin Serial Driver: fix bug - SIR driver stop receiving randomly
authorGraf Yang <graf.yang@analog.com>
Fri, 2 Jan 2009 13:40:22 +0000 (13:40 +0000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 2 Jan 2009 18:19:34 +0000 (10:19 -0800)
commit80d5c474b87da88eca8e1ab034e26daa9f688130
treeadb114b756b95541cefaba89cff38180a074003b
parent52e15f0eae193a8e4ca31c1520179b8d65c79811
Blackfin Serial Driver: fix bug - SIR driver stop receiving randomly

Bug description:
The IRDA receiver may can't receiving any more after processed some signals.

To duplicate this issue is put three IRDA devices together, one blackfin,
two none blackfin, they will detect each other. Let one none blackfin devices
irdaping the blackfin devices, when it stopped print out ping information,
it is the time that blackfin stoped receiving, the time is random.

The related register bit is OK, the other devices is sending data continuously.
But no interrupt come.

Fixing:
I tried Michael's suggestion that request the UARTx error interrupt, and reset
the IRDA when found FE error. This method helps much, but it can't completely
avoid stop.

Reset the IRDA before every time sending the data is more safe.

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/serial/bfin_5xx.c