Hi,
I am having problems with the initialization of my firewire bus and since I can t find a solution anywhere (ieee1394 specs, libraw1394 project, TI datasheets etc.) I thought I'd give it a try on this forum.
In my situation there are two firewire parties: A) FPGA-board and B) Firewire camera.
A) FPGA Board: Uses TI's TSB81BA3 firewire PHY. Has my own LLC+Link Layer (and above layers) in firmware (FPGA). The LLC <-> PHY interface is in beta-mode.Has contender-bit and root holdoff-bit set in PHY registers before generating a bus reset.
B) Firewire camera: Is a beta-capable device (so S800 is the targeted speed). Conforms to IIDC spec.
The problem:
After issuing the bus reset (with RHB and C bits set) I get the expected self-ID from the camera. The Self-ID reflects that the camera Link is on. So far so good. Then, with the cycle master still disabled, I want to asynchronously quadlet-read register 0 from the camera. What happens is that I get the expected ACK_PENDING back from the camera but then no response is ever received from the camera. I do receive bus status updates from the PHY ("arbitration reset gap" and then after a while "subaction gap").
Am I forgetting some bus initialization step here? Or should I only send asynchronous packets with an enabled cycle master (e.g. in the remaining time)? Note that I can configure and access the remote (camera) PHY registers - through PHY packets. I am a confused. It is probably something simple, but please help me out.