sbp2: variable status FIFO address (fix login timeout)
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 31 Jan 2006 05:13:33 +0000 (00:13 -0500)
committerJody McIntyre <scjody@modernduck.com>
Thu, 23 Feb 2006 05:28:52 +0000 (00:28 -0500)
commit35bdddb83f62978b5fad82a14fbfd78cc3a5a60c
treeb5fcfd00b9af8815dd42e3d65e2f9f2e453f4a89
parentbf637ec3ef4159da3dd156ecf6f6987d8c8c5dae
sbp2: variable status FIFO address (fix login timeout)

Let the ieee1394 core select a suitable 1394 address range for sbp2's
status FIFO instead of using a fixed range. Since the core only selects
addresses which are guaranteed to be out of the "physical range" as per
OHCI 1.1, this patch also fixes an old bug:

OHCI controllers which implement a writeable PhysicalUpperBound register
included sbp2's status FIFO in the physical range. That way sbp2 was
never notified of a succesful login and always failed after timeout.
Affected OHCI host adapters include ALi and Fujitsu controllers.

As another side effect of this patch, the status FIFO is no longer
located in a range for which OHCI chips perform "posted writes". Each
status write now requires a response subaction. But since large data
transfers involve only few status writes, there is no measurable
decrease of I/O throughput. What's more, the status FIFO is now safe
from potential host bus errors. Nevertheless, posted writes could be
re-enabled by extensions to the ARM features of the 1394 stack.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Jody McIntyre <scjody@modernduck.com>
(cherry picked from b2d38cccad4ef80d6b672b8f89aae5fe2907b113 commit)
drivers/ieee1394/sbp2.c
drivers/ieee1394/sbp2.h