[#4103] ircp failed on BF548-ezkit with default irda rate
Submitted By: Vivi Li
2008-05-15 00:08:44 Close Date
Closed Fixed In Release:
Found In Release:
BF548 Silicon Revision:
Is this bug repeatable?:
Uboot version or rev.:
Toolchain version or rev.:
App binary format:
Summary: ircp failed on BF548-ezkit with default irda rate
ircp failed on BF548-ezkit with default rate(>57600).
Bellow test is based on two BF548-ezkit with irda device. The same problem also exists when communicating with irda device in Windows.
root:/> modprobe bfin_sir
root:/> irattach irda0 -s &
root:/> cat /proc/net/irda/discovery
IrLMP: Discovery log:
nickname: blackfin, hint: 0x0400, saddr: 0xd3162e3d, daddr: 0xf06829bc
root:/> irdaping 0xf06829bc
IrDA ping (0xf06829bc on irda0): 32 bytes
32 bytes from 0xf06829bc: irda_seq=1 time=116.00 ms.
32 bytes from 0xf06829bc: irda_seq=2 time=116.00 ms.
32 bytes from 0xf06829bc: irda_seq=4 time=108.00 ms.
32 bytes from 0xf06829bc: irda_seq=5 time=120.00 ms.
32 bytes from 0xf06829bc: irda_seq=7 time=116.00 ms.
32 bytes from 0xf06829bc: irda_seq=8 time=112.00 ms.
32 bytes from 0xf06829bc: irda_seq=10 time=108.00 ms.
32 bytes from 0xf06829bc: irda_seq=11 time=116.00 ms.
12 packets received by filter
root:/> ircp /etc/host.conf
IrLAP, no activity on link!
root:/> IrLAP, no activity on link!
It can work with max rate 57600.
Bellow is the log:
root:/> modprobe bfin_sir max_rate=57600
nickname: blackfin, hint: 0x0400, saddr: 0x49609a7b, daddr: 0x82e61eb7
root:/> irdaping 0x49609a7b
IrDA ping (0x49609a7b on irda0): 32 bytes
32 bytes from 0x49609a7b: irda_seq=0 time=116.00 ms.
32 bytes from 0x49609a7b: irda_seq=2 time=112.00 ms.
32 bytes from 0x49609a7b: irda_seq=3 time=120.00 ms.
32 bytes from 0x49609a7b: irda_seq=5 time=112.00 ms.
32 bytes from 0x49609a7b: irda_seq=6 time=120.00 ms.
32 bytes from 0x49609a7b: irda_seq=8 time=108.00 ms.
9 packets received by filter
--- Graf Yang 2008-08-05 00:04:34
This issue existed when execute ircp between BF537 and BF548.
I found, the reason is BF548 can't receive charactors in 115200 speed, when
we are transfer files use irda daughter card.
I have tested direct connecting the two uarts use crossed wires,
both the BF537, BF548 can rx/tx under 115200 speed.
The best divisor for BF548 may be 72, and 71 also work, for 131MHz sclk.
When use irda daughter card, in oscillograph,
the tx side pulse width is 1.62us, while the rx side width is 2.6us.
This cause the BF548 irda logic always can't distinguish the starting bits,
See below, BF537 send 0x55 to BF548, LSB first,
s 1 0 1 0 1 0 1 0
s x 0 1 0 1 0 1 0
The BF548 may take it as 0x54.
(Because of the irda daughter card layout, we need to set RPOLC bit
in GCTL besides the IREN bit, so TX is upward pulse, RX is downward pulse.)
While the BF537 can receive any thing correctly.
According to the BF548 HRM 12-16, I think 2.6us width can fit the standard.
So I think BF548 irda function have bugs,
maybe in the logic dealing with the start bit.
--- Michael Hennerich 2008-08-06 03:55:17
did you try to equalize SCLK on both boards BF537 and BF548? And then using the
--- Sonic Zhang 2009-03-02 05:38:46
Graf, please input the bug id which this bug is duplicated with. Then, close
--- Graf Yang 2009-03-02 06:15:48
It's a HW issue.
Michael has reported it to "Kusstatscher, Benno"
I can't remember which bug it is duplicated with. So I set it to postponed.
--- Michael Hennerich 2009-03-02 09:24:53
This issue is tracked in the Silicon Anomaly List for BF54x.
05000447 - UART IrDA Receiver Fails on Extended Bit Pulses:
Make sure we add this to our anomaly.h file.
In the irda driver check for ANOMALY_05000447 and return if present.
Then close this bug.
--- Graf Yang 2009-03-03 03:48:20
I have add this anomaly into bfin_sir driver. Close it.
File Name File Type File Size Posted By
No Files Were Found