[#4103] ircp failed on BF548-ezkit with default irda rate
Submitted By: Vivi Li
Open Date
2008-05-15 00:08:44 Close Date
2009-03-03 03:48:20
Priority:
Medium Assignee:
Graf Yang
Status:
Closed Fixed In Release:
N/A
Found In Release:
2008R1.5-RC3 Release:
Category:
N/A Board:
EZKIT Lite
Processor:
BF548 Silicon Revision:
Is this bug repeatable?:
Yes Resolution:
Postponed
Uboot version or rev.:
Toolchain version or rev.:
08r1-rc8
App binary format:
N/A
Summary: ircp failed on BF548-ezkit with default irda rate
Details:
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 &
316
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:/>
root:/>
root:/> ircp /etc/host.conf
IrLAP, no activity on link!
Connecting...failed
root:/> IrLAP, no activity on link!
--
It can work with max rate 57600.
Bellow is the log:
--
root:/> modprobe bfin_sir max_rate=57600
root:/> irattach irda0 -s &
282
root:/> cat /proc/net/irda/discovery
IrLMP: Discovery log:
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
root:/>
root:/> ircp /etc/host.conf
Connecting...done
Sending /etc/host.conf...done
Disconnecting...done
root:/> IrLAP, no activity on link!
--
Follow-ups
--- 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,
TX __|~|_________|~|_________|~|_________|~|_________|~|____...
s 1 0 1 0 1 0 1 0
RX ~~~|__|~~~~~~~~|__|~~~~~~~~|__|~~~~~~~~|__|~~~~~~~~|__|~~...
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
Graf,
did you try to equalize SCLK on both boards BF537 and BF548? And then using the
same divisor?
-Michael
--- Sonic Zhang 2009-03-02 05:38:46
Graf, please input the bug id which this bug is duplicated with. Then, close
this bug.
--- Graf Yang 2009-03-02 06:15:48
It's a HW issue.
Michael has reported it to "Kusstatscher, Benno"
<Benno.Kusstatscher@exchange.analog.com>.
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.
-Michael
--- Graf Yang 2009-03-03 03:48:20
I have add this anomaly into bfin_sir driver. Close it.
Files
Changes
Commits
Dependencies
Duplicates
Associations
Tags
File Name File Type File Size Posted By
No Files Were Found